]> git.sesse.net Git - ffmpeg/blob - doc/filters.texi
lavfi/vulkan: allow calling glslang_uninit without a prior init
[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 adenorm
735 Remedy denormals in audio by adding extremely low-level noise.
736
737 A description of the accepted parameters follows.
738
739 @table @option
740 @item level
741 Set level of added noise in dB. Default is @code{-351}.
742 Allowed range is from -451 to -90.
743
744 @item type
745 Set type of added noise.
746
747 @table @option
748 @item dc
749 Add DC signal.
750 @item ac
751 Add AC signal.
752 @item square
753 Add square signal.
754 @item pulse
755 Add pulse signal.
756 @end table
757
758 Default is @code{dc}.
759 @end table
760
761 @section aderivative, aintegral
762
763 Compute derivative/integral of audio stream.
764
765 Applying both filters one after another produces original audio.
766
767 @section aecho
768
769 Apply echoing to the input audio.
770
771 Echoes are reflected sound and can occur naturally amongst mountains
772 (and sometimes large buildings) when talking or shouting; digital echo
773 effects emulate this behaviour and are often used to help fill out the
774 sound of a single instrument or vocal. The time difference between the
775 original signal and the reflection is the @code{delay}, and the
776 loudness of the reflected signal is the @code{decay}.
777 Multiple echoes can have different delays and decays.
778
779 A description of the accepted parameters follows.
780
781 @table @option
782 @item in_gain
783 Set input gain of reflected signal. Default is @code{0.6}.
784
785 @item out_gain
786 Set output gain of reflected signal. Default is @code{0.3}.
787
788 @item delays
789 Set list of time intervals in milliseconds between original signal and reflections
790 separated by '|'. Allowed range for each @code{delay} is @code{(0 - 90000.0]}.
791 Default is @code{1000}.
792
793 @item decays
794 Set list of loudness of reflected signals separated by '|'.
795 Allowed range for each @code{decay} is @code{(0 - 1.0]}.
796 Default is @code{0.5}.
797 @end table
798
799 @subsection Examples
800
801 @itemize
802 @item
803 Make it sound as if there are twice as many instruments as are actually playing:
804 @example
805 aecho=0.8:0.88:60:0.4
806 @end example
807
808 @item
809 If delay is very short, then it sounds like a (metallic) robot playing music:
810 @example
811 aecho=0.8:0.88:6:0.4
812 @end example
813
814 @item
815 A longer delay will sound like an open air concert in the mountains:
816 @example
817 aecho=0.8:0.9:1000:0.3
818 @end example
819
820 @item
821 Same as above but with one more mountain:
822 @example
823 aecho=0.8:0.9:1000|1800:0.3|0.25
824 @end example
825 @end itemize
826
827 @section aemphasis
828 Audio emphasis filter creates or restores material directly taken from LPs or
829 emphased CDs with different filter curves. E.g. to store music on vinyl the
830 signal has to be altered by a filter first to even out the disadvantages of
831 this recording medium.
832 Once the material is played back the inverse filter has to be applied to
833 restore the distortion of the frequency response.
834
835 The filter accepts the following options:
836
837 @table @option
838 @item level_in
839 Set input gain.
840
841 @item level_out
842 Set output gain.
843
844 @item mode
845 Set filter mode. For restoring material use @code{reproduction} mode, otherwise
846 use @code{production} mode. Default is @code{reproduction} mode.
847
848 @item type
849 Set filter type. Selects medium. Can be one of the following:
850
851 @table @option
852 @item col
853 select Columbia.
854 @item emi
855 select EMI.
856 @item bsi
857 select BSI (78RPM).
858 @item riaa
859 select RIAA.
860 @item cd
861 select Compact Disc (CD).
862 @item 50fm
863 select 50µs (FM).
864 @item 75fm
865 select 75µs (FM).
866 @item 50kf
867 select 50µs (FM-KF).
868 @item 75kf
869 select 75µs (FM-KF).
870 @end table
871 @end table
872
873 @section aeval
874
875 Modify an audio signal according to the specified expressions.
876
877 This filter accepts one or more expressions (one for each channel),
878 which are evaluated and used to modify a corresponding audio signal.
879
880 It accepts the following parameters:
881
882 @table @option
883 @item exprs
884 Set the '|'-separated expressions list for each separate channel. If
885 the number of input channels is greater than the number of
886 expressions, the last specified expression is used for the remaining
887 output channels.
888
889 @item channel_layout, c
890 Set output channel layout. If not specified, the channel layout is
891 specified by the number of expressions. If set to @samp{same}, it will
892 use by default the same input channel layout.
893 @end table
894
895 Each expression in @var{exprs} can contain the following constants and functions:
896
897 @table @option
898 @item ch
899 channel number of the current expression
900
901 @item n
902 number of the evaluated sample, starting from 0
903
904 @item s
905 sample rate
906
907 @item t
908 time of the evaluated sample expressed in seconds
909
910 @item nb_in_channels
911 @item nb_out_channels
912 input and output number of channels
913
914 @item val(CH)
915 the value of input channel with number @var{CH}
916 @end table
917
918 Note: this filter is slow. For faster processing you should use a
919 dedicated filter.
920
921 @subsection Examples
922
923 @itemize
924 @item
925 Half volume:
926 @example
927 aeval=val(ch)/2:c=same
928 @end example
929
930 @item
931 Invert phase of the second channel:
932 @example
933 aeval=val(0)|-val(1)
934 @end example
935 @end itemize
936
937 @anchor{afade}
938 @section afade
939
940 Apply fade-in/out effect to input audio.
941
942 A description of the accepted parameters follows.
943
944 @table @option
945 @item type, t
946 Specify the effect type, can be either @code{in} for fade-in, or
947 @code{out} for a fade-out effect. Default is @code{in}.
948
949 @item start_sample, ss
950 Specify the number of the start sample for starting to apply the fade
951 effect. Default is 0.
952
953 @item nb_samples, ns
954 Specify the number of samples for which the fade effect has to last. At
955 the end of the fade-in effect the output audio will have the same
956 volume as the input audio, at the end of the fade-out transition
957 the output audio will be silence. Default is 44100.
958
959 @item start_time, st
960 Specify the start time of the fade effect. Default is 0.
961 The value must be specified as a time duration; see
962 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
963 for the accepted syntax.
964 If set this option is used instead of @var{start_sample}.
965
966 @item duration, d
967 Specify the duration of the fade effect. See
968 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
969 for the accepted syntax.
970 At the end of the fade-in effect the output audio will have the same
971 volume as the input audio, at the end of the fade-out transition
972 the output audio will be silence.
973 By default the duration is determined by @var{nb_samples}.
974 If set this option is used instead of @var{nb_samples}.
975
976 @item curve
977 Set curve for fade transition.
978
979 It accepts the following values:
980 @table @option
981 @item tri
982 select triangular, linear slope (default)
983 @item qsin
984 select quarter of sine wave
985 @item hsin
986 select half of sine wave
987 @item esin
988 select exponential sine wave
989 @item log
990 select logarithmic
991 @item ipar
992 select inverted parabola
993 @item qua
994 select quadratic
995 @item cub
996 select cubic
997 @item squ
998 select square root
999 @item cbr
1000 select cubic root
1001 @item par
1002 select parabola
1003 @item exp
1004 select exponential
1005 @item iqsin
1006 select inverted quarter of sine wave
1007 @item ihsin
1008 select inverted half of sine wave
1009 @item dese
1010 select double-exponential seat
1011 @item desi
1012 select double-exponential sigmoid
1013 @item losi
1014 select logistic sigmoid
1015 @item sinc
1016 select sine cardinal function
1017 @item isinc
1018 select inverted sine cardinal function
1019 @item nofade
1020 no fade applied
1021 @end table
1022 @end table
1023
1024 @subsection Examples
1025
1026 @itemize
1027 @item
1028 Fade in first 15 seconds of audio:
1029 @example
1030 afade=t=in:ss=0:d=15
1031 @end example
1032
1033 @item
1034 Fade out last 25 seconds of a 900 seconds audio:
1035 @example
1036 afade=t=out:st=875:d=25
1037 @end example
1038 @end itemize
1039
1040 @section afftdn
1041 Denoise audio samples with FFT.
1042
1043 A description of the accepted parameters follows.
1044
1045 @table @option
1046 @item nr
1047 Set the noise reduction in dB, allowed range is 0.01 to 97.
1048 Default value is 12 dB.
1049
1050 @item nf
1051 Set the noise floor in dB, allowed range is -80 to -20.
1052 Default value is -50 dB.
1053
1054 @item nt
1055 Set the noise type.
1056
1057 It accepts the following values:
1058 @table @option
1059 @item w
1060 Select white noise.
1061
1062 @item v
1063 Select vinyl noise.
1064
1065 @item s
1066 Select shellac noise.
1067
1068 @item c
1069 Select custom noise, defined in @code{bn} option.
1070
1071 Default value is white noise.
1072 @end table
1073
1074 @item bn
1075 Set custom band noise for every one of 15 bands.
1076 Bands are separated by ' ' or '|'.
1077
1078 @item rf
1079 Set the residual floor in dB, allowed range is -80 to -20.
1080 Default value is -38 dB.
1081
1082 @item tn
1083 Enable noise tracking. By default is disabled.
1084 With this enabled, noise floor is automatically adjusted.
1085
1086 @item tr
1087 Enable residual tracking. By default is disabled.
1088
1089 @item om
1090 Set the output mode.
1091
1092 It accepts the following values:
1093 @table @option
1094 @item i
1095 Pass input unchanged.
1096
1097 @item o
1098 Pass noise filtered out.
1099
1100 @item n
1101 Pass only noise.
1102
1103 Default value is @var{o}.
1104 @end table
1105 @end table
1106
1107 @subsection Commands
1108
1109 This filter supports the following commands:
1110 @table @option
1111 @item sample_noise, sn
1112 Start or stop measuring noise profile.
1113 Syntax for the command is : "start" or "stop" string.
1114 After measuring noise profile is stopped it will be
1115 automatically applied in filtering.
1116
1117 @item noise_reduction, nr
1118 Change noise reduction. Argument is single float number.
1119 Syntax for the command is : "@var{noise_reduction}"
1120
1121 @item noise_floor, nf
1122 Change noise floor. Argument is single float number.
1123 Syntax for the command is : "@var{noise_floor}"
1124
1125 @item output_mode, om
1126 Change output mode operation.
1127 Syntax for the command is : "i", "o" or "n" string.
1128 @end table
1129
1130 @section afftfilt
1131 Apply arbitrary expressions to samples in frequency domain.
1132
1133 @table @option
1134 @item real
1135 Set frequency domain real expression for each separate channel separated
1136 by '|'. Default is "re".
1137 If the number of input channels is greater than the number of
1138 expressions, the last specified expression is used for the remaining
1139 output channels.
1140
1141 @item imag
1142 Set frequency domain imaginary expression for each separate channel
1143 separated by '|'. Default is "im".
1144
1145 Each expression in @var{real} and @var{imag} can contain the following
1146 constants and functions:
1147
1148 @table @option
1149 @item sr
1150 sample rate
1151
1152 @item b
1153 current frequency bin number
1154
1155 @item nb
1156 number of available bins
1157
1158 @item ch
1159 channel number of the current expression
1160
1161 @item chs
1162 number of channels
1163
1164 @item pts
1165 current frame pts
1166
1167 @item re
1168 current real part of frequency bin of current channel
1169
1170 @item im
1171 current imaginary part of frequency bin of current channel
1172
1173 @item real(b, ch)
1174 Return the value of real part of frequency bin at location (@var{bin},@var{channel})
1175
1176 @item imag(b, ch)
1177 Return the value of imaginary part of frequency bin at location (@var{bin},@var{channel})
1178 @end table
1179
1180 @item win_size
1181 Set window size. Allowed range is from 16 to 131072.
1182 Default is @code{4096}
1183
1184 @item win_func
1185 Set window function. Default is @code{hann}.
1186
1187 @item overlap
1188 Set window overlap. If set to 1, the recommended overlap for selected
1189 window function will be picked. Default is @code{0.75}.
1190 @end table
1191
1192 @subsection Examples
1193
1194 @itemize
1195 @item
1196 Leave almost only low frequencies in audio:
1197 @example
1198 afftfilt="'real=re * (1-clip((b/nb)*b,0,1))':imag='im * (1-clip((b/nb)*b,0,1))'"
1199 @end example
1200
1201 @item
1202 Apply robotize effect:
1203 @example
1204 afftfilt="real='hypot(re,im)*sin(0)':imag='hypot(re,im)*cos(0)':win_size=512:overlap=0.75"
1205 @end example
1206
1207 @item
1208 Apply whisper effect:
1209 @example
1210 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"
1211 @end example
1212 @end itemize
1213
1214 @anchor{afir}
1215 @section afir
1216
1217 Apply an arbitrary Finite Impulse Response filter.
1218
1219 This filter is designed for applying long FIR filters,
1220 up to 60 seconds long.
1221
1222 It can be used as component for digital crossover filters,
1223 room equalization, cross talk cancellation, wavefield synthesis,
1224 auralization, ambiophonics, ambisonics and spatialization.
1225
1226 This filter uses the streams higher than first one as FIR coefficients.
1227 If the non-first stream holds a single channel, it will be used
1228 for all input channels in the first stream, otherwise
1229 the number of channels in the non-first stream must be same as
1230 the number of channels in the first stream.
1231
1232 It accepts the following parameters:
1233
1234 @table @option
1235 @item dry
1236 Set dry gain. This sets input gain.
1237
1238 @item wet
1239 Set wet gain. This sets final output gain.
1240
1241 @item length
1242 Set Impulse Response filter length. Default is 1, which means whole IR is processed.
1243
1244 @item gtype
1245 Enable applying gain measured from power of IR.
1246
1247 Set which approach to use for auto gain measurement.
1248
1249 @table @option
1250 @item none
1251 Do not apply any gain.
1252
1253 @item peak
1254 select peak gain, very conservative approach. This is default value.
1255
1256 @item dc
1257 select DC gain, limited application.
1258
1259 @item gn
1260 select gain to noise approach, this is most popular one.
1261 @end table
1262
1263 @item irgain
1264 Set gain to be applied to IR coefficients before filtering.
1265 Allowed range is 0 to 1. This gain is applied after any gain applied with @var{gtype} option.
1266
1267 @item irfmt
1268 Set format of IR stream. Can be @code{mono} or @code{input}.
1269 Default is @code{input}.
1270
1271 @item maxir
1272 Set max allowed Impulse Response filter duration in seconds. Default is 30 seconds.
1273 Allowed range is 0.1 to 60 seconds.
1274
1275 @item response
1276 Show IR frequency response, magnitude(magenta), phase(green) and group delay(yellow) in additional video stream.
1277 By default it is disabled.
1278
1279 @item channel
1280 Set for which IR channel to display frequency response. By default is first channel
1281 displayed. This option is used only when @var{response} is enabled.
1282
1283 @item size
1284 Set video stream size. This option is used only when @var{response} is enabled.
1285
1286 @item rate
1287 Set video stream frame rate. This option is used only when @var{response} is enabled.
1288
1289 @item minp
1290 Set minimal partition size used for convolution. Default is @var{8192}.
1291 Allowed range is from @var{1} to @var{32768}.
1292 Lower values decreases latency at cost of higher CPU usage.
1293
1294 @item maxp
1295 Set maximal partition size used for convolution. Default is @var{8192}.
1296 Allowed range is from @var{8} to @var{32768}.
1297 Lower values may increase CPU usage.
1298
1299 @item nbirs
1300 Set number of input impulse responses streams which will be switchable at runtime.
1301 Allowed range is from @var{1} to @var{32}. Default is @var{1}.
1302
1303 @item ir
1304 Set IR stream which will be used for convolution, starting from @var{0}, should always be
1305 lower than supplied value by @code{nbirs} option. Default is @var{0}.
1306 This option can be changed at runtime via @ref{commands}.
1307 @end table
1308
1309 @subsection Examples
1310
1311 @itemize
1312 @item
1313 Apply reverb to stream using mono IR file as second input, complete command using ffmpeg:
1314 @example
1315 ffmpeg -i input.wav -i middle_tunnel_1way_mono.wav -lavfi afir output.wav
1316 @end example
1317 @end itemize
1318
1319 @anchor{aformat}
1320 @section aformat
1321
1322 Set output format constraints for the input audio. The framework will
1323 negotiate the most appropriate format to minimize conversions.
1324
1325 It accepts the following parameters:
1326 @table @option
1327
1328 @item sample_fmts, f
1329 A '|'-separated list of requested sample formats.
1330
1331 @item sample_rates, r
1332 A '|'-separated list of requested sample rates.
1333
1334 @item channel_layouts, cl
1335 A '|'-separated list of requested channel layouts.
1336
1337 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1338 for the required syntax.
1339 @end table
1340
1341 If a parameter is omitted, all values are allowed.
1342
1343 Force the output to either unsigned 8-bit or signed 16-bit stereo
1344 @example
1345 aformat=sample_fmts=u8|s16:channel_layouts=stereo
1346 @end example
1347
1348 @section afreqshift
1349 Apply frequency shift to input audio samples.
1350
1351 The filter accepts the following options:
1352
1353 @table @option
1354 @item shift
1355 Specify frequency shift. Allowed range is -INT_MAX to INT_MAX.
1356 Default value is 0.0.
1357 @end table
1358
1359 @subsection Commands
1360
1361 This filter supports the above option as @ref{commands}.
1362
1363 @section agate
1364
1365 A gate is mainly used to reduce lower parts of a signal. This kind of signal
1366 processing reduces disturbing noise between useful signals.
1367
1368 Gating is done by detecting the volume below a chosen level @var{threshold}
1369 and dividing it by the factor set with @var{ratio}. The bottom of the noise
1370 floor is set via @var{range}. Because an exact manipulation of the signal
1371 would cause distortion of the waveform the reduction can be levelled over
1372 time. This is done by setting @var{attack} and @var{release}.
1373
1374 @var{attack} determines how long the signal has to fall below the threshold
1375 before any reduction will occur and @var{release} sets the time the signal
1376 has to rise above the threshold to reduce the reduction again.
1377 Shorter signals than the chosen attack time will be left untouched.
1378
1379 @table @option
1380 @item level_in
1381 Set input level before filtering.
1382 Default is 1. Allowed range is from 0.015625 to 64.
1383
1384 @item mode
1385 Set the mode of operation. Can be @code{upward} or @code{downward}.
1386 Default is @code{downward}. If set to @code{upward} mode, higher parts of signal
1387 will be amplified, expanding dynamic range in upward direction.
1388 Otherwise, in case of @code{downward} lower parts of signal will be reduced.
1389
1390 @item range
1391 Set the level of gain reduction when the signal is below the threshold.
1392 Default is 0.06125. Allowed range is from 0 to 1.
1393 Setting this to 0 disables reduction and then filter behaves like expander.
1394
1395 @item threshold
1396 If a signal rises above this level the gain reduction is released.
1397 Default is 0.125. Allowed range is from 0 to 1.
1398
1399 @item ratio
1400 Set a ratio by which the signal is reduced.
1401 Default is 2. Allowed range is from 1 to 9000.
1402
1403 @item attack
1404 Amount of milliseconds the signal has to rise above the threshold before gain
1405 reduction stops.
1406 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
1407
1408 @item release
1409 Amount of milliseconds the signal has to fall below the threshold before the
1410 reduction is increased again. Default is 250 milliseconds.
1411 Allowed range is from 0.01 to 9000.
1412
1413 @item makeup
1414 Set amount of amplification of signal after processing.
1415 Default is 1. Allowed range is from 1 to 64.
1416
1417 @item knee
1418 Curve the sharp knee around the threshold to enter gain reduction more softly.
1419 Default is 2.828427125. Allowed range is from 1 to 8.
1420
1421 @item detection
1422 Choose if exact signal should be taken for detection or an RMS like one.
1423 Default is @code{rms}. Can be @code{peak} or @code{rms}.
1424
1425 @item link
1426 Choose if the average level between all channels or the louder channel affects
1427 the reduction.
1428 Default is @code{average}. Can be @code{average} or @code{maximum}.
1429 @end table
1430
1431 @section aiir
1432
1433 Apply an arbitrary Infinite Impulse Response filter.
1434
1435 It accepts the following parameters:
1436
1437 @table @option
1438 @item zeros, z
1439 Set B/numerator/zeros/reflection coefficients.
1440
1441 @item poles, p
1442 Set A/denominator/poles/ladder coefficients.
1443
1444 @item gains, k
1445 Set channels gains.
1446
1447 @item dry_gain
1448 Set input gain.
1449
1450 @item wet_gain
1451 Set output gain.
1452
1453 @item format, f
1454 Set coefficients format.
1455
1456 @table @samp
1457 @item ll
1458 lattice-ladder function
1459 @item sf
1460 analog transfer function
1461 @item tf
1462 digital transfer function
1463 @item zp
1464 Z-plane zeros/poles, cartesian (default)
1465 @item pr
1466 Z-plane zeros/poles, polar radians
1467 @item pd
1468 Z-plane zeros/poles, polar degrees
1469 @item sp
1470 S-plane zeros/poles
1471 @end table
1472
1473 @item process, r
1474 Set type of processing.
1475
1476 @table @samp
1477 @item d
1478 direct processing
1479 @item s
1480 serial processing
1481 @item p
1482 parallel processing
1483 @end table
1484
1485 @item precision, e
1486 Set filtering precision.
1487
1488 @table @samp
1489 @item dbl
1490 double-precision floating-point (default)
1491 @item flt
1492 single-precision floating-point
1493 @item i32
1494 32-bit integers
1495 @item i16
1496 16-bit integers
1497 @end table
1498
1499 @item normalize, n
1500 Normalize filter coefficients, by default is enabled.
1501 Enabling it will normalize magnitude response at DC to 0dB.
1502
1503 @item mix
1504 How much to use filtered signal in output. Default is 1.
1505 Range is between 0 and 1.
1506
1507 @item response
1508 Show IR frequency response, magnitude(magenta), phase(green) and group delay(yellow) in additional video stream.
1509 By default it is disabled.
1510
1511 @item channel
1512 Set for which IR channel to display frequency response. By default is first channel
1513 displayed. This option is used only when @var{response} is enabled.
1514
1515 @item size
1516 Set video stream size. This option is used only when @var{response} is enabled.
1517 @end table
1518
1519 Coefficients in @code{tf} and @code{sf} format are separated by spaces and are in ascending
1520 order.
1521
1522 Coefficients in @code{zp} format are separated by spaces and order of coefficients
1523 doesn't matter. Coefficients in @code{zp} format are complex numbers with @var{i}
1524 imaginary unit.
1525
1526 Different coefficients and gains can be provided for every channel, in such case
1527 use '|' to separate coefficients or gains. Last provided coefficients will be
1528 used for all remaining channels.
1529
1530 @subsection Examples
1531
1532 @itemize
1533 @item
1534 Apply 2 pole elliptic notch at around 5000Hz for 48000 Hz sample rate:
1535 @example
1536 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
1537 @end example
1538
1539 @item
1540 Same as above but in @code{zp} format:
1541 @example
1542 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
1543 @end example
1544
1545 @item
1546 Apply 3-rd order analog normalized Butterworth low-pass filter, using analog transfer function format:
1547 @example
1548 aiir=z=1.3057 0 0 0:p=1.3057 2.3892 2.1860 1:f=sf:r=d
1549 @end example
1550 @end itemize
1551
1552 @section alimiter
1553
1554 The limiter prevents an input signal from rising over a desired threshold.
1555 This limiter uses lookahead technology to prevent your signal from distorting.
1556 It means that there is a small delay after the signal is processed. Keep in mind
1557 that the delay it produces is the attack time you set.
1558
1559 The filter accepts the following options:
1560
1561 @table @option
1562 @item level_in
1563 Set input gain. Default is 1.
1564
1565 @item level_out
1566 Set output gain. Default is 1.
1567
1568 @item limit
1569 Don't let signals above this level pass the limiter. Default is 1.
1570
1571 @item attack
1572 The limiter will reach its attenuation level in this amount of time in
1573 milliseconds. Default is 5 milliseconds.
1574
1575 @item release
1576 Come back from limiting to attenuation 1.0 in this amount of milliseconds.
1577 Default is 50 milliseconds.
1578
1579 @item asc
1580 When gain reduction is always needed ASC takes care of releasing to an
1581 average reduction level rather than reaching a reduction of 0 in the release
1582 time.
1583
1584 @item asc_level
1585 Select how much the release time is affected by ASC, 0 means nearly no changes
1586 in release time while 1 produces higher release times.
1587
1588 @item level
1589 Auto level output signal. Default is enabled.
1590 This normalizes audio back to 0dB if enabled.
1591 @end table
1592
1593 Depending on picked setting it is recommended to upsample input 2x or 4x times
1594 with @ref{aresample} before applying this filter.
1595
1596 @section allpass
1597
1598 Apply a two-pole all-pass filter with central frequency (in Hz)
1599 @var{frequency}, and filter-width @var{width}.
1600 An all-pass filter changes the audio's frequency to phase relationship
1601 without changing its frequency to amplitude relationship.
1602
1603 The filter accepts the following options:
1604
1605 @table @option
1606 @item frequency, f
1607 Set frequency in Hz.
1608
1609 @item width_type, t
1610 Set method to specify band-width of filter.
1611 @table @option
1612 @item h
1613 Hz
1614 @item q
1615 Q-Factor
1616 @item o
1617 octave
1618 @item s
1619 slope
1620 @item k
1621 kHz
1622 @end table
1623
1624 @item width, w
1625 Specify the band-width of a filter in width_type units.
1626
1627 @item mix, m
1628 How much to use filtered signal in output. Default is 1.
1629 Range is between 0 and 1.
1630
1631 @item channels, c
1632 Specify which channels to filter, by default all available are filtered.
1633
1634 @item normalize, n
1635 Normalize biquad coefficients, by default is disabled.
1636 Enabling it will normalize magnitude response at DC to 0dB.
1637
1638 @item order, o
1639 Set the filter order, can be 1 or 2. Default is 2.
1640
1641 @item transform, a
1642 Set transform type of IIR filter.
1643 @table @option
1644 @item di
1645 @item dii
1646 @item tdii
1647 @item latt
1648 @end table
1649 @end table
1650
1651 @subsection Commands
1652
1653 This filter supports the following commands:
1654 @table @option
1655 @item frequency, f
1656 Change allpass frequency.
1657 Syntax for the command is : "@var{frequency}"
1658
1659 @item width_type, t
1660 Change allpass width_type.
1661 Syntax for the command is : "@var{width_type}"
1662
1663 @item width, w
1664 Change allpass width.
1665 Syntax for the command is : "@var{width}"
1666
1667 @item mix, m
1668 Change allpass mix.
1669 Syntax for the command is : "@var{mix}"
1670 @end table
1671
1672 @section aloop
1673
1674 Loop audio samples.
1675
1676 The filter accepts the following options:
1677
1678 @table @option
1679 @item loop
1680 Set the number of loops. Setting this value to -1 will result in infinite loops.
1681 Default is 0.
1682
1683 @item size
1684 Set maximal number of samples. Default is 0.
1685
1686 @item start
1687 Set first sample of loop. Default is 0.
1688 @end table
1689
1690 @anchor{amerge}
1691 @section amerge
1692
1693 Merge two or more audio streams into a single multi-channel stream.
1694
1695 The filter accepts the following options:
1696
1697 @table @option
1698
1699 @item inputs
1700 Set the number of inputs. Default is 2.
1701
1702 @end table
1703
1704 If the channel layouts of the inputs are disjoint, and therefore compatible,
1705 the channel layout of the output will be set accordingly and the channels
1706 will be reordered as necessary. If the channel layouts of the inputs are not
1707 disjoint, the output will have all the channels of the first input then all
1708 the channels of the second input, in that order, and the channel layout of
1709 the output will be the default value corresponding to the total number of
1710 channels.
1711
1712 For example, if the first input is in 2.1 (FL+FR+LF) and the second input
1713 is FC+BL+BR, then the output will be in 5.1, with the channels in the
1714 following order: a1, a2, b1, a3, b2, b3 (a1 is the first channel of the
1715 first input, b1 is the first channel of the second input).
1716
1717 On the other hand, if both input are in stereo, the output channels will be
1718 in the default order: a1, a2, b1, b2, and the channel layout will be
1719 arbitrarily set to 4.0, which may or may not be the expected value.
1720
1721 All inputs must have the same sample rate, and format.
1722
1723 If inputs do not have the same duration, the output will stop with the
1724 shortest.
1725
1726 @subsection Examples
1727
1728 @itemize
1729 @item
1730 Merge two mono files into a stereo stream:
1731 @example
1732 amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
1733 @end example
1734
1735 @item
1736 Multiple merges assuming 1 video stream and 6 audio streams in @file{input.mkv}:
1737 @example
1738 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
1739 @end example
1740 @end itemize
1741
1742 @section amix
1743
1744 Mixes multiple audio inputs into a single output.
1745
1746 Note that this filter only supports float samples (the @var{amerge}
1747 and @var{pan} audio filters support many formats). If the @var{amix}
1748 input has integer samples then @ref{aresample} will be automatically
1749 inserted to perform the conversion to float samples.
1750
1751 For example
1752 @example
1753 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
1754 @end example
1755 will mix 3 input audio streams to a single output with the same duration as the
1756 first input and a dropout transition time of 3 seconds.
1757
1758 It accepts the following parameters:
1759 @table @option
1760
1761 @item inputs
1762 The number of inputs. If unspecified, it defaults to 2.
1763
1764 @item duration
1765 How to determine the end-of-stream.
1766 @table @option
1767
1768 @item longest
1769 The duration of the longest input. (default)
1770
1771 @item shortest
1772 The duration of the shortest input.
1773
1774 @item first
1775 The duration of the first input.
1776
1777 @end table
1778
1779 @item dropout_transition
1780 The transition time, in seconds, for volume renormalization when an input
1781 stream ends. The default value is 2 seconds.
1782
1783 @item weights
1784 Specify weight of each input audio stream as sequence.
1785 Each weight is separated by space. By default all inputs have same weight.
1786 @end table
1787
1788 @subsection Commands
1789
1790 This filter supports the following commands:
1791 @table @option
1792 @item weights
1793 Syntax is same as option with same name.
1794 @end table
1795
1796 @section amultiply
1797
1798 Multiply first audio stream with second audio stream and store result
1799 in output audio stream. Multiplication is done by multiplying each
1800 sample from first stream with sample at same position from second stream.
1801
1802 With this element-wise multiplication one can create amplitude fades and
1803 amplitude modulations.
1804
1805 @section anequalizer
1806
1807 High-order parametric multiband equalizer for each channel.
1808
1809 It accepts the following parameters:
1810 @table @option
1811 @item params
1812
1813 This option string is in format:
1814 "c@var{chn} f=@var{cf} w=@var{w} g=@var{g} t=@var{f} | ..."
1815 Each equalizer band is separated by '|'.
1816
1817 @table @option
1818 @item chn
1819 Set channel number to which equalization will be applied.
1820 If input doesn't have that channel the entry is ignored.
1821
1822 @item f
1823 Set central frequency for band.
1824 If input doesn't have that frequency the entry is ignored.
1825
1826 @item w
1827 Set band width in hertz.
1828
1829 @item g
1830 Set band gain in dB.
1831
1832 @item t
1833 Set filter type for band, optional, can be:
1834
1835 @table @samp
1836 @item 0
1837 Butterworth, this is default.
1838
1839 @item 1
1840 Chebyshev type 1.
1841
1842 @item 2
1843 Chebyshev type 2.
1844 @end table
1845 @end table
1846
1847 @item curves
1848 With this option activated frequency response of anequalizer is displayed
1849 in video stream.
1850
1851 @item size
1852 Set video stream size. Only useful if curves option is activated.
1853
1854 @item mgain
1855 Set max gain that will be displayed. Only useful if curves option is activated.
1856 Setting this to a reasonable value makes it possible to display gain which is derived from
1857 neighbour bands which are too close to each other and thus produce higher gain
1858 when both are activated.
1859
1860 @item fscale
1861 Set frequency scale used to draw frequency response in video output.
1862 Can be linear or logarithmic. Default is logarithmic.
1863
1864 @item colors
1865 Set color for each channel curve which is going to be displayed in video stream.
1866 This is list of color names separated by space or by '|'.
1867 Unrecognised or missing colors will be replaced by white color.
1868 @end table
1869
1870 @subsection Examples
1871
1872 @itemize
1873 @item
1874 Lower gain by 10 of central frequency 200Hz and width 100 Hz
1875 for first 2 channels using Chebyshev type 1 filter:
1876 @example
1877 anequalizer=c0 f=200 w=100 g=-10 t=1|c1 f=200 w=100 g=-10 t=1
1878 @end example
1879 @end itemize
1880
1881 @subsection Commands
1882
1883 This filter supports the following commands:
1884 @table @option
1885 @item change
1886 Alter existing filter parameters.
1887 Syntax for the commands is : "@var{fN}|f=@var{freq}|w=@var{width}|g=@var{gain}"
1888
1889 @var{fN} is existing filter number, starting from 0, if no such filter is available
1890 error is returned.
1891 @var{freq} set new frequency parameter.
1892 @var{width} set new width parameter in herz.
1893 @var{gain} set new gain parameter in dB.
1894
1895 Full filter invocation with asendcmd may look like this:
1896 asendcmd=c='4.0 anequalizer change 0|f=200|w=50|g=1',anequalizer=...
1897 @end table
1898
1899 @section anlmdn
1900
1901 Reduce broadband noise in audio samples using Non-Local Means algorithm.
1902
1903 Each sample is adjusted by looking for other samples with similar contexts. This
1904 context similarity is defined by comparing their surrounding patches of size
1905 @option{p}. Patches are searched in an area of @option{r} around the sample.
1906
1907 The filter accepts the following options:
1908
1909 @table @option
1910 @item s
1911 Set denoising strength. Allowed range is from 0.00001 to 10. Default value is 0.00001.
1912
1913 @item p
1914 Set patch radius duration. Allowed range is from 1 to 100 milliseconds.
1915 Default value is 2 milliseconds.
1916
1917 @item r
1918 Set research radius duration. Allowed range is from 2 to 300 milliseconds.
1919 Default value is 6 milliseconds.
1920
1921 @item o
1922 Set the output mode.
1923
1924 It accepts the following values:
1925 @table @option
1926 @item i
1927 Pass input unchanged.
1928
1929 @item o
1930 Pass noise filtered out.
1931
1932 @item n
1933 Pass only noise.
1934
1935 Default value is @var{o}.
1936 @end table
1937
1938 @item m
1939 Set smooth factor. Default value is @var{11}. Allowed range is from @var{1} to @var{15}.
1940 @end table
1941
1942 @subsection Commands
1943
1944 This filter supports the all above options as @ref{commands}.
1945
1946 @section anlms
1947 Apply Normalized Least-Mean-Squares algorithm to the first audio stream using the second audio stream.
1948
1949 This adaptive filter is used to mimic a desired filter by finding the filter coefficients that
1950 relate to producing the least mean square of the error signal (difference between the desired,
1951 2nd input audio stream and the actual signal, the 1st input audio stream).
1952
1953 A description of the accepted options follows.
1954
1955 @table @option
1956 @item order
1957 Set filter order.
1958
1959 @item mu
1960 Set filter mu.
1961
1962 @item eps
1963 Set the filter eps.
1964
1965 @item leakage
1966 Set the filter leakage.
1967
1968 @item out_mode
1969 It accepts the following values:
1970 @table @option
1971 @item i
1972 Pass the 1st input.
1973
1974 @item d
1975 Pass the 2nd input.
1976
1977 @item o
1978 Pass filtered samples.
1979
1980 @item n
1981 Pass difference between desired and filtered samples.
1982
1983 Default value is @var{o}.
1984 @end table
1985 @end table
1986
1987 @subsection Examples
1988
1989 @itemize
1990 @item
1991 One of many usages of this filter is noise reduction, input audio is filtered
1992 with same samples that are delayed by fixed amount, one such example for stereo audio is:
1993 @example
1994 asplit[a][b],[a]adelay=32S|32S[a],[b][a]anlms=order=128:leakage=0.0005:mu=.5:out_mode=o
1995 @end example
1996 @end itemize
1997
1998 @subsection Commands
1999
2000 This filter supports the same commands as options, excluding option @code{order}.
2001
2002 @section anull
2003
2004 Pass the audio source unchanged to the output.
2005
2006 @section apad
2007
2008 Pad the end of an audio stream with silence.
2009
2010 This can be used together with @command{ffmpeg} @option{-shortest} to
2011 extend audio streams to the same length as the video stream.
2012
2013 A description of the accepted options follows.
2014
2015 @table @option
2016 @item packet_size
2017 Set silence packet size. Default value is 4096.
2018
2019 @item pad_len
2020 Set the number of samples of silence to add to the end. After the
2021 value is reached, the stream is terminated. This option is mutually
2022 exclusive with @option{whole_len}.
2023
2024 @item whole_len
2025 Set the minimum total number of samples in the output audio stream. If
2026 the value is longer than the input audio length, silence is added to
2027 the end, until the value is reached. This option is mutually exclusive
2028 with @option{pad_len}.
2029
2030 @item pad_dur
2031 Specify the duration of samples of silence to add. See
2032 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
2033 for the accepted syntax. Used only if set to non-zero value.
2034
2035 @item whole_dur
2036 Specify the minimum total duration in the output audio stream. See
2037 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
2038 for the accepted syntax. Used only if set to non-zero value. If the value is longer than
2039 the input audio length, silence is added to the end, until the value is reached.
2040 This option is mutually exclusive with @option{pad_dur}
2041 @end table
2042
2043 If neither the @option{pad_len} nor the @option{whole_len} nor @option{pad_dur}
2044 nor @option{whole_dur} option is set, the filter will add silence to the end of
2045 the input stream indefinitely.
2046
2047 @subsection Examples
2048
2049 @itemize
2050 @item
2051 Add 1024 samples of silence to the end of the input:
2052 @example
2053 apad=pad_len=1024
2054 @end example
2055
2056 @item
2057 Make sure the audio output will contain at least 10000 samples, pad
2058 the input with silence if required:
2059 @example
2060 apad=whole_len=10000
2061 @end example
2062
2063 @item
2064 Use @command{ffmpeg} to pad the audio input with silence, so that the
2065 video stream will always result the shortest and will be converted
2066 until the end in the output file when using the @option{shortest}
2067 option:
2068 @example
2069 ffmpeg -i VIDEO -i AUDIO -filter_complex "[1:0]apad" -shortest OUTPUT
2070 @end example
2071 @end itemize
2072
2073 @section aphaser
2074 Add a phasing effect to the input audio.
2075
2076 A phaser filter creates series of peaks and troughs in the frequency spectrum.
2077 The position of the peaks and troughs are modulated so that they vary over time, creating a sweeping effect.
2078
2079 A description of the accepted parameters follows.
2080
2081 @table @option
2082 @item in_gain
2083 Set input gain. Default is 0.4.
2084
2085 @item out_gain
2086 Set output gain. Default is 0.74
2087
2088 @item delay
2089 Set delay in milliseconds. Default is 3.0.
2090
2091 @item decay
2092 Set decay. Default is 0.4.
2093
2094 @item speed
2095 Set modulation speed in Hz. Default is 0.5.
2096
2097 @item type
2098 Set modulation type. Default is triangular.
2099
2100 It accepts the following values:
2101 @table @samp
2102 @item triangular, t
2103 @item sinusoidal, s
2104 @end table
2105 @end table
2106
2107 @section aphaseshift
2108 Apply phase shift to input audio samples.
2109
2110 The filter accepts the following options:
2111
2112 @table @option
2113 @item shift
2114 Specify phase shift. Allowed range is from -1.0 to 1.0.
2115 Default value is 0.0.
2116 @end table
2117
2118 @subsection Commands
2119
2120 This filter supports the above option as @ref{commands}.
2121
2122 @section apulsator
2123
2124 Audio pulsator is something between an autopanner and a tremolo.
2125 But it can produce funny stereo effects as well. Pulsator changes the volume
2126 of the left and right channel based on a LFO (low frequency oscillator) with
2127 different waveforms and shifted phases.
2128 This filter have the ability to define an offset between left and right
2129 channel. An offset of 0 means that both LFO shapes match each other.
2130 The left and right channel are altered equally - a conventional tremolo.
2131 An offset of 50% means that the shape of the right channel is exactly shifted
2132 in phase (or moved backwards about half of the frequency) - pulsator acts as
2133 an autopanner. At 1 both curves match again. Every setting in between moves the
2134 phase shift gapless between all stages and produces some "bypassing" sounds with
2135 sine and triangle waveforms. The more you set the offset near 1 (starting from
2136 the 0.5) the faster the signal passes from the left to the right speaker.
2137
2138 The filter accepts the following options:
2139
2140 @table @option
2141 @item level_in
2142 Set input gain. By default it is 1. Range is [0.015625 - 64].
2143
2144 @item level_out
2145 Set output gain. By default it is 1. Range is [0.015625 - 64].
2146
2147 @item mode
2148 Set waveform shape the LFO will use. Can be one of: sine, triangle, square,
2149 sawup or sawdown. Default is sine.
2150
2151 @item amount
2152 Set modulation. Define how much of original signal is affected by the LFO.
2153
2154 @item offset_l
2155 Set left channel offset. Default is 0. Allowed range is [0 - 1].
2156
2157 @item offset_r
2158 Set right channel offset. Default is 0.5. Allowed range is [0 - 1].
2159
2160 @item width
2161 Set pulse width. Default is 1. Allowed range is [0 - 2].
2162
2163 @item timing
2164 Set possible timing mode. Can be one of: bpm, ms or hz. Default is hz.
2165
2166 @item bpm
2167 Set bpm. Default is 120. Allowed range is [30 - 300]. Only used if timing
2168 is set to bpm.
2169
2170 @item ms
2171 Set ms. Default is 500. Allowed range is [10 - 2000]. Only used if timing
2172 is set to ms.
2173
2174 @item hz
2175 Set frequency in Hz. Default is 2. Allowed range is [0.01 - 100]. Only used
2176 if timing is set to hz.
2177 @end table
2178
2179 @anchor{aresample}
2180 @section aresample
2181
2182 Resample the input audio to the specified parameters, using the
2183 libswresample library. If none are specified then the filter will
2184 automatically convert between its input and output.
2185
2186 This filter is also able to stretch/squeeze the audio data to make it match
2187 the timestamps or to inject silence / cut out audio to make it match the
2188 timestamps, do a combination of both or do neither.
2189
2190 The filter accepts the syntax
2191 [@var{sample_rate}:]@var{resampler_options}, where @var{sample_rate}
2192 expresses a sample rate and @var{resampler_options} is a list of
2193 @var{key}=@var{value} pairs, separated by ":". See the
2194 @ref{Resampler Options,,"Resampler Options" section in the
2195 ffmpeg-resampler(1) manual,ffmpeg-resampler}
2196 for the complete list of supported options.
2197
2198 @subsection Examples
2199
2200 @itemize
2201 @item
2202 Resample the input audio to 44100Hz:
2203 @example
2204 aresample=44100
2205 @end example
2206
2207 @item
2208 Stretch/squeeze samples to the given timestamps, with a maximum of 1000
2209 samples per second compensation:
2210 @example
2211 aresample=async=1000
2212 @end example
2213 @end itemize
2214
2215 @section areverse
2216
2217 Reverse an audio clip.
2218
2219 Warning: This filter requires memory to buffer the entire clip, so trimming
2220 is suggested.
2221
2222 @subsection Examples
2223
2224 @itemize
2225 @item
2226 Take the first 5 seconds of a clip, and reverse it.
2227 @example
2228 atrim=end=5,areverse
2229 @end example
2230 @end itemize
2231
2232 @section arnndn
2233
2234 Reduce noise from speech using Recurrent Neural Networks.
2235
2236 This filter accepts the following options:
2237
2238 @table @option
2239 @item model, m
2240 Set train model file to load. This option is always required.
2241 @end table
2242
2243 @section asetnsamples
2244
2245 Set the number of samples per each output audio frame.
2246
2247 The last output packet may contain a different number of samples, as
2248 the filter will flush all the remaining samples when the input audio
2249 signals its end.
2250
2251 The filter accepts the following options:
2252
2253 @table @option
2254
2255 @item nb_out_samples, n
2256 Set the number of frames per each output audio frame. The number is
2257 intended as the number of samples @emph{per each channel}.
2258 Default value is 1024.
2259
2260 @item pad, p
2261 If set to 1, the filter will pad the last audio frame with zeroes, so
2262 that the last frame will contain the same number of samples as the
2263 previous ones. Default value is 1.
2264 @end table
2265
2266 For example, to set the number of per-frame samples to 1234 and
2267 disable padding for the last frame, use:
2268 @example
2269 asetnsamples=n=1234:p=0
2270 @end example
2271
2272 @section asetrate
2273
2274 Set the sample rate without altering the PCM data.
2275 This will result in a change of speed and pitch.
2276
2277 The filter accepts the following options:
2278
2279 @table @option
2280 @item sample_rate, r
2281 Set the output sample rate. Default is 44100 Hz.
2282 @end table
2283
2284 @section ashowinfo
2285
2286 Show a line containing various information for each input audio frame.
2287 The input audio is not modified.
2288
2289 The shown line contains a sequence of key/value pairs of the form
2290 @var{key}:@var{value}.
2291
2292 The following values are shown in the output:
2293
2294 @table @option
2295 @item n
2296 The (sequential) number of the input frame, starting from 0.
2297
2298 @item pts
2299 The presentation timestamp of the input frame, in time base units; the time base
2300 depends on the filter input pad, and is usually 1/@var{sample_rate}.
2301
2302 @item pts_time
2303 The presentation timestamp of the input frame in seconds.
2304
2305 @item pos
2306 position of the frame in the input stream, -1 if this information in
2307 unavailable and/or meaningless (for example in case of synthetic audio)
2308
2309 @item fmt
2310 The sample format.
2311
2312 @item chlayout
2313 The channel layout.
2314
2315 @item rate
2316 The sample rate for the audio frame.
2317
2318 @item nb_samples
2319 The number of samples (per channel) in the frame.
2320
2321 @item checksum
2322 The Adler-32 checksum (printed in hexadecimal) of the audio data. For planar
2323 audio, the data is treated as if all the planes were concatenated.
2324
2325 @item plane_checksums
2326 A list of Adler-32 checksums for each data plane.
2327 @end table
2328
2329 @section asoftclip
2330 Apply audio soft clipping.
2331
2332 Soft clipping is a type of distortion effect where the amplitude of a signal is saturated
2333 along a smooth curve, rather than the abrupt shape of hard-clipping.
2334
2335 This filter accepts the following options:
2336
2337 @table @option
2338 @item type
2339 Set type of soft-clipping.
2340
2341 It accepts the following values:
2342 @table @option
2343 @item hard
2344 @item tanh
2345 @item atan
2346 @item cubic
2347 @item exp
2348 @item alg
2349 @item quintic
2350 @item sin
2351 @item erf
2352 @end table
2353
2354 @item param
2355 Set additional parameter which controls sigmoid function.
2356
2357 @item oversample
2358 Set oversampling factor.
2359 @end table
2360
2361 @subsection Commands
2362
2363 This filter supports the all above options as @ref{commands}.
2364
2365 @section asr
2366 Automatic Speech Recognition
2367
2368 This filter uses PocketSphinx for speech recognition. To enable
2369 compilation of this filter, you need to configure FFmpeg with
2370 @code{--enable-pocketsphinx}.
2371
2372 It accepts the following options:
2373
2374 @table @option
2375 @item rate
2376 Set sampling rate of input audio. Defaults is @code{16000}.
2377 This need to match speech models, otherwise one will get poor results.
2378
2379 @item hmm
2380 Set dictionary containing acoustic model files.
2381
2382 @item dict
2383 Set pronunciation dictionary.
2384
2385 @item lm
2386 Set language model file.
2387
2388 @item lmctl
2389 Set language model set.
2390
2391 @item lmname
2392 Set which language model to use.
2393
2394 @item logfn
2395 Set output for log messages.
2396 @end table
2397
2398 The filter exports recognized speech as the frame metadata @code{lavfi.asr.text}.
2399
2400 @anchor{astats}
2401 @section astats
2402
2403 Display time domain statistical information about the audio channels.
2404 Statistics are calculated and displayed for each audio channel and,
2405 where applicable, an overall figure is also given.
2406
2407 It accepts the following option:
2408 @table @option
2409 @item length
2410 Short window length in seconds, used for peak and trough RMS measurement.
2411 Default is @code{0.05} (50 milliseconds). Allowed range is @code{[0.01 - 10]}.
2412
2413 @item metadata
2414
2415 Set metadata injection. All the metadata keys are prefixed with @code{lavfi.astats.X},
2416 where @code{X} is channel number starting from 1 or string @code{Overall}. Default is
2417 disabled.
2418
2419 Available keys for each channel are:
2420 DC_offset
2421 Min_level
2422 Max_level
2423 Min_difference
2424 Max_difference
2425 Mean_difference
2426 RMS_difference
2427 Peak_level
2428 RMS_peak
2429 RMS_trough
2430 Crest_factor
2431 Flat_factor
2432 Peak_count
2433 Noise_floor
2434 Noise_floor_count
2435 Bit_depth
2436 Dynamic_range
2437 Zero_crossings
2438 Zero_crossings_rate
2439 Number_of_NaNs
2440 Number_of_Infs
2441 Number_of_denormals
2442
2443 and for Overall:
2444 DC_offset
2445 Min_level
2446 Max_level
2447 Min_difference
2448 Max_difference
2449 Mean_difference
2450 RMS_difference
2451 Peak_level
2452 RMS_level
2453 RMS_peak
2454 RMS_trough
2455 Flat_factor
2456 Peak_count
2457 Noise_floor
2458 Noise_floor_count
2459 Bit_depth
2460 Number_of_samples
2461 Number_of_NaNs
2462 Number_of_Infs
2463 Number_of_denormals
2464
2465 For example full key look like this @code{lavfi.astats.1.DC_offset} or
2466 this @code{lavfi.astats.Overall.Peak_count}.
2467
2468 For description what each key means read below.
2469
2470 @item reset
2471 Set number of frame after which stats are going to be recalculated.
2472 Default is disabled.
2473
2474 @item measure_perchannel
2475 Select the entries which need to be measured per channel. The metadata keys can
2476 be used as flags, default is @option{all} which measures everything.
2477 @option{none} disables all per channel measurement.
2478
2479 @item measure_overall
2480 Select the entries which need to be measured overall. The metadata keys can
2481 be used as flags, default is @option{all} which measures everything.
2482 @option{none} disables all overall measurement.
2483
2484 @end table
2485
2486 A description of each shown parameter follows:
2487
2488 @table @option
2489 @item DC offset
2490 Mean amplitude displacement from zero.
2491
2492 @item Min level
2493 Minimal sample level.
2494
2495 @item Max level
2496 Maximal sample level.
2497
2498 @item Min difference
2499 Minimal difference between two consecutive samples.
2500
2501 @item Max difference
2502 Maximal difference between two consecutive samples.
2503
2504 @item Mean difference
2505 Mean difference between two consecutive samples.
2506 The average of each difference between two consecutive samples.
2507
2508 @item RMS difference
2509 Root Mean Square difference between two consecutive samples.
2510
2511 @item Peak level dB
2512 @item RMS level dB
2513 Standard peak and RMS level measured in dBFS.
2514
2515 @item RMS peak dB
2516 @item RMS trough dB
2517 Peak and trough values for RMS level measured over a short window.
2518
2519 @item Crest factor
2520 Standard ratio of peak to RMS level (note: not in dB).
2521
2522 @item Flat factor
2523 Flatness (i.e. consecutive samples with the same value) of the signal at its peak levels
2524 (i.e. either @var{Min level} or @var{Max level}).
2525
2526 @item Peak count
2527 Number of occasions (not the number of samples) that the signal attained either
2528 @var{Min level} or @var{Max level}.
2529
2530 @item Noise floor dB
2531 Minimum local peak measured in dBFS over a short window.
2532
2533 @item Noise floor count
2534 Number of occasions (not the number of samples) that the signal attained
2535 @var{Noise floor}.
2536
2537 @item Bit depth
2538 Overall bit depth of audio. Number of bits used for each sample.
2539
2540 @item Dynamic range
2541 Measured dynamic range of audio in dB.
2542
2543 @item Zero crossings
2544 Number of points where the waveform crosses the zero level axis.
2545
2546 @item Zero crossings rate
2547 Rate of Zero crossings and number of audio samples.
2548 @end table
2549
2550 @section asubboost
2551 Boost subwoofer frequencies.
2552
2553 The filter accepts the following options:
2554
2555 @table @option
2556 @item dry
2557 Set dry gain, how much of original signal is kept. Allowed range is from 0 to 1.
2558 Default value is 0.5.
2559
2560 @item wet
2561 Set wet gain, how much of filtered signal is kept. Allowed range is from 0 to 1.
2562 Default value is 0.8.
2563
2564 @item decay
2565 Set delay line decay gain value. Allowed range is from 0 to 1.
2566 Default value is 0.7.
2567
2568 @item feedback
2569 Set delay line feedback gain value. Allowed range is from 0 to 1.
2570 Default value is 0.5.
2571
2572 @item cutoff
2573 Set cutoff frequency in herz. Allowed range is 50 to 900.
2574 Default value is 100.
2575
2576 @item slope
2577 Set slope amount for cutoff frequency. Allowed range is 0.0001 to 1.
2578 Default value is 0.5.
2579
2580 @item delay
2581 Set delay. Allowed range is from 1 to 100.
2582 Default value is 20.
2583 @end table
2584
2585 @subsection Commands
2586
2587 This filter supports the all above options as @ref{commands}.
2588
2589 @section atempo
2590
2591 Adjust audio tempo.
2592
2593 The filter accepts exactly one parameter, the audio tempo. If not
2594 specified then the filter will assume nominal 1.0 tempo. Tempo must
2595 be in the [0.5, 100.0] range.
2596
2597 Note that tempo greater than 2 will skip some samples rather than
2598 blend them in.  If for any reason this is a concern it is always
2599 possible to daisy-chain several instances of atempo to achieve the
2600 desired product tempo.
2601
2602 @subsection Examples
2603
2604 @itemize
2605 @item
2606 Slow down audio to 80% tempo:
2607 @example
2608 atempo=0.8
2609 @end example
2610
2611 @item
2612 To speed up audio to 300% tempo:
2613 @example
2614 atempo=3
2615 @end example
2616
2617 @item
2618 To speed up audio to 300% tempo by daisy-chaining two atempo instances:
2619 @example
2620 atempo=sqrt(3),atempo=sqrt(3)
2621 @end example
2622 @end itemize
2623
2624 @subsection Commands
2625
2626 This filter supports the following commands:
2627 @table @option
2628 @item tempo
2629 Change filter tempo scale factor.
2630 Syntax for the command is : "@var{tempo}"
2631 @end table
2632
2633 @section atrim
2634
2635 Trim the input so that the output contains one continuous subpart of the input.
2636
2637 It accepts the following parameters:
2638 @table @option
2639 @item start
2640 Timestamp (in seconds) of the start of the section to keep. I.e. the audio
2641 sample with the timestamp @var{start} will be the first sample in the output.
2642
2643 @item end
2644 Specify time of the first audio sample that will be dropped, i.e. the
2645 audio sample immediately preceding the one with the timestamp @var{end} will be
2646 the last sample in the output.
2647
2648 @item start_pts
2649 Same as @var{start}, except this option sets the start timestamp in samples
2650 instead of seconds.
2651
2652 @item end_pts
2653 Same as @var{end}, except this option sets the end timestamp in samples instead
2654 of seconds.
2655
2656 @item duration
2657 The maximum duration of the output in seconds.
2658
2659 @item start_sample
2660 The number of the first sample that should be output.
2661
2662 @item end_sample
2663 The number of the first sample that should be dropped.
2664 @end table
2665
2666 @option{start}, @option{end}, and @option{duration} are expressed as time
2667 duration specifications; see
2668 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}.
2669
2670 Note that the first two sets of the start/end options and the @option{duration}
2671 option look at the frame timestamp, while the _sample options simply count the
2672 samples that pass through the filter. So start/end_pts and start/end_sample will
2673 give different results when the timestamps are wrong, inexact or do not start at
2674 zero. Also note that this filter does not modify the timestamps. If you wish
2675 to have the output timestamps start at zero, insert the asetpts filter after the
2676 atrim filter.
2677
2678 If multiple start or end options are set, this filter tries to be greedy and
2679 keep all samples that match at least one of the specified constraints. To keep
2680 only the part that matches all the constraints at once, chain multiple atrim
2681 filters.
2682
2683 The defaults are such that all the input is kept. So it is possible to set e.g.
2684 just the end values to keep everything before the specified time.
2685
2686 Examples:
2687 @itemize
2688 @item
2689 Drop everything except the second minute of input:
2690 @example
2691 ffmpeg -i INPUT -af atrim=60:120
2692 @end example
2693
2694 @item
2695 Keep only the first 1000 samples:
2696 @example
2697 ffmpeg -i INPUT -af atrim=end_sample=1000
2698 @end example
2699
2700 @end itemize
2701
2702 @section axcorrelate
2703 Calculate normalized cross-correlation between two input audio streams.
2704
2705 Resulted samples are always between -1 and 1 inclusive.
2706 If result is 1 it means two input samples are highly correlated in that selected segment.
2707 Result 0 means they are not correlated at all.
2708 If result is -1 it means two input samples are out of phase, which means they cancel each
2709 other.
2710
2711 The filter accepts the following options:
2712
2713 @table @option
2714 @item size
2715 Set size of segment over which cross-correlation is calculated.
2716 Default is 256. Allowed range is from 2 to 131072.
2717
2718 @item algo
2719 Set algorithm for cross-correlation. Can be @code{slow} or @code{fast}.
2720 Default is @code{slow}. Fast algorithm assumes mean values over any given segment
2721 are always zero and thus need much less calculations to make.
2722 This is generally not true, but is valid for typical audio streams.
2723 @end table
2724
2725 @subsection Examples
2726
2727 @itemize
2728 @item
2729 Calculate correlation between channels in stereo audio stream:
2730 @example
2731 ffmpeg -i stereo.wav -af channelsplit,axcorrelate=size=1024:algo=fast correlation.wav
2732 @end example
2733 @end itemize
2734
2735 @section bandpass
2736
2737 Apply a two-pole Butterworth band-pass filter with central
2738 frequency @var{frequency}, and (3dB-point) band-width width.
2739 The @var{csg} option selects a constant skirt gain (peak gain = Q)
2740 instead of the default: constant 0dB peak gain.
2741 The filter roll off at 6dB per octave (20dB per decade).
2742
2743 The filter accepts the following options:
2744
2745 @table @option
2746 @item frequency, f
2747 Set the filter's central frequency. Default is @code{3000}.
2748
2749 @item csg
2750 Constant skirt gain if set to 1. Defaults to 0.
2751
2752 @item width_type, t
2753 Set method to specify band-width of filter.
2754 @table @option
2755 @item h
2756 Hz
2757 @item q
2758 Q-Factor
2759 @item o
2760 octave
2761 @item s
2762 slope
2763 @item k
2764 kHz
2765 @end table
2766
2767 @item width, w
2768 Specify the band-width of a filter in width_type units.
2769
2770 @item mix, m
2771 How much to use filtered signal in output. Default is 1.
2772 Range is between 0 and 1.
2773
2774 @item channels, c
2775 Specify which channels to filter, by default all available are filtered.
2776
2777 @item normalize, n
2778 Normalize biquad coefficients, by default is disabled.
2779 Enabling it will normalize magnitude response at DC to 0dB.
2780
2781 @item transform, a
2782 Set transform type of IIR filter.
2783 @table @option
2784 @item di
2785 @item dii
2786 @item tdii
2787 @item latt
2788 @end table
2789 @end table
2790
2791 @subsection Commands
2792
2793 This filter supports the following commands:
2794 @table @option
2795 @item frequency, f
2796 Change bandpass frequency.
2797 Syntax for the command is : "@var{frequency}"
2798
2799 @item width_type, t
2800 Change bandpass width_type.
2801 Syntax for the command is : "@var{width_type}"
2802
2803 @item width, w
2804 Change bandpass width.
2805 Syntax for the command is : "@var{width}"
2806
2807 @item mix, m
2808 Change bandpass mix.
2809 Syntax for the command is : "@var{mix}"
2810 @end table
2811
2812 @section bandreject
2813
2814 Apply a two-pole Butterworth band-reject filter with central
2815 frequency @var{frequency}, and (3dB-point) band-width @var{width}.
2816 The filter roll off at 6dB per octave (20dB per decade).
2817
2818 The filter accepts the following options:
2819
2820 @table @option
2821 @item frequency, f
2822 Set the filter's central frequency. Default is @code{3000}.
2823
2824 @item width_type, t
2825 Set method to specify band-width of filter.
2826 @table @option
2827 @item h
2828 Hz
2829 @item q
2830 Q-Factor
2831 @item o
2832 octave
2833 @item s
2834 slope
2835 @item k
2836 kHz
2837 @end table
2838
2839 @item width, w
2840 Specify the band-width of a filter in width_type units.
2841
2842 @item mix, m
2843 How much to use filtered signal in output. Default is 1.
2844 Range is between 0 and 1.
2845
2846 @item channels, c
2847 Specify which channels to filter, by default all available are filtered.
2848
2849 @item normalize, n
2850 Normalize biquad coefficients, by default is disabled.
2851 Enabling it will normalize magnitude response at DC to 0dB.
2852
2853 @item transform, a
2854 Set transform type of IIR filter.
2855 @table @option
2856 @item di
2857 @item dii
2858 @item tdii
2859 @item latt
2860 @end table
2861 @end table
2862
2863 @subsection Commands
2864
2865 This filter supports the following commands:
2866 @table @option
2867 @item frequency, f
2868 Change bandreject frequency.
2869 Syntax for the command is : "@var{frequency}"
2870
2871 @item width_type, t
2872 Change bandreject width_type.
2873 Syntax for the command is : "@var{width_type}"
2874
2875 @item width, w
2876 Change bandreject width.
2877 Syntax for the command is : "@var{width}"
2878
2879 @item mix, m
2880 Change bandreject mix.
2881 Syntax for the command is : "@var{mix}"
2882 @end table
2883
2884 @section bass, lowshelf
2885
2886 Boost or cut the bass (lower) frequencies of the audio using a two-pole
2887 shelving filter with a response similar to that of a standard
2888 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
2889
2890 The filter accepts the following options:
2891
2892 @table @option
2893 @item gain, g
2894 Give the gain at 0 Hz. Its useful range is about -20
2895 (for a large cut) to +20 (for a large boost).
2896 Beware of clipping when using a positive gain.
2897
2898 @item frequency, f
2899 Set the filter's central frequency and so can be used
2900 to extend or reduce the frequency range to be boosted or cut.
2901 The default value is @code{100} Hz.
2902
2903 @item width_type, t
2904 Set method to specify band-width of filter.
2905 @table @option
2906 @item h
2907 Hz
2908 @item q
2909 Q-Factor
2910 @item o
2911 octave
2912 @item s
2913 slope
2914 @item k
2915 kHz
2916 @end table
2917
2918 @item width, w
2919 Determine how steep is the filter's shelf transition.
2920
2921 @item mix, m
2922 How much to use filtered signal in output. Default is 1.
2923 Range is between 0 and 1.
2924
2925 @item channels, c
2926 Specify which channels to filter, by default all available are filtered.
2927
2928 @item normalize, n
2929 Normalize biquad coefficients, by default is disabled.
2930 Enabling it will normalize magnitude response at DC to 0dB.
2931
2932 @item transform, a
2933 Set transform type of IIR filter.
2934 @table @option
2935 @item di
2936 @item dii
2937 @item tdii
2938 @item latt
2939 @end table
2940 @end table
2941
2942 @subsection Commands
2943
2944 This filter supports the following commands:
2945 @table @option
2946 @item frequency, f
2947 Change bass frequency.
2948 Syntax for the command is : "@var{frequency}"
2949
2950 @item width_type, t
2951 Change bass width_type.
2952 Syntax for the command is : "@var{width_type}"
2953
2954 @item width, w
2955 Change bass width.
2956 Syntax for the command is : "@var{width}"
2957
2958 @item gain, g
2959 Change bass gain.
2960 Syntax for the command is : "@var{gain}"
2961
2962 @item mix, m
2963 Change bass mix.
2964 Syntax for the command is : "@var{mix}"
2965 @end table
2966
2967 @section biquad
2968
2969 Apply a biquad IIR filter with the given coefficients.
2970 Where @var{b0}, @var{b1}, @var{b2} and @var{a0}, @var{a1}, @var{a2}
2971 are the numerator and denominator coefficients respectively.
2972 and @var{channels}, @var{c} specify which channels to filter, by default all
2973 available are filtered.
2974
2975 @subsection Commands
2976
2977 This filter supports the following commands:
2978 @table @option
2979 @item a0
2980 @item a1
2981 @item a2
2982 @item b0
2983 @item b1
2984 @item b2
2985 Change biquad parameter.
2986 Syntax for the command is : "@var{value}"
2987
2988 @item mix, m
2989 How much to use filtered signal in output. Default is 1.
2990 Range is between 0 and 1.
2991
2992 @item channels, c
2993 Specify which channels to filter, by default all available are filtered.
2994
2995 @item normalize, n
2996 Normalize biquad coefficients, by default is disabled.
2997 Enabling it will normalize magnitude response at DC to 0dB.
2998
2999 @item transform, a
3000 Set transform type of IIR filter.
3001 @table @option
3002 @item di
3003 @item dii
3004 @item tdii
3005 @item latt
3006 @end table
3007 @end table
3008
3009 @section bs2b
3010 Bauer stereo to binaural transformation, which improves headphone listening of
3011 stereo audio records.
3012
3013 To enable compilation of this filter you need to configure FFmpeg with
3014 @code{--enable-libbs2b}.
3015
3016 It accepts the following parameters:
3017 @table @option
3018
3019 @item profile
3020 Pre-defined crossfeed level.
3021 @table @option
3022
3023 @item default
3024 Default level (fcut=700, feed=50).
3025
3026 @item cmoy
3027 Chu Moy circuit (fcut=700, feed=60).
3028
3029 @item jmeier
3030 Jan Meier circuit (fcut=650, feed=95).
3031
3032 @end table
3033
3034 @item fcut
3035 Cut frequency (in Hz).
3036
3037 @item feed
3038 Feed level (in Hz).
3039
3040 @end table
3041
3042 @section channelmap
3043
3044 Remap input channels to new locations.
3045
3046 It accepts the following parameters:
3047 @table @option
3048 @item map
3049 Map channels from input to output. The argument is a '|'-separated list of
3050 mappings, each in the @code{@var{in_channel}-@var{out_channel}} or
3051 @var{in_channel} form. @var{in_channel} can be either the name of the input
3052 channel (e.g. FL for front left) or its index in the input channel layout.
3053 @var{out_channel} is the name of the output channel or its index in the output
3054 channel layout. If @var{out_channel} is not given then it is implicitly an
3055 index, starting with zero and increasing by one for each mapping.
3056
3057 @item channel_layout
3058 The channel layout of the output stream.
3059 @end table
3060
3061 If no mapping is present, the filter will implicitly map input channels to
3062 output channels, preserving indices.
3063
3064 @subsection Examples
3065
3066 @itemize
3067 @item
3068 For example, assuming a 5.1+downmix input MOV file,
3069 @example
3070 ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
3071 @end example
3072 will create an output WAV file tagged as stereo from the downmix channels of
3073 the input.
3074
3075 @item
3076 To fix a 5.1 WAV improperly encoded in AAC's native channel order
3077 @example
3078 ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
3079 @end example
3080 @end itemize
3081
3082 @section channelsplit
3083
3084 Split each channel from an input audio stream into a separate output stream.
3085
3086 It accepts the following parameters:
3087 @table @option
3088 @item channel_layout
3089 The channel layout of the input stream. The default is "stereo".
3090 @item channels
3091 A channel layout describing the channels to be extracted as separate output streams
3092 or "all" to extract each input channel as a separate stream. The default is "all".
3093
3094 Choosing channels not present in channel layout in the input will result in an error.
3095 @end table
3096
3097 @subsection Examples
3098
3099 @itemize
3100 @item
3101 For example, assuming a stereo input MP3 file,
3102 @example
3103 ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
3104 @end example
3105 will create an output Matroska file with two audio streams, one containing only
3106 the left channel and the other the right channel.
3107
3108 @item
3109 Split a 5.1 WAV file into per-channel files:
3110 @example
3111 ffmpeg -i in.wav -filter_complex
3112 'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
3113 -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
3114 front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
3115 side_right.wav
3116 @end example
3117
3118 @item
3119 Extract only LFE from a 5.1 WAV file:
3120 @example
3121 ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1:channels=LFE[LFE]'
3122 -map '[LFE]' lfe.wav
3123 @end example
3124 @end itemize
3125
3126 @section chorus
3127 Add a chorus effect to the audio.
3128
3129 Can make a single vocal sound like a chorus, but can also be applied to instrumentation.
3130
3131 Chorus resembles an echo effect with a short delay, but whereas with echo the delay is
3132 constant, with chorus, it is varied using using sinusoidal or triangular modulation.
3133 The modulation depth defines the range the modulated delay is played before or after
3134 the delay. Hence the delayed sound will sound slower or faster, that is the delayed
3135 sound tuned around the original one, like in a chorus where some vocals are slightly
3136 off key.
3137
3138 It accepts the following parameters:
3139 @table @option
3140 @item in_gain
3141 Set input gain. Default is 0.4.
3142
3143 @item out_gain
3144 Set output gain. Default is 0.4.
3145
3146 @item delays
3147 Set delays. A typical delay is around 40ms to 60ms.
3148
3149 @item decays
3150 Set decays.
3151
3152 @item speeds
3153 Set speeds.
3154
3155 @item depths
3156 Set depths.
3157 @end table
3158
3159 @subsection Examples
3160
3161 @itemize
3162 @item
3163 A single delay:
3164 @example
3165 chorus=0.7:0.9:55:0.4:0.25:2
3166 @end example
3167
3168 @item
3169 Two delays:
3170 @example
3171 chorus=0.6:0.9:50|60:0.4|0.32:0.25|0.4:2|1.3
3172 @end example
3173
3174 @item
3175 Fuller sounding chorus with three delays:
3176 @example
3177 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
3178 @end example
3179 @end itemize
3180
3181 @section compand
3182 Compress or expand the audio's dynamic range.
3183
3184 It accepts the following parameters:
3185
3186 @table @option
3187
3188 @item attacks
3189 @item decays
3190 A list of times in seconds for each channel over which the instantaneous level
3191 of the input signal is averaged to determine its volume. @var{attacks} refers to
3192 increase of volume and @var{decays} refers to decrease of volume. For most
3193 situations, the attack time (response to the audio getting louder) should be
3194 shorter than the decay time, because the human ear is more sensitive to sudden
3195 loud audio than sudden soft audio. A typical value for attack is 0.3 seconds and
3196 a typical value for decay is 0.8 seconds.
3197 If specified number of attacks & decays is lower than number of channels, the last
3198 set attack/decay will be used for all remaining channels.
3199
3200 @item points
3201 A list of points for the transfer function, specified in dB relative to the
3202 maximum possible signal amplitude. Each key points list must be defined using
3203 the following syntax: @code{x0/y0|x1/y1|x2/y2|....} or
3204 @code{x0/y0 x1/y1 x2/y2 ....}
3205
3206 The input values must be in strictly increasing order but the transfer function
3207 does not have to be monotonically rising. The point @code{0/0} is assumed but
3208 may be overridden (by @code{0/out-dBn}). Typical values for the transfer
3209 function are @code{-70/-70|-60/-20|1/0}.
3210
3211 @item soft-knee
3212 Set the curve radius in dB for all joints. It defaults to 0.01.
3213
3214 @item gain
3215 Set the additional gain in dB to be applied at all points on the transfer
3216 function. This allows for easy adjustment of the overall gain.
3217 It defaults to 0.
3218
3219 @item volume
3220 Set an initial volume, in dB, to be assumed for each channel when filtering
3221 starts. This permits the user to supply a nominal level initially, so that, for
3222 example, a very large gain is not applied to initial signal levels before the
3223 companding has begun to operate. A typical value for audio which is initially
3224 quiet is -90 dB. It defaults to 0.
3225
3226 @item delay
3227 Set a delay, in seconds. The input audio is analyzed immediately, but audio is
3228 delayed before being fed to the volume adjuster. Specifying a delay
3229 approximately equal to the attack/decay times allows the filter to effectively
3230 operate in predictive rather than reactive mode. It defaults to 0.
3231
3232 @end table
3233
3234 @subsection Examples
3235
3236 @itemize
3237 @item
3238 Make music with both quiet and loud passages suitable for listening to in a
3239 noisy environment:
3240 @example
3241 compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
3242 @end example
3243
3244 Another example for audio with whisper and explosion parts:
3245 @example
3246 compand=0|0:1|1:-90/-900|-70/-70|-30/-9|0/-3:6:0:0:0
3247 @end example
3248
3249 @item
3250 A noise gate for when the noise is at a lower level than the signal:
3251 @example
3252 compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1
3253 @end example
3254
3255 @item
3256 Here is another noise gate, this time for when the noise is at a higher level
3257 than the signal (making it, in some ways, similar to squelch):
3258 @example
3259 compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1
3260 @end example
3261
3262 @item
3263 2:1 compression starting at -6dB:
3264 @example
3265 compand=points=-80/-80|-6/-6|0/-3.8|20/3.5
3266 @end example
3267
3268 @item
3269 2:1 compression starting at -9dB:
3270 @example
3271 compand=points=-80/-80|-9/-9|0/-5.3|20/2.9
3272 @end example
3273
3274 @item
3275 2:1 compression starting at -12dB:
3276 @example
3277 compand=points=-80/-80|-12/-12|0/-6.8|20/1.9
3278 @end example
3279
3280 @item
3281 2:1 compression starting at -18dB:
3282 @example
3283 compand=points=-80/-80|-18/-18|0/-9.8|20/0.7
3284 @end example
3285
3286 @item
3287 3:1 compression starting at -15dB:
3288 @example
3289 compand=points=-80/-80|-15/-15|0/-10.8|20/-5.2
3290 @end example
3291
3292 @item
3293 Compressor/Gate:
3294 @example
3295 compand=points=-80/-105|-62/-80|-15.4/-15.4|0/-12|20/-7.6
3296 @end example
3297
3298 @item
3299 Expander:
3300 @example
3301 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
3302 @end example
3303
3304 @item
3305 Hard limiter at -6dB:
3306 @example
3307 compand=attacks=0:points=-80/-80|-6/-6|20/-6
3308 @end example
3309
3310 @item
3311 Hard limiter at -12dB:
3312 @example
3313 compand=attacks=0:points=-80/-80|-12/-12|20/-12
3314 @end example
3315
3316 @item
3317 Hard noise gate at -35 dB:
3318 @example
3319 compand=attacks=0:points=-80/-115|-35.1/-80|-35/-35|20/20
3320 @end example
3321
3322 @item
3323 Soft limiter:
3324 @example
3325 compand=attacks=0:points=-80/-80|-12.4/-12.4|-6/-8|0/-6.8|20/-2.8
3326 @end example
3327 @end itemize
3328
3329 @section compensationdelay
3330
3331 Compensation Delay Line is a metric based delay to compensate differing
3332 positions of microphones or speakers.
3333
3334 For example, you have recorded guitar with two microphones placed in
3335 different locations. Because the front of sound wave has fixed speed in
3336 normal conditions, the phasing of microphones can vary and depends on
3337 their location and interposition. The best sound mix can be achieved when
3338 these microphones are in phase (synchronized). Note that a distance of
3339 ~30 cm between microphones makes one microphone capture the signal in
3340 antiphase to the other microphone. That makes the final mix sound moody.
3341 This filter helps to solve phasing problems by adding different delays
3342 to each microphone track and make them synchronized.
3343
3344 The best result can be reached when you take one track as base and
3345 synchronize other tracks one by one with it.
3346 Remember that synchronization/delay tolerance depends on sample rate, too.
3347 Higher sample rates will give more tolerance.
3348
3349 The filter accepts the following parameters:
3350
3351 @table @option
3352 @item mm
3353 Set millimeters distance. This is compensation distance for fine tuning.
3354 Default is 0.
3355
3356 @item cm
3357 Set cm distance. This is compensation distance for tightening distance setup.
3358 Default is 0.
3359
3360 @item m
3361 Set meters distance. This is compensation distance for hard distance setup.
3362 Default is 0.
3363
3364 @item dry
3365 Set dry amount. Amount of unprocessed (dry) signal.
3366 Default is 0.
3367
3368 @item wet
3369 Set wet amount. Amount of processed (wet) signal.
3370 Default is 1.
3371
3372 @item temp
3373 Set temperature in degrees Celsius. This is the temperature of the environment.
3374 Default is 20.
3375 @end table
3376
3377 @section crossfeed
3378 Apply headphone crossfeed filter.
3379
3380 Crossfeed is the process of blending the left and right channels of stereo
3381 audio recording.
3382 It is mainly used to reduce extreme stereo separation of low frequencies.
3383
3384 The intent is to produce more speaker like sound to the listener.
3385
3386 The filter accepts the following options:
3387
3388 @table @option
3389 @item strength
3390 Set strength of crossfeed. Default is 0.2. Allowed range is from 0 to 1.
3391 This sets gain of low shelf filter for side part of stereo image.
3392 Default is -6dB. Max allowed is -30db when strength is set to 1.
3393
3394 @item range
3395 Set soundstage wideness. Default is 0.5. Allowed range is from 0 to 1.
3396 This sets cut off frequency of low shelf filter. Default is cut off near
3397 1550 Hz. With range set to 1 cut off frequency is set to 2100 Hz.
3398
3399 @item slope
3400 Set curve slope of low shelf filter. Default is 0.5.
3401 Allowed range is from 0.01 to 1.
3402
3403 @item level_in
3404 Set input gain. Default is 0.9.
3405
3406 @item level_out
3407 Set output gain. Default is 1.
3408 @end table
3409
3410 @subsection Commands
3411
3412 This filter supports the all above options as @ref{commands}.
3413
3414 @section crystalizer
3415 Simple algorithm to expand audio dynamic range.
3416
3417 The filter accepts the following options:
3418
3419 @table @option
3420 @item i
3421 Sets the intensity of effect (default: 2.0). Must be in range between 0.0
3422 (unchanged sound) to 10.0 (maximum effect).
3423
3424 @item c
3425 Enable clipping. By default is enabled.
3426 @end table
3427
3428 @subsection Commands
3429
3430 This filter supports the all above options as @ref{commands}.
3431
3432 @section dcshift
3433 Apply a DC shift to the audio.
3434
3435 This can be useful to remove a DC offset (caused perhaps by a hardware problem
3436 in the recording chain) from the audio. The effect of a DC offset is reduced
3437 headroom and hence volume. The @ref{astats} filter can be used to determine if
3438 a signal has a DC offset.
3439
3440 @table @option
3441 @item shift
3442 Set the DC shift, allowed range is [-1, 1]. It indicates the amount to shift
3443 the audio.
3444
3445 @item limitergain
3446 Optional. It should have a value much less than 1 (e.g. 0.05 or 0.02) and is
3447 used to prevent clipping.
3448 @end table
3449
3450 @section deesser
3451
3452 Apply de-essing to the audio samples.
3453
3454 @table @option
3455 @item i
3456 Set intensity for triggering de-essing. Allowed range is from 0 to 1.
3457 Default is 0.
3458
3459 @item m
3460 Set amount of ducking on treble part of sound. Allowed range is from 0 to 1.
3461 Default is 0.5.
3462
3463 @item f
3464 How much of original frequency content to keep when de-essing. Allowed range is from 0 to 1.
3465 Default is 0.5.
3466
3467 @item s
3468 Set the output mode.
3469
3470 It accepts the following values:
3471 @table @option
3472 @item i
3473 Pass input unchanged.
3474
3475 @item o
3476 Pass ess filtered out.
3477
3478 @item e
3479 Pass only ess.
3480
3481 Default value is @var{o}.
3482 @end table
3483
3484 @end table
3485
3486 @section drmeter
3487 Measure audio dynamic range.
3488
3489 DR values of 14 and higher is found in very dynamic material. DR of 8 to 13
3490 is found in transition material. And anything less that 8 have very poor dynamics
3491 and is very compressed.
3492
3493 The filter accepts the following options:
3494
3495 @table @option
3496 @item length
3497 Set window length in seconds used to split audio into segments of equal length.
3498 Default is 3 seconds.
3499 @end table
3500
3501 @section dynaudnorm
3502 Dynamic Audio Normalizer.
3503
3504 This filter applies a certain amount of gain to the input audio in order
3505 to bring its peak magnitude to a target level (e.g. 0 dBFS). However, in
3506 contrast to more "simple" normalization algorithms, the Dynamic Audio
3507 Normalizer *dynamically* re-adjusts the gain factor to the input audio.
3508 This allows for applying extra gain to the "quiet" sections of the audio
3509 while avoiding distortions or clipping the "loud" sections. In other words:
3510 The Dynamic Audio Normalizer will "even out" the volume of quiet and loud
3511 sections, in the sense that the volume of each section is brought to the
3512 same target level. Note, however, that the Dynamic Audio Normalizer achieves
3513 this goal *without* applying "dynamic range compressing". It will retain 100%
3514 of the dynamic range *within* each section of the audio file.
3515
3516 @table @option
3517 @item framelen, f
3518 Set the frame length in milliseconds. In range from 10 to 8000 milliseconds.
3519 Default is 500 milliseconds.
3520 The Dynamic Audio Normalizer processes the input audio in small chunks,
3521 referred to as frames. This is required, because a peak magnitude has no
3522 meaning for just a single sample value. Instead, we need to determine the
3523 peak magnitude for a contiguous sequence of sample values. While a "standard"
3524 normalizer would simply use the peak magnitude of the complete file, the
3525 Dynamic Audio Normalizer determines the peak magnitude individually for each
3526 frame. The length of a frame is specified in milliseconds. By default, the
3527 Dynamic Audio Normalizer uses a frame length of 500 milliseconds, which has
3528 been found to give good results with most files.
3529 Note that the exact frame length, in number of samples, will be determined
3530 automatically, based on the sampling rate of the individual input audio file.
3531
3532 @item gausssize, g
3533 Set the Gaussian filter window size. In range from 3 to 301, must be odd
3534 number. Default is 31.
3535 Probably the most important parameter of the Dynamic Audio Normalizer is the
3536 @code{window size} of the Gaussian smoothing filter. The filter's window size
3537 is specified in frames, centered around the current frame. For the sake of
3538 simplicity, this must be an odd number. Consequently, the default value of 31
3539 takes into account the current frame, as well as the 15 preceding frames and
3540 the 15 subsequent frames. Using a larger window results in a stronger
3541 smoothing effect and thus in less gain variation, i.e. slower gain
3542 adaptation. Conversely, using a smaller window results in a weaker smoothing
3543 effect and thus in more gain variation, i.e. faster gain adaptation.
3544 In other words, the more you increase this value, the more the Dynamic Audio
3545 Normalizer will behave like a "traditional" normalization filter. On the
3546 contrary, the more you decrease this value, the more the Dynamic Audio
3547 Normalizer will behave like a dynamic range compressor.
3548
3549 @item peak, p
3550 Set the target peak value. This specifies the highest permissible magnitude
3551 level for the normalized audio input. This filter will try to approach the
3552 target peak magnitude as closely as possible, but at the same time it also
3553 makes sure that the normalized signal will never exceed the peak magnitude.
3554 A frame's maximum local gain factor is imposed directly by the target peak
3555 magnitude. The default value is 0.95 and thus leaves a headroom of 5%*.
3556 It is not recommended to go above this value.
3557
3558 @item maxgain, m
3559 Set the maximum gain factor. In range from 1.0 to 100.0. Default is 10.0.
3560 The Dynamic Audio Normalizer determines the maximum possible (local) gain
3561 factor for each input frame, i.e. the maximum gain factor that does not
3562 result in clipping or distortion. The maximum gain factor is determined by
3563 the frame's highest magnitude sample. However, the Dynamic Audio Normalizer
3564 additionally bounds the frame's maximum gain factor by a predetermined
3565 (global) maximum gain factor. This is done in order to avoid excessive gain
3566 factors in "silent" or almost silent frames. By default, the maximum gain
3567 factor is 10.0, For most inputs the default value should be sufficient and
3568 it usually is not recommended to increase this value. Though, for input
3569 with an extremely low overall volume level, it may be necessary to allow even
3570 higher gain factors. Note, however, that the Dynamic Audio Normalizer does
3571 not simply apply a "hard" threshold (i.e. cut off values above the threshold).
3572 Instead, a "sigmoid" threshold function will be applied. This way, the
3573 gain factors will smoothly approach the threshold value, but never exceed that
3574 value.
3575
3576 @item targetrms, r
3577 Set the target RMS. In range from 0.0 to 1.0. Default is 0.0 - disabled.
3578 By default, the Dynamic Audio Normalizer performs "peak" normalization.
3579 This means that the maximum local gain factor for each frame is defined
3580 (only) by the frame's highest magnitude sample. This way, the samples can
3581 be amplified as much as possible without exceeding the maximum signal
3582 level, i.e. without clipping. Optionally, however, the Dynamic Audio
3583 Normalizer can also take into account the frame's root mean square,
3584 abbreviated RMS. In electrical engineering, the RMS is commonly used to
3585 determine the power of a time-varying signal. It is therefore considered
3586 that the RMS is a better approximation of the "perceived loudness" than
3587 just looking at the signal's peak magnitude. Consequently, by adjusting all
3588 frames to a constant RMS value, a uniform "perceived loudness" can be
3589 established. If a target RMS value has been specified, a frame's local gain
3590 factor is defined as the factor that would result in exactly that RMS value.
3591 Note, however, that the maximum local gain factor is still restricted by the
3592 frame's highest magnitude sample, in order to prevent clipping.
3593
3594 @item coupling, n
3595 Enable channels coupling. By default is enabled.
3596 By default, the Dynamic Audio Normalizer will amplify all channels by the same
3597 amount. This means the same gain factor will be applied to all channels, i.e.
3598 the maximum possible gain factor is determined by the "loudest" channel.
3599 However, in some recordings, it may happen that the volume of the different
3600 channels is uneven, e.g. one channel may be "quieter" than the other one(s).
3601 In this case, this option can be used to disable the channel coupling. This way,
3602 the gain factor will be determined independently for each channel, depending
3603 only on the individual channel's highest magnitude sample. This allows for
3604 harmonizing the volume of the different channels.
3605
3606 @item correctdc, c
3607 Enable DC bias correction. By default is disabled.
3608 An audio signal (in the time domain) is a sequence of sample values.
3609 In the Dynamic Audio Normalizer these sample values are represented in the
3610 -1.0 to 1.0 range, regardless of the original input format. Normally, the
3611 audio signal, or "waveform", should be centered around the zero point.
3612 That means if we calculate the mean value of all samples in a file, or in a
3613 single frame, then the result should be 0.0 or at least very close to that
3614 value. If, however, there is a significant deviation of the mean value from
3615 0.0, in either positive or negative direction, this is referred to as a
3616 DC bias or DC offset. Since a DC bias is clearly undesirable, the Dynamic
3617 Audio Normalizer provides optional DC bias correction.
3618 With DC bias correction enabled, the Dynamic Audio Normalizer will determine
3619 the mean value, or "DC correction" offset, of each input frame and subtract
3620 that value from all of the frame's sample values which ensures those samples
3621 are centered around 0.0 again. Also, in order to avoid "gaps" at the frame
3622 boundaries, the DC correction offset values will be interpolated smoothly
3623 between neighbouring frames.
3624
3625 @item altboundary, b
3626 Enable alternative boundary mode. By default is disabled.
3627 The Dynamic Audio Normalizer takes into account a certain neighbourhood
3628 around each frame. This includes the preceding frames as well as the
3629 subsequent frames. However, for the "boundary" frames, located at the very
3630 beginning and at the very end of the audio file, not all neighbouring
3631 frames are available. In particular, for the first few frames in the audio
3632 file, the preceding frames are not known. And, similarly, for the last few
3633 frames in the audio file, the subsequent frames are not known. Thus, the
3634 question arises which gain factors should be assumed for the missing frames
3635 in the "boundary" region. The Dynamic Audio Normalizer implements two modes
3636 to deal with this situation. The default boundary mode assumes a gain factor
3637 of exactly 1.0 for the missing frames, resulting in a smooth "fade in" and
3638 "fade out" at the beginning and at the end of the input, respectively.
3639
3640 @item compress, s
3641 Set the compress factor. In range from 0.0 to 30.0. Default is 0.0.
3642 By default, the Dynamic Audio Normalizer does not apply "traditional"
3643 compression. This means that signal peaks will not be pruned and thus the
3644 full dynamic range will be retained within each local neighbourhood. However,
3645 in some cases it may be desirable to combine the Dynamic Audio Normalizer's
3646 normalization algorithm with a more "traditional" compression.
3647 For this purpose, the Dynamic Audio Normalizer provides an optional compression
3648 (thresholding) function. If (and only if) the compression feature is enabled,
3649 all input frames will be processed by a soft knee thresholding function prior
3650 to the actual normalization process. Put simply, the thresholding function is
3651 going to prune all samples whose magnitude exceeds a certain threshold value.
3652 However, the Dynamic Audio Normalizer does not simply apply a fixed threshold
3653 value. Instead, the threshold value will be adjusted for each individual
3654 frame.
3655 In general, smaller parameters result in stronger compression, and vice versa.
3656 Values below 3.0 are not recommended, because audible distortion may appear.
3657
3658 @item threshold, t
3659 Set the target threshold value. This specifies the lowest permissible
3660 magnitude level for the audio input which will be normalized.
3661 If input frame volume is above this value frame will be normalized.
3662 Otherwise frame may not be normalized at all. The default value is set
3663 to 0, which means all input frames will be normalized.
3664 This option is mostly useful if digital noise is not wanted to be amplified.
3665 @end table
3666
3667 @subsection Commands
3668
3669 This filter supports the all above options as @ref{commands}.
3670
3671 @section earwax
3672
3673 Make audio easier to listen to on headphones.
3674
3675 This filter adds `cues' to 44.1kHz stereo (i.e. audio CD format) audio
3676 so that when listened to on headphones the stereo image is moved from
3677 inside your head (standard for headphones) to outside and in front of
3678 the listener (standard for speakers).
3679
3680 Ported from SoX.
3681
3682 @section equalizer
3683
3684 Apply a two-pole peaking equalisation (EQ) filter. With this
3685 filter, the signal-level at and around a selected frequency can
3686 be increased or decreased, whilst (unlike bandpass and bandreject
3687 filters) that at all other frequencies is unchanged.
3688
3689 In order to produce complex equalisation curves, this filter can
3690 be given several times, each with a different central frequency.
3691
3692 The filter accepts the following options:
3693
3694 @table @option
3695 @item frequency, f
3696 Set the filter's central frequency in Hz.
3697
3698 @item width_type, t
3699 Set method to specify band-width of filter.
3700 @table @option
3701 @item h
3702 Hz
3703 @item q
3704 Q-Factor
3705 @item o
3706 octave
3707 @item s
3708 slope
3709 @item k
3710 kHz
3711 @end table
3712
3713 @item width, w
3714 Specify the band-width of a filter in width_type units.
3715
3716 @item gain, g
3717 Set the required gain or attenuation in dB.
3718 Beware of clipping when using a positive gain.
3719
3720 @item mix, m
3721 How much to use filtered signal in output. Default is 1.
3722 Range is between 0 and 1.
3723
3724 @item channels, c
3725 Specify which channels to filter, by default all available are filtered.
3726
3727 @item normalize, n
3728 Normalize biquad coefficients, by default is disabled.
3729 Enabling it will normalize magnitude response at DC to 0dB.
3730
3731 @item transform, a
3732 Set transform type of IIR filter.
3733 @table @option
3734 @item di
3735 @item dii
3736 @item tdii
3737 @item latt
3738 @end table
3739 @end table
3740
3741 @subsection Examples
3742 @itemize
3743 @item
3744 Attenuate 10 dB at 1000 Hz, with a bandwidth of 200 Hz:
3745 @example
3746 equalizer=f=1000:t=h:width=200:g=-10
3747 @end example
3748
3749 @item
3750 Apply 2 dB gain at 1000 Hz with Q 1 and attenuate 5 dB at 100 Hz with Q 2:
3751 @example
3752 equalizer=f=1000:t=q:w=1:g=2,equalizer=f=100:t=q:w=2:g=-5
3753 @end example
3754 @end itemize
3755
3756 @subsection Commands
3757
3758 This filter supports the following commands:
3759 @table @option
3760 @item frequency, f
3761 Change equalizer frequency.
3762 Syntax for the command is : "@var{frequency}"
3763
3764 @item width_type, t
3765 Change equalizer width_type.
3766 Syntax for the command is : "@var{width_type}"
3767
3768 @item width, w
3769 Change equalizer width.
3770 Syntax for the command is : "@var{width}"
3771
3772 @item gain, g
3773 Change equalizer gain.
3774 Syntax for the command is : "@var{gain}"
3775
3776 @item mix, m
3777 Change equalizer mix.
3778 Syntax for the command is : "@var{mix}"
3779 @end table
3780
3781 @section extrastereo
3782
3783 Linearly increases the difference between left and right channels which
3784 adds some sort of "live" effect to playback.
3785
3786 The filter accepts the following options:
3787
3788 @table @option
3789 @item m
3790 Sets the difference coefficient (default: 2.5). 0.0 means mono sound
3791 (average of both channels), with 1.0 sound will be unchanged, with
3792 -1.0 left and right channels will be swapped.
3793
3794 @item c
3795 Enable clipping. By default is enabled.
3796 @end table
3797
3798 @subsection Commands
3799
3800 This filter supports the all above options as @ref{commands}.
3801
3802 @section firequalizer
3803 Apply FIR Equalization using arbitrary frequency response.
3804
3805 The filter accepts the following option:
3806
3807 @table @option
3808 @item gain
3809 Set gain curve equation (in dB). The expression can contain variables:
3810 @table @option
3811 @item f
3812 the evaluated frequency
3813 @item sr
3814 sample rate
3815 @item ch
3816 channel number, set to 0 when multichannels evaluation is disabled
3817 @item chid
3818 channel id, see libavutil/channel_layout.h, set to the first channel id when
3819 multichannels evaluation is disabled
3820 @item chs
3821 number of channels
3822 @item chlayout
3823 channel_layout, see libavutil/channel_layout.h
3824
3825 @end table
3826 and functions:
3827 @table @option
3828 @item gain_interpolate(f)
3829 interpolate gain on frequency f based on gain_entry
3830 @item cubic_interpolate(f)
3831 same as gain_interpolate, but smoother
3832 @end table
3833 This option is also available as command. Default is @code{gain_interpolate(f)}.
3834
3835 @item gain_entry
3836 Set gain entry for gain_interpolate function. The expression can
3837 contain functions:
3838 @table @option
3839 @item entry(f, g)
3840 store gain entry at frequency f with value g
3841 @end table
3842 This option is also available as command.
3843
3844 @item delay
3845 Set filter delay in seconds. Higher value means more accurate.
3846 Default is @code{0.01}.
3847
3848 @item accuracy
3849 Set filter accuracy in Hz. Lower value means more accurate.
3850 Default is @code{5}.
3851
3852 @item wfunc
3853 Set window function. Acceptable values are:
3854 @table @option
3855 @item rectangular
3856 rectangular window, useful when gain curve is already smooth
3857 @item hann
3858 hann window (default)
3859 @item hamming
3860 hamming window
3861 @item blackman
3862 blackman window
3863 @item nuttall3
3864 3-terms continuous 1st derivative nuttall window
3865 @item mnuttall3
3866 minimum 3-terms discontinuous nuttall window
3867 @item nuttall
3868 4-terms continuous 1st derivative nuttall window
3869 @item bnuttall
3870 minimum 4-terms discontinuous nuttall (blackman-nuttall) window
3871 @item bharris
3872 blackman-harris window
3873 @item tukey
3874 tukey window
3875 @end table
3876
3877 @item fixed
3878 If enabled, use fixed number of audio samples. This improves speed when
3879 filtering with large delay. Default is disabled.
3880
3881 @item multi
3882 Enable multichannels evaluation on gain. Default is disabled.
3883
3884 @item zero_phase
3885 Enable zero phase mode by subtracting timestamp to compensate delay.
3886 Default is disabled.
3887
3888 @item scale
3889 Set scale used by gain. Acceptable values are:
3890 @table @option
3891 @item linlin
3892 linear frequency, linear gain
3893 @item linlog
3894 linear frequency, logarithmic (in dB) gain (default)
3895 @item loglin
3896 logarithmic (in octave scale where 20 Hz is 0) frequency, linear gain
3897 @item loglog
3898 logarithmic frequency, logarithmic gain
3899 @end table
3900
3901 @item dumpfile
3902 Set file for dumping, suitable for gnuplot.
3903
3904 @item dumpscale
3905 Set scale for dumpfile. Acceptable values are same with scale option.
3906 Default is linlog.
3907
3908 @item fft2
3909 Enable 2-channel convolution using complex FFT. This improves speed significantly.
3910 Default is disabled.
3911
3912 @item min_phase
3913 Enable minimum phase impulse response. Default is disabled.
3914 @end table
3915
3916 @subsection Examples
3917 @itemize
3918 @item
3919 lowpass at 1000 Hz:
3920 @example
3921 firequalizer=gain='if(lt(f,1000), 0, -INF)'
3922 @end example
3923 @item
3924 lowpass at 1000 Hz with gain_entry:
3925 @example
3926 firequalizer=gain_entry='entry(1000,0); entry(1001, -INF)'
3927 @end example
3928 @item
3929 custom equalization:
3930 @example
3931 firequalizer=gain_entry='entry(100,0); entry(400, -4); entry(1000, -6); entry(2000, 0)'
3932 @end example
3933 @item
3934 higher delay with zero phase to compensate delay:
3935 @example
3936 firequalizer=delay=0.1:fixed=on:zero_phase=on
3937 @end example
3938 @item
3939 lowpass on left channel, highpass on right channel:
3940 @example
3941 firequalizer=gain='if(eq(chid,1), gain_interpolate(f), if(eq(chid,2), gain_interpolate(1e6+f), 0))'
3942 :gain_entry='entry(1000, 0); entry(1001,-INF); entry(1e6+1000,0)':multi=on
3943 @end example
3944 @end itemize
3945
3946 @section flanger
3947 Apply a flanging effect to the audio.
3948
3949 The filter accepts the following options:
3950
3951 @table @option
3952 @item delay
3953 Set base delay in milliseconds. Range from 0 to 30. Default value is 0.
3954
3955 @item depth
3956 Set added sweep delay in milliseconds. Range from 0 to 10. Default value is 2.
3957
3958 @item regen
3959 Set percentage regeneration (delayed signal feedback). Range from -95 to 95.
3960 Default value is 0.
3961
3962 @item width
3963 Set percentage of delayed signal mixed with original. Range from 0 to 100.
3964 Default value is 71.
3965
3966 @item speed
3967 Set sweeps per second (Hz). Range from 0.1 to 10. Default value is 0.5.
3968
3969 @item shape
3970 Set swept wave shape, can be @var{triangular} or @var{sinusoidal}.
3971 Default value is @var{sinusoidal}.
3972
3973 @item phase
3974 Set swept wave percentage-shift for multi channel. Range from 0 to 100.
3975 Default value is 25.
3976
3977 @item interp
3978 Set delay-line interpolation, @var{linear} or @var{quadratic}.
3979 Default is @var{linear}.
3980 @end table
3981
3982 @section haas
3983 Apply Haas effect to audio.
3984
3985 Note that this makes most sense to apply on mono signals.
3986 With this filter applied to mono signals it give some directionality and
3987 stretches its stereo image.
3988
3989 The filter accepts the following options:
3990
3991 @table @option
3992 @item level_in
3993 Set input level. By default is @var{1}, or 0dB
3994
3995 @item level_out
3996 Set output level. By default is @var{1}, or 0dB.
3997
3998 @item side_gain
3999 Set gain applied to side part of signal. By default is @var{1}.
4000
4001 @item middle_source
4002 Set kind of middle source. Can be one of the following:
4003
4004 @table @samp
4005 @item left
4006 Pick left channel.
4007
4008 @item right
4009 Pick right channel.
4010
4011 @item mid
4012 Pick middle part signal of stereo image.
4013
4014 @item side
4015 Pick side part signal of stereo image.
4016 @end table
4017
4018 @item middle_phase
4019 Change middle phase. By default is disabled.
4020
4021 @item left_delay
4022 Set left channel delay. By default is @var{2.05} milliseconds.
4023
4024 @item left_balance
4025 Set left channel balance. By default is @var{-1}.
4026
4027 @item left_gain
4028 Set left channel gain. By default is @var{1}.
4029
4030 @item left_phase
4031 Change left phase. By default is disabled.
4032
4033 @item right_delay
4034 Set right channel delay. By defaults is @var{2.12} milliseconds.
4035
4036 @item right_balance
4037 Set right channel balance. By default is @var{1}.
4038
4039 @item right_gain
4040 Set right channel gain. By default is @var{1}.
4041
4042 @item right_phase
4043 Change right phase. By default is enabled.
4044 @end table
4045
4046 @section hdcd
4047
4048 Decodes High Definition Compatible Digital (HDCD) data. A 16-bit PCM stream with
4049 embedded HDCD codes is expanded into a 20-bit PCM stream.
4050
4051 The filter supports the Peak Extend and Low-level Gain Adjustment features
4052 of HDCD, and detects the Transient Filter flag.
4053
4054 @example
4055 ffmpeg -i HDCD16.flac -af hdcd OUT24.flac
4056 @end example
4057
4058 When using the filter with wav, note the default encoding for wav is 16-bit,
4059 so the resulting 20-bit stream will be truncated back to 16-bit. Use something
4060 like @command{-acodec pcm_s24le} after the filter to get 24-bit PCM output.
4061 @example
4062 ffmpeg -i HDCD16.wav -af hdcd OUT16.wav
4063 ffmpeg -i HDCD16.wav -af hdcd -c:a pcm_s24le OUT24.wav
4064 @end example
4065
4066 The filter accepts the following options:
4067
4068 @table @option
4069 @item disable_autoconvert
4070 Disable any automatic format conversion or resampling in the filter graph.
4071
4072 @item process_stereo
4073 Process the stereo channels together. If target_gain does not match between
4074 channels, consider it invalid and use the last valid target_gain.
4075
4076 @item cdt_ms
4077 Set the code detect timer period in ms.
4078
4079 @item force_pe
4080 Always extend peaks above -3dBFS even if PE isn't signaled.
4081
4082 @item analyze_mode
4083 Replace audio with a solid tone and adjust the amplitude to signal some
4084 specific aspect of the decoding process. The output file can be loaded in
4085 an audio editor alongside the original to aid analysis.
4086
4087 @code{analyze_mode=pe:force_pe=true} can be used to see all samples above the PE level.
4088
4089 Modes are:
4090 @table @samp
4091 @item 0, off
4092 Disabled
4093 @item 1, lle
4094 Gain adjustment level at each sample
4095 @item 2, pe
4096 Samples where peak extend occurs
4097 @item 3, cdt
4098 Samples where the code detect timer is active
4099 @item 4, tgm
4100 Samples where the target gain does not match between channels
4101 @end table
4102 @end table
4103
4104 @section headphone
4105
4106 Apply head-related transfer functions (HRTFs) to create virtual
4107 loudspeakers around the user for binaural listening via headphones.
4108 The HRIRs are provided via additional streams, for each channel
4109 one stereo input stream is needed.
4110
4111 The filter accepts the following options:
4112
4113 @table @option
4114 @item map
4115 Set mapping of input streams for convolution.
4116 The argument is a '|'-separated list of channel names in order as they
4117 are given as additional stream inputs for filter.
4118 This also specify number of input streams. Number of input streams
4119 must be not less than number of channels in first stream plus one.
4120
4121 @item gain
4122 Set gain applied to audio. Value is in dB. Default is 0.
4123
4124 @item type
4125 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
4126 processing audio in time domain which is slow.
4127 @var{freq} is processing audio in frequency domain which is fast.
4128 Default is @var{freq}.
4129
4130 @item lfe
4131 Set custom gain for LFE channels. Value is in dB. Default is 0.
4132
4133 @item size
4134 Set size of frame in number of samples which will be processed at once.
4135 Default value is @var{1024}. Allowed range is from 1024 to 96000.
4136
4137 @item hrir
4138 Set format of hrir stream.
4139 Default value is @var{stereo}. Alternative value is @var{multich}.
4140 If value is set to @var{stereo}, number of additional streams should
4141 be greater or equal to number of input channels in first input stream.
4142 Also each additional stream should have stereo number of channels.
4143 If value is set to @var{multich}, number of additional streams should
4144 be exactly one. Also number of input channels of additional stream
4145 should be equal or greater than twice number of channels of first input
4146 stream.
4147 @end table
4148
4149 @subsection Examples
4150
4151 @itemize
4152 @item
4153 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
4154 each amovie filter use stereo file with IR coefficients as input.
4155 The files give coefficients for each position of virtual loudspeaker:
4156 @example
4157 ffmpeg -i input.wav
4158 -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"
4159 output.wav
4160 @end example
4161
4162 @item
4163 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
4164 but now in @var{multich} @var{hrir} format.
4165 @example
4166 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"
4167 output.wav
4168 @end example
4169 @end itemize
4170
4171 @section highpass
4172
4173 Apply a high-pass filter with 3dB point frequency.
4174 The filter can be either single-pole, or double-pole (the default).
4175 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
4176
4177 The filter accepts the following options:
4178
4179 @table @option
4180 @item frequency, f
4181 Set frequency in Hz. Default is 3000.
4182
4183 @item poles, p
4184 Set number of poles. Default is 2.
4185
4186 @item width_type, t
4187 Set method to specify band-width of filter.
4188 @table @option
4189 @item h
4190 Hz
4191 @item q
4192 Q-Factor
4193 @item o
4194 octave
4195 @item s
4196 slope
4197 @item k
4198 kHz
4199 @end table
4200
4201 @item width, w
4202 Specify the band-width of a filter in width_type units.
4203 Applies only to double-pole filter.
4204 The default is 0.707q and gives a Butterworth response.
4205
4206 @item mix, m
4207 How much to use filtered signal in output. Default is 1.
4208 Range is between 0 and 1.
4209
4210 @item channels, c
4211 Specify which channels to filter, by default all available are filtered.
4212
4213 @item normalize, n
4214 Normalize biquad coefficients, by default is disabled.
4215 Enabling it will normalize magnitude response at DC to 0dB.
4216
4217 @item transform, a
4218 Set transform type of IIR filter.
4219 @table @option
4220 @item di
4221 @item dii
4222 @item tdii
4223 @item latt
4224 @end table
4225 @end table
4226
4227 @subsection Commands
4228
4229 This filter supports the following commands:
4230 @table @option
4231 @item frequency, f
4232 Change highpass frequency.
4233 Syntax for the command is : "@var{frequency}"
4234
4235 @item width_type, t
4236 Change highpass width_type.
4237 Syntax for the command is : "@var{width_type}"
4238
4239 @item width, w
4240 Change highpass width.
4241 Syntax for the command is : "@var{width}"
4242
4243 @item mix, m
4244 Change highpass mix.
4245 Syntax for the command is : "@var{mix}"
4246 @end table
4247
4248 @section join
4249
4250 Join multiple input streams into one multi-channel stream.
4251
4252 It accepts the following parameters:
4253 @table @option
4254
4255 @item inputs
4256 The number of input streams. It defaults to 2.
4257
4258 @item channel_layout
4259 The desired output channel layout. It defaults to stereo.
4260
4261 @item map
4262 Map channels from inputs to output. The argument is a '|'-separated list of
4263 mappings, each in the @code{@var{input_idx}.@var{in_channel}-@var{out_channel}}
4264 form. @var{input_idx} is the 0-based index of the input stream. @var{in_channel}
4265 can be either the name of the input channel (e.g. FL for front left) or its
4266 index in the specified input stream. @var{out_channel} is the name of the output
4267 channel.
4268 @end table
4269
4270 The filter will attempt to guess the mappings when they are not specified
4271 explicitly. It does so by first trying to find an unused matching input channel
4272 and if that fails it picks the first unused input channel.
4273
4274 Join 3 inputs (with properly set channel layouts):
4275 @example
4276 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
4277 @end example
4278
4279 Build a 5.1 output from 6 single-channel streams:
4280 @example
4281 ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
4282 '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'
4283 out
4284 @end example
4285
4286 @section ladspa
4287
4288 Load a LADSPA (Linux Audio Developer's Simple Plugin API) plugin.
4289
4290 To enable compilation of this filter you need to configure FFmpeg with
4291 @code{--enable-ladspa}.
4292
4293 @table @option
4294 @item file, f
4295 Specifies the name of LADSPA plugin library to load. If the environment
4296 variable @env{LADSPA_PATH} is defined, the LADSPA plugin is searched in
4297 each one of the directories specified by the colon separated list in
4298 @env{LADSPA_PATH}, otherwise in the standard LADSPA paths, which are in
4299 this order: @file{HOME/.ladspa/lib/}, @file{/usr/local/lib/ladspa/},
4300 @file{/usr/lib/ladspa/}.
4301
4302 @item plugin, p
4303 Specifies the plugin within the library. Some libraries contain only
4304 one plugin, but others contain many of them. If this is not set filter
4305 will list all available plugins within the specified library.
4306
4307 @item controls, c
4308 Set the '|' separated list of controls which are zero or more floating point
4309 values that determine the behavior of the loaded plugin (for example delay,
4310 threshold or gain).
4311 Controls need to be defined using the following syntax:
4312 c0=@var{value0}|c1=@var{value1}|c2=@var{value2}|..., where
4313 @var{valuei} is the value set on the @var{i}-th control.
4314 Alternatively they can be also defined using the following syntax:
4315 @var{value0}|@var{value1}|@var{value2}|..., where
4316 @var{valuei} is the value set on the @var{i}-th control.
4317 If @option{controls} is set to @code{help}, all available controls and
4318 their valid ranges are printed.
4319
4320 @item sample_rate, s
4321 Specify the sample rate, default to 44100. Only used if plugin have
4322 zero inputs.
4323
4324 @item nb_samples, n
4325 Set the number of samples per channel per each output frame, default
4326 is 1024. Only used if plugin have zero inputs.
4327
4328 @item duration, d
4329 Set the minimum duration of the sourced audio. See
4330 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4331 for the accepted syntax.
4332 Note that the resulting duration may be greater than the specified duration,
4333 as the generated audio is always cut at the end of a complete frame.
4334 If not specified, or the expressed duration is negative, the audio is
4335 supposed to be generated forever.
4336 Only used if plugin have zero inputs.
4337
4338 @item latency, l
4339 Enable latency compensation, by default is disabled.
4340 Only used if plugin have inputs.
4341 @end table
4342
4343 @subsection Examples
4344
4345 @itemize
4346 @item
4347 List all available plugins within amp (LADSPA example plugin) library:
4348 @example
4349 ladspa=file=amp
4350 @end example
4351
4352 @item
4353 List all available controls and their valid ranges for @code{vcf_notch}
4354 plugin from @code{VCF} library:
4355 @example
4356 ladspa=f=vcf:p=vcf_notch:c=help
4357 @end example
4358
4359 @item
4360 Simulate low quality audio equipment using @code{Computer Music Toolkit} (CMT)
4361 plugin library:
4362 @example
4363 ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
4364 @end example
4365
4366 @item
4367 Add reverberation to the audio using TAP-plugins
4368 (Tom's Audio Processing plugins):
4369 @example
4370 ladspa=file=tap_reverb:tap_reverb
4371 @end example
4372
4373 @item
4374 Generate white noise, with 0.2 amplitude:
4375 @example
4376 ladspa=file=cmt:noise_source_white:c=c0=.2
4377 @end example
4378
4379 @item
4380 Generate 20 bpm clicks using plugin @code{C* Click - Metronome} from the
4381 @code{C* Audio Plugin Suite} (CAPS) library:
4382 @example
4383 ladspa=file=caps:Click:c=c1=20'
4384 @end example
4385
4386 @item
4387 Apply @code{C* Eq10X2 - Stereo 10-band equaliser} effect:
4388 @example
4389 ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
4390 @end example
4391
4392 @item
4393 Increase volume by 20dB using fast lookahead limiter from Steve Harris
4394 @code{SWH Plugins} collection:
4395 @example
4396 ladspa=fast_lookahead_limiter_1913:fastLookaheadLimiter:20|0|2
4397 @end example
4398
4399 @item
4400 Attenuate low frequencies using Multiband EQ from Steve Harris
4401 @code{SWH Plugins} collection:
4402 @example
4403 ladspa=mbeq_1197:mbeq:-24|-24|-24|0|0|0|0|0|0|0|0|0|0|0|0
4404 @end example
4405
4406 @item
4407 Reduce stereo image using @code{Narrower} from the @code{C* Audio Plugin Suite}
4408 (CAPS) library:
4409 @example
4410 ladspa=caps:Narrower
4411 @end example
4412
4413 @item
4414 Another white noise, now using @code{C* Audio Plugin Suite} (CAPS) library:
4415 @example
4416 ladspa=caps:White:.2
4417 @end example
4418
4419 @item
4420 Some fractal noise, using @code{C* Audio Plugin Suite} (CAPS) library:
4421 @example
4422 ladspa=caps:Fractal:c=c1=1
4423 @end example
4424
4425 @item
4426 Dynamic volume normalization using @code{VLevel} plugin:
4427 @example
4428 ladspa=vlevel-ladspa:vlevel_mono
4429 @end example
4430 @end itemize
4431
4432 @subsection Commands
4433
4434 This filter supports the following commands:
4435 @table @option
4436 @item cN
4437 Modify the @var{N}-th control value.
4438
4439 If the specified value is not valid, it is ignored and prior one is kept.
4440 @end table
4441
4442 @section loudnorm
4443
4444 EBU R128 loudness normalization. Includes both dynamic and linear normalization modes.
4445 Support for both single pass (livestreams, files) and double pass (files) modes.
4446 This algorithm can target IL, LRA, and maximum true peak. In dynamic mode, to accurately
4447 detect true peaks, the audio stream will be upsampled to 192 kHz.
4448 Use the @code{-ar} option or @code{aresample} filter to explicitly set an output sample rate.
4449
4450 The filter accepts the following options:
4451
4452 @table @option
4453 @item I, i
4454 Set integrated loudness target.
4455 Range is -70.0 - -5.0. Default value is -24.0.
4456
4457 @item LRA, lra
4458 Set loudness range target.
4459 Range is 1.0 - 20.0. Default value is 7.0.
4460
4461 @item TP, tp
4462 Set maximum true peak.
4463 Range is -9.0 - +0.0. Default value is -2.0.
4464
4465 @item measured_I, measured_i
4466 Measured IL of input file.
4467 Range is -99.0 - +0.0.
4468
4469 @item measured_LRA, measured_lra
4470 Measured LRA of input file.
4471 Range is  0.0 - 99.0.
4472
4473 @item measured_TP, measured_tp
4474 Measured true peak of input file.
4475 Range is  -99.0 - +99.0.
4476
4477 @item measured_thresh
4478 Measured threshold of input file.
4479 Range is -99.0 - +0.0.
4480
4481 @item offset
4482 Set offset gain. Gain is applied before the true-peak limiter.
4483 Range is  -99.0 - +99.0. Default is +0.0.
4484
4485 @item linear
4486 Normalize by linearly scaling the source audio.
4487 @code{measured_I}, @code{measured_LRA}, @code{measured_TP},
4488 and @code{measured_thresh} must all be specified. Target LRA shouldn't
4489 be lower than source LRA and the change in integrated loudness shouldn't
4490 result in a true peak which exceeds the target TP. If any of these
4491 conditions aren't met, normalization mode will revert to @var{dynamic}.
4492 Options are @code{true} or @code{false}. Default is @code{true}.
4493
4494 @item dual_mono
4495 Treat mono input files as "dual-mono". If a mono file is intended for playback
4496 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
4497 If set to @code{true}, this option will compensate for this effect.
4498 Multi-channel input files are not affected by this option.
4499 Options are true or false. Default is false.
4500
4501 @item print_format
4502 Set print format for stats. Options are summary, json, or none.
4503 Default value is none.
4504 @end table
4505
4506 @section lowpass
4507
4508 Apply a low-pass filter with 3dB point frequency.
4509 The filter can be either single-pole or double-pole (the default).
4510 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
4511
4512 The filter accepts the following options:
4513
4514 @table @option
4515 @item frequency, f
4516 Set frequency in Hz. Default is 500.
4517
4518 @item poles, p
4519 Set number of poles. Default is 2.
4520
4521 @item width_type, t
4522 Set method to specify band-width of filter.
4523 @table @option
4524 @item h
4525 Hz
4526 @item q
4527 Q-Factor
4528 @item o
4529 octave
4530 @item s
4531 slope
4532 @item k
4533 kHz
4534 @end table
4535
4536 @item width, w
4537 Specify the band-width of a filter in width_type units.
4538 Applies only to double-pole filter.
4539 The default is 0.707q and gives a Butterworth response.
4540
4541 @item mix, m
4542 How much to use filtered signal in output. Default is 1.
4543 Range is between 0 and 1.
4544
4545 @item channels, c
4546 Specify which channels to filter, by default all available are filtered.
4547
4548 @item normalize, n
4549 Normalize biquad coefficients, by default is disabled.
4550 Enabling it will normalize magnitude response at DC to 0dB.
4551
4552 @item transform, a
4553 Set transform type of IIR filter.
4554 @table @option
4555 @item di
4556 @item dii
4557 @item tdii
4558 @item latt
4559 @end table
4560 @end table
4561
4562 @subsection Examples
4563 @itemize
4564 @item
4565 Lowpass only LFE channel, it LFE is not present it does nothing:
4566 @example
4567 lowpass=c=LFE
4568 @end example
4569 @end itemize
4570
4571 @subsection Commands
4572
4573 This filter supports the following commands:
4574 @table @option
4575 @item frequency, f
4576 Change lowpass frequency.
4577 Syntax for the command is : "@var{frequency}"
4578
4579 @item width_type, t
4580 Change lowpass width_type.
4581 Syntax for the command is : "@var{width_type}"
4582
4583 @item width, w
4584 Change lowpass width.
4585 Syntax for the command is : "@var{width}"
4586
4587 @item mix, m
4588 Change lowpass mix.
4589 Syntax for the command is : "@var{mix}"
4590 @end table
4591
4592 @section lv2
4593
4594 Load a LV2 (LADSPA Version 2) plugin.
4595
4596 To enable compilation of this filter you need to configure FFmpeg with
4597 @code{--enable-lv2}.
4598
4599 @table @option
4600 @item plugin, p
4601 Specifies the plugin URI. You may need to escape ':'.
4602
4603 @item controls, c
4604 Set the '|' separated list of controls which are zero or more floating point
4605 values that determine the behavior of the loaded plugin (for example delay,
4606 threshold or gain).
4607 If @option{controls} is set to @code{help}, all available controls and
4608 their valid ranges are printed.
4609
4610 @item sample_rate, s
4611 Specify the sample rate, default to 44100. Only used if plugin have
4612 zero inputs.
4613
4614 @item nb_samples, n
4615 Set the number of samples per channel per each output frame, default
4616 is 1024. Only used if plugin have zero inputs.
4617
4618 @item duration, d
4619 Set the minimum duration of the sourced audio. See
4620 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4621 for the accepted syntax.
4622 Note that the resulting duration may be greater than the specified duration,
4623 as the generated audio is always cut at the end of a complete frame.
4624 If not specified, or the expressed duration is negative, the audio is
4625 supposed to be generated forever.
4626 Only used if plugin have zero inputs.
4627 @end table
4628
4629 @subsection Examples
4630
4631 @itemize
4632 @item
4633 Apply bass enhancer plugin from Calf:
4634 @example
4635 lv2=p=http\\\\://calf.sourceforge.net/plugins/BassEnhancer:c=amount=2
4636 @end example
4637
4638 @item
4639 Apply vinyl plugin from Calf:
4640 @example
4641 lv2=p=http\\\\://calf.sourceforge.net/plugins/Vinyl:c=drone=0.2|aging=0.5
4642 @end example
4643
4644 @item
4645 Apply bit crusher plugin from ArtyFX:
4646 @example
4647 lv2=p=http\\\\://www.openavproductions.com/artyfx#bitta:c=crush=0.3
4648 @end example
4649 @end itemize
4650
4651 @section mcompand
4652 Multiband Compress or expand the audio's dynamic range.
4653
4654 The input audio is divided into bands using 4th order Linkwitz-Riley IIRs.
4655 This is akin to the crossover of a loudspeaker, and results in flat frequency
4656 response when absent compander action.
4657
4658 It accepts the following parameters:
4659
4660 @table @option
4661 @item args
4662 This option syntax is:
4663 attack,decay,[attack,decay..] soft-knee points crossover_frequency [delay [initial_volume [gain]]] | attack,decay ...
4664 For explanation of each item refer to compand filter documentation.
4665 @end table
4666
4667 @anchor{pan}
4668 @section pan
4669
4670 Mix channels with specific gain levels. The filter accepts the output
4671 channel layout followed by a set of channels definitions.
4672
4673 This filter is also designed to efficiently remap the channels of an audio
4674 stream.
4675
4676 The filter accepts parameters of the form:
4677 "@var{l}|@var{outdef}|@var{outdef}|..."
4678
4679 @table @option
4680 @item l
4681 output channel layout or number of channels
4682
4683 @item outdef
4684 output channel specification, of the form:
4685 "@var{out_name}=[@var{gain}*]@var{in_name}[(+-)[@var{gain}*]@var{in_name}...]"
4686
4687 @item out_name
4688 output channel to define, either a channel name (FL, FR, etc.) or a channel
4689 number (c0, c1, etc.)
4690
4691 @item gain
4692 multiplicative coefficient for the channel, 1 leaving the volume unchanged
4693
4694 @item in_name
4695 input channel to use, see out_name for details; it is not possible to mix
4696 named and numbered input channels
4697 @end table
4698
4699 If the `=' in a channel specification is replaced by `<', then the gains for
4700 that specification will be renormalized so that the total is 1, thus
4701 avoiding clipping noise.
4702
4703 @subsection Mixing examples
4704
4705 For example, if you want to down-mix from stereo to mono, but with a bigger
4706 factor for the left channel:
4707 @example
4708 pan=1c|c0=0.9*c0+0.1*c1
4709 @end example
4710
4711 A customized down-mix to stereo that works automatically for 3-, 4-, 5- and
4712 7-channels surround:
4713 @example
4714 pan=stereo| FL < FL + 0.5*FC + 0.6*BL + 0.6*SL | FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
4715 @end example
4716
4717 Note that @command{ffmpeg} integrates a default down-mix (and up-mix) system
4718 that should be preferred (see "-ac" option) unless you have very specific
4719 needs.
4720
4721 @subsection Remapping examples
4722
4723 The channel remapping will be effective if, and only if:
4724
4725 @itemize
4726 @item gain coefficients are zeroes or ones,
4727 @item only one input per channel output,
4728 @end itemize
4729
4730 If all these conditions are satisfied, the filter will notify the user ("Pure
4731 channel mapping detected"), and use an optimized and lossless method to do the
4732 remapping.
4733
4734 For example, if you have a 5.1 source and want a stereo audio stream by
4735 dropping the extra channels:
4736 @example
4737 pan="stereo| c0=FL | c1=FR"
4738 @end example
4739
4740 Given the same source, you can also switch front left and front right channels
4741 and keep the input channel layout:
4742 @example
4743 pan="5.1| c0=c1 | c1=c0 | c2=c2 | c3=c3 | c4=c4 | c5=c5"
4744 @end example
4745
4746 If the input is a stereo audio stream, you can mute the front left channel (and
4747 still keep the stereo channel layout) with:
4748 @example
4749 pan="stereo|c1=c1"
4750 @end example
4751
4752 Still with a stereo audio stream input, you can copy the right channel in both
4753 front left and right:
4754 @example
4755 pan="stereo| c0=FR | c1=FR"
4756 @end example
4757
4758 @section replaygain
4759
4760 ReplayGain scanner filter. This filter takes an audio stream as an input and
4761 outputs it unchanged.
4762 At end of filtering it displays @code{track_gain} and @code{track_peak}.
4763
4764 @section resample
4765
4766 Convert the audio sample format, sample rate and channel layout. It is
4767 not meant to be used directly.
4768
4769 @section rubberband
4770 Apply time-stretching and pitch-shifting with librubberband.
4771
4772 To enable compilation of this filter, you need to configure FFmpeg with
4773 @code{--enable-librubberband}.
4774
4775 The filter accepts the following options:
4776
4777 @table @option
4778 @item tempo
4779 Set tempo scale factor.
4780
4781 @item pitch
4782 Set pitch scale factor.
4783
4784 @item transients
4785 Set transients detector.
4786 Possible values are:
4787 @table @var
4788 @item crisp
4789 @item mixed
4790 @item smooth
4791 @end table
4792
4793 @item detector
4794 Set detector.
4795 Possible values are:
4796 @table @var
4797 @item compound
4798 @item percussive
4799 @item soft
4800 @end table
4801
4802 @item phase
4803 Set phase.
4804 Possible values are:
4805 @table @var
4806 @item laminar
4807 @item independent
4808 @end table
4809
4810 @item window
4811 Set processing window size.
4812 Possible values are:
4813 @table @var
4814 @item standard
4815 @item short
4816 @item long
4817 @end table
4818
4819 @item smoothing
4820 Set smoothing.
4821 Possible values are:
4822 @table @var
4823 @item off
4824 @item on
4825 @end table
4826
4827 @item formant
4828 Enable formant preservation when shift pitching.
4829 Possible values are:
4830 @table @var
4831 @item shifted
4832 @item preserved
4833 @end table
4834
4835 @item pitchq
4836 Set pitch quality.
4837 Possible values are:
4838 @table @var
4839 @item quality
4840 @item speed
4841 @item consistency
4842 @end table
4843
4844 @item channels
4845 Set channels.
4846 Possible values are:
4847 @table @var
4848 @item apart
4849 @item together
4850 @end table
4851 @end table
4852
4853 @subsection Commands
4854
4855 This filter supports the following commands:
4856 @table @option
4857 @item tempo
4858 Change filter tempo scale factor.
4859 Syntax for the command is : "@var{tempo}"
4860
4861 @item pitch
4862 Change filter pitch scale factor.
4863 Syntax for the command is : "@var{pitch}"
4864 @end table
4865
4866 @section sidechaincompress
4867
4868 This filter acts like normal compressor but has the ability to compress
4869 detected signal using second input signal.
4870 It needs two input streams and returns one output stream.
4871 First input stream will be processed depending on second stream signal.
4872 The filtered signal then can be filtered with other filters in later stages of
4873 processing. See @ref{pan} and @ref{amerge} filter.
4874
4875 The filter accepts the following options:
4876
4877 @table @option
4878 @item level_in
4879 Set input gain. Default is 1. Range is between 0.015625 and 64.
4880
4881 @item mode
4882 Set mode of compressor operation. Can be @code{upward} or @code{downward}.
4883 Default is @code{downward}.
4884
4885 @item threshold
4886 If a signal of second stream raises above this level it will affect the gain
4887 reduction of first stream.
4888 By default is 0.125. Range is between 0.00097563 and 1.
4889
4890 @item ratio
4891 Set a ratio about which the signal is reduced. 1:2 means that if the level
4892 raised 4dB above the threshold, it will be only 2dB above after the reduction.
4893 Default is 2. Range is between 1 and 20.
4894
4895 @item attack
4896 Amount of milliseconds the signal has to rise above the threshold before gain
4897 reduction starts. Default is 20. Range is between 0.01 and 2000.
4898
4899 @item release
4900 Amount of milliseconds the signal has to fall below the threshold before
4901 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
4902
4903 @item makeup
4904 Set the amount by how much signal will be amplified after processing.
4905 Default is 1. Range is from 1 to 64.
4906
4907 @item knee
4908 Curve the sharp knee around the threshold to enter gain reduction more softly.
4909 Default is 2.82843. Range is between 1 and 8.
4910
4911 @item link
4912 Choose if the @code{average} level between all channels of side-chain stream
4913 or the louder(@code{maximum}) channel of side-chain stream affects the
4914 reduction. Default is @code{average}.
4915
4916 @item detection
4917 Should the exact signal be taken in case of @code{peak} or an RMS one in case
4918 of @code{rms}. Default is @code{rms} which is mainly smoother.
4919
4920 @item level_sc
4921 Set sidechain gain. Default is 1. Range is between 0.015625 and 64.
4922
4923 @item mix
4924 How much to use compressed signal in output. Default is 1.
4925 Range is between 0 and 1.
4926 @end table
4927
4928 @subsection Commands
4929
4930 This filter supports the all above options as @ref{commands}.
4931
4932 @subsection Examples
4933
4934 @itemize
4935 @item
4936 Full ffmpeg example taking 2 audio inputs, 1st input to be compressed
4937 depending on the signal of 2nd input and later compressed signal to be
4938 merged with 2nd input:
4939 @example
4940 ffmpeg -i main.flac -i sidechain.flac -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress[compr];[compr][mix]amerge"
4941 @end example
4942 @end itemize
4943
4944 @section sidechaingate
4945
4946 A sidechain gate acts like a normal (wideband) gate but has the ability to
4947 filter the detected signal before sending it to the gain reduction stage.
4948 Normally a gate uses the full range signal to detect a level above the
4949 threshold.
4950 For example: If you cut all lower frequencies from your sidechain signal
4951 the gate will decrease the volume of your track only if not enough highs
4952 appear. With this technique you are able to reduce the resonation of a
4953 natural drum or remove "rumbling" of muted strokes from a heavily distorted
4954 guitar.
4955 It needs two input streams and returns one output stream.
4956 First input stream will be processed depending on second stream signal.
4957
4958 The filter accepts the following options:
4959
4960 @table @option
4961 @item level_in
4962 Set input level before filtering.
4963 Default is 1. Allowed range is from 0.015625 to 64.
4964
4965 @item mode
4966 Set the mode of operation. Can be @code{upward} or @code{downward}.
4967 Default is @code{downward}. If set to @code{upward} mode, higher parts of signal
4968 will be amplified, expanding dynamic range in upward direction.
4969 Otherwise, in case of @code{downward} lower parts of signal will be reduced.
4970
4971 @item range
4972 Set the level of gain reduction when the signal is below the threshold.
4973 Default is 0.06125. Allowed range is from 0 to 1.
4974 Setting this to 0 disables reduction and then filter behaves like expander.
4975
4976 @item threshold
4977 If a signal rises above this level the gain reduction is released.
4978 Default is 0.125. Allowed range is from 0 to 1.
4979
4980 @item ratio
4981 Set a ratio about which the signal is reduced.
4982 Default is 2. Allowed range is from 1 to 9000.
4983
4984 @item attack
4985 Amount of milliseconds the signal has to rise above the threshold before gain
4986 reduction stops.
4987 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
4988
4989 @item release
4990 Amount of milliseconds the signal has to fall below the threshold before the
4991 reduction is increased again. Default is 250 milliseconds.
4992 Allowed range is from 0.01 to 9000.
4993
4994 @item makeup
4995 Set amount of amplification of signal after processing.
4996 Default is 1. Allowed range is from 1 to 64.
4997
4998 @item knee
4999 Curve the sharp knee around the threshold to enter gain reduction more softly.
5000 Default is 2.828427125. Allowed range is from 1 to 8.
5001
5002 @item detection
5003 Choose if exact signal should be taken for detection or an RMS like one.
5004 Default is rms. Can be peak or rms.
5005
5006 @item link
5007 Choose if the average level between all channels or the louder channel affects
5008 the reduction.
5009 Default is average. Can be average or maximum.
5010
5011 @item level_sc
5012 Set sidechain gain. Default is 1. Range is from 0.015625 to 64.
5013 @end table
5014
5015 @section silencedetect
5016
5017 Detect silence in an audio stream.
5018
5019 This filter logs a message when it detects that the input audio volume is less
5020 or equal to a noise tolerance value for a duration greater or equal to the
5021 minimum detected noise duration.
5022
5023 The printed times and duration are expressed in seconds. The
5024 @code{lavfi.silence_start} or @code{lavfi.silence_start.X} metadata key
5025 is set on the first frame whose timestamp equals or exceeds the detection
5026 duration and it contains the timestamp of the first frame of the silence.
5027
5028 The @code{lavfi.silence_duration} or @code{lavfi.silence_duration.X}
5029 and @code{lavfi.silence_end} or @code{lavfi.silence_end.X} metadata
5030 keys are set on the first frame after the silence. If @option{mono} is
5031 enabled, and each channel is evaluated separately, the @code{.X}
5032 suffixed keys are used, and @code{X} corresponds to the channel number.
5033
5034 The filter accepts the following options:
5035
5036 @table @option
5037 @item noise, n
5038 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
5039 specified value) or amplitude ratio. Default is -60dB, or 0.001.
5040
5041 @item duration, d
5042 Set silence duration until notification (default is 2 seconds). See
5043 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5044 for the accepted syntax.
5045
5046 @item mono, m
5047 Process each channel separately, instead of combined. By default is disabled.
5048 @end table
5049
5050 @subsection Examples
5051
5052 @itemize
5053 @item
5054 Detect 5 seconds of silence with -50dB noise tolerance:
5055 @example
5056 silencedetect=n=-50dB:d=5
5057 @end example
5058
5059 @item
5060 Complete example with @command{ffmpeg} to detect silence with 0.0001 noise
5061 tolerance in @file{silence.mp3}:
5062 @example
5063 ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
5064 @end example
5065 @end itemize
5066
5067 @section silenceremove
5068
5069 Remove silence from the beginning, middle or end of the audio.
5070
5071 The filter accepts the following options:
5072
5073 @table @option
5074 @item start_periods
5075 This value is used to indicate if audio should be trimmed at beginning of
5076 the audio. A value of zero indicates no silence should be trimmed from the
5077 beginning. When specifying a non-zero value, it trims audio up until it
5078 finds non-silence. Normally, when trimming silence from beginning of audio
5079 the @var{start_periods} will be @code{1} but it can be increased to higher
5080 values to trim all audio up to specific count of non-silence periods.
5081 Default value is @code{0}.
5082
5083 @item start_duration
5084 Specify the amount of time that non-silence must be detected before it stops
5085 trimming audio. By increasing the duration, bursts of noises can be treated
5086 as silence and trimmed off. Default value is @code{0}.
5087
5088 @item start_threshold
5089 This indicates what sample value should be treated as silence. For digital
5090 audio, a value of @code{0} may be fine but for audio recorded from analog,
5091 you may wish to increase the value to account for background noise.
5092 Can be specified in dB (in case "dB" is appended to the specified value)
5093 or amplitude ratio. Default value is @code{0}.
5094
5095 @item start_silence
5096 Specify max duration of silence at beginning that will be kept after
5097 trimming. Default is 0, which is equal to trimming all samples detected
5098 as silence.
5099
5100 @item start_mode
5101 Specify mode of detection of silence end in start of multi-channel audio.
5102 Can be @var{any} or @var{all}. Default is @var{any}.
5103 With @var{any}, any sample that is detected as non-silence will cause
5104 stopped trimming of silence.
5105 With @var{all}, only if all channels are detected as non-silence will cause
5106 stopped trimming of silence.
5107
5108 @item stop_periods
5109 Set the count for trimming silence from the end of audio.
5110 To remove silence from the middle of a file, specify a @var{stop_periods}
5111 that is negative. This value is then treated as a positive value and is
5112 used to indicate the effect should restart processing as specified by
5113 @var{start_periods}, making it suitable for removing periods of silence
5114 in the middle of the audio.
5115 Default value is @code{0}.
5116
5117 @item stop_duration
5118 Specify a duration of silence that must exist before audio is not copied any
5119 more. By specifying a higher duration, silence that is wanted can be left in
5120 the audio.
5121 Default value is @code{0}.
5122
5123 @item stop_threshold
5124 This is the same as @option{start_threshold} but for trimming silence from
5125 the end of audio.
5126 Can be specified in dB (in case "dB" is appended to the specified value)
5127 or amplitude ratio. Default value is @code{0}.
5128
5129 @item stop_silence
5130 Specify max duration of silence at end that will be kept after
5131 trimming. Default is 0, which is equal to trimming all samples detected
5132 as silence.
5133
5134 @item stop_mode
5135 Specify mode of detection of silence start in end of multi-channel audio.
5136 Can be @var{any} or @var{all}. Default is @var{any}.
5137 With @var{any}, any sample that is detected as non-silence will cause
5138 stopped trimming of silence.
5139 With @var{all}, only if all channels are detected as non-silence will cause
5140 stopped trimming of silence.
5141
5142 @item detection
5143 Set how is silence detected. Can be @code{rms} or @code{peak}. Second is faster
5144 and works better with digital silence which is exactly 0.
5145 Default value is @code{rms}.
5146
5147 @item window
5148 Set duration in number of seconds used to calculate size of window in number
5149 of samples for detecting silence.
5150 Default value is @code{0.02}. Allowed range is from @code{0} to @code{10}.
5151 @end table
5152
5153 @subsection Examples
5154
5155 @itemize
5156 @item
5157 The following example shows how this filter can be used to start a recording
5158 that does not contain the delay at the start which usually occurs between
5159 pressing the record button and the start of the performance:
5160 @example
5161 silenceremove=start_periods=1:start_duration=5:start_threshold=0.02
5162 @end example
5163
5164 @item
5165 Trim all silence encountered from beginning to end where there is more than 1
5166 second of silence in audio:
5167 @example
5168 silenceremove=stop_periods=-1:stop_duration=1:stop_threshold=-90dB
5169 @end example
5170
5171 @item
5172 Trim all digital silence samples, using peak detection, from beginning to end
5173 where there is more than 0 samples of digital silence in audio and digital
5174 silence is detected in all channels at same positions in stream:
5175 @example
5176 silenceremove=window=0:detection=peak:stop_mode=all:start_mode=all:stop_periods=-1:stop_threshold=0
5177 @end example
5178 @end itemize
5179
5180 @section sofalizer
5181
5182 SOFAlizer uses head-related transfer functions (HRTFs) to create virtual
5183 loudspeakers around the user for binaural listening via headphones (audio
5184 formats up to 9 channels supported).
5185 The HRTFs are stored in SOFA files (see @url{http://www.sofacoustics.org/} for a database).
5186 SOFAlizer is developed at the Acoustics Research Institute (ARI) of the
5187 Austrian Academy of Sciences.
5188
5189 To enable compilation of this filter you need to configure FFmpeg with
5190 @code{--enable-libmysofa}.
5191
5192 The filter accepts the following options:
5193
5194 @table @option
5195 @item sofa
5196 Set the SOFA file used for rendering.
5197
5198 @item gain
5199 Set gain applied to audio. Value is in dB. Default is 0.
5200
5201 @item rotation
5202 Set rotation of virtual loudspeakers in deg. Default is 0.
5203
5204 @item elevation
5205 Set elevation of virtual speakers in deg. Default is 0.
5206
5207 @item radius
5208 Set distance in meters between loudspeakers and the listener with near-field
5209 HRTFs. Default is 1.
5210
5211 @item type
5212 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
5213 processing audio in time domain which is slow.
5214 @var{freq} is processing audio in frequency domain which is fast.
5215 Default is @var{freq}.
5216
5217 @item speakers
5218 Set custom positions of virtual loudspeakers. Syntax for this option is:
5219 <CH> <AZIM> <ELEV>[|<CH> <AZIM> <ELEV>|...].
5220 Each virtual loudspeaker is described with short channel name following with
5221 azimuth and elevation in degrees.
5222 Each virtual loudspeaker description is separated by '|'.
5223 For example to override front left and front right channel positions use:
5224 'speakers=FL 45 15|FR 345 15'.
5225 Descriptions with unrecognised channel names are ignored.
5226
5227 @item lfegain
5228 Set custom gain for LFE channels. Value is in dB. Default is 0.
5229
5230 @item framesize
5231 Set custom frame size in number of samples. Default is 1024.
5232 Allowed range is from 1024 to 96000. Only used if option @samp{type}
5233 is set to @var{freq}.
5234
5235 @item normalize
5236 Should all IRs be normalized upon importing SOFA file.
5237 By default is enabled.
5238
5239 @item interpolate
5240 Should nearest IRs be interpolated with neighbor IRs if exact position
5241 does not match. By default is disabled.
5242
5243 @item minphase
5244 Minphase all IRs upon loading of SOFA file. By default is disabled.
5245
5246 @item anglestep
5247 Set neighbor search angle step. Only used if option @var{interpolate} is enabled.
5248
5249 @item radstep
5250 Set neighbor search radius step. Only used if option @var{interpolate} is enabled.
5251 @end table
5252
5253 @subsection Examples
5254
5255 @itemize
5256 @item
5257 Using ClubFritz6 sofa file:
5258 @example
5259 sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=1
5260 @end example
5261
5262 @item
5263 Using ClubFritz12 sofa file and bigger radius with small rotation:
5264 @example
5265 sofalizer=sofa=/path/to/ClubFritz12.sofa:type=freq:radius=2:rotation=5
5266 @end example
5267
5268 @item
5269 Similar as above but with custom speaker positions for front left, front right, back left and back right
5270 and also with custom gain:
5271 @example
5272 "sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=2:speakers=FL 45|FR 315|BL 135|BR 225:gain=28"
5273 @end example
5274 @end itemize
5275
5276 @section speechnorm
5277 Speech Normalizer.
5278
5279 This filter expands or compresses each half-cycle of audio samples
5280 (local set of samples all above or all below zero and between two nearest zero crossings) depending
5281 on threshold value, so audio reaches target peak value under conditions controlled by below options.
5282
5283 The filter accepts the following options:
5284
5285 @table @option
5286 @item peak, p
5287 Set the expansion target peak value. This specifies the highest allowed absolute amplitude
5288 level for the normalized audio input. Default value is 0.95. Allowed range is from 0.0 to 1.0.
5289
5290 @item expansion, e
5291 Set the maximum expansion factor. Allowed range is from 1.0 to 50.0. Default value is 2.0.
5292 This option controls maximum local half-cycle of samples expansion. The maximum expansion
5293 would be such that local peak value reaches target peak value but never to surpass it and that
5294 ratio between new and previous peak value does not surpass this option value.
5295
5296 @item compression, c
5297 Set the maximum compression factor. Allowed range is from 1.0 to 50.0. Default value is 2.0.
5298 This option controls maximum local half-cycle of samples compression. This option is used
5299 only if @option{threshold} option is set to value greater than 0.0, then in such cases
5300 when local peak is lower or same as value set by @option{threshold} all samples belonging to
5301 that peak's half-cycle will be compressed by current compression factor.
5302
5303 @item threshold, t
5304 Set the threshold value. Default value is 0.0. Allowed range is from 0.0 to 1.0.
5305 This option specifies which half-cycles of samples will be compressed and which will be expanded.
5306 Any half-cycle samples with their local peak value below or same as this option value will be
5307 compressed by current compression factor, otherwise, if greater than threshold value they will be
5308 expanded with expansion factor so that it could reach peak target value but never surpass it.
5309
5310 @item raise, r
5311 Set the expansion raising amount per each half-cycle of samples. Default value is 0.001.
5312 Allowed range is from 0.0 to 1.0. This controls how fast expansion factor is raised per
5313 each new half-cycle until it reaches @option{expansion} value.
5314 Setting this options too high may lead to distortions.
5315
5316 @item fall, f
5317 Set the compression raising amount per each half-cycle of samples. Default value is 0.001.
5318 Allowed range is from 0.0 to 1.0. This controls how fast compression factor is raised per
5319 each new half-cycle until it reaches @option{compression} value.
5320
5321 @item channels, h
5322 Specify which channels to filter, by default all available channels are filtered.
5323
5324 @item invert, i
5325 Enable inverted filtering, by default is disabled. This inverts interpretation of @option{threshold}
5326 option. When enabled any half-cycle of samples with their local peak value below or same as
5327 @option{threshold} option will be expanded otherwise it will be compressed.
5328
5329 @item link, l
5330 Link channels when calculating gain applied to each filtered channel sample, by default is disabled.
5331 When disabled each filtered channel gain calculation is independent, otherwise when this option
5332 is enabled the minimum of all possible gains for each filtered channel is used.
5333 @end table
5334
5335 @subsection Commands
5336
5337 This filter supports the all above options as @ref{commands}.
5338
5339 @section stereotools
5340
5341 This filter has some handy utilities to manage stereo signals, for converting
5342 M/S stereo recordings to L/R signal while having control over the parameters
5343 or spreading the stereo image of master track.
5344
5345 The filter accepts the following options:
5346
5347 @table @option
5348 @item level_in
5349 Set input level before filtering for both channels. Defaults is 1.
5350 Allowed range is from 0.015625 to 64.
5351
5352 @item level_out
5353 Set output level after filtering for both channels. Defaults is 1.
5354 Allowed range is from 0.015625 to 64.
5355
5356 @item balance_in
5357 Set input balance between both channels. Default is 0.
5358 Allowed range is from -1 to 1.
5359
5360 @item balance_out
5361 Set output balance between both channels. Default is 0.
5362 Allowed range is from -1 to 1.
5363
5364 @item softclip
5365 Enable softclipping. Results in analog distortion instead of harsh digital 0dB
5366 clipping. Disabled by default.
5367
5368 @item mutel
5369 Mute the left channel. Disabled by default.
5370
5371 @item muter
5372 Mute the right channel. Disabled by default.
5373
5374 @item phasel
5375 Change the phase of the left channel. Disabled by default.
5376
5377 @item phaser
5378 Change the phase of the right channel. Disabled by default.
5379
5380 @item mode
5381 Set stereo mode. Available values are:
5382
5383 @table @samp
5384 @item lr>lr
5385 Left/Right to Left/Right, this is default.
5386
5387 @item lr>ms
5388 Left/Right to Mid/Side.
5389
5390 @item ms>lr
5391 Mid/Side to Left/Right.
5392
5393 @item lr>ll
5394 Left/Right to Left/Left.
5395
5396 @item lr>rr
5397 Left/Right to Right/Right.
5398
5399 @item lr>l+r
5400 Left/Right to Left + Right.
5401
5402 @item lr>rl
5403 Left/Right to Right/Left.
5404
5405 @item ms>ll
5406 Mid/Side to Left/Left.
5407
5408 @item ms>rr
5409 Mid/Side to Right/Right.
5410 @end table
5411
5412 @item slev
5413 Set level of side signal. Default is 1.
5414 Allowed range is from 0.015625 to 64.
5415
5416 @item sbal
5417 Set balance of side signal. Default is 0.
5418 Allowed range is from -1 to 1.
5419
5420 @item mlev
5421 Set level of the middle signal. Default is 1.
5422 Allowed range is from 0.015625 to 64.
5423
5424 @item mpan
5425 Set middle signal pan. Default is 0. Allowed range is from -1 to 1.
5426
5427 @item base
5428 Set stereo base between mono and inversed channels. Default is 0.
5429 Allowed range is from -1 to 1.
5430
5431 @item delay
5432 Set delay in milliseconds how much to delay left from right channel and
5433 vice versa. Default is 0. Allowed range is from -20 to 20.
5434
5435 @item sclevel
5436 Set S/C level. Default is 1. Allowed range is from 1 to 100.
5437
5438 @item phase
5439 Set the stereo phase in degrees. Default is 0. Allowed range is from 0 to 360.
5440
5441 @item bmode_in, bmode_out
5442 Set balance mode for balance_in/balance_out option.
5443
5444 Can be one of the following:
5445
5446 @table @samp
5447 @item balance
5448 Classic balance mode. Attenuate one channel at time.
5449 Gain is raised up to 1.
5450
5451 @item amplitude
5452 Similar as classic mode above but gain is raised up to 2.
5453
5454 @item power
5455 Equal power distribution, from -6dB to +6dB range.
5456 @end table
5457 @end table
5458
5459 @subsection Examples
5460
5461 @itemize
5462 @item
5463 Apply karaoke like effect:
5464 @example
5465 stereotools=mlev=0.015625
5466 @end example
5467
5468 @item
5469 Convert M/S signal to L/R:
5470 @example
5471 "stereotools=mode=ms>lr"
5472 @end example
5473 @end itemize
5474
5475 @section stereowiden
5476
5477 This filter enhance the stereo effect by suppressing signal common to both
5478 channels and by delaying the signal of left into right and vice versa,
5479 thereby widening the stereo effect.
5480
5481 The filter accepts the following options:
5482
5483 @table @option
5484 @item delay
5485 Time in milliseconds of the delay of left signal into right and vice versa.
5486 Default is 20 milliseconds.
5487
5488 @item feedback
5489 Amount of gain in delayed signal into right and vice versa. Gives a delay
5490 effect of left signal in right output and vice versa which gives widening
5491 effect. Default is 0.3.
5492
5493 @item crossfeed
5494 Cross feed of left into right with inverted phase. This helps in suppressing
5495 the mono. If the value is 1 it will cancel all the signal common to both
5496 channels. Default is 0.3.
5497
5498 @item drymix
5499 Set level of input signal of original channel. Default is 0.8.
5500 @end table
5501
5502 @subsection Commands
5503
5504 This filter supports the all above options except @code{delay} as @ref{commands}.
5505
5506 @section superequalizer
5507 Apply 18 band equalizer.
5508
5509 The filter accepts the following options:
5510 @table @option
5511 @item 1b
5512 Set 65Hz band gain.
5513 @item 2b
5514 Set 92Hz band gain.
5515 @item 3b
5516 Set 131Hz band gain.
5517 @item 4b
5518 Set 185Hz band gain.
5519 @item 5b
5520 Set 262Hz band gain.
5521 @item 6b
5522 Set 370Hz band gain.
5523 @item 7b
5524 Set 523Hz band gain.
5525 @item 8b
5526 Set 740Hz band gain.
5527 @item 9b
5528 Set 1047Hz band gain.
5529 @item 10b
5530 Set 1480Hz band gain.
5531 @item 11b
5532 Set 2093Hz band gain.
5533 @item 12b
5534 Set 2960Hz band gain.
5535 @item 13b
5536 Set 4186Hz band gain.
5537 @item 14b
5538 Set 5920Hz band gain.
5539 @item 15b
5540 Set 8372Hz band gain.
5541 @item 16b
5542 Set 11840Hz band gain.
5543 @item 17b
5544 Set 16744Hz band gain.
5545 @item 18b
5546 Set 20000Hz band gain.
5547 @end table
5548
5549 @section surround
5550 Apply audio surround upmix filter.
5551
5552 This filter allows to produce multichannel output from audio stream.
5553
5554 The filter accepts the following options:
5555
5556 @table @option
5557 @item chl_out
5558 Set output channel layout. By default, this is @var{5.1}.
5559
5560 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5561 for the required syntax.
5562
5563 @item chl_in
5564 Set input channel layout. By default, this is @var{stereo}.
5565
5566 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5567 for the required syntax.
5568
5569 @item level_in
5570 Set input volume level. By default, this is @var{1}.
5571
5572 @item level_out
5573 Set output volume level. By default, this is @var{1}.
5574
5575 @item lfe
5576 Enable LFE channel output if output channel layout has it. By default, this is enabled.
5577
5578 @item lfe_low
5579 Set LFE low cut off frequency. By default, this is @var{128} Hz.
5580
5581 @item lfe_high
5582 Set LFE high cut off frequency. By default, this is @var{256} Hz.
5583
5584 @item lfe_mode
5585 Set LFE mode, can be @var{add} or @var{sub}. Default is @var{add}.
5586 In @var{add} mode, LFE channel is created from input audio and added to output.
5587 In @var{sub} mode, LFE channel is created from input audio and added to output but
5588 also all non-LFE output channels are subtracted with output LFE channel.
5589
5590 @item angle
5591 Set angle of stereo surround transform, Allowed range is from @var{0} to @var{360}.
5592 Default is @var{90}.
5593
5594 @item fc_in
5595 Set front center input volume. By default, this is @var{1}.
5596
5597 @item fc_out
5598 Set front center output volume. By default, this is @var{1}.
5599
5600 @item fl_in
5601 Set front left input volume. By default, this is @var{1}.
5602
5603 @item fl_out
5604 Set front left output volume. By default, this is @var{1}.
5605
5606 @item fr_in
5607 Set front right input volume. By default, this is @var{1}.
5608
5609 @item fr_out
5610 Set front right output volume. By default, this is @var{1}.
5611
5612 @item sl_in
5613 Set side left input volume. By default, this is @var{1}.
5614
5615 @item sl_out
5616 Set side left output volume. By default, this is @var{1}.
5617
5618 @item sr_in
5619 Set side right input volume. By default, this is @var{1}.
5620
5621 @item sr_out
5622 Set side right output volume. By default, this is @var{1}.
5623
5624 @item bl_in
5625 Set back left input volume. By default, this is @var{1}.
5626
5627 @item bl_out
5628 Set back left output volume. By default, this is @var{1}.
5629
5630 @item br_in
5631 Set back right input volume. By default, this is @var{1}.
5632
5633 @item br_out
5634 Set back right output volume. By default, this is @var{1}.
5635
5636 @item bc_in
5637 Set back center input volume. By default, this is @var{1}.
5638
5639 @item bc_out
5640 Set back center output volume. By default, this is @var{1}.
5641
5642 @item lfe_in
5643 Set LFE input volume. By default, this is @var{1}.
5644
5645 @item lfe_out
5646 Set LFE output volume. By default, this is @var{1}.
5647
5648 @item allx
5649 Set spread usage of stereo image across X axis for all channels.
5650
5651 @item ally
5652 Set spread usage of stereo image across Y axis for all channels.
5653
5654 @item fcx, flx, frx, blx, brx, slx, srx, bcx
5655 Set spread usage of stereo image across X axis for each channel.
5656
5657 @item fcy, fly, fry, bly, bry, sly, sry, bcy
5658 Set spread usage of stereo image across Y axis for each channel.
5659
5660 @item win_size
5661 Set window size. Allowed range is from @var{1024} to @var{65536}. Default size is @var{4096}.
5662
5663 @item win_func
5664 Set window function.
5665
5666 It accepts the following values:
5667 @table @samp
5668 @item rect
5669 @item bartlett
5670 @item hann, hanning
5671 @item hamming
5672 @item blackman
5673 @item welch
5674 @item flattop
5675 @item bharris
5676 @item bnuttall
5677 @item bhann
5678 @item sine
5679 @item nuttall
5680 @item lanczos
5681 @item gauss
5682 @item tukey
5683 @item dolph
5684 @item cauchy
5685 @item parzen
5686 @item poisson
5687 @item bohman
5688 @end table
5689 Default is @code{hann}.
5690
5691 @item overlap
5692 Set window overlap. If set to 1, the recommended overlap for selected
5693 window function will be picked. Default is @code{0.5}.
5694 @end table
5695
5696 @section treble, highshelf
5697
5698 Boost or cut treble (upper) frequencies of the audio using a two-pole
5699 shelving filter with a response similar to that of a standard
5700 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
5701
5702 The filter accepts the following options:
5703
5704 @table @option
5705 @item gain, g
5706 Give the gain at whichever is the lower of ~22 kHz and the
5707 Nyquist frequency. Its useful range is about -20 (for a large cut)
5708 to +20 (for a large boost). Beware of clipping when using a positive gain.
5709
5710 @item frequency, f
5711 Set the filter's central frequency and so can be used
5712 to extend or reduce the frequency range to be boosted or cut.
5713 The default value is @code{3000} Hz.
5714
5715 @item width_type, t
5716 Set method to specify band-width of filter.
5717 @table @option
5718 @item h
5719 Hz
5720 @item q
5721 Q-Factor
5722 @item o
5723 octave
5724 @item s
5725 slope
5726 @item k
5727 kHz
5728 @end table
5729
5730 @item width, w
5731 Determine how steep is the filter's shelf transition.
5732
5733 @item mix, m
5734 How much to use filtered signal in output. Default is 1.
5735 Range is between 0 and 1.
5736
5737 @item channels, c
5738 Specify which channels to filter, by default all available are filtered.
5739
5740 @item normalize, n
5741 Normalize biquad coefficients, by default is disabled.
5742 Enabling it will normalize magnitude response at DC to 0dB.
5743
5744 @item transform, a
5745 Set transform type of IIR filter.
5746 @table @option
5747 @item di
5748 @item dii
5749 @item tdii
5750 @item latt
5751 @end table
5752 @end table
5753
5754 @subsection Commands
5755
5756 This filter supports the following commands:
5757 @table @option
5758 @item frequency, f
5759 Change treble frequency.
5760 Syntax for the command is : "@var{frequency}"
5761
5762 @item width_type, t
5763 Change treble width_type.
5764 Syntax for the command is : "@var{width_type}"
5765
5766 @item width, w
5767 Change treble width.
5768 Syntax for the command is : "@var{width}"
5769
5770 @item gain, g
5771 Change treble gain.
5772 Syntax for the command is : "@var{gain}"
5773
5774 @item mix, m
5775 Change treble mix.
5776 Syntax for the command is : "@var{mix}"
5777 @end table
5778
5779 @section tremolo
5780
5781 Sinusoidal amplitude modulation.
5782
5783 The filter accepts the following options:
5784
5785 @table @option
5786 @item f
5787 Modulation frequency in Hertz. Modulation frequencies in the subharmonic range
5788 (20 Hz or lower) will result in a tremolo effect.
5789 This filter may also be used as a ring modulator by specifying
5790 a modulation frequency higher than 20 Hz.
5791 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
5792
5793 @item d
5794 Depth of modulation as a percentage. Range is 0.0 - 1.0.
5795 Default value is 0.5.
5796 @end table
5797
5798 @section vibrato
5799
5800 Sinusoidal phase modulation.
5801
5802 The filter accepts the following options:
5803
5804 @table @option
5805 @item f
5806 Modulation frequency in Hertz.
5807 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
5808
5809 @item d
5810 Depth of modulation as a percentage. Range is 0.0 - 1.0.
5811 Default value is 0.5.
5812 @end table
5813
5814 @section volume
5815
5816 Adjust the input audio volume.
5817
5818 It accepts the following parameters:
5819 @table @option
5820
5821 @item volume
5822 Set audio volume expression.
5823
5824 Output values are clipped to the maximum value.
5825
5826 The output audio volume is given by the relation:
5827 @example
5828 @var{output_volume} = @var{volume} * @var{input_volume}
5829 @end example
5830
5831 The default value for @var{volume} is "1.0".
5832
5833 @item precision
5834 This parameter represents the mathematical precision.
5835
5836 It determines which input sample formats will be allowed, which affects the
5837 precision of the volume scaling.
5838
5839 @table @option
5840 @item fixed
5841 8-bit fixed-point; this limits input sample format to U8, S16, and S32.
5842 @item float
5843 32-bit floating-point; this limits input sample format to FLT. (default)
5844 @item double
5845 64-bit floating-point; this limits input sample format to DBL.
5846 @end table
5847
5848 @item replaygain
5849 Choose the behaviour on encountering ReplayGain side data in input frames.
5850
5851 @table @option
5852 @item drop
5853 Remove ReplayGain side data, ignoring its contents (the default).
5854
5855 @item ignore
5856 Ignore ReplayGain side data, but leave it in the frame.
5857
5858 @item track
5859 Prefer the track gain, if present.
5860
5861 @item album
5862 Prefer the album gain, if present.
5863 @end table
5864
5865 @item replaygain_preamp
5866 Pre-amplification gain in dB to apply to the selected replaygain gain.
5867
5868 Default value for @var{replaygain_preamp} is 0.0.
5869
5870 @item replaygain_noclip
5871 Prevent clipping by limiting the gain applied.
5872
5873 Default value for @var{replaygain_noclip} is 1.
5874
5875 @item eval
5876 Set when the volume expression is evaluated.
5877
5878 It accepts the following values:
5879 @table @samp
5880 @item once
5881 only evaluate expression once during the filter initialization, or
5882 when the @samp{volume} command is sent
5883
5884 @item frame
5885 evaluate expression for each incoming frame
5886 @end table
5887
5888 Default value is @samp{once}.
5889 @end table
5890
5891 The volume expression can contain the following parameters.
5892
5893 @table @option
5894 @item n
5895 frame number (starting at zero)
5896 @item nb_channels
5897 number of channels
5898 @item nb_consumed_samples
5899 number of samples consumed by the filter
5900 @item nb_samples
5901 number of samples in the current frame
5902 @item pos
5903 original frame position in the file
5904 @item pts
5905 frame PTS
5906 @item sample_rate
5907 sample rate
5908 @item startpts
5909 PTS at start of stream
5910 @item startt
5911 time at start of stream
5912 @item t
5913 frame time
5914 @item tb
5915 timestamp timebase
5916 @item volume
5917 last set volume value
5918 @end table
5919
5920 Note that when @option{eval} is set to @samp{once} only the
5921 @var{sample_rate} and @var{tb} variables are available, all other
5922 variables will evaluate to NAN.
5923
5924 @subsection Commands
5925
5926 This filter supports the following commands:
5927 @table @option
5928 @item volume
5929 Modify the volume expression.
5930 The command accepts the same syntax of the corresponding option.
5931
5932 If the specified expression is not valid, it is kept at its current
5933 value.
5934 @end table
5935
5936 @subsection Examples
5937
5938 @itemize
5939 @item
5940 Halve the input audio volume:
5941 @example
5942 volume=volume=0.5
5943 volume=volume=1/2
5944 volume=volume=-6.0206dB
5945 @end example
5946
5947 In all the above example the named key for @option{volume} can be
5948 omitted, for example like in:
5949 @example
5950 volume=0.5
5951 @end example
5952
5953 @item
5954 Increase input audio power by 6 decibels using fixed-point precision:
5955 @example
5956 volume=volume=6dB:precision=fixed
5957 @end example
5958
5959 @item
5960 Fade volume after time 10 with an annihilation period of 5 seconds:
5961 @example
5962 volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
5963 @end example
5964 @end itemize
5965
5966 @section volumedetect
5967
5968 Detect the volume of the input video.
5969
5970 The filter has no parameters. The input is not modified. Statistics about
5971 the volume will be printed in the log when the input stream end is reached.
5972
5973 In particular it will show the mean volume (root mean square), maximum
5974 volume (on a per-sample basis), and the beginning of a histogram of the
5975 registered volume values (from the maximum value to a cumulated 1/1000 of
5976 the samples).
5977
5978 All volumes are in decibels relative to the maximum PCM value.
5979
5980 @subsection Examples
5981
5982 Here is an excerpt of the output:
5983 @example
5984 [Parsed_volumedetect_0 @ 0xa23120] mean_volume: -27 dB
5985 [Parsed_volumedetect_0 @ 0xa23120] max_volume: -4 dB
5986 [Parsed_volumedetect_0 @ 0xa23120] histogram_4db: 6
5987 [Parsed_volumedetect_0 @ 0xa23120] histogram_5db: 62
5988 [Parsed_volumedetect_0 @ 0xa23120] histogram_6db: 286
5989 [Parsed_volumedetect_0 @ 0xa23120] histogram_7db: 1042
5990 [Parsed_volumedetect_0 @ 0xa23120] histogram_8db: 2551
5991 [Parsed_volumedetect_0 @ 0xa23120] histogram_9db: 4609
5992 [Parsed_volumedetect_0 @ 0xa23120] histogram_10db: 8409
5993 @end example
5994
5995 It means that:
5996 @itemize
5997 @item
5998 The mean square energy is approximately -27 dB, or 10^-2.7.
5999 @item
6000 The largest sample is at -4 dB, or more precisely between -4 dB and -5 dB.
6001 @item
6002 There are 6 samples at -4 dB, 62 at -5 dB, 286 at -6 dB, etc.
6003 @end itemize
6004
6005 In other words, raising the volume by +4 dB does not cause any clipping,
6006 raising it by +5 dB causes clipping for 6 samples, etc.
6007
6008 @c man end AUDIO FILTERS
6009
6010 @chapter Audio Sources
6011 @c man begin AUDIO SOURCES
6012
6013 Below is a description of the currently available audio sources.
6014
6015 @section abuffer
6016
6017 Buffer audio frames, and make them available to the filter chain.
6018
6019 This source is mainly intended for a programmatic use, in particular
6020 through the interface defined in @file{libavfilter/buffersrc.h}.
6021
6022 It accepts the following parameters:
6023 @table @option
6024
6025 @item time_base
6026 The timebase which will be used for timestamps of submitted frames. It must be
6027 either a floating-point number or in @var{numerator}/@var{denominator} form.
6028
6029 @item sample_rate
6030 The sample rate of the incoming audio buffers.
6031
6032 @item sample_fmt
6033 The sample format of the incoming audio buffers.
6034 Either a sample format name or its corresponding integer representation from
6035 the enum AVSampleFormat in @file{libavutil/samplefmt.h}
6036
6037 @item channel_layout
6038 The channel layout of the incoming audio buffers.
6039 Either a channel layout name from channel_layout_map in
6040 @file{libavutil/channel_layout.c} or its corresponding integer representation
6041 from the AV_CH_LAYOUT_* macros in @file{libavutil/channel_layout.h}
6042
6043 @item channels
6044 The number of channels of the incoming audio buffers.
6045 If both @var{channels} and @var{channel_layout} are specified, then they
6046 must be consistent.
6047
6048 @end table
6049
6050 @subsection Examples
6051
6052 @example
6053 abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
6054 @end example
6055
6056 will instruct the source to accept planar 16bit signed stereo at 44100Hz.
6057 Since the sample format with name "s16p" corresponds to the number
6058 6 and the "stereo" channel layout corresponds to the value 0x3, this is
6059 equivalent to:
6060 @example
6061 abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
6062 @end example
6063
6064 @section aevalsrc
6065
6066 Generate an audio signal specified by an expression.
6067
6068 This source accepts in input one or more expressions (one for each
6069 channel), which are evaluated and used to generate a corresponding
6070 audio signal.
6071
6072 This source accepts the following options:
6073
6074 @table @option
6075 @item exprs
6076 Set the '|'-separated expressions list for each separate channel. In case the
6077 @option{channel_layout} option is not specified, the selected channel layout
6078 depends on the number of provided expressions. Otherwise the last
6079 specified expression is applied to the remaining output channels.
6080
6081 @item channel_layout, c
6082 Set the channel layout. The number of channels in the specified layout
6083 must be equal to the number of specified expressions.
6084
6085 @item duration, d
6086 Set the minimum duration of the sourced audio. See
6087 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
6088 for the accepted syntax.
6089 Note that the resulting duration may be greater than the specified
6090 duration, as the generated audio is always cut at the end of a
6091 complete frame.
6092
6093 If not specified, or the expressed duration is negative, the audio is
6094 supposed to be generated forever.
6095
6096 @item nb_samples, n
6097 Set the number of samples per channel per each output frame,
6098 default to 1024.
6099
6100 @item sample_rate, s
6101 Specify the sample rate, default to 44100.
6102 @end table
6103
6104 Each expression in @var{exprs} can contain the following constants:
6105
6106 @table @option
6107 @item n
6108 number of the evaluated sample, starting from 0
6109
6110 @item t
6111 time of the evaluated sample expressed in seconds, starting from 0
6112
6113 @item s
6114 sample rate
6115
6116 @end table
6117
6118 @subsection Examples
6119
6120 @itemize
6121 @item
6122 Generate silence:
6123 @example
6124 aevalsrc=0
6125 @end example
6126
6127 @item
6128 Generate a sin signal with frequency of 440 Hz, set sample rate to
6129 8000 Hz:
6130 @example
6131 aevalsrc="sin(440*2*PI*t):s=8000"
6132 @end example
6133
6134 @item
6135 Generate a two channels signal, specify the channel layout (Front
6136 Center + Back Center) explicitly:
6137 @example
6138 aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
6139 @end example
6140
6141 @item
6142 Generate white noise:
6143 @example
6144 aevalsrc="-2+random(0)"
6145 @end example
6146
6147 @item
6148 Generate an amplitude modulated signal:
6149 @example
6150 aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
6151 @end example
6152
6153 @item
6154 Generate 2.5 Hz binaural beats on a 360 Hz carrier:
6155 @example
6156 aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
6157 @end example
6158
6159 @end itemize
6160
6161 @section afirsrc
6162
6163 Generate a FIR coefficients using frequency sampling method.
6164
6165 The resulting stream can be used with @ref{afir} filter for filtering the audio signal.
6166
6167 The filter accepts the following options:
6168
6169 @table @option
6170 @item taps, t
6171 Set number of filter coefficents in output audio stream.
6172 Default value is 1025.
6173
6174 @item frequency, f
6175 Set frequency points from where magnitude and phase are set.
6176 This must be in non decreasing order, and first element must be 0, while last element
6177 must be 1. Elements are separated by white spaces.
6178
6179 @item magnitude, m
6180 Set magnitude value for every frequency point set by @option{frequency}.
6181 Number of values must be same as number of frequency points.
6182 Values are separated by white spaces.
6183
6184 @item phase, p
6185 Set phase value for every frequency point set by @option{frequency}.
6186 Number of values must be same as number of frequency points.
6187 Values are separated by white spaces.
6188
6189 @item sample_rate, r
6190 Set sample rate, default is 44100.
6191
6192 @item nb_samples, n
6193 Set number of samples per each frame. Default is 1024.
6194
6195 @item win_func, w
6196 Set window function. Default is blackman.
6197 @end table
6198
6199 @section anullsrc
6200
6201 The null audio source, return unprocessed audio frames. It is mainly useful
6202 as a template and to be employed in analysis / debugging tools, or as
6203 the source for filters which ignore the input data (for example the sox
6204 synth filter).
6205
6206 This source accepts the following options:
6207
6208 @table @option
6209
6210 @item channel_layout, cl
6211
6212 Specifies the channel layout, and can be either an integer or a string
6213 representing a channel layout. The default value of @var{channel_layout}
6214 is "stereo".
6215
6216 Check the channel_layout_map definition in
6217 @file{libavutil/channel_layout.c} for the mapping between strings and
6218 channel layout values.
6219
6220 @item sample_rate, r
6221 Specifies the sample rate, and defaults to 44100.
6222
6223 @item nb_samples, n
6224 Set the number of samples per requested frames.
6225
6226 @item duration, d
6227 Set the duration of the sourced audio. See
6228 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
6229 for the accepted syntax.
6230
6231 If not specified, or the expressed duration is negative, the audio is
6232 supposed to be generated forever.
6233 @end table
6234
6235 @subsection Examples
6236
6237 @itemize
6238 @item
6239 Set the sample rate to 48000 Hz and the channel layout to AV_CH_LAYOUT_MONO.
6240 @example
6241 anullsrc=r=48000:cl=4
6242 @end example
6243
6244 @item
6245 Do the same operation with a more obvious syntax:
6246 @example
6247 anullsrc=r=48000:cl=mono
6248 @end example
6249 @end itemize
6250
6251 All the parameters need to be explicitly defined.
6252
6253 @section flite
6254
6255 Synthesize a voice utterance using the libflite library.
6256
6257 To enable compilation of this filter you need to configure FFmpeg with
6258 @code{--enable-libflite}.
6259
6260 Note that versions of the flite library prior to 2.0 are not thread-safe.
6261
6262 The filter accepts the following options:
6263
6264 @table @option
6265
6266 @item list_voices
6267 If set to 1, list the names of the available voices and exit
6268 immediately. Default value is 0.
6269
6270 @item nb_samples, n
6271 Set the maximum number of samples per frame. Default value is 512.
6272
6273 @item textfile
6274 Set the filename containing the text to speak.
6275
6276 @item text
6277 Set the text to speak.
6278
6279 @item voice, v
6280 Set the voice to use for the speech synthesis. Default value is
6281 @code{kal}. See also the @var{list_voices} option.
6282 @end table
6283
6284 @subsection Examples
6285
6286 @itemize
6287 @item
6288 Read from file @file{speech.txt}, and synthesize the text using the
6289 standard flite voice:
6290 @example
6291 flite=textfile=speech.txt
6292 @end example
6293
6294 @item
6295 Read the specified text selecting the @code{slt} voice:
6296 @example
6297 flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
6298 @end example
6299
6300 @item
6301 Input text to ffmpeg:
6302 @example
6303 ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
6304 @end example
6305
6306 @item
6307 Make @file{ffplay} speak the specified text, using @code{flite} and
6308 the @code{lavfi} device:
6309 @example
6310 ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
6311 @end example
6312 @end itemize
6313
6314 For more information about libflite, check:
6315 @url{http://www.festvox.org/flite/}
6316
6317 @section anoisesrc
6318
6319 Generate a noise audio signal.
6320
6321 The filter accepts the following options:
6322
6323 @table @option
6324 @item sample_rate, r
6325 Specify the sample rate. Default value is 48000 Hz.
6326
6327 @item amplitude, a
6328 Specify the amplitude (0.0 - 1.0) of the generated audio stream. Default value
6329 is 1.0.
6330
6331 @item duration, d
6332 Specify the duration of the generated audio stream. Not specifying this option
6333 results in noise with an infinite length.
6334
6335 @item color, colour, c
6336 Specify the color of noise. Available noise colors are white, pink, brown,
6337 blue, violet and velvet. Default color is white.
6338
6339 @item seed, s
6340 Specify a value used to seed the PRNG.
6341
6342 @item nb_samples, n
6343 Set the number of samples per each output frame, default is 1024.
6344 @end table
6345
6346 @subsection Examples
6347
6348 @itemize
6349
6350 @item
6351 Generate 60 seconds of pink noise, with a 44.1 kHz sampling rate and an amplitude of 0.5:
6352 @example
6353 anoisesrc=d=60:c=pink:r=44100:a=0.5
6354 @end example
6355 @end itemize
6356
6357 @section hilbert
6358
6359 Generate odd-tap Hilbert transform FIR coefficients.
6360
6361 The resulting stream can be used with @ref{afir} filter for phase-shifting
6362 the signal by 90 degrees.
6363
6364 This is used in many matrix coding schemes and for analytic signal generation.
6365 The process is often written as a multiplication by i (or j), the imaginary unit.
6366
6367 The filter accepts the following options:
6368
6369 @table @option
6370
6371 @item sample_rate, s
6372 Set sample rate, default is 44100.
6373
6374 @item taps, t
6375 Set length of FIR filter, default is 22051.
6376
6377 @item nb_samples, n
6378 Set number of samples per each frame.
6379
6380 @item win_func, w
6381 Set window function to be used when generating FIR coefficients.
6382 @end table
6383
6384 @section sinc
6385
6386 Generate a sinc kaiser-windowed low-pass, high-pass, band-pass, or band-reject FIR coefficients.
6387
6388 The resulting stream can be used with @ref{afir} filter for filtering the audio signal.
6389
6390 The filter accepts the following options:
6391
6392 @table @option
6393 @item sample_rate, r
6394 Set sample rate, default is 44100.
6395
6396 @item nb_samples, n
6397 Set number of samples per each frame. Default is 1024.
6398
6399 @item hp
6400 Set high-pass frequency. Default is 0.
6401
6402 @item lp
6403 Set low-pass frequency. Default is 0.
6404 If high-pass frequency is lower than low-pass frequency and low-pass frequency
6405 is higher than 0 then filter will create band-pass filter coefficients,
6406 otherwise band-reject filter coefficients.
6407
6408 @item phase
6409 Set filter phase response. Default is 50. Allowed range is from 0 to 100.
6410
6411 @item beta
6412 Set Kaiser window beta.
6413
6414 @item att
6415 Set stop-band attenuation. Default is 120dB, allowed range is from 40 to 180 dB.
6416
6417 @item round
6418 Enable rounding, by default is disabled.
6419
6420 @item hptaps
6421 Set number of taps for high-pass filter.
6422
6423 @item lptaps
6424 Set number of taps for low-pass filter.
6425 @end table
6426
6427 @section sine
6428
6429 Generate an audio signal made of a sine wave with amplitude 1/8.
6430
6431 The audio signal is bit-exact.
6432
6433 The filter accepts the following options:
6434
6435 @table @option
6436
6437 @item frequency, f
6438 Set the carrier frequency. Default is 440 Hz.
6439
6440 @item beep_factor, b
6441 Enable a periodic beep every second with frequency @var{beep_factor} times
6442 the carrier frequency. Default is 0, meaning the beep is disabled.
6443
6444 @item sample_rate, r
6445 Specify the sample rate, default is 44100.
6446
6447 @item duration, d
6448 Specify the duration of the generated audio stream.
6449
6450 @item samples_per_frame
6451 Set the number of samples per output frame.
6452
6453 The expression can contain the following constants:
6454
6455 @table @option
6456 @item n
6457 The (sequential) number of the output audio frame, starting from 0.
6458
6459 @item pts
6460 The PTS (Presentation TimeStamp) of the output audio frame,
6461 expressed in @var{TB} units.
6462
6463 @item t
6464 The PTS of the output audio frame, expressed in seconds.
6465
6466 @item TB
6467 The timebase of the output audio frames.
6468 @end table
6469
6470 Default is @code{1024}.
6471 @end table
6472
6473 @subsection Examples
6474
6475 @itemize
6476
6477 @item
6478 Generate a simple 440 Hz sine wave:
6479 @example
6480 sine
6481 @end example
6482
6483 @item
6484 Generate a 220 Hz sine wave with a 880 Hz beep each second, for 5 seconds:
6485 @example
6486 sine=220:4:d=5
6487 sine=f=220:b=4:d=5
6488 sine=frequency=220:beep_factor=4:duration=5
6489 @end example
6490
6491 @item
6492 Generate a 1 kHz sine wave following @code{1602,1601,1602,1601,1602} NTSC
6493 pattern:
6494 @example
6495 sine=1000:samples_per_frame='st(0,mod(n,5)); 1602-not(not(eq(ld(0),1)+eq(ld(0),3)))'
6496 @end example
6497 @end itemize
6498
6499 @c man end AUDIO SOURCES
6500
6501 @chapter Audio Sinks
6502 @c man begin AUDIO SINKS
6503
6504 Below is a description of the currently available audio sinks.
6505
6506 @section abuffersink
6507
6508 Buffer audio frames, and make them available to the end of filter chain.
6509
6510 This sink is mainly intended for programmatic use, in particular
6511 through the interface defined in @file{libavfilter/buffersink.h}
6512 or the options system.
6513
6514 It accepts a pointer to an AVABufferSinkContext structure, which
6515 defines the incoming buffers' formats, to be passed as the opaque
6516 parameter to @code{avfilter_init_filter} for initialization.
6517 @section anullsink
6518
6519 Null audio sink; do absolutely nothing with the input audio. It is
6520 mainly useful as a template and for use in analysis / debugging
6521 tools.
6522
6523 @c man end AUDIO SINKS
6524
6525 @chapter Video Filters
6526 @c man begin VIDEO FILTERS
6527
6528 When you configure your FFmpeg build, you can disable any of the
6529 existing filters using @code{--disable-filters}.
6530 The configure output will show the video filters included in your
6531 build.
6532
6533 Below is a description of the currently available video filters.
6534
6535 @section addroi
6536
6537 Mark a region of interest in a video frame.
6538
6539 The frame data is passed through unchanged, but metadata is attached
6540 to the frame indicating regions of interest which can affect the
6541 behaviour of later encoding.  Multiple regions can be marked by
6542 applying the filter multiple times.
6543
6544 @table @option
6545 @item x
6546 Region distance in pixels from the left edge of the frame.
6547 @item y
6548 Region distance in pixels from the top edge of the frame.
6549 @item w
6550 Region width in pixels.
6551 @item h
6552 Region height in pixels.
6553
6554 The parameters @var{x}, @var{y}, @var{w} and @var{h} are expressions,
6555 and may contain the following variables:
6556 @table @option
6557 @item iw
6558 Width of the input frame.
6559 @item ih
6560 Height of the input frame.
6561 @end table
6562
6563 @item qoffset
6564 Quantisation offset to apply within the region.
6565
6566 This must be a real value in the range -1 to +1.  A value of zero
6567 indicates no quality change.  A negative value asks for better quality
6568 (less quantisation), while a positive value asks for worse quality
6569 (greater quantisation).
6570
6571 The range is calibrated so that the extreme values indicate the
6572 largest possible offset - if the rest of the frame is encoded with the
6573 worst possible quality, an offset of -1 indicates that this region
6574 should be encoded with the best possible quality anyway.  Intermediate
6575 values are then interpolated in some codec-dependent way.
6576
6577 For example, in 10-bit H.264 the quantisation parameter varies between
6578 -12 and 51.  A typical qoffset value of -1/10 therefore indicates that
6579 this region should be encoded with a QP around one-tenth of the full
6580 range better than the rest of the frame.  So, if most of the frame
6581 were to be encoded with a QP of around 30, this region would get a QP
6582 of around 24 (an offset of approximately -1/10 * (51 - -12) = -6.3).
6583 An extreme value of -1 would indicate that this region should be
6584 encoded with the best possible quality regardless of the treatment of
6585 the rest of the frame - that is, should be encoded at a QP of -12.
6586 @item clear
6587 If set to true, remove any existing regions of interest marked on the
6588 frame before adding the new one.
6589 @end table
6590
6591 @subsection Examples
6592
6593 @itemize
6594 @item
6595 Mark the centre quarter of the frame as interesting.
6596 @example
6597 addroi=iw/4:ih/4:iw/2:ih/2:-1/10
6598 @end example
6599 @item
6600 Mark the 100-pixel-wide region on the left edge of the frame as very
6601 uninteresting (to be encoded at much lower quality than the rest of
6602 the frame).
6603 @example
6604 addroi=0:0:100:ih:+1/5
6605 @end example
6606 @end itemize
6607
6608 @section alphaextract
6609
6610 Extract the alpha component from the input as a grayscale video. This
6611 is especially useful with the @var{alphamerge} filter.
6612
6613 @section alphamerge
6614
6615 Add or replace the alpha component of the primary input with the
6616 grayscale value of a second input. This is intended for use with
6617 @var{alphaextract} to allow the transmission or storage of frame
6618 sequences that have alpha in a format that doesn't support an alpha
6619 channel.
6620
6621 For example, to reconstruct full frames from a normal YUV-encoded video
6622 and a separate video created with @var{alphaextract}, you might use:
6623 @example
6624 movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
6625 @end example
6626
6627 @section amplify
6628
6629 Amplify differences between current pixel and pixels of adjacent frames in
6630 same pixel location.
6631
6632 This filter accepts the following options:
6633
6634 @table @option
6635 @item radius
6636 Set frame radius. Default is 2. Allowed range is from 1 to 63.
6637 For example radius of 3 will instruct filter to calculate average of 7 frames.
6638
6639 @item factor
6640 Set factor to amplify difference. Default is 2. Allowed range is from 0 to 65535.
6641
6642 @item threshold
6643 Set threshold for difference amplification. Any difference greater or equal to
6644 this value will not alter source pixel. Default is 10.
6645 Allowed range is from 0 to 65535.
6646
6647 @item tolerance
6648 Set tolerance for difference amplification. Any difference lower to
6649 this value will not alter source pixel. Default is 0.
6650 Allowed range is from 0 to 65535.
6651
6652 @item low
6653 Set lower limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
6654 This option controls maximum possible value that will decrease source pixel value.
6655
6656 @item high
6657 Set high limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
6658 This option controls maximum possible value that will increase source pixel value.
6659
6660 @item planes
6661 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
6662 @end table
6663
6664 @subsection Commands
6665
6666 This filter supports the following @ref{commands} that corresponds to option of same name:
6667 @table @option
6668 @item factor
6669 @item threshold
6670 @item tolerance
6671 @item low
6672 @item high
6673 @item planes
6674 @end table
6675
6676 @section ass
6677
6678 Same as the @ref{subtitles} filter, except that it doesn't require libavcodec
6679 and libavformat to work. On the other hand, it is limited to ASS (Advanced
6680 Substation Alpha) subtitles files.
6681
6682 This filter accepts the following option in addition to the common options from
6683 the @ref{subtitles} filter:
6684
6685 @table @option
6686 @item shaping
6687 Set the shaping engine
6688
6689 Available values are:
6690 @table @samp
6691 @item auto
6692 The default libass shaping engine, which is the best available.
6693 @item simple
6694 Fast, font-agnostic shaper that can do only substitutions
6695 @item complex
6696 Slower shaper using OpenType for substitutions and positioning
6697 @end table
6698
6699 The default is @code{auto}.
6700 @end table
6701
6702 @section atadenoise
6703 Apply an Adaptive Temporal Averaging Denoiser to the video input.
6704
6705 The filter accepts the following options:
6706
6707 @table @option
6708 @item 0a
6709 Set threshold A for 1st plane. Default is 0.02.
6710 Valid range is 0 to 0.3.
6711
6712 @item 0b
6713 Set threshold B for 1st plane. Default is 0.04.
6714 Valid range is 0 to 5.
6715
6716 @item 1a
6717 Set threshold A for 2nd plane. Default is 0.02.
6718 Valid range is 0 to 0.3.
6719
6720 @item 1b
6721 Set threshold B for 2nd plane. Default is 0.04.
6722 Valid range is 0 to 5.
6723
6724 @item 2a
6725 Set threshold A for 3rd plane. Default is 0.02.
6726 Valid range is 0 to 0.3.
6727
6728 @item 2b
6729 Set threshold B for 3rd plane. Default is 0.04.
6730 Valid range is 0 to 5.
6731
6732 Threshold A is designed to react on abrupt changes in the input signal and
6733 threshold B is designed to react on continuous changes in the input signal.
6734
6735 @item s
6736 Set number of frames filter will use for averaging. Default is 9. Must be odd
6737 number in range [5, 129].
6738
6739 @item p
6740 Set what planes of frame filter will use for averaging. Default is all.
6741
6742 @item a
6743 Set what variant of algorithm filter will use for averaging. Default is @code{p} parallel.
6744 Alternatively can be set to @code{s} serial.
6745
6746 Parallel can be faster then serial, while other way around is never true.
6747 Parallel will abort early on first change being greater then thresholds, while serial
6748 will continue processing other side of frames if they are equal or bellow thresholds.
6749 @end table
6750
6751 @subsection Commands
6752 This filter supports same @ref{commands} as options except option @code{s}.
6753 The command accepts the same syntax of the corresponding option.
6754
6755 @section avgblur
6756
6757 Apply average blur filter.
6758
6759 The filter accepts the following options:
6760
6761 @table @option
6762 @item sizeX
6763 Set horizontal radius size.
6764
6765 @item planes
6766 Set which planes to filter. By default all planes are filtered.
6767
6768 @item sizeY
6769 Set vertical radius size, if zero it will be same as @code{sizeX}.
6770 Default is @code{0}.
6771 @end table
6772
6773 @subsection Commands
6774 This filter supports same commands as options.
6775 The command accepts the same syntax of the corresponding option.
6776
6777 If the specified expression is not valid, it is kept at its current
6778 value.
6779
6780 @section bbox
6781
6782 Compute the bounding box for the non-black pixels in the input frame
6783 luminance plane.
6784
6785 This filter computes the bounding box containing all the pixels with a
6786 luminance value greater than the minimum allowed value.
6787 The parameters describing the bounding box are printed on the filter
6788 log.
6789
6790 The filter accepts the following option:
6791
6792 @table @option
6793 @item min_val
6794 Set the minimal luminance value. Default is @code{16}.
6795 @end table
6796
6797 @section bilateral
6798 Apply bilateral filter, spatial smoothing while preserving edges.
6799
6800 The filter accepts the following options:
6801 @table @option
6802 @item sigmaS
6803 Set sigma of gaussian function to calculate spatial weight.
6804 Allowed range is 0 to 512. Default is 0.1.
6805
6806 @item sigmaR
6807 Set sigma of gaussian function to calculate range weight.
6808 Allowed range is 0 to 1. Default is 0.1.
6809
6810 @item planes
6811 Set planes to filter. Default is first only.
6812 @end table
6813
6814 @section bitplanenoise
6815
6816 Show and measure bit plane noise.
6817
6818 The filter accepts the following options:
6819
6820 @table @option
6821 @item bitplane
6822 Set which plane to analyze. Default is @code{1}.
6823
6824 @item filter
6825 Filter out noisy pixels from @code{bitplane} set above.
6826 Default is disabled.
6827 @end table
6828
6829 @section blackdetect
6830
6831 Detect video intervals that are (almost) completely black. Can be
6832 useful to detect chapter transitions, commercials, or invalid
6833 recordings.
6834
6835 The filter outputs its detection analysis to both the log as well as
6836 frame metadata. If a black segment of at least the specified minimum
6837 duration is found, a line with the start and end timestamps as well
6838 as duration is printed to the log with level @code{info}. In addition,
6839 a log line with level @code{debug} is printed per frame showing the
6840 black amount detected for that frame.
6841
6842 The filter also attaches metadata to the first frame of a black
6843 segment with key @code{lavfi.black_start} and to the first frame
6844 after the black segment ends with key @code{lavfi.black_end}. The
6845 value is the frame's timestamp. This metadata is added regardless
6846 of the minimum duration specified.
6847
6848 The filter accepts the following options:
6849
6850 @table @option
6851 @item black_min_duration, d
6852 Set the minimum detected black duration expressed in seconds. It must
6853 be a non-negative floating point number.
6854
6855 Default value is 2.0.
6856
6857 @item picture_black_ratio_th, pic_th
6858 Set the threshold for considering a picture "black".
6859 Express the minimum value for the ratio:
6860 @example
6861 @var{nb_black_pixels} / @var{nb_pixels}
6862 @end example
6863
6864 for which a picture is considered black.
6865 Default value is 0.98.
6866
6867 @item pixel_black_th, pix_th
6868 Set the threshold for considering a pixel "black".
6869
6870 The threshold expresses the maximum pixel luminance value for which a
6871 pixel is considered "black". The provided value is scaled according to
6872 the following equation:
6873 @example
6874 @var{absolute_threshold} = @var{luminance_minimum_value} + @var{pixel_black_th} * @var{luminance_range_size}
6875 @end example
6876
6877 @var{luminance_range_size} and @var{luminance_minimum_value} depend on
6878 the input video format, the range is [0-255] for YUV full-range
6879 formats and [16-235] for YUV non full-range formats.
6880
6881 Default value is 0.10.
6882 @end table
6883
6884 The following example sets the maximum pixel threshold to the minimum
6885 value, and detects only black intervals of 2 or more seconds:
6886 @example
6887 blackdetect=d=2:pix_th=0.00
6888 @end example
6889
6890 @section blackframe
6891
6892 Detect frames that are (almost) completely black. Can be useful to
6893 detect chapter transitions or commercials. Output lines consist of
6894 the frame number of the detected frame, the percentage of blackness,
6895 the position in the file if known or -1 and the timestamp in seconds.
6896
6897 In order to display the output lines, you need to set the loglevel at
6898 least to the AV_LOG_INFO value.
6899
6900 This filter exports frame metadata @code{lavfi.blackframe.pblack}.
6901 The value represents the percentage of pixels in the picture that
6902 are below the threshold value.
6903
6904 It accepts the following parameters:
6905
6906 @table @option
6907
6908 @item amount
6909 The percentage of the pixels that have to be below the threshold; it defaults to
6910 @code{98}.
6911
6912 @item threshold, thresh
6913 The threshold below which a pixel value is considered black; it defaults to
6914 @code{32}.
6915
6916 @end table
6917
6918 @anchor{blend}
6919 @section blend
6920
6921 Blend two video frames into each other.
6922
6923 The @code{blend} filter takes two input streams and outputs one
6924 stream, the first input is the "top" layer and second input is
6925 "bottom" layer.  By default, the output terminates when the longest input terminates.
6926
6927 The @code{tblend} (time blend) filter takes two consecutive frames
6928 from one single stream, and outputs the result obtained by blending
6929 the new frame on top of the old frame.
6930
6931 A description of the accepted options follows.
6932
6933 @table @option
6934 @item c0_mode
6935 @item c1_mode
6936 @item c2_mode
6937 @item c3_mode
6938 @item all_mode
6939 Set blend mode for specific pixel component or all pixel components in case
6940 of @var{all_mode}. Default value is @code{normal}.
6941
6942 Available values for component modes are:
6943 @table @samp
6944 @item addition
6945 @item grainmerge
6946 @item and
6947 @item average
6948 @item burn
6949 @item darken
6950 @item difference
6951 @item grainextract
6952 @item divide
6953 @item dodge
6954 @item freeze
6955 @item exclusion
6956 @item extremity
6957 @item glow
6958 @item hardlight
6959 @item hardmix
6960 @item heat
6961 @item lighten
6962 @item linearlight
6963 @item multiply
6964 @item multiply128
6965 @item negation
6966 @item normal
6967 @item or
6968 @item overlay
6969 @item phoenix
6970 @item pinlight
6971 @item reflect
6972 @item screen
6973 @item softlight
6974 @item subtract
6975 @item vividlight
6976 @item xor
6977 @end table
6978
6979 @item c0_opacity
6980 @item c1_opacity
6981 @item c2_opacity
6982 @item c3_opacity
6983 @item all_opacity
6984 Set blend opacity for specific pixel component or all pixel components in case
6985 of @var{all_opacity}. Only used in combination with pixel component blend modes.
6986
6987 @item c0_expr
6988 @item c1_expr
6989 @item c2_expr
6990 @item c3_expr
6991 @item all_expr
6992 Set blend expression for specific pixel component or all pixel components in case
6993 of @var{all_expr}. Note that related mode options will be ignored if those are set.
6994
6995 The expressions can use the following variables:
6996
6997 @table @option
6998 @item N
6999 The sequential number of the filtered frame, starting from @code{0}.
7000
7001 @item X
7002 @item Y
7003 the coordinates of the current sample
7004
7005 @item W
7006 @item H
7007 the width and height of currently filtered plane
7008
7009 @item SW
7010 @item SH
7011 Width and height scale for the plane being filtered. It is the
7012 ratio between the dimensions of the current plane to the luma plane,
7013 e.g. for a @code{yuv420p} frame, the values are @code{1,1} for
7014 the luma plane and @code{0.5,0.5} for the chroma planes.
7015
7016 @item T
7017 Time of the current frame, expressed in seconds.
7018
7019 @item TOP, A
7020 Value of pixel component at current location for first video frame (top layer).
7021
7022 @item BOTTOM, B
7023 Value of pixel component at current location for second video frame (bottom layer).
7024 @end table
7025 @end table
7026
7027 The @code{blend} filter also supports the @ref{framesync} options.
7028
7029 @subsection Examples
7030
7031 @itemize
7032 @item
7033 Apply transition from bottom layer to top layer in first 10 seconds:
7034 @example
7035 blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
7036 @end example
7037
7038 @item
7039 Apply linear horizontal transition from top layer to bottom layer:
7040 @example
7041 blend=all_expr='A*(X/W)+B*(1-X/W)'
7042 @end example
7043
7044 @item
7045 Apply 1x1 checkerboard effect:
7046 @example
7047 blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
7048 @end example
7049
7050 @item
7051 Apply uncover left effect:
7052 @example
7053 blend=all_expr='if(gte(N*SW+X,W),A,B)'
7054 @end example
7055
7056 @item
7057 Apply uncover down effect:
7058 @example
7059 blend=all_expr='if(gte(Y-N*SH,0),A,B)'
7060 @end example
7061
7062 @item
7063 Apply uncover up-left effect:
7064 @example
7065 blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
7066 @end example
7067
7068 @item
7069 Split diagonally video and shows top and bottom layer on each side:
7070 @example
7071 blend=all_expr='if(gt(X,Y*(W/H)),A,B)'
7072 @end example
7073
7074 @item
7075 Display differences between the current and the previous frame:
7076 @example
7077 tblend=all_mode=grainextract
7078 @end example
7079 @end itemize
7080
7081 @section bm3d
7082
7083 Denoise frames using Block-Matching 3D algorithm.
7084
7085 The filter accepts the following options.
7086
7087 @table @option
7088 @item sigma
7089 Set denoising strength. Default value is 1.
7090 Allowed range is from 0 to 999.9.
7091 The denoising algorithm is very sensitive to sigma, so adjust it
7092 according to the source.
7093
7094 @item block
7095 Set local patch size. This sets dimensions in 2D.
7096
7097 @item bstep
7098 Set sliding step for processing blocks. Default value is 4.
7099 Allowed range is from 1 to 64.
7100 Smaller values allows processing more reference blocks and is slower.
7101
7102 @item group
7103 Set maximal number of similar blocks for 3rd dimension. Default value is 1.
7104 When set to 1, no block matching is done. Larger values allows more blocks
7105 in single group.
7106 Allowed range is from 1 to 256.
7107
7108 @item range
7109 Set radius for search block matching. Default is 9.
7110 Allowed range is from 1 to INT32_MAX.
7111
7112 @item mstep
7113 Set step between two search locations for block matching. Default is 1.
7114 Allowed range is from 1 to 64. Smaller is slower.
7115
7116 @item thmse
7117 Set threshold of mean square error for block matching. Valid range is 0 to
7118 INT32_MAX.
7119
7120 @item hdthr
7121 Set thresholding parameter for hard thresholding in 3D transformed domain.
7122 Larger values results in stronger hard-thresholding filtering in frequency
7123 domain.
7124
7125 @item estim
7126 Set filtering estimation mode. Can be @code{basic} or @code{final}.
7127 Default is @code{basic}.
7128
7129 @item ref
7130 If enabled, filter will use 2nd stream for block matching.
7131 Default is disabled for @code{basic} value of @var{estim} option,
7132 and always enabled if value of @var{estim} is @code{final}.
7133
7134 @item planes
7135 Set planes to filter. Default is all available except alpha.
7136 @end table
7137
7138 @subsection Examples
7139
7140 @itemize
7141 @item
7142 Basic filtering with bm3d:
7143 @example
7144 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic
7145 @end example
7146
7147 @item
7148 Same as above, but filtering only luma:
7149 @example
7150 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic:planes=1
7151 @end example
7152
7153 @item
7154 Same as above, but with both estimation modes:
7155 @example
7156 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
7157 @end example
7158
7159 @item
7160 Same as above, but prefilter with @ref{nlmeans} filter instead:
7161 @example
7162 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
7163 @end example
7164 @end itemize
7165
7166 @section boxblur
7167
7168 Apply a boxblur algorithm to the input video.
7169
7170 It accepts the following parameters:
7171
7172 @table @option
7173
7174 @item luma_radius, lr
7175 @item luma_power, lp
7176 @item chroma_radius, cr
7177 @item chroma_power, cp
7178 @item alpha_radius, ar
7179 @item alpha_power, ap
7180
7181 @end table
7182
7183 A description of the accepted options follows.
7184
7185 @table @option
7186 @item luma_radius, lr
7187 @item chroma_radius, cr
7188 @item alpha_radius, ar
7189 Set an expression for the box radius in pixels used for blurring the
7190 corresponding input plane.
7191
7192 The radius value must be a non-negative number, and must not be
7193 greater than the value of the expression @code{min(w,h)/2} for the
7194 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
7195 planes.
7196
7197 Default value for @option{luma_radius} is "2". If not specified,
7198 @option{chroma_radius} and @option{alpha_radius} default to the
7199 corresponding value set for @option{luma_radius}.
7200
7201 The expressions can contain the following constants:
7202 @table @option
7203 @item w
7204 @item h
7205 The input width and height in pixels.
7206
7207 @item cw
7208 @item ch
7209 The input chroma image width and height in pixels.
7210
7211 @item hsub
7212 @item vsub
7213 The horizontal and vertical chroma subsample values. For example, for the
7214 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
7215 @end table
7216
7217 @item luma_power, lp
7218 @item chroma_power, cp
7219 @item alpha_power, ap
7220 Specify how many times the boxblur filter is applied to the
7221 corresponding plane.
7222
7223 Default value for @option{luma_power} is 2. If not specified,
7224 @option{chroma_power} and @option{alpha_power} default to the
7225 corresponding value set for @option{luma_power}.
7226
7227 A value of 0 will disable the effect.
7228 @end table
7229
7230 @subsection Examples
7231
7232 @itemize
7233 @item
7234 Apply a boxblur filter with the luma, chroma, and alpha radii
7235 set to 2:
7236 @example
7237 boxblur=luma_radius=2:luma_power=1
7238 boxblur=2:1
7239 @end example
7240
7241 @item
7242 Set the luma radius to 2, and alpha and chroma radius to 0:
7243 @example
7244 boxblur=2:1:cr=0:ar=0
7245 @end example
7246
7247 @item
7248 Set the luma and chroma radii to a fraction of the video dimension:
7249 @example
7250 boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
7251 @end example
7252 @end itemize
7253
7254 @section bwdif
7255
7256 Deinterlace the input video ("bwdif" stands for "Bob Weaver
7257 Deinterlacing Filter").
7258
7259 Motion adaptive deinterlacing based on yadif with the use of w3fdif and cubic
7260 interpolation algorithms.
7261 It accepts the following parameters:
7262
7263 @table @option
7264 @item mode
7265 The interlacing mode to adopt. It accepts one of the following values:
7266
7267 @table @option
7268 @item 0, send_frame
7269 Output one frame for each frame.
7270 @item 1, send_field
7271 Output one frame for each field.
7272 @end table
7273
7274 The default value is @code{send_field}.
7275
7276 @item parity
7277 The picture field parity assumed for the input interlaced video. It accepts one
7278 of the following values:
7279
7280 @table @option
7281 @item 0, tff
7282 Assume the top field is first.
7283 @item 1, bff
7284 Assume the bottom field is first.
7285 @item -1, auto
7286 Enable automatic detection of field parity.
7287 @end table
7288
7289 The default value is @code{auto}.
7290 If the interlacing is unknown or the decoder does not export this information,
7291 top field first will be assumed.
7292
7293 @item deint
7294 Specify which frames to deinterlace. Accepts one of the following
7295 values:
7296
7297 @table @option
7298 @item 0, all
7299 Deinterlace all frames.
7300 @item 1, interlaced
7301 Only deinterlace frames marked as interlaced.
7302 @end table
7303
7304 The default value is @code{all}.
7305 @end table
7306
7307 @section cas
7308
7309 Apply Contrast Adaptive Sharpen filter to video stream.
7310
7311 The filter accepts the following options:
7312
7313 @table @option
7314 @item strength
7315 Set the sharpening strength. Default value is 0.
7316
7317 @item planes
7318 Set planes to filter. Default value is to filter all
7319 planes except alpha plane.
7320 @end table
7321
7322 @section chromahold
7323 Remove all color information for all colors except for certain one.
7324
7325 The filter accepts the following options:
7326
7327 @table @option
7328 @item color
7329 The color which will not be replaced with neutral chroma.
7330
7331 @item similarity
7332 Similarity percentage with the above color.
7333 0.01 matches only the exact key color, while 1.0 matches everything.
7334
7335 @item blend
7336 Blend percentage.
7337 0.0 makes pixels either fully gray, or not gray at all.
7338 Higher values result in more preserved color.
7339
7340 @item yuv
7341 Signals that the color passed is already in YUV instead of RGB.
7342
7343 Literal colors like "green" or "red" don't make sense with this enabled anymore.
7344 This can be used to pass exact YUV values as hexadecimal numbers.
7345 @end table
7346
7347 @subsection Commands
7348 This filter supports same @ref{commands} as options.
7349 The command accepts the same syntax of the corresponding option.
7350
7351 If the specified expression is not valid, it is kept at its current
7352 value.
7353
7354 @section chromakey
7355 YUV colorspace color/chroma keying.
7356
7357 The filter accepts the following options:
7358
7359 @table @option
7360 @item color
7361 The color which will be replaced with transparency.
7362
7363 @item similarity
7364 Similarity percentage with the key color.
7365
7366 0.01 matches only the exact key color, while 1.0 matches everything.
7367
7368 @item blend
7369 Blend percentage.
7370
7371 0.0 makes pixels either fully transparent, or not transparent at all.
7372
7373 Higher values result in semi-transparent pixels, with a higher transparency
7374 the more similar the pixels color is to the key color.
7375
7376 @item yuv
7377 Signals that the color passed is already in YUV instead of RGB.
7378
7379 Literal colors like "green" or "red" don't make sense with this enabled anymore.
7380 This can be used to pass exact YUV values as hexadecimal numbers.
7381 @end table
7382
7383 @subsection Commands
7384 This filter supports same @ref{commands} as options.
7385 The command accepts the same syntax of the corresponding option.
7386
7387 If the specified expression is not valid, it is kept at its current
7388 value.
7389
7390 @subsection Examples
7391
7392 @itemize
7393 @item
7394 Make every green pixel in the input image transparent:
7395 @example
7396 ffmpeg -i input.png -vf chromakey=green out.png
7397 @end example
7398
7399 @item
7400 Overlay a greenscreen-video on top of a static black background.
7401 @example
7402 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
7403 @end example
7404 @end itemize
7405
7406 @section chromanr
7407 Reduce chrominance noise.
7408
7409 The filter accepts the following options:
7410
7411 @table @option
7412 @item thres
7413 Set threshold for averaging chrominance values.
7414 Sum of absolute difference of U and V pixel components or current
7415 pixel and neighbour pixels lower than this threshold will be used in
7416 averaging. Luma component is left unchanged and is copied to output.
7417 Default value is 30. Allowed range is from 1 to 200.
7418
7419 @item sizew
7420 Set horizontal radius of rectangle used for averaging.
7421 Allowed range is from 1 to 100. Default value is 5.
7422
7423 @item sizeh
7424 Set vertical radius of rectangle used for averaging.
7425 Allowed range is from 1 to 100. Default value is 5.
7426
7427 @item stepw
7428 Set horizontal step when averaging. Default value is 1.
7429 Allowed range is from 1 to 50.
7430 Mostly useful to speed-up filtering.
7431
7432 @item steph
7433 Set vertical step when averaging. Default value is 1.
7434 Allowed range is from 1 to 50.
7435 Mostly useful to speed-up filtering.
7436 @end table
7437
7438 @subsection Commands
7439 This filter supports same @ref{commands} as options.
7440 The command accepts the same syntax of the corresponding option.
7441
7442 @section chromashift
7443 Shift chroma pixels horizontally and/or vertically.
7444
7445 The filter accepts the following options:
7446 @table @option
7447 @item cbh
7448 Set amount to shift chroma-blue horizontally.
7449 @item cbv
7450 Set amount to shift chroma-blue vertically.
7451 @item crh
7452 Set amount to shift chroma-red horizontally.
7453 @item crv
7454 Set amount to shift chroma-red vertically.
7455 @item edge
7456 Set edge mode, can be @var{smear}, default, or @var{warp}.
7457 @end table
7458
7459 @subsection Commands
7460
7461 This filter supports the all above options as @ref{commands}.
7462
7463 @section ciescope
7464
7465 Display CIE color diagram with pixels overlaid onto it.
7466
7467 The filter accepts the following options:
7468
7469 @table @option
7470 @item system
7471 Set color system.
7472
7473 @table @samp
7474 @item ntsc, 470m
7475 @item ebu, 470bg
7476 @item smpte
7477 @item 240m
7478 @item apple
7479 @item widergb
7480 @item cie1931
7481 @item rec709, hdtv
7482 @item uhdtv, rec2020
7483 @item dcip3
7484 @end table
7485
7486 @item cie
7487 Set CIE system.
7488
7489 @table @samp
7490 @item xyy
7491 @item ucs
7492 @item luv
7493 @end table
7494
7495 @item gamuts
7496 Set what gamuts to draw.
7497
7498 See @code{system} option for available values.
7499
7500 @item size, s
7501 Set ciescope size, by default set to 512.
7502
7503 @item intensity, i
7504 Set intensity used to map input pixel values to CIE diagram.
7505
7506 @item contrast
7507 Set contrast used to draw tongue colors that are out of active color system gamut.
7508
7509 @item corrgamma
7510 Correct gamma displayed on scope, by default enabled.
7511
7512 @item showwhite
7513 Show white point on CIE diagram, by default disabled.
7514
7515 @item gamma
7516 Set input gamma. Used only with XYZ input color space.
7517 @end table
7518
7519 @section codecview
7520
7521 Visualize information exported by some codecs.
7522
7523 Some codecs can export information through frames using side-data or other
7524 means. For example, some MPEG based codecs export motion vectors through the
7525 @var{export_mvs} flag in the codec @option{flags2} option.
7526
7527 The filter accepts the following option:
7528
7529 @table @option
7530 @item mv
7531 Set motion vectors to visualize.
7532
7533 Available flags for @var{mv} are:
7534
7535 @table @samp
7536 @item pf
7537 forward predicted MVs of P-frames
7538 @item bf
7539 forward predicted MVs of B-frames
7540 @item bb
7541 backward predicted MVs of B-frames
7542 @end table
7543
7544 @item qp
7545 Display quantization parameters using the chroma planes.
7546
7547 @item mv_type, mvt
7548 Set motion vectors type to visualize. Includes MVs from all frames unless specified by @var{frame_type} option.
7549
7550 Available flags for @var{mv_type} are:
7551
7552 @table @samp
7553 @item fp
7554 forward predicted MVs
7555 @item bp
7556 backward predicted MVs
7557 @end table
7558
7559 @item frame_type, ft
7560 Set frame type to visualize motion vectors of.
7561
7562 Available flags for @var{frame_type} are:
7563
7564 @table @samp
7565 @item if
7566 intra-coded frames (I-frames)
7567 @item pf
7568 predicted frames (P-frames)
7569 @item bf
7570 bi-directionally predicted frames (B-frames)
7571 @end table
7572 @end table
7573
7574 @subsection Examples
7575
7576 @itemize
7577 @item
7578 Visualize forward predicted MVs of all frames using @command{ffplay}:
7579 @example
7580 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp
7581 @end example
7582
7583 @item
7584 Visualize multi-directionals MVs of P and B-Frames using @command{ffplay}:
7585 @example
7586 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
7587 @end example
7588 @end itemize
7589
7590 @section colorbalance
7591 Modify intensity of primary colors (red, green and blue) of input frames.
7592
7593 The filter allows an input frame to be adjusted in the shadows, midtones or highlights
7594 regions for the red-cyan, green-magenta or blue-yellow balance.
7595
7596 A positive adjustment value shifts the balance towards the primary color, a negative
7597 value towards the complementary color.
7598
7599 The filter accepts the following options:
7600
7601 @table @option
7602 @item rs
7603 @item gs
7604 @item bs
7605 Adjust red, green and blue shadows (darkest pixels).
7606
7607 @item rm
7608 @item gm
7609 @item bm
7610 Adjust red, green and blue midtones (medium pixels).
7611
7612 @item rh
7613 @item gh
7614 @item bh
7615 Adjust red, green and blue highlights (brightest pixels).
7616
7617 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
7618
7619 @item pl
7620 Preserve lightness when changing color balance. Default is disabled.
7621 @end table
7622
7623 @subsection Examples
7624
7625 @itemize
7626 @item
7627 Add red color cast to shadows:
7628 @example
7629 colorbalance=rs=.3
7630 @end example
7631 @end itemize
7632
7633 @subsection Commands
7634
7635 This filter supports the all above options as @ref{commands}.
7636
7637 @section colorchannelmixer
7638
7639 Adjust video input frames by re-mixing color channels.
7640
7641 This filter modifies a color channel by adding the values associated to
7642 the other channels of the same pixels. For example if the value to
7643 modify is red, the output value will be:
7644 @example
7645 @var{red}=@var{red}*@var{rr} + @var{blue}*@var{rb} + @var{green}*@var{rg} + @var{alpha}*@var{ra}
7646 @end example
7647
7648 The filter accepts the following options:
7649
7650 @table @option
7651 @item rr
7652 @item rg
7653 @item rb
7654 @item ra
7655 Adjust contribution of input red, green, blue and alpha channels for output red channel.
7656 Default is @code{1} for @var{rr}, and @code{0} for @var{rg}, @var{rb} and @var{ra}.
7657
7658 @item gr
7659 @item gg
7660 @item gb
7661 @item ga
7662 Adjust contribution of input red, green, blue and alpha channels for output green channel.
7663 Default is @code{1} for @var{gg}, and @code{0} for @var{gr}, @var{gb} and @var{ga}.
7664
7665 @item br
7666 @item bg
7667 @item bb
7668 @item ba
7669 Adjust contribution of input red, green, blue and alpha channels for output blue channel.
7670 Default is @code{1} for @var{bb}, and @code{0} for @var{br}, @var{bg} and @var{ba}.
7671
7672 @item ar
7673 @item ag
7674 @item ab
7675 @item aa
7676 Adjust contribution of input red, green, blue and alpha channels for output alpha channel.
7677 Default is @code{1} for @var{aa}, and @code{0} for @var{ar}, @var{ag} and @var{ab}.
7678
7679 Allowed ranges for options are @code{[-2.0, 2.0]}.
7680 @end table
7681
7682 @subsection Examples
7683
7684 @itemize
7685 @item
7686 Convert source to grayscale:
7687 @example
7688 colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
7689 @end example
7690 @item
7691 Simulate sepia tones:
7692 @example
7693 colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
7694 @end example
7695 @end itemize
7696
7697 @subsection Commands
7698
7699 This filter supports the all above options as @ref{commands}.
7700
7701 @section colorkey
7702 RGB colorspace color keying.
7703
7704 The filter accepts the following options:
7705
7706 @table @option
7707 @item color
7708 The color which will be replaced with transparency.
7709
7710 @item similarity
7711 Similarity percentage with the key color.
7712
7713 0.01 matches only the exact key color, while 1.0 matches everything.
7714
7715 @item blend
7716 Blend percentage.
7717
7718 0.0 makes pixels either fully transparent, or not transparent at all.
7719
7720 Higher values result in semi-transparent pixels, with a higher transparency
7721 the more similar the pixels color is to the key color.
7722 @end table
7723
7724 @subsection Examples
7725
7726 @itemize
7727 @item
7728 Make every green pixel in the input image transparent:
7729 @example
7730 ffmpeg -i input.png -vf colorkey=green out.png
7731 @end example
7732
7733 @item
7734 Overlay a greenscreen-video on top of a static background image.
7735 @example
7736 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
7737 @end example
7738 @end itemize
7739
7740 @subsection Commands
7741 This filter supports same @ref{commands} as options.
7742 The command accepts the same syntax of the corresponding option.
7743
7744 If the specified expression is not valid, it is kept at its current
7745 value.
7746
7747 @section colorhold
7748 Remove all color information for all RGB colors except for certain one.
7749
7750 The filter accepts the following options:
7751
7752 @table @option
7753 @item color
7754 The color which will not be replaced with neutral gray.
7755
7756 @item similarity
7757 Similarity percentage with the above color.
7758 0.01 matches only the exact key color, while 1.0 matches everything.
7759
7760 @item blend
7761 Blend percentage. 0.0 makes pixels fully gray.
7762 Higher values result in more preserved color.
7763 @end table
7764
7765 @subsection Commands
7766 This filter supports same @ref{commands} as options.
7767 The command accepts the same syntax of the corresponding option.
7768
7769 If the specified expression is not valid, it is kept at its current
7770 value.
7771
7772 @section colorlevels
7773
7774 Adjust video input frames using levels.
7775
7776 The filter accepts the following options:
7777
7778 @table @option
7779 @item rimin
7780 @item gimin
7781 @item bimin
7782 @item aimin
7783 Adjust red, green, blue and alpha input black point.
7784 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
7785
7786 @item rimax
7787 @item gimax
7788 @item bimax
7789 @item aimax
7790 Adjust red, green, blue and alpha input white point.
7791 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{1}.
7792
7793 Input levels are used to lighten highlights (bright tones), darken shadows
7794 (dark tones), change the balance of bright and dark tones.
7795
7796 @item romin
7797 @item gomin
7798 @item bomin
7799 @item aomin
7800 Adjust red, green, blue and alpha output black point.
7801 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{0}.
7802
7803 @item romax
7804 @item gomax
7805 @item bomax
7806 @item aomax
7807 Adjust red, green, blue and alpha output white point.
7808 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{1}.
7809
7810 Output levels allows manual selection of a constrained output level range.
7811 @end table
7812
7813 @subsection Examples
7814
7815 @itemize
7816 @item
7817 Make video output darker:
7818 @example
7819 colorlevels=rimin=0.058:gimin=0.058:bimin=0.058
7820 @end example
7821
7822 @item
7823 Increase contrast:
7824 @example
7825 colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96
7826 @end example
7827
7828 @item
7829 Make video output lighter:
7830 @example
7831 colorlevels=rimax=0.902:gimax=0.902:bimax=0.902
7832 @end example
7833
7834 @item
7835 Increase brightness:
7836 @example
7837 colorlevels=romin=0.5:gomin=0.5:bomin=0.5
7838 @end example
7839 @end itemize
7840
7841 @subsection Commands
7842
7843 This filter supports the all above options as @ref{commands}.
7844
7845 @section colormatrix
7846
7847 Convert color matrix.
7848
7849 The filter accepts the following options:
7850
7851 @table @option
7852 @item src
7853 @item dst
7854 Specify the source and destination color matrix. Both values must be
7855 specified.
7856
7857 The accepted values are:
7858 @table @samp
7859 @item bt709
7860 BT.709
7861
7862 @item fcc
7863 FCC
7864
7865 @item bt601
7866 BT.601
7867
7868 @item bt470
7869 BT.470
7870
7871 @item bt470bg
7872 BT.470BG
7873
7874 @item smpte170m
7875 SMPTE-170M
7876
7877 @item smpte240m
7878 SMPTE-240M
7879
7880 @item bt2020
7881 BT.2020
7882 @end table
7883 @end table
7884
7885 For example to convert from BT.601 to SMPTE-240M, use the command:
7886 @example
7887 colormatrix=bt601:smpte240m
7888 @end example
7889
7890 @section colorspace
7891
7892 Convert colorspace, transfer characteristics or color primaries.
7893 Input video needs to have an even size.
7894
7895 The filter accepts the following options:
7896
7897 @table @option
7898 @anchor{all}
7899 @item all
7900 Specify all color properties at once.
7901
7902 The accepted values are:
7903 @table @samp
7904 @item bt470m
7905 BT.470M
7906
7907 @item bt470bg
7908 BT.470BG
7909
7910 @item bt601-6-525
7911 BT.601-6 525
7912
7913 @item bt601-6-625
7914 BT.601-6 625
7915
7916 @item bt709
7917 BT.709
7918
7919 @item smpte170m
7920 SMPTE-170M
7921
7922 @item smpte240m
7923 SMPTE-240M
7924
7925 @item bt2020
7926 BT.2020
7927
7928 @end table
7929
7930 @anchor{space}
7931 @item space
7932 Specify output colorspace.
7933
7934 The accepted values are:
7935 @table @samp
7936 @item bt709
7937 BT.709
7938
7939 @item fcc
7940 FCC
7941
7942 @item bt470bg
7943 BT.470BG or BT.601-6 625
7944
7945 @item smpte170m
7946 SMPTE-170M or BT.601-6 525
7947
7948 @item smpte240m
7949 SMPTE-240M
7950
7951 @item ycgco
7952 YCgCo
7953
7954 @item bt2020ncl
7955 BT.2020 with non-constant luminance
7956
7957 @end table
7958
7959 @anchor{trc}
7960 @item trc
7961 Specify output transfer characteristics.
7962
7963 The accepted values are:
7964 @table @samp
7965 @item bt709
7966 BT.709
7967
7968 @item bt470m
7969 BT.470M
7970
7971 @item bt470bg
7972 BT.470BG
7973
7974 @item gamma22
7975 Constant gamma of 2.2
7976
7977 @item gamma28
7978 Constant gamma of 2.8
7979
7980 @item smpte170m
7981 SMPTE-170M, BT.601-6 625 or BT.601-6 525
7982
7983 @item smpte240m
7984 SMPTE-240M
7985
7986 @item srgb
7987 SRGB
7988
7989 @item iec61966-2-1
7990 iec61966-2-1
7991
7992 @item iec61966-2-4
7993 iec61966-2-4
7994
7995 @item xvycc
7996 xvycc
7997
7998 @item bt2020-10
7999 BT.2020 for 10-bits content
8000
8001 @item bt2020-12
8002 BT.2020 for 12-bits content
8003
8004 @end table
8005
8006 @anchor{primaries}
8007 @item primaries
8008 Specify output color primaries.
8009
8010 The accepted values are:
8011 @table @samp
8012 @item bt709
8013 BT.709
8014
8015 @item bt470m
8016 BT.470M
8017
8018 @item bt470bg
8019 BT.470BG or BT.601-6 625
8020
8021 @item smpte170m
8022 SMPTE-170M or BT.601-6 525
8023
8024 @item smpte240m
8025 SMPTE-240M
8026
8027 @item film
8028 film
8029
8030 @item smpte431
8031 SMPTE-431
8032
8033 @item smpte432
8034 SMPTE-432
8035
8036 @item bt2020
8037 BT.2020
8038
8039 @item jedec-p22
8040 JEDEC P22 phosphors
8041
8042 @end table
8043
8044 @anchor{range}
8045 @item range
8046 Specify output color range.
8047
8048 The accepted values are:
8049 @table @samp
8050 @item tv
8051 TV (restricted) range
8052
8053 @item mpeg
8054 MPEG (restricted) range
8055
8056 @item pc
8057 PC (full) range
8058
8059 @item jpeg
8060 JPEG (full) range
8061
8062 @end table
8063
8064 @item format
8065 Specify output color format.
8066
8067 The accepted values are:
8068 @table @samp
8069 @item yuv420p
8070 YUV 4:2:0 planar 8-bits
8071
8072 @item yuv420p10
8073 YUV 4:2:0 planar 10-bits
8074
8075 @item yuv420p12
8076 YUV 4:2:0 planar 12-bits
8077
8078 @item yuv422p
8079 YUV 4:2:2 planar 8-bits
8080
8081 @item yuv422p10
8082 YUV 4:2:2 planar 10-bits
8083
8084 @item yuv422p12
8085 YUV 4:2:2 planar 12-bits
8086
8087 @item yuv444p
8088 YUV 4:4:4 planar 8-bits
8089
8090 @item yuv444p10
8091 YUV 4:4:4 planar 10-bits
8092
8093 @item yuv444p12
8094 YUV 4:4:4 planar 12-bits
8095
8096 @end table
8097
8098 @item fast
8099 Do a fast conversion, which skips gamma/primary correction. This will take
8100 significantly less CPU, but will be mathematically incorrect. To get output
8101 compatible with that produced by the colormatrix filter, use fast=1.
8102
8103 @item dither
8104 Specify dithering mode.
8105
8106 The accepted values are:
8107 @table @samp
8108 @item none
8109 No dithering
8110
8111 @item fsb
8112 Floyd-Steinberg dithering
8113 @end table
8114
8115 @item wpadapt
8116 Whitepoint adaptation mode.
8117
8118 The accepted values are:
8119 @table @samp
8120 @item bradford
8121 Bradford whitepoint adaptation
8122
8123 @item vonkries
8124 von Kries whitepoint adaptation
8125
8126 @item identity
8127 identity whitepoint adaptation (i.e. no whitepoint adaptation)
8128 @end table
8129
8130 @item iall
8131 Override all input properties at once. Same accepted values as @ref{all}.
8132
8133 @item ispace
8134 Override input colorspace. Same accepted values as @ref{space}.
8135
8136 @item iprimaries
8137 Override input color primaries. Same accepted values as @ref{primaries}.
8138
8139 @item itrc
8140 Override input transfer characteristics. Same accepted values as @ref{trc}.
8141
8142 @item irange
8143 Override input color range. Same accepted values as @ref{range}.
8144
8145 @end table
8146
8147 The filter converts the transfer characteristics, color space and color
8148 primaries to the specified user values. The output value, if not specified,
8149 is set to a default value based on the "all" property. If that property is
8150 also not specified, the filter will log an error. The output color range and
8151 format default to the same value as the input color range and format. The
8152 input transfer characteristics, color space, color primaries and color range
8153 should be set on the input data. If any of these are missing, the filter will
8154 log an error and no conversion will take place.
8155
8156 For example to convert the input to SMPTE-240M, use the command:
8157 @example
8158 colorspace=smpte240m
8159 @end example
8160
8161 @section convolution
8162
8163 Apply convolution of 3x3, 5x5, 7x7 or horizontal/vertical up to 49 elements.
8164
8165 The filter accepts the following options:
8166
8167 @table @option
8168 @item 0m
8169 @item 1m
8170 @item 2m
8171 @item 3m
8172 Set matrix for each plane.
8173 Matrix is sequence of 9, 25 or 49 signed integers in @var{square} mode,
8174 and from 1 to 49 odd number of signed integers in @var{row} mode.
8175
8176 @item 0rdiv
8177 @item 1rdiv
8178 @item 2rdiv
8179 @item 3rdiv
8180 Set multiplier for calculated value for each plane.
8181 If unset or 0, it will be sum of all matrix elements.
8182
8183 @item 0bias
8184 @item 1bias
8185 @item 2bias
8186 @item 3bias
8187 Set bias for each plane. This value is added to the result of the multiplication.
8188 Useful for making the overall image brighter or darker. Default is 0.0.
8189
8190 @item 0mode
8191 @item 1mode
8192 @item 2mode
8193 @item 3mode
8194 Set matrix mode for each plane. Can be @var{square}, @var{row} or @var{column}.
8195 Default is @var{square}.
8196 @end table
8197
8198 @subsection Examples
8199
8200 @itemize
8201 @item
8202 Apply sharpen:
8203 @example
8204 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"
8205 @end example
8206
8207 @item
8208 Apply blur:
8209 @example
8210 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"
8211 @end example
8212
8213 @item
8214 Apply edge enhance:
8215 @example
8216 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"
8217 @end example
8218
8219 @item
8220 Apply edge detect:
8221 @example
8222 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"
8223 @end example
8224
8225 @item
8226 Apply laplacian edge detector which includes diagonals:
8227 @example
8228 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"
8229 @end example
8230
8231 @item
8232 Apply emboss:
8233 @example
8234 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"
8235 @end example
8236 @end itemize
8237
8238 @section convolve
8239
8240 Apply 2D convolution of video stream in frequency domain using second stream
8241 as impulse.
8242
8243 The filter accepts the following options:
8244
8245 @table @option
8246 @item planes
8247 Set which planes to process.
8248
8249 @item impulse
8250 Set which impulse video frames will be processed, can be @var{first}
8251 or @var{all}. Default is @var{all}.
8252 @end table
8253
8254 The @code{convolve} filter also supports the @ref{framesync} options.
8255
8256 @section copy
8257
8258 Copy the input video source unchanged to the output. This is mainly useful for
8259 testing purposes.
8260
8261 @anchor{coreimage}
8262 @section coreimage
8263 Video filtering on GPU using Apple's CoreImage API on OSX.
8264
8265 Hardware acceleration is based on an OpenGL context. Usually, this means it is
8266 processed by video hardware. However, software-based OpenGL implementations
8267 exist which means there is no guarantee for hardware processing. It depends on
8268 the respective OSX.
8269
8270 There are many filters and image generators provided by Apple that come with a
8271 large variety of options. The filter has to be referenced by its name along
8272 with its options.
8273
8274 The coreimage filter accepts the following options:
8275 @table @option
8276 @item list_filters
8277 List all available filters and generators along with all their respective
8278 options as well as possible minimum and maximum values along with the default
8279 values.
8280 @example
8281 list_filters=true
8282 @end example
8283
8284 @item filter
8285 Specify all filters by their respective name and options.
8286 Use @var{list_filters} to determine all valid filter names and options.
8287 Numerical options are specified by a float value and are automatically clamped
8288 to their respective value range.  Vector and color options have to be specified
8289 by a list of space separated float values. Character escaping has to be done.
8290 A special option name @code{default} is available to use default options for a
8291 filter.
8292
8293 It is required to specify either @code{default} or at least one of the filter options.
8294 All omitted options are used with their default values.
8295 The syntax of the filter string is as follows:
8296 @example
8297 filter=<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...][#<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...]][#...]
8298 @end example
8299
8300 @item output_rect
8301 Specify a rectangle where the output of the filter chain is copied into the
8302 input image. It is given by a list of space separated float values:
8303 @example
8304 output_rect=x\ y\ width\ height
8305 @end example
8306 If not given, the output rectangle equals the dimensions of the input image.
8307 The output rectangle is automatically cropped at the borders of the input
8308 image. Negative values are valid for each component.
8309 @example
8310 output_rect=25\ 25\ 100\ 100
8311 @end example
8312 @end table
8313
8314 Several filters can be chained for successive processing without GPU-HOST
8315 transfers allowing for fast processing of complex filter chains.
8316 Currently, only filters with zero (generators) or exactly one (filters) input
8317 image and one output image are supported. Also, transition filters are not yet
8318 usable as intended.
8319
8320 Some filters generate output images with additional padding depending on the
8321 respective filter kernel. The padding is automatically removed to ensure the
8322 filter output has the same size as the input image.
8323
8324 For image generators, the size of the output image is determined by the
8325 previous output image of the filter chain or the input image of the whole
8326 filterchain, respectively. The generators do not use the pixel information of
8327 this image to generate their output. However, the generated output is
8328 blended onto this image, resulting in partial or complete coverage of the
8329 output image.
8330
8331 The @ref{coreimagesrc} video source can be used for generating input images
8332 which are directly fed into the filter chain. By using it, providing input
8333 images by another video source or an input video is not required.
8334
8335 @subsection Examples
8336
8337 @itemize
8338
8339 @item
8340 List all filters available:
8341 @example
8342 coreimage=list_filters=true
8343 @end example
8344
8345 @item
8346 Use the CIBoxBlur filter with default options to blur an image:
8347 @example
8348 coreimage=filter=CIBoxBlur@@default
8349 @end example
8350
8351 @item
8352 Use a filter chain with CISepiaTone at default values and CIVignetteEffect with
8353 its center at 100x100 and a radius of 50 pixels:
8354 @example
8355 coreimage=filter=CIBoxBlur@@default#CIVignetteEffect@@inputCenter=100\ 100@@inputRadius=50
8356 @end example
8357
8358 @item
8359 Use nullsrc and CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
8360 given as complete and escaped command-line for Apple's standard bash shell:
8361 @example
8362 ffmpeg -f lavfi -i nullsrc=s=100x100,coreimage=filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
8363 @end example
8364 @end itemize
8365
8366 @section cover_rect
8367
8368 Cover a rectangular object
8369
8370 It accepts the following options:
8371
8372 @table @option
8373 @item cover
8374 Filepath of the optional cover image, needs to be in yuv420.
8375
8376 @item mode
8377 Set covering mode.
8378
8379 It accepts the following values:
8380 @table @samp
8381 @item cover
8382 cover it by the supplied image
8383 @item blur
8384 cover it by interpolating the surrounding pixels
8385 @end table
8386
8387 Default value is @var{blur}.
8388 @end table
8389
8390 @subsection Examples
8391
8392 @itemize
8393 @item
8394 Cover a rectangular object by the supplied image of a given video using @command{ffmpeg}:
8395 @example
8396 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
8397 @end example
8398 @end itemize
8399
8400 @section crop
8401
8402 Crop the input video to given dimensions.
8403
8404 It accepts the following parameters:
8405
8406 @table @option
8407 @item w, out_w
8408 The width of the output video. It defaults to @code{iw}.
8409 This expression is evaluated only once during the filter
8410 configuration, or when the @samp{w} or @samp{out_w} command is sent.
8411
8412 @item h, out_h
8413 The height of the output video. It defaults to @code{ih}.
8414 This expression is evaluated only once during the filter
8415 configuration, or when the @samp{h} or @samp{out_h} command is sent.
8416
8417 @item x
8418 The horizontal position, in the input video, of the left edge of the output
8419 video. It defaults to @code{(in_w-out_w)/2}.
8420 This expression is evaluated per-frame.
8421
8422 @item y
8423 The vertical position, in the input video, of the top edge of the output video.
8424 It defaults to @code{(in_h-out_h)/2}.
8425 This expression is evaluated per-frame.
8426
8427 @item keep_aspect
8428 If set to 1 will force the output display aspect ratio
8429 to be the same of the input, by changing the output sample aspect
8430 ratio. It defaults to 0.
8431
8432 @item exact
8433 Enable exact cropping. If enabled, subsampled videos will be cropped at exact
8434 width/height/x/y as specified and will not be rounded to nearest smaller value.
8435 It defaults to 0.
8436 @end table
8437
8438 The @var{out_w}, @var{out_h}, @var{x}, @var{y} parameters are
8439 expressions containing the following constants:
8440
8441 @table @option
8442 @item x
8443 @item y
8444 The computed values for @var{x} and @var{y}. They are evaluated for
8445 each new frame.
8446
8447 @item in_w
8448 @item in_h
8449 The input width and height.
8450
8451 @item iw
8452 @item ih
8453 These are the same as @var{in_w} and @var{in_h}.
8454
8455 @item out_w
8456 @item out_h
8457 The output (cropped) width and height.
8458
8459 @item ow
8460 @item oh
8461 These are the same as @var{out_w} and @var{out_h}.
8462
8463 @item a
8464 same as @var{iw} / @var{ih}
8465
8466 @item sar
8467 input sample aspect ratio
8468
8469 @item dar
8470 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
8471
8472 @item hsub
8473 @item vsub
8474 horizontal and vertical chroma subsample values. For example for the
8475 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
8476
8477 @item n
8478 The number of the input frame, starting from 0.
8479
8480 @item pos
8481 the position in the file of the input frame, NAN if unknown
8482
8483 @item t
8484 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
8485
8486 @end table
8487
8488 The expression for @var{out_w} may depend on the value of @var{out_h},
8489 and the expression for @var{out_h} may depend on @var{out_w}, but they
8490 cannot depend on @var{x} and @var{y}, as @var{x} and @var{y} are
8491 evaluated after @var{out_w} and @var{out_h}.
8492
8493 The @var{x} and @var{y} parameters specify the expressions for the
8494 position of the top-left corner of the output (non-cropped) area. They
8495 are evaluated for each frame. If the evaluated value is not valid, it
8496 is approximated to the nearest valid value.
8497
8498 The expression for @var{x} may depend on @var{y}, and the expression
8499 for @var{y} may depend on @var{x}.
8500
8501 @subsection Examples
8502
8503 @itemize
8504 @item
8505 Crop area with size 100x100 at position (12,34).
8506 @example
8507 crop=100:100:12:34
8508 @end example
8509
8510 Using named options, the example above becomes:
8511 @example
8512 crop=w=100:h=100:x=12:y=34
8513 @end example
8514
8515 @item
8516 Crop the central input area with size 100x100:
8517 @example
8518 crop=100:100
8519 @end example
8520
8521 @item
8522 Crop the central input area with size 2/3 of the input video:
8523 @example
8524 crop=2/3*in_w:2/3*in_h
8525 @end example
8526
8527 @item
8528 Crop the input video central square:
8529 @example
8530 crop=out_w=in_h
8531 crop=in_h
8532 @end example
8533
8534 @item
8535 Delimit the rectangle with the top-left corner placed at position
8536 100:100 and the right-bottom corner corresponding to the right-bottom
8537 corner of the input image.
8538 @example
8539 crop=in_w-100:in_h-100:100:100
8540 @end example
8541
8542 @item
8543 Crop 10 pixels from the left and right borders, and 20 pixels from
8544 the top and bottom borders
8545 @example
8546 crop=in_w-2*10:in_h-2*20
8547 @end example
8548
8549 @item
8550 Keep only the bottom right quarter of the input image:
8551 @example
8552 crop=in_w/2:in_h/2:in_w/2:in_h/2
8553 @end example
8554
8555 @item
8556 Crop height for getting Greek harmony:
8557 @example
8558 crop=in_w:1/PHI*in_w
8559 @end example
8560
8561 @item
8562 Apply trembling effect:
8563 @example
8564 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)
8565 @end example
8566
8567 @item
8568 Apply erratic camera effect depending on timestamp:
8569 @example
8570 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)"
8571 @end example
8572
8573 @item
8574 Set x depending on the value of y:
8575 @example
8576 crop=in_w/2:in_h/2:y:10+10*sin(n/10)
8577 @end example
8578 @end itemize
8579
8580 @subsection Commands
8581
8582 This filter supports the following commands:
8583 @table @option
8584 @item w, out_w
8585 @item h, out_h
8586 @item x
8587 @item y
8588 Set width/height of the output video and the horizontal/vertical position
8589 in the input video.
8590 The command accepts the same syntax of the corresponding option.
8591
8592 If the specified expression is not valid, it is kept at its current
8593 value.
8594 @end table
8595
8596 @section cropdetect
8597
8598 Auto-detect the crop size.
8599
8600 It calculates the necessary cropping parameters and prints the
8601 recommended parameters via the logging system. The detected dimensions
8602 correspond to the non-black area of the input video.
8603
8604 It accepts the following parameters:
8605
8606 @table @option
8607
8608 @item limit
8609 Set higher black value threshold, which can be optionally specified
8610 from nothing (0) to everything (255 for 8-bit based formats). An intensity
8611 value greater to the set value is considered non-black. It defaults to 24.
8612 You can also specify a value between 0.0 and 1.0 which will be scaled depending
8613 on the bitdepth of the pixel format.
8614
8615 @item round
8616 The value which the width/height should be divisible by. It defaults to
8617 16. The offset is automatically adjusted to center the video. Use 2 to
8618 get only even dimensions (needed for 4:2:2 video). 16 is best when
8619 encoding to most video codecs.
8620
8621 @item reset_count, reset
8622 Set the counter that determines after how many frames cropdetect will
8623 reset the previously detected largest video area and start over to
8624 detect the current optimal crop area. Default value is 0.
8625
8626 This can be useful when channel logos distort the video area. 0
8627 indicates 'never reset', and returns the largest area encountered during
8628 playback.
8629 @end table
8630
8631 @anchor{cue}
8632 @section cue
8633
8634 Delay video filtering until a given wallclock timestamp. The filter first
8635 passes on @option{preroll} amount of frames, then it buffers at most
8636 @option{buffer} amount of frames and waits for the cue. After reaching the cue
8637 it forwards the buffered frames and also any subsequent frames coming in its
8638 input.
8639
8640 The filter can be used synchronize the output of multiple ffmpeg processes for
8641 realtime output devices like decklink. By putting the delay in the filtering
8642 chain and pre-buffering frames the process can pass on data to output almost
8643 immediately after the target wallclock timestamp is reached.
8644
8645 Perfect frame accuracy cannot be guaranteed, but the result is good enough for
8646 some use cases.
8647
8648 @table @option
8649
8650 @item cue
8651 The cue timestamp expressed in a UNIX timestamp in microseconds. Default is 0.
8652
8653 @item preroll
8654 The duration of content to pass on as preroll expressed in seconds. Default is 0.
8655
8656 @item buffer
8657 The maximum duration of content to buffer before waiting for the cue expressed
8658 in seconds. Default is 0.
8659
8660 @end table
8661
8662 @anchor{curves}
8663 @section curves
8664
8665 Apply color adjustments using curves.
8666
8667 This filter is similar to the Adobe Photoshop and GIMP curves tools. Each
8668 component (red, green and blue) has its values defined by @var{N} key points
8669 tied from each other using a smooth curve. The x-axis represents the pixel
8670 values from the input frame, and the y-axis the new pixel values to be set for
8671 the output frame.
8672
8673 By default, a component curve is defined by the two points @var{(0;0)} and
8674 @var{(1;1)}. This creates a straight line where each original pixel value is
8675 "adjusted" to its own value, which means no change to the image.
8676
8677 The filter allows you to redefine these two points and add some more. A new
8678 curve (using a natural cubic spline interpolation) will be define to pass
8679 smoothly through all these new coordinates. The new defined points needs to be
8680 strictly increasing over the x-axis, and their @var{x} and @var{y} values must
8681 be in the @var{[0;1]} interval.  If the computed curves happened to go outside
8682 the vector spaces, the values will be clipped accordingly.
8683
8684 The filter accepts the following options:
8685
8686 @table @option
8687 @item preset
8688 Select one of the available color presets. This option can be used in addition
8689 to the @option{r}, @option{g}, @option{b} parameters; in this case, the later
8690 options takes priority on the preset values.
8691 Available presets are:
8692 @table @samp
8693 @item none
8694 @item color_negative
8695 @item cross_process
8696 @item darker
8697 @item increase_contrast
8698 @item lighter
8699 @item linear_contrast
8700 @item medium_contrast
8701 @item negative
8702 @item strong_contrast
8703 @item vintage
8704 @end table
8705 Default is @code{none}.
8706 @item master, m
8707 Set the master key points. These points will define a second pass mapping. It
8708 is sometimes called a "luminance" or "value" mapping. It can be used with
8709 @option{r}, @option{g}, @option{b} or @option{all} since it acts like a
8710 post-processing LUT.
8711 @item red, r
8712 Set the key points for the red component.
8713 @item green, g
8714 Set the key points for the green component.
8715 @item blue, b
8716 Set the key points for the blue component.
8717 @item all
8718 Set the key points for all components (not including master).
8719 Can be used in addition to the other key points component
8720 options. In this case, the unset component(s) will fallback on this
8721 @option{all} setting.
8722 @item psfile
8723 Specify a Photoshop curves file (@code{.acv}) to import the settings from.
8724 @item plot
8725 Save Gnuplot script of the curves in specified file.
8726 @end table
8727
8728 To avoid some filtergraph syntax conflicts, each key points list need to be
8729 defined using the following syntax: @code{x0/y0 x1/y1 x2/y2 ...}.
8730
8731 @subsection Examples
8732
8733 @itemize
8734 @item
8735 Increase slightly the middle level of blue:
8736 @example
8737 curves=blue='0/0 0.5/0.58 1/1'
8738 @end example
8739
8740 @item
8741 Vintage effect:
8742 @example
8743 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'
8744 @end example
8745 Here we obtain the following coordinates for each components:
8746 @table @var
8747 @item red
8748 @code{(0;0.11) (0.42;0.51) (1;0.95)}
8749 @item green
8750 @code{(0;0) (0.50;0.48) (1;1)}
8751 @item blue
8752 @code{(0;0.22) (0.49;0.44) (1;0.80)}
8753 @end table
8754
8755 @item
8756 The previous example can also be achieved with the associated built-in preset:
8757 @example
8758 curves=preset=vintage
8759 @end example
8760
8761 @item
8762 Or simply:
8763 @example
8764 curves=vintage
8765 @end example
8766
8767 @item
8768 Use a Photoshop preset and redefine the points of the green component:
8769 @example
8770 curves=psfile='MyCurvesPresets/purple.acv':green='0/0 0.45/0.53 1/1'
8771 @end example
8772
8773 @item
8774 Check out the curves of the @code{cross_process} profile using @command{ffmpeg}
8775 and @command{gnuplot}:
8776 @example
8777 ffmpeg -f lavfi -i color -vf curves=cross_process:plot=/tmp/curves.plt -frames:v 1 -f null -
8778 gnuplot -p /tmp/curves.plt
8779 @end example
8780 @end itemize
8781
8782 @section datascope
8783
8784 Video data analysis filter.
8785
8786 This filter shows hexadecimal pixel values of part of video.
8787
8788 The filter accepts the following options:
8789
8790 @table @option
8791 @item size, s
8792 Set output video size.
8793
8794 @item x
8795 Set x offset from where to pick pixels.
8796
8797 @item y
8798 Set y offset from where to pick pixels.
8799
8800 @item mode
8801 Set scope mode, can be one of the following:
8802 @table @samp
8803 @item mono
8804 Draw hexadecimal pixel values with white color on black background.
8805
8806 @item color
8807 Draw hexadecimal pixel values with input video pixel color on black
8808 background.
8809
8810 @item color2
8811 Draw hexadecimal pixel values on color background picked from input video,
8812 the text color is picked in such way so its always visible.
8813 @end table
8814
8815 @item axis
8816 Draw rows and columns numbers on left and top of video.
8817
8818 @item opacity
8819 Set background opacity.
8820
8821 @item format
8822 Set display number format. Can be @code{hex}, or @code{dec}. Default is @code{hex}.
8823 @end table
8824
8825 @section dblur
8826 Apply Directional blur filter.
8827
8828 The filter accepts the following options:
8829
8830 @table @option
8831 @item angle
8832 Set angle of directional blur. Default is @code{45}.
8833
8834 @item radius
8835 Set radius of directional blur. Default is @code{5}.
8836
8837 @item planes
8838 Set which planes to filter. By default all planes are filtered.
8839 @end table
8840
8841 @subsection Commands
8842 This filter supports same @ref{commands} as options.
8843 The command accepts the same syntax of the corresponding option.
8844
8845 If the specified expression is not valid, it is kept at its current
8846 value.
8847
8848 @section dctdnoiz
8849
8850 Denoise frames using 2D DCT (frequency domain filtering).
8851
8852 This filter is not designed for real time.
8853
8854 The filter accepts the following options:
8855
8856 @table @option
8857 @item sigma, s
8858 Set the noise sigma constant.
8859
8860 This @var{sigma} defines a hard threshold of @code{3 * sigma}; every DCT
8861 coefficient (absolute value) below this threshold with be dropped.
8862
8863 If you need a more advanced filtering, see @option{expr}.
8864
8865 Default is @code{0}.
8866
8867 @item overlap
8868 Set number overlapping pixels for each block. Since the filter can be slow, you
8869 may want to reduce this value, at the cost of a less effective filter and the
8870 risk of various artefacts.
8871
8872 If the overlapping value doesn't permit processing the whole input width or
8873 height, a warning will be displayed and according borders won't be denoised.
8874
8875 Default value is @var{blocksize}-1, which is the best possible setting.
8876
8877 @item expr, e
8878 Set the coefficient factor expression.
8879
8880 For each coefficient of a DCT block, this expression will be evaluated as a
8881 multiplier value for the coefficient.
8882
8883 If this is option is set, the @option{sigma} option will be ignored.
8884
8885 The absolute value of the coefficient can be accessed through the @var{c}
8886 variable.
8887
8888 @item n
8889 Set the @var{blocksize} using the number of bits. @code{1<<@var{n}} defines the
8890 @var{blocksize}, which is the width and height of the processed blocks.
8891
8892 The default value is @var{3} (8x8) and can be raised to @var{4} for a
8893 @var{blocksize} of 16x16. Note that changing this setting has huge consequences
8894 on the speed processing. Also, a larger block size does not necessarily means a
8895 better de-noising.
8896 @end table
8897
8898 @subsection Examples
8899
8900 Apply a denoise with a @option{sigma} of @code{4.5}:
8901 @example
8902 dctdnoiz=4.5
8903 @end example
8904
8905 The same operation can be achieved using the expression system:
8906 @example
8907 dctdnoiz=e='gte(c, 4.5*3)'
8908 @end example
8909
8910 Violent denoise using a block size of @code{16x16}:
8911 @example
8912 dctdnoiz=15:n=4
8913 @end example
8914
8915 @section deband
8916
8917 Remove banding artifacts from input video.
8918 It works by replacing banded pixels with average value of referenced pixels.
8919
8920 The filter accepts the following options:
8921
8922 @table @option
8923 @item 1thr
8924 @item 2thr
8925 @item 3thr
8926 @item 4thr
8927 Set banding detection threshold for each plane. Default is 0.02.
8928 Valid range is 0.00003 to 0.5.
8929 If difference between current pixel and reference pixel is less than threshold,
8930 it will be considered as banded.
8931
8932 @item range, r
8933 Banding detection range in pixels. Default is 16. If positive, random number
8934 in range 0 to set value will be used. If negative, exact absolute value
8935 will be used.
8936 The range defines square of four pixels around current pixel.
8937
8938 @item direction, d
8939 Set direction in radians from which four pixel will be compared. If positive,
8940 random direction from 0 to set direction will be picked. If negative, exact of
8941 absolute value will be picked. For example direction 0, -PI or -2*PI radians
8942 will pick only pixels on same row and -PI/2 will pick only pixels on same
8943 column.
8944
8945 @item blur, b
8946 If enabled, current pixel is compared with average value of all four
8947 surrounding pixels. The default is enabled. If disabled current pixel is
8948 compared with all four surrounding pixels. The pixel is considered banded
8949 if only all four differences with surrounding pixels are less than threshold.
8950
8951 @item coupling, c
8952 If enabled, current pixel is changed if and only if all pixel components are banded,
8953 e.g. banding detection threshold is triggered for all color components.
8954 The default is disabled.
8955 @end table
8956
8957 @section deblock
8958
8959 Remove blocking artifacts from input video.
8960
8961 The filter accepts the following options:
8962
8963 @table @option
8964 @item filter
8965 Set filter type, can be @var{weak} or @var{strong}. Default is @var{strong}.
8966 This controls what kind of deblocking is applied.
8967
8968 @item block
8969 Set size of block, allowed range is from 4 to 512. Default is @var{8}.
8970
8971 @item alpha
8972 @item beta
8973 @item gamma
8974 @item delta
8975 Set blocking detection thresholds. Allowed range is 0 to 1.
8976 Defaults are: @var{0.098} for @var{alpha} and @var{0.05} for the rest.
8977 Using higher threshold gives more deblocking strength.
8978 Setting @var{alpha} controls threshold detection at exact edge of block.
8979 Remaining options controls threshold detection near the edge. Each one for
8980 below/above or left/right. Setting any of those to @var{0} disables
8981 deblocking.
8982
8983 @item planes
8984 Set planes to filter. Default is to filter all available planes.
8985 @end table
8986
8987 @subsection Examples
8988
8989 @itemize
8990 @item
8991 Deblock using weak filter and block size of 4 pixels.
8992 @example
8993 deblock=filter=weak:block=4
8994 @end example
8995
8996 @item
8997 Deblock using strong filter, block size of 4 pixels and custom thresholds for
8998 deblocking more edges.
8999 @example
9000 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05
9001 @end example
9002
9003 @item
9004 Similar as above, but filter only first plane.
9005 @example
9006 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=1
9007 @end example
9008
9009 @item
9010 Similar as above, but filter only second and third plane.
9011 @example
9012 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=6
9013 @end example
9014 @end itemize
9015
9016 @anchor{decimate}
9017 @section decimate
9018
9019 Drop duplicated frames at regular intervals.
9020
9021 The filter accepts the following options:
9022
9023 @table @option
9024 @item cycle
9025 Set the number of frames from which one will be dropped. Setting this to
9026 @var{N} means one frame in every batch of @var{N} frames will be dropped.
9027 Default is @code{5}.
9028
9029 @item dupthresh
9030 Set the threshold for duplicate detection. If the difference metric for a frame
9031 is less than or equal to this value, then it is declared as duplicate. Default
9032 is @code{1.1}
9033
9034 @item scthresh
9035 Set scene change threshold. Default is @code{15}.
9036
9037 @item blockx
9038 @item blocky
9039 Set the size of the x and y-axis blocks used during metric calculations.
9040 Larger blocks give better noise suppression, but also give worse detection of
9041 small movements. Must be a power of two. Default is @code{32}.
9042
9043 @item ppsrc
9044 Mark main input as a pre-processed input and activate clean source input
9045 stream. This allows the input to be pre-processed with various filters to help
9046 the metrics calculation while keeping the frame selection lossless. When set to
9047 @code{1}, the first stream is for the pre-processed input, and the second
9048 stream is the clean source from where the kept frames are chosen. Default is
9049 @code{0}.
9050
9051 @item chroma
9052 Set whether or not chroma is considered in the metric calculations. Default is
9053 @code{1}.
9054 @end table
9055
9056 @section deconvolve
9057
9058 Apply 2D deconvolution of video stream in frequency domain using second stream
9059 as impulse.
9060
9061 The filter accepts the following options:
9062
9063 @table @option
9064 @item planes
9065 Set which planes to process.
9066
9067 @item impulse
9068 Set which impulse video frames will be processed, can be @var{first}
9069 or @var{all}. Default is @var{all}.
9070
9071 @item noise
9072 Set noise when doing divisions. Default is @var{0.0000001}. Useful when width
9073 and height are not same and not power of 2 or if stream prior to convolving
9074 had noise.
9075 @end table
9076
9077 The @code{deconvolve} filter also supports the @ref{framesync} options.
9078
9079 @section dedot
9080
9081 Reduce cross-luminance (dot-crawl) and cross-color (rainbows) from video.
9082
9083 It accepts the following options:
9084
9085 @table @option
9086 @item m
9087 Set mode of operation. Can be combination of @var{dotcrawl} for cross-luminance reduction and/or
9088 @var{rainbows} for cross-color reduction.
9089
9090 @item lt
9091 Set spatial luma threshold. Lower values increases reduction of cross-luminance.
9092
9093 @item tl
9094 Set tolerance for temporal luma. Higher values increases reduction of cross-luminance.
9095
9096 @item tc
9097 Set tolerance for chroma temporal variation. Higher values increases reduction of cross-color.
9098
9099 @item ct
9100 Set temporal chroma threshold. Lower values increases reduction of cross-color.
9101 @end table
9102
9103 @section deflate
9104
9105 Apply deflate effect to the video.
9106
9107 This filter replaces the pixel by the local(3x3) average by taking into account
9108 only values lower than the pixel.
9109
9110 It accepts the following options:
9111
9112 @table @option
9113 @item threshold0
9114 @item threshold1
9115 @item threshold2
9116 @item threshold3
9117 Limit the maximum change for each plane, default is 65535.
9118 If 0, plane will remain unchanged.
9119 @end table
9120
9121 @subsection Commands
9122
9123 This filter supports the all above options as @ref{commands}.
9124
9125 @section deflicker
9126
9127 Remove temporal frame luminance variations.
9128
9129 It accepts the following options:
9130
9131 @table @option
9132 @item size, s
9133 Set moving-average filter size in frames. Default is 5. Allowed range is 2 - 129.
9134
9135 @item mode, m
9136 Set averaging mode to smooth temporal luminance variations.
9137
9138 Available values are:
9139 @table @samp
9140 @item am
9141 Arithmetic mean
9142
9143 @item gm
9144 Geometric mean
9145
9146 @item hm
9147 Harmonic mean
9148
9149 @item qm
9150 Quadratic mean
9151
9152 @item cm
9153 Cubic mean
9154
9155 @item pm
9156 Power mean
9157
9158 @item median
9159 Median
9160 @end table
9161
9162 @item bypass
9163 Do not actually modify frame. Useful when one only wants metadata.
9164 @end table
9165
9166 @section dejudder
9167
9168 Remove judder produced by partially interlaced telecined content.
9169
9170 Judder can be introduced, for instance, by @ref{pullup} filter. If the original
9171 source was partially telecined content then the output of @code{pullup,dejudder}
9172 will have a variable frame rate. May change the recorded frame rate of the
9173 container. Aside from that change, this filter will not affect constant frame
9174 rate video.
9175
9176 The option available in this filter is:
9177 @table @option
9178
9179 @item cycle
9180 Specify the length of the window over which the judder repeats.
9181
9182 Accepts any integer greater than 1. Useful values are:
9183 @table @samp
9184
9185 @item 4
9186 If the original was telecined from 24 to 30 fps (Film to NTSC).
9187
9188 @item 5
9189 If the original was telecined from 25 to 30 fps (PAL to NTSC).
9190
9191 @item 20
9192 If a mixture of the two.
9193 @end table
9194
9195 The default is @samp{4}.
9196 @end table
9197
9198 @section delogo
9199
9200 Suppress a TV station logo by a simple interpolation of the surrounding
9201 pixels. Just set a rectangle covering the logo and watch it disappear
9202 (and sometimes something even uglier appear - your mileage may vary).
9203
9204 It accepts the following parameters:
9205 @table @option
9206
9207 @item x
9208 @item y
9209 Specify the top left corner coordinates of the logo. They must be
9210 specified.
9211
9212 @item w
9213 @item h
9214 Specify the width and height of the logo to clear. They must be
9215 specified.
9216
9217 @item band, t
9218 Specify the thickness of the fuzzy edge of the rectangle (added to
9219 @var{w} and @var{h}). The default value is 1. This option is
9220 deprecated, setting higher values should no longer be necessary and
9221 is not recommended.
9222
9223 @item show
9224 When set to 1, a green rectangle is drawn on the screen to simplify
9225 finding the right @var{x}, @var{y}, @var{w}, and @var{h} parameters.
9226 The default value is 0.
9227
9228 The rectangle is drawn on the outermost pixels which will be (partly)
9229 replaced with interpolated values. The values of the next pixels
9230 immediately outside this rectangle in each direction will be used to
9231 compute the interpolated pixel values inside the rectangle.
9232
9233 @end table
9234
9235 @subsection Examples
9236
9237 @itemize
9238 @item
9239 Set a rectangle covering the area with top left corner coordinates 0,0
9240 and size 100x77, and a band of size 10:
9241 @example
9242 delogo=x=0:y=0:w=100:h=77:band=10
9243 @end example
9244
9245 @end itemize
9246
9247 @anchor{derain}
9248 @section derain
9249
9250 Remove the rain in the input image/video by applying the derain methods based on
9251 convolutional neural networks. Supported models:
9252
9253 @itemize
9254 @item
9255 Recurrent Squeeze-and-Excitation Context Aggregation Net (RESCAN).
9256 See @url{http://openaccess.thecvf.com/content_ECCV_2018/papers/Xia_Li_Recurrent_Squeeze-and-Excitation_Context_ECCV_2018_paper.pdf}.
9257 @end itemize
9258
9259 Training as well as model generation scripts are provided in
9260 the repository at @url{https://github.com/XueweiMeng/derain_filter.git}.
9261
9262 Native model files (.model) can be generated from TensorFlow model
9263 files (.pb) by using tools/python/convert.py
9264
9265 The filter accepts the following options:
9266
9267 @table @option
9268 @item filter_type
9269 Specify which filter to use. This option accepts the following values:
9270
9271 @table @samp
9272 @item derain
9273 Derain filter. To conduct derain filter, you need to use a derain model.
9274
9275 @item dehaze
9276 Dehaze filter. To conduct dehaze filter, you need to use a dehaze model.
9277 @end table
9278 Default value is @samp{derain}.
9279
9280 @item dnn_backend
9281 Specify which DNN backend to use for model loading and execution. This option accepts
9282 the following values:
9283
9284 @table @samp
9285 @item native
9286 Native implementation of DNN loading and execution.
9287
9288 @item tensorflow
9289 TensorFlow backend. To enable this backend you
9290 need to install the TensorFlow for C library (see
9291 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
9292 @code{--enable-libtensorflow}
9293 @end table
9294 Default value is @samp{native}.
9295
9296 @item model
9297 Set path to model file specifying network architecture and its parameters.
9298 Note that different backends use different file formats. TensorFlow and native
9299 backend can load files for only its format.
9300 @end table
9301
9302 It can also be finished with @ref{dnn_processing} filter.
9303
9304 @section deshake
9305
9306 Attempt to fix small changes in horizontal and/or vertical shift. This
9307 filter helps remove camera shake from hand-holding a camera, bumping a
9308 tripod, moving on a vehicle, etc.
9309
9310 The filter accepts the following options:
9311
9312 @table @option
9313
9314 @item x
9315 @item y
9316 @item w
9317 @item h
9318 Specify a rectangular area where to limit the search for motion
9319 vectors.
9320 If desired the search for motion vectors can be limited to a
9321 rectangular area of the frame defined by its top left corner, width
9322 and height. These parameters have the same meaning as the drawbox
9323 filter which can be used to visualise the position of the bounding
9324 box.
9325
9326 This is useful when simultaneous movement of subjects within the frame
9327 might be confused for camera motion by the motion vector search.
9328
9329 If any or all of @var{x}, @var{y}, @var{w} and @var{h} are set to -1
9330 then the full frame is used. This allows later options to be set
9331 without specifying the bounding box for the motion vector search.
9332
9333 Default - search the whole frame.
9334
9335 @item rx
9336 @item ry
9337 Specify the maximum extent of movement in x and y directions in the
9338 range 0-64 pixels. Default 16.
9339
9340 @item edge
9341 Specify how to generate pixels to fill blanks at the edge of the
9342 frame. Available values are:
9343 @table @samp
9344 @item blank, 0
9345 Fill zeroes at blank locations
9346 @item original, 1
9347 Original image at blank locations
9348 @item clamp, 2
9349 Extruded edge value at blank locations
9350 @item mirror, 3
9351 Mirrored edge at blank locations
9352 @end table
9353 Default value is @samp{mirror}.
9354
9355 @item blocksize
9356 Specify the blocksize to use for motion search. Range 4-128 pixels,
9357 default 8.
9358
9359 @item contrast
9360 Specify the contrast threshold for blocks. Only blocks with more than
9361 the specified contrast (difference between darkest and lightest
9362 pixels) will be considered. Range 1-255, default 125.
9363
9364 @item search
9365 Specify the search strategy. Available values are:
9366 @table @samp
9367 @item exhaustive, 0
9368 Set exhaustive search
9369 @item less, 1
9370 Set less exhaustive search.
9371 @end table
9372 Default value is @samp{exhaustive}.
9373
9374 @item filename
9375 If set then a detailed log of the motion search is written to the
9376 specified file.
9377
9378 @end table
9379
9380 @section despill
9381
9382 Remove unwanted contamination of foreground colors, caused by reflected color of
9383 greenscreen or bluescreen.
9384
9385 This filter accepts the following options:
9386
9387 @table @option
9388 @item type
9389 Set what type of despill to use.
9390
9391 @item mix
9392 Set how spillmap will be generated.
9393
9394 @item expand
9395 Set how much to get rid of still remaining spill.
9396
9397 @item red
9398 Controls amount of red in spill area.
9399
9400 @item green
9401 Controls amount of green in spill area.
9402 Should be -1 for greenscreen.
9403
9404 @item blue
9405 Controls amount of blue in spill area.
9406 Should be -1 for bluescreen.
9407
9408 @item brightness
9409 Controls brightness of spill area, preserving colors.
9410
9411 @item alpha
9412 Modify alpha from generated spillmap.
9413 @end table
9414
9415 @subsection Commands
9416
9417 This filter supports the all above options as @ref{commands}.
9418
9419 @section detelecine
9420
9421 Apply an exact inverse of the telecine operation. It requires a predefined
9422 pattern specified using the pattern option which must be the same as that passed
9423 to the telecine filter.
9424
9425 This filter accepts the following options:
9426
9427 @table @option
9428 @item first_field
9429 @table @samp
9430 @item top, t
9431 top field first
9432 @item bottom, b
9433 bottom field first
9434 The default value is @code{top}.
9435 @end table
9436
9437 @item pattern
9438 A string of numbers representing the pulldown pattern you wish to apply.
9439 The default value is @code{23}.
9440
9441 @item start_frame
9442 A number representing position of the first frame with respect to the telecine
9443 pattern. This is to be used if the stream is cut. The default value is @code{0}.
9444 @end table
9445
9446 @section dilation
9447
9448 Apply dilation effect to the video.
9449
9450 This filter replaces the pixel by the local(3x3) maximum.
9451
9452 It accepts the following options:
9453
9454 @table @option
9455 @item threshold0
9456 @item threshold1
9457 @item threshold2
9458 @item threshold3
9459 Limit the maximum change for each plane, default is 65535.
9460 If 0, plane will remain unchanged.
9461
9462 @item coordinates
9463 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
9464 pixels are used.
9465
9466 Flags to local 3x3 coordinates maps like this:
9467
9468     1 2 3
9469     4   5
9470     6 7 8
9471 @end table
9472
9473 @subsection Commands
9474
9475 This filter supports the all above options as @ref{commands}.
9476
9477 @section displace
9478
9479 Displace pixels as indicated by second and third input stream.
9480
9481 It takes three input streams and outputs one stream, the first input is the
9482 source, and second and third input are displacement maps.
9483
9484 The second input specifies how much to displace pixels along the
9485 x-axis, while the third input specifies how much to displace pixels
9486 along the y-axis.
9487 If one of displacement map streams terminates, last frame from that
9488 displacement map will be used.
9489
9490 Note that once generated, displacements maps can be reused over and over again.
9491
9492 A description of the accepted options follows.
9493
9494 @table @option
9495 @item edge
9496 Set displace behavior for pixels that are out of range.
9497
9498 Available values are:
9499 @table @samp
9500 @item blank
9501 Missing pixels are replaced by black pixels.
9502
9503 @item smear
9504 Adjacent pixels will spread out to replace missing pixels.
9505
9506 @item wrap
9507 Out of range pixels are wrapped so they point to pixels of other side.
9508
9509 @item mirror
9510 Out of range pixels will be replaced with mirrored pixels.
9511 @end table
9512 Default is @samp{smear}.
9513
9514 @end table
9515
9516 @subsection Examples
9517
9518 @itemize
9519 @item
9520 Add ripple effect to rgb input of video size hd720:
9521 @example
9522 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
9523 @end example
9524
9525 @item
9526 Add wave effect to rgb input of video size hd720:
9527 @example
9528 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
9529 @end example
9530 @end itemize
9531
9532 @anchor{dnn_processing}
9533 @section dnn_processing
9534
9535 Do image processing with deep neural networks. It works together with another filter
9536 which converts the pixel format of the Frame to what the dnn network requires.
9537
9538 The filter accepts the following options:
9539
9540 @table @option
9541 @item dnn_backend
9542 Specify which DNN backend to use for model loading and execution. This option accepts
9543 the following values:
9544
9545 @table @samp
9546 @item native
9547 Native implementation of DNN loading and execution.
9548
9549 @item tensorflow
9550 TensorFlow backend. To enable this backend you
9551 need to install the TensorFlow for C library (see
9552 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
9553 @code{--enable-libtensorflow}
9554
9555 @item openvino
9556 OpenVINO backend. To enable this backend you
9557 need to build and install the OpenVINO for C library (see
9558 @url{https://github.com/openvinotoolkit/openvino/blob/master/build-instruction.md}) and configure FFmpeg with
9559 @code{--enable-libopenvino} (--extra-cflags=-I... --extra-ldflags=-L... might
9560 be needed if the header files and libraries are not installed into system path)
9561
9562 @end table
9563
9564 Default value is @samp{native}.
9565
9566 @item model
9567 Set path to model file specifying network architecture and its parameters.
9568 Note that different backends use different file formats. TensorFlow, OpenVINO and native
9569 backend can load files for only its format.
9570
9571 Native model file (.model) can be generated from TensorFlow model file (.pb) by using tools/python/convert.py
9572
9573 @item input
9574 Set the input name of the dnn network.
9575
9576 @item output
9577 Set the output name of the dnn network.
9578
9579 @end table
9580
9581 @subsection Examples
9582
9583 @itemize
9584 @item
9585 Remove rain in rgb24 frame with can.pb (see @ref{derain} filter):
9586 @example
9587 ./ffmpeg -i rain.jpg -vf format=rgb24,dnn_processing=dnn_backend=tensorflow:model=can.pb:input=x:output=y derain.jpg
9588 @end example
9589
9590 @item
9591 Halve the pixel value of the frame with format gray32f:
9592 @example
9593 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
9594 @end example
9595
9596 @item
9597 Handle the Y channel with srcnn.pb (see @ref{sr} filter) for frame with yuv420p (planar YUV formats supported):
9598 @example
9599 ./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
9600 @end example
9601
9602 @item
9603 Handle the Y channel with espcn.pb (see @ref{sr} filter), which changes frame size, for format yuv420p (planar YUV formats supported):
9604 @example
9605 ./ffmpeg -i 480p.jpg -vf format=yuv420p,dnn_processing=dnn_backend=tensorflow:model=espcn.pb:input=x:output=y -y tmp.espcn.jpg
9606 @end example
9607
9608 @end itemize
9609
9610 @section drawbox
9611
9612 Draw a colored box on the input image.
9613
9614 It accepts the following parameters:
9615
9616 @table @option
9617 @item x
9618 @item y
9619 The expressions which specify the top left corner coordinates of the box. It defaults to 0.
9620
9621 @item width, w
9622 @item height, h
9623 The expressions which specify the width and height of the box; if 0 they are interpreted as
9624 the input width and height. It defaults to 0.
9625
9626 @item color, c
9627 Specify the color of the box to write. For the general syntax of this option,
9628 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
9629 value @code{invert} is used, the box edge color is the same as the
9630 video with inverted luma.
9631
9632 @item thickness, t
9633 The expression which sets the thickness of the box edge.
9634 A value of @code{fill} will create a filled box. Default value is @code{3}.
9635
9636 See below for the list of accepted constants.
9637
9638 @item replace
9639 Applicable if the input has alpha. With value @code{1}, the pixels of the painted box
9640 will overwrite the video's color and alpha pixels.
9641 Default is @code{0}, which composites the box onto the input, leaving the video's alpha intact.
9642 @end table
9643
9644 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
9645 following constants:
9646
9647 @table @option
9648 @item dar
9649 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
9650
9651 @item hsub
9652 @item vsub
9653 horizontal and vertical chroma subsample values. For example for the
9654 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
9655
9656 @item in_h, ih
9657 @item in_w, iw
9658 The input width and height.
9659
9660 @item sar
9661 The input sample aspect ratio.
9662
9663 @item x
9664 @item y
9665 The x and y offset coordinates where the box is drawn.
9666
9667 @item w
9668 @item h
9669 The width and height of the drawn box.
9670
9671 @item t
9672 The thickness of the drawn box.
9673
9674 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
9675 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
9676
9677 @end table
9678
9679 @subsection Examples
9680
9681 @itemize
9682 @item
9683 Draw a black box around the edge of the input image:
9684 @example
9685 drawbox
9686 @end example
9687
9688 @item
9689 Draw a box with color red and an opacity of 50%:
9690 @example
9691 drawbox=10:20:200:60:red@@0.5
9692 @end example
9693
9694 The previous example can be specified as:
9695 @example
9696 drawbox=x=10:y=20:w=200:h=60:color=red@@0.5
9697 @end example
9698
9699 @item
9700 Fill the box with pink color:
9701 @example
9702 drawbox=x=10:y=10:w=100:h=100:color=pink@@0.5:t=fill
9703 @end example
9704
9705 @item
9706 Draw a 2-pixel red 2.40:1 mask:
9707 @example
9708 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
9709 @end example
9710 @end itemize
9711
9712 @subsection Commands
9713 This filter supports same commands as options.
9714 The command accepts the same syntax of the corresponding option.
9715
9716 If the specified expression is not valid, it is kept at its current
9717 value.
9718
9719 @anchor{drawgraph}
9720 @section drawgraph
9721 Draw a graph using input video metadata.
9722
9723 It accepts the following parameters:
9724
9725 @table @option
9726 @item m1
9727 Set 1st frame metadata key from which metadata values will be used to draw a graph.
9728
9729 @item fg1
9730 Set 1st foreground color expression.
9731
9732 @item m2
9733 Set 2nd frame metadata key from which metadata values will be used to draw a graph.
9734
9735 @item fg2
9736 Set 2nd foreground color expression.
9737
9738 @item m3
9739 Set 3rd frame metadata key from which metadata values will be used to draw a graph.
9740
9741 @item fg3
9742 Set 3rd foreground color expression.
9743
9744 @item m4
9745 Set 4th frame metadata key from which metadata values will be used to draw a graph.
9746
9747 @item fg4
9748 Set 4th foreground color expression.
9749
9750 @item min
9751 Set minimal value of metadata value.
9752
9753 @item max
9754 Set maximal value of metadata value.
9755
9756 @item bg
9757 Set graph background color. Default is white.
9758
9759 @item mode
9760 Set graph mode.
9761
9762 Available values for mode is:
9763 @table @samp
9764 @item bar
9765 @item dot
9766 @item line
9767 @end table
9768
9769 Default is @code{line}.
9770
9771 @item slide
9772 Set slide mode.
9773
9774 Available values for slide is:
9775 @table @samp
9776 @item frame
9777 Draw new frame when right border is reached.
9778
9779 @item replace
9780 Replace old columns with new ones.
9781
9782 @item scroll
9783 Scroll from right to left.
9784
9785 @item rscroll
9786 Scroll from left to right.
9787
9788 @item picture
9789 Draw single picture.
9790 @end table
9791
9792 Default is @code{frame}.
9793
9794 @item size
9795 Set size of graph video. For the syntax of this option, check the
9796 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
9797 The default value is @code{900x256}.
9798
9799 @item rate, r
9800 Set the output frame rate. Default value is @code{25}.
9801
9802 The foreground color expressions can use the following variables:
9803 @table @option
9804 @item MIN
9805 Minimal value of metadata value.
9806
9807 @item MAX
9808 Maximal value of metadata value.
9809
9810 @item VAL
9811 Current metadata key value.
9812 @end table
9813
9814 The color is defined as 0xAABBGGRR.
9815 @end table
9816
9817 Example using metadata from @ref{signalstats} filter:
9818 @example
9819 signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255
9820 @end example
9821
9822 Example using metadata from @ref{ebur128} filter:
9823 @example
9824 ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-120:max=5
9825 @end example
9826
9827 @section drawgrid
9828
9829 Draw a grid on the input image.
9830
9831 It accepts the following parameters:
9832
9833 @table @option
9834 @item x
9835 @item y
9836 The expressions which specify the coordinates of some point of grid intersection (meant to configure offset). Both default to 0.
9837
9838 @item width, w
9839 @item height, h
9840 The expressions which specify the width and height of the grid cell, if 0 they are interpreted as the
9841 input width and height, respectively, minus @code{thickness}, so image gets
9842 framed. Default to 0.
9843
9844 @item color, c
9845 Specify the color of the grid. For the general syntax of this option,
9846 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
9847 value @code{invert} is used, the grid color is the same as the
9848 video with inverted luma.
9849
9850 @item thickness, t
9851 The expression which sets the thickness of the grid line. Default value is @code{1}.
9852
9853 See below for the list of accepted constants.
9854
9855 @item replace
9856 Applicable if the input has alpha. With @code{1} the pixels of the painted grid
9857 will overwrite the video's color and alpha pixels.
9858 Default is @code{0}, which composites the grid onto the input, leaving the video's alpha intact.
9859 @end table
9860
9861 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
9862 following constants:
9863
9864 @table @option
9865 @item dar
9866 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
9867
9868 @item hsub
9869 @item vsub
9870 horizontal and vertical chroma subsample values. For example for the
9871 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
9872
9873 @item in_h, ih
9874 @item in_w, iw
9875 The input grid cell width and height.
9876
9877 @item sar
9878 The input sample aspect ratio.
9879
9880 @item x
9881 @item y
9882 The x and y coordinates of some point of grid intersection (meant to configure offset).
9883
9884 @item w
9885 @item h
9886 The width and height of the drawn cell.
9887
9888 @item t
9889 The thickness of the drawn cell.
9890
9891 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
9892 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
9893
9894 @end table
9895
9896 @subsection Examples
9897
9898 @itemize
9899 @item
9900 Draw a grid with cell 100x100 pixels, thickness 2 pixels, with color red and an opacity of 50%:
9901 @example
9902 drawgrid=width=100:height=100:thickness=2:color=red@@0.5
9903 @end example
9904
9905 @item
9906 Draw a white 3x3 grid with an opacity of 50%:
9907 @example
9908 drawgrid=w=iw/3:h=ih/3:t=2:c=white@@0.5
9909 @end example
9910 @end itemize
9911
9912 @subsection Commands
9913 This filter supports same commands as options.
9914 The command accepts the same syntax of the corresponding option.
9915
9916 If the specified expression is not valid, it is kept at its current
9917 value.
9918
9919 @anchor{drawtext}
9920 @section drawtext
9921
9922 Draw a text string or text from a specified file on top of a video, using the
9923 libfreetype library.
9924
9925 To enable compilation of this filter, you need to configure FFmpeg with
9926 @code{--enable-libfreetype}.
9927 To enable default font fallback and the @var{font} option you need to
9928 configure FFmpeg with @code{--enable-libfontconfig}.
9929 To enable the @var{text_shaping} option, you need to configure FFmpeg with
9930 @code{--enable-libfribidi}.
9931
9932 @subsection Syntax
9933
9934 It accepts the following parameters:
9935
9936 @table @option
9937
9938 @item box
9939 Used to draw a box around text using the background color.
9940 The value must be either 1 (enable) or 0 (disable).
9941 The default value of @var{box} is 0.
9942
9943 @item boxborderw
9944 Set the width of the border to be drawn around the box using @var{boxcolor}.
9945 The default value of @var{boxborderw} is 0.
9946
9947 @item boxcolor
9948 The color to be used for drawing box around text. For the syntax of this
9949 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
9950
9951 The default value of @var{boxcolor} is "white".
9952
9953 @item line_spacing
9954 Set the line spacing in pixels of the border to be drawn around the box using @var{box}.
9955 The default value of @var{line_spacing} is 0.
9956
9957 @item borderw
9958 Set the width of the border to be drawn around the text using @var{bordercolor}.
9959 The default value of @var{borderw} is 0.
9960
9961 @item bordercolor
9962 Set the color to be used for drawing border around text. For the syntax of this
9963 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
9964
9965 The default value of @var{bordercolor} is "black".
9966
9967 @item expansion
9968 Select how the @var{text} is expanded. Can be either @code{none},
9969 @code{strftime} (deprecated) or
9970 @code{normal} (default). See the @ref{drawtext_expansion, Text expansion} section
9971 below for details.
9972
9973 @item basetime
9974 Set a start time for the count. Value is in microseconds. Only applied
9975 in the deprecated strftime expansion mode. To emulate in normal expansion
9976 mode use the @code{pts} function, supplying the start time (in seconds)
9977 as the second argument.
9978
9979 @item fix_bounds
9980 If true, check and fix text coords to avoid clipping.
9981
9982 @item fontcolor
9983 The color to be used for drawing fonts. For the syntax of this option, check
9984 the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
9985
9986 The default value of @var{fontcolor} is "black".
9987
9988 @item fontcolor_expr
9989 String which is expanded the same way as @var{text} to obtain dynamic
9990 @var{fontcolor} value. By default this option has empty value and is not
9991 processed. When this option is set, it overrides @var{fontcolor} option.
9992
9993 @item font
9994 The font family to be used for drawing text. By default Sans.
9995
9996 @item fontfile
9997 The font file to be used for drawing text. The path must be included.
9998 This parameter is mandatory if the fontconfig support is disabled.
9999
10000 @item alpha
10001 Draw the text applying alpha blending. The value can
10002 be a number between 0.0 and 1.0.
10003 The expression accepts the same variables @var{x, y} as well.
10004 The default value is 1.
10005 Please see @var{fontcolor_expr}.
10006
10007 @item fontsize
10008 The font size to be used for drawing text.
10009 The default value of @var{fontsize} is 16.
10010
10011 @item text_shaping
10012 If set to 1, attempt to shape the text (for example, reverse the order of
10013 right-to-left text and join Arabic characters) before drawing it.
10014 Otherwise, just draw the text exactly as given.
10015 By default 1 (if supported).
10016
10017 @item ft_load_flags
10018 The flags to be used for loading the fonts.
10019
10020 The flags map the corresponding flags supported by libfreetype, and are
10021 a combination of the following values:
10022 @table @var
10023 @item default
10024 @item no_scale
10025 @item no_hinting
10026 @item render
10027 @item no_bitmap
10028 @item vertical_layout
10029 @item force_autohint
10030 @item crop_bitmap
10031 @item pedantic
10032 @item ignore_global_advance_width
10033 @item no_recurse
10034 @item ignore_transform
10035 @item monochrome
10036 @item linear_design
10037 @item no_autohint
10038 @end table
10039
10040 Default value is "default".
10041
10042 For more information consult the documentation for the FT_LOAD_*
10043 libfreetype flags.
10044
10045 @item shadowcolor
10046 The color to be used for drawing a shadow behind the drawn text. For the
10047 syntax of this option, check the @ref{color syntax,,"Color" section in the
10048 ffmpeg-utils manual,ffmpeg-utils}.
10049
10050 The default value of @var{shadowcolor} is "black".
10051
10052 @item shadowx
10053 @item shadowy
10054 The x and y offsets for the text shadow position with respect to the
10055 position of the text. They can be either positive or negative
10056 values. The default value for both is "0".
10057
10058 @item start_number
10059 The starting frame number for the n/frame_num variable. The default value
10060 is "0".
10061
10062 @item tabsize
10063 The size in number of spaces to use for rendering the tab.
10064 Default value is 4.
10065
10066 @item timecode
10067 Set the initial timecode representation in "hh:mm:ss[:;.]ff"
10068 format. It can be used with or without text parameter. @var{timecode_rate}
10069 option must be specified.
10070
10071 @item timecode_rate, rate, r
10072 Set the timecode frame rate (timecode only). Value will be rounded to nearest
10073 integer. Minimum value is "1".
10074 Drop-frame timecode is supported for frame rates 30 & 60.
10075
10076 @item tc24hmax
10077 If set to 1, the output of the timecode option will wrap around at 24 hours.
10078 Default is 0 (disabled).
10079
10080 @item text
10081 The text string to be drawn. The text must be a sequence of UTF-8
10082 encoded characters.
10083 This parameter is mandatory if no file is specified with the parameter
10084 @var{textfile}.
10085
10086 @item textfile
10087 A text file containing text to be drawn. The text must be a sequence
10088 of UTF-8 encoded characters.
10089
10090 This parameter is mandatory if no text string is specified with the
10091 parameter @var{text}.
10092
10093 If both @var{text} and @var{textfile} are specified, an error is thrown.
10094
10095 @item reload
10096 If set to 1, the @var{textfile} will be reloaded before each frame.
10097 Be sure to update it atomically, or it may be read partially, or even fail.
10098
10099 @item x
10100 @item y
10101 The expressions which specify the offsets where text will be drawn
10102 within the video frame. They are relative to the top/left border of the
10103 output image.
10104
10105 The default value of @var{x} and @var{y} is "0".
10106
10107 See below for the list of accepted constants and functions.
10108 @end table
10109
10110 The parameters for @var{x} and @var{y} are expressions containing the
10111 following constants and functions:
10112
10113 @table @option
10114 @item dar
10115 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
10116
10117 @item hsub
10118 @item vsub
10119 horizontal and vertical chroma subsample values. For example for the
10120 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
10121
10122 @item line_h, lh
10123 the height of each text line
10124
10125 @item main_h, h, H
10126 the input height
10127
10128 @item main_w, w, W
10129 the input width
10130
10131 @item max_glyph_a, ascent
10132 the maximum distance from the baseline to the highest/upper grid
10133 coordinate used to place a glyph outline point, for all the rendered
10134 glyphs.
10135 It is a positive value, due to the grid's orientation with the Y axis
10136 upwards.
10137
10138 @item max_glyph_d, descent
10139 the maximum distance from the baseline to the lowest grid coordinate
10140 used to place a glyph outline point, for all the rendered glyphs.
10141 This is a negative value, due to the grid's orientation, with the Y axis
10142 upwards.
10143
10144 @item max_glyph_h
10145 maximum glyph height, that is the maximum height for all the glyphs
10146 contained in the rendered text, it is equivalent to @var{ascent} -
10147 @var{descent}.
10148
10149 @item max_glyph_w
10150 maximum glyph width, that is the maximum width for all the glyphs
10151 contained in the rendered text
10152
10153 @item n
10154 the number of input frame, starting from 0
10155
10156 @item rand(min, max)
10157 return a random number included between @var{min} and @var{max}
10158
10159 @item sar
10160 The input sample aspect ratio.
10161
10162 @item t
10163 timestamp expressed in seconds, NAN if the input timestamp is unknown
10164
10165 @item text_h, th
10166 the height of the rendered text
10167
10168 @item text_w, tw
10169 the width of the rendered text
10170
10171 @item x
10172 @item y
10173 the x and y offset coordinates where the text is drawn.
10174
10175 These parameters allow the @var{x} and @var{y} expressions to refer
10176 to each other, so you can for example specify @code{y=x/dar}.
10177
10178 @item pict_type
10179 A one character description of the current frame's picture type.
10180
10181 @item pkt_pos
10182 The current packet's position in the input file or stream
10183 (in bytes, from the start of the input). A value of -1 indicates
10184 this info is not available.
10185
10186 @item pkt_duration
10187 The current packet's duration, in seconds.
10188
10189 @item pkt_size
10190 The current packet's size (in bytes).
10191 @end table
10192
10193 @anchor{drawtext_expansion}
10194 @subsection Text expansion
10195
10196 If @option{expansion} is set to @code{strftime},
10197 the filter recognizes strftime() sequences in the provided text and
10198 expands them accordingly. Check the documentation of strftime(). This
10199 feature is deprecated.
10200
10201 If @option{expansion} is set to @code{none}, the text is printed verbatim.
10202
10203 If @option{expansion} is set to @code{normal} (which is the default),
10204 the following expansion mechanism is used.
10205
10206 The backslash character @samp{\}, followed by any character, always expands to
10207 the second character.
10208
10209 Sequences of the form @code{%@{...@}} are expanded. The text between the
10210 braces is a function name, possibly followed by arguments separated by ':'.
10211 If the arguments contain special characters or delimiters (':' or '@}'),
10212 they should be escaped.
10213
10214 Note that they probably must also be escaped as the value for the
10215 @option{text} option in the filter argument string and as the filter
10216 argument in the filtergraph description, and possibly also for the shell,
10217 that makes up to four levels of escaping; using a text file avoids these
10218 problems.
10219
10220 The following functions are available:
10221
10222 @table @command
10223
10224 @item expr, e
10225 The expression evaluation result.
10226
10227 It must take one argument specifying the expression to be evaluated,
10228 which accepts the same constants and functions as the @var{x} and
10229 @var{y} values. Note that not all constants should be used, for
10230 example the text size is not known when evaluating the expression, so
10231 the constants @var{text_w} and @var{text_h} will have an undefined
10232 value.
10233
10234 @item expr_int_format, eif
10235 Evaluate the expression's value and output as formatted integer.
10236
10237 The first argument is the expression to be evaluated, just as for the @var{expr} function.
10238 The second argument specifies the output format. Allowed values are @samp{x},
10239 @samp{X}, @samp{d} and @samp{u}. They are treated exactly as in the
10240 @code{printf} function.
10241 The third parameter is optional and sets the number of positions taken by the output.
10242 It can be used to add padding with zeros from the left.
10243
10244 @item gmtime
10245 The time at which the filter is running, expressed in UTC.
10246 It can accept an argument: a strftime() format string.
10247
10248 @item localtime
10249 The time at which the filter is running, expressed in the local time zone.
10250 It can accept an argument: a strftime() format string.
10251
10252 @item metadata
10253 Frame metadata. Takes one or two arguments.
10254
10255 The first argument is mandatory and specifies the metadata key.
10256
10257 The second argument is optional and specifies a default value, used when the
10258 metadata key is not found or empty.
10259
10260 Available metadata can be identified by inspecting entries
10261 starting with TAG included within each frame section
10262 printed by running @code{ffprobe -show_frames}.
10263
10264 String metadata generated in filters leading to
10265 the drawtext filter are also available.
10266
10267 @item n, frame_num
10268 The frame number, starting from 0.
10269
10270 @item pict_type
10271 A one character description of the current picture type.
10272
10273 @item pts
10274 The timestamp of the current frame.
10275 It can take up to three arguments.
10276
10277 The first argument is the format of the timestamp; it defaults to @code{flt}
10278 for seconds as a decimal number with microsecond accuracy; @code{hms} stands
10279 for a formatted @var{[-]HH:MM:SS.mmm} timestamp with millisecond accuracy.
10280 @code{gmtime} stands for the timestamp of the frame formatted as UTC time;
10281 @code{localtime} stands for the timestamp of the frame formatted as
10282 local time zone time.
10283
10284 The second argument is an offset added to the timestamp.
10285
10286 If the format is set to @code{hms}, a third argument @code{24HH} may be
10287 supplied to present the hour part of the formatted timestamp in 24h format
10288 (00-23).
10289
10290 If the format is set to @code{localtime} or @code{gmtime},
10291 a third argument may be supplied: a strftime() format string.
10292 By default, @var{YYYY-MM-DD HH:MM:SS} format will be used.
10293 @end table
10294
10295 @subsection Commands
10296
10297 This filter supports altering parameters via commands:
10298 @table @option
10299 @item reinit
10300 Alter existing filter parameters.
10301
10302 Syntax for the argument is the same as for filter invocation, e.g.
10303
10304 @example
10305 fontsize=56:fontcolor=green:text='Hello World'
10306 @end example
10307
10308 Full filter invocation with sendcmd would look like this:
10309
10310 @example
10311 sendcmd=c='56.0 drawtext reinit fontsize=56\:fontcolor=green\:text=Hello\\ World'
10312 @end example
10313 @end table
10314
10315 If the entire argument can't be parsed or applied as valid values then the filter will
10316 continue with its existing parameters.
10317
10318 @subsection Examples
10319
10320 @itemize
10321 @item
10322 Draw "Test Text" with font FreeSerif, using the default values for the
10323 optional parameters.
10324
10325 @example
10326 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
10327 @end example
10328
10329 @item
10330 Draw 'Test Text' with font FreeSerif of size 24 at position x=100
10331 and y=50 (counting from the top-left corner of the screen), text is
10332 yellow with a red box around it. Both the text and the box have an
10333 opacity of 20%.
10334
10335 @example
10336 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
10337           x=100: y=50: fontsize=24: fontcolor=yellow@@0.2: box=1: boxcolor=red@@0.2"
10338 @end example
10339
10340 Note that the double quotes are not necessary if spaces are not used
10341 within the parameter list.
10342
10343 @item
10344 Show the text at the center of the video frame:
10345 @example
10346 drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h)/2"
10347 @end example
10348
10349 @item
10350 Show the text at a random position, switching to a new position every 30 seconds:
10351 @example
10352 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)"
10353 @end example
10354
10355 @item
10356 Show a text line sliding from right to left in the last row of the video
10357 frame. The file @file{LONG_LINE} is assumed to contain a single line
10358 with no newlines.
10359 @example
10360 drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
10361 @end example
10362
10363 @item
10364 Show the content of file @file{CREDITS} off the bottom of the frame and scroll up.
10365 @example
10366 drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
10367 @end example
10368
10369 @item
10370 Draw a single green letter "g", at the center of the input video.
10371 The glyph baseline is placed at half screen height.
10372 @example
10373 drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
10374 @end example
10375
10376 @item
10377 Show text for 1 second every 3 seconds:
10378 @example
10379 drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'"
10380 @end example
10381
10382 @item
10383 Use fontconfig to set the font. Note that the colons need to be escaped.
10384 @example
10385 drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
10386 @end example
10387
10388 @item
10389 Draw "Test Text" with font size dependent on height of the video.
10390 @example
10391 drawtext="text='Test Text': fontsize=h/30: x=(w-text_w)/2: y=(h-text_h*2)"
10392 @end example
10393
10394 @item
10395 Print the date of a real-time encoding (see strftime(3)):
10396 @example
10397 drawtext='fontfile=FreeSans.ttf:text=%@{localtime\:%a %b %d %Y@}'
10398 @end example
10399
10400 @item
10401 Show text fading in and out (appearing/disappearing):
10402 @example
10403 #!/bin/sh
10404 DS=1.0 # display start
10405 DE=10.0 # display end
10406 FID=1.5 # fade in duration
10407 FOD=5 # fade out duration
10408 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 @}"
10409 @end example
10410
10411 @item
10412 Horizontally align multiple separate texts. Note that @option{max_glyph_a}
10413 and the @option{fontsize} value are included in the @option{y} offset.
10414 @example
10415 drawtext=fontfile=FreeSans.ttf:text=DOG:fontsize=24:x=10:y=20+24-max_glyph_a,
10416 drawtext=fontfile=FreeSans.ttf:text=cow:fontsize=24:x=80:y=20+24-max_glyph_a
10417 @end example
10418
10419 @item
10420 Plot special @var{lavf.image2dec.source_basename} metadata onto each frame if
10421 such metadata exists. Otherwise, plot the string "NA". Note that image2 demuxer
10422 must have option @option{-export_path_metadata 1} for the special metadata fields
10423 to be available for filters.
10424 @example
10425 drawtext="fontsize=20:fontcolor=white:fontfile=FreeSans.ttf:text='%@{metadata\:lavf.image2dec.source_basename\:NA@}':x=10:y=10"
10426 @end example
10427
10428 @end itemize
10429
10430 For more information about libfreetype, check:
10431 @url{http://www.freetype.org/}.
10432
10433 For more information about fontconfig, check:
10434 @url{http://freedesktop.org/software/fontconfig/fontconfig-user.html}.
10435
10436 For more information about libfribidi, check:
10437 @url{http://fribidi.org/}.
10438
10439 @section edgedetect
10440
10441 Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
10442
10443 The filter accepts the following options:
10444
10445 @table @option
10446 @item low
10447 @item high
10448 Set low and high threshold values used by the Canny thresholding
10449 algorithm.
10450
10451 The high threshold selects the "strong" edge pixels, which are then
10452 connected through 8-connectivity with the "weak" edge pixels selected
10453 by the low threshold.
10454
10455 @var{low} and @var{high} threshold values must be chosen in the range
10456 [0,1], and @var{low} should be lesser or equal to @var{high}.
10457
10458 Default value for @var{low} is @code{20/255}, and default value for @var{high}
10459 is @code{50/255}.
10460
10461 @item mode
10462 Define the drawing mode.
10463
10464 @table @samp
10465 @item wires
10466 Draw white/gray wires on black background.
10467
10468 @item colormix
10469 Mix the colors to create a paint/cartoon effect.
10470
10471 @item canny
10472 Apply Canny edge detector on all selected planes.
10473 @end table
10474 Default value is @var{wires}.
10475
10476 @item planes
10477 Select planes for filtering. By default all available planes are filtered.
10478 @end table
10479
10480 @subsection Examples
10481
10482 @itemize
10483 @item
10484 Standard edge detection with custom values for the hysteresis thresholding:
10485 @example
10486 edgedetect=low=0.1:high=0.4
10487 @end example
10488
10489 @item
10490 Painting effect without thresholding:
10491 @example
10492 edgedetect=mode=colormix:high=0
10493 @end example
10494 @end itemize
10495
10496 @section elbg
10497
10498 Apply a posterize effect using the ELBG (Enhanced LBG) algorithm.
10499
10500 For each input image, the filter will compute the optimal mapping from
10501 the input to the output given the codebook length, that is the number
10502 of distinct output colors.
10503
10504 This filter accepts the following options.
10505
10506 @table @option
10507 @item codebook_length, l
10508 Set codebook length. The value must be a positive integer, and
10509 represents the number of distinct output colors. Default value is 256.
10510
10511 @item nb_steps, n
10512 Set the maximum number of iterations to apply for computing the optimal
10513 mapping. The higher the value the better the result and the higher the
10514 computation time. Default value is 1.
10515
10516 @item seed, s
10517 Set a random seed, must be an integer included between 0 and
10518 UINT32_MAX. If not specified, or if explicitly set to -1, the filter
10519 will try to use a good random seed on a best effort basis.
10520
10521 @item pal8
10522 Set pal8 output pixel format. This option does not work with codebook
10523 length greater than 256.
10524 @end table
10525
10526 @section entropy
10527
10528 Measure graylevel entropy in histogram of color channels of video frames.
10529
10530 It accepts the following parameters:
10531
10532 @table @option
10533 @item mode
10534 Can be either @var{normal} or @var{diff}. Default is @var{normal}.
10535
10536 @var{diff} mode measures entropy of histogram delta values, absolute differences
10537 between neighbour histogram values.
10538 @end table
10539
10540 @section eq
10541 Set brightness, contrast, saturation and approximate gamma adjustment.
10542
10543 The filter accepts the following options:
10544
10545 @table @option
10546 @item contrast
10547 Set the contrast expression. The value must be a float value in range
10548 @code{-1000.0} to @code{1000.0}. The default value is "1".
10549
10550 @item brightness
10551 Set the brightness expression. The value must be a float value in
10552 range @code{-1.0} to @code{1.0}. The default value is "0".
10553
10554 @item saturation
10555 Set the saturation expression. The value must be a float in
10556 range @code{0.0} to @code{3.0}. The default value is "1".
10557
10558 @item gamma
10559 Set the gamma expression. The value must be a float in range
10560 @code{0.1} to @code{10.0}.  The default value is "1".
10561
10562 @item gamma_r
10563 Set the gamma expression for red. The value must be a float in
10564 range @code{0.1} to @code{10.0}. The default value is "1".
10565
10566 @item gamma_g
10567 Set the gamma expression for green. The value must be a float in range
10568 @code{0.1} to @code{10.0}. The default value is "1".
10569
10570 @item gamma_b
10571 Set the gamma expression for blue. The value must be a float in range
10572 @code{0.1} to @code{10.0}. The default value is "1".
10573
10574 @item gamma_weight
10575 Set the gamma weight expression. It can be used to reduce the effect
10576 of a high gamma value on bright image areas, e.g. keep them from
10577 getting overamplified and just plain white. The value must be a float
10578 in range @code{0.0} to @code{1.0}. A value of @code{0.0} turns the
10579 gamma correction all the way down while @code{1.0} leaves it at its
10580 full strength. Default is "1".
10581
10582 @item eval
10583 Set when the expressions for brightness, contrast, saturation and
10584 gamma expressions are evaluated.
10585
10586 It accepts the following values:
10587 @table @samp
10588 @item init
10589 only evaluate expressions once during the filter initialization or
10590 when a command is processed
10591
10592 @item frame
10593 evaluate expressions for each incoming frame
10594 @end table
10595
10596 Default value is @samp{init}.
10597 @end table
10598
10599 The expressions accept the following parameters:
10600 @table @option
10601 @item n
10602 frame count of the input frame starting from 0
10603
10604 @item pos
10605 byte position of the corresponding packet in the input file, NAN if
10606 unspecified
10607
10608 @item r
10609 frame rate of the input video, NAN if the input frame rate is unknown
10610
10611 @item t
10612 timestamp expressed in seconds, NAN if the input timestamp is unknown
10613 @end table
10614
10615 @subsection Commands
10616 The filter supports the following commands:
10617
10618 @table @option
10619 @item contrast
10620 Set the contrast expression.
10621
10622 @item brightness
10623 Set the brightness expression.
10624
10625 @item saturation
10626 Set the saturation expression.
10627
10628 @item gamma
10629 Set the gamma expression.
10630
10631 @item gamma_r
10632 Set the gamma_r expression.
10633
10634 @item gamma_g
10635 Set gamma_g expression.
10636
10637 @item gamma_b
10638 Set gamma_b expression.
10639
10640 @item gamma_weight
10641 Set gamma_weight expression.
10642
10643 The command accepts the same syntax of the corresponding option.
10644
10645 If the specified expression is not valid, it is kept at its current
10646 value.
10647
10648 @end table
10649
10650 @section erosion
10651
10652 Apply erosion effect to the video.
10653
10654 This filter replaces the pixel by the local(3x3) minimum.
10655
10656 It accepts the following options:
10657
10658 @table @option
10659 @item threshold0
10660 @item threshold1
10661 @item threshold2
10662 @item threshold3
10663 Limit the maximum change for each plane, default is 65535.
10664 If 0, plane will remain unchanged.
10665
10666 @item coordinates
10667 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
10668 pixels are used.
10669
10670 Flags to local 3x3 coordinates maps like this:
10671
10672     1 2 3
10673     4   5
10674     6 7 8
10675 @end table
10676
10677 @subsection Commands
10678
10679 This filter supports the all above options as @ref{commands}.
10680
10681 @section extractplanes
10682
10683 Extract color channel components from input video stream into
10684 separate grayscale video streams.
10685
10686 The filter accepts the following option:
10687
10688 @table @option
10689 @item planes
10690 Set plane(s) to extract.
10691
10692 Available values for planes are:
10693 @table @samp
10694 @item y
10695 @item u
10696 @item v
10697 @item a
10698 @item r
10699 @item g
10700 @item b
10701 @end table
10702
10703 Choosing planes not available in the input will result in an error.
10704 That means you cannot select @code{r}, @code{g}, @code{b} planes
10705 with @code{y}, @code{u}, @code{v} planes at same time.
10706 @end table
10707
10708 @subsection Examples
10709
10710 @itemize
10711 @item
10712 Extract luma, u and v color channel component from input video frame
10713 into 3 grayscale outputs:
10714 @example
10715 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
10716 @end example
10717 @end itemize
10718
10719 @section fade
10720
10721 Apply a fade-in/out effect to the input video.
10722
10723 It accepts the following parameters:
10724
10725 @table @option
10726 @item type, t
10727 The effect type can be either "in" for a fade-in, or "out" for a fade-out
10728 effect.
10729 Default is @code{in}.
10730
10731 @item start_frame, s
10732 Specify the number of the frame to start applying the fade
10733 effect at. Default is 0.
10734
10735 @item nb_frames, n
10736 The number of frames that the fade effect lasts. At the end of the
10737 fade-in effect, the output video will have the same intensity as the input video.
10738 At the end of the fade-out transition, the output video will be filled with the
10739 selected @option{color}.
10740 Default is 25.
10741
10742 @item alpha
10743 If set to 1, fade only alpha channel, if one exists on the input.
10744 Default value is 0.
10745
10746 @item start_time, st
10747 Specify the timestamp (in seconds) of the frame to start to apply the fade
10748 effect. If both start_frame and start_time are specified, the fade will start at
10749 whichever comes last.  Default is 0.
10750
10751 @item duration, d
10752 The number of seconds for which the fade effect has to last. At the end of the
10753 fade-in effect the output video will have the same intensity as the input video,
10754 at the end of the fade-out transition the output video will be filled with the
10755 selected @option{color}.
10756 If both duration and nb_frames are specified, duration is used. Default is 0
10757 (nb_frames is used by default).
10758
10759 @item color, c
10760 Specify the color of the fade. Default is "black".
10761 @end table
10762
10763 @subsection Examples
10764
10765 @itemize
10766 @item
10767 Fade in the first 30 frames of video:
10768 @example
10769 fade=in:0:30
10770 @end example
10771
10772 The command above is equivalent to:
10773 @example
10774 fade=t=in:s=0:n=30
10775 @end example
10776
10777 @item
10778 Fade out the last 45 frames of a 200-frame video:
10779 @example
10780 fade=out:155:45
10781 fade=type=out:start_frame=155:nb_frames=45
10782 @end example
10783
10784 @item
10785 Fade in the first 25 frames and fade out the last 25 frames of a 1000-frame video:
10786 @example
10787 fade=in:0:25, fade=out:975:25
10788 @end example
10789
10790 @item
10791 Make the first 5 frames yellow, then fade in from frame 5-24:
10792 @example
10793 fade=in:5:20:color=yellow
10794 @end example
10795
10796 @item
10797 Fade in alpha over first 25 frames of video:
10798 @example
10799 fade=in:0:25:alpha=1
10800 @end example
10801
10802 @item
10803 Make the first 5.5 seconds black, then fade in for 0.5 seconds:
10804 @example
10805 fade=t=in:st=5.5:d=0.5
10806 @end example
10807
10808 @end itemize
10809
10810 @section fftdnoiz
10811 Denoise frames using 3D FFT (frequency domain filtering).
10812
10813 The filter accepts the following options:
10814
10815 @table @option
10816 @item sigma
10817 Set the noise sigma constant. This sets denoising strength.
10818 Default value is 1. Allowed range is from 0 to 30.
10819 Using very high sigma with low overlap may give blocking artifacts.
10820
10821 @item amount
10822 Set amount of denoising. By default all detected noise is reduced.
10823 Default value is 1. Allowed range is from 0 to 1.
10824
10825 @item block
10826 Set size of block, Default is 4, can be 3, 4, 5 or 6.
10827 Actual size of block in pixels is 2 to power of @var{block}, so by default
10828 block size in pixels is 2^4 which is 16.
10829
10830 @item overlap
10831 Set block overlap. Default is 0.5. Allowed range is from 0.2 to 0.8.
10832
10833 @item prev
10834 Set number of previous frames to use for denoising. By default is set to 0.
10835
10836 @item next
10837 Set number of next frames to to use for denoising. By default is set to 0.
10838
10839 @item planes
10840 Set planes which will be filtered, by default are all available filtered
10841 except alpha.
10842 @end table
10843
10844 @section fftfilt
10845 Apply arbitrary expressions to samples in frequency domain
10846
10847 @table @option
10848 @item dc_Y
10849 Adjust the dc value (gain) of the luma plane of the image. The filter
10850 accepts an integer value in range @code{0} to @code{1000}. The default
10851 value is set to @code{0}.
10852
10853 @item dc_U
10854 Adjust the dc value (gain) of the 1st chroma plane of the image. The
10855 filter accepts an integer value in range @code{0} to @code{1000}. The
10856 default value is set to @code{0}.
10857
10858 @item dc_V
10859 Adjust the dc value (gain) of the 2nd chroma plane of the image. The
10860 filter accepts an integer value in range @code{0} to @code{1000}. The
10861 default value is set to @code{0}.
10862
10863 @item weight_Y
10864 Set the frequency domain weight expression for the luma plane.
10865
10866 @item weight_U
10867 Set the frequency domain weight expression for the 1st chroma plane.
10868
10869 @item weight_V
10870 Set the frequency domain weight expression for the 2nd chroma plane.
10871
10872 @item eval
10873 Set when the expressions are evaluated.
10874
10875 It accepts the following values:
10876 @table @samp
10877 @item init
10878 Only evaluate expressions once during the filter initialization.
10879
10880 @item frame
10881 Evaluate expressions for each incoming frame.
10882 @end table
10883
10884 Default value is @samp{init}.
10885
10886 The filter accepts the following variables:
10887 @item X
10888 @item Y
10889 The coordinates of the current sample.
10890
10891 @item W
10892 @item H
10893 The width and height of the image.
10894
10895 @item N
10896 The number of input frame, starting from 0.
10897 @end table
10898
10899 @subsection Examples
10900
10901 @itemize
10902 @item
10903 High-pass:
10904 @example
10905 fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)'
10906 @end example
10907
10908 @item
10909 Low-pass:
10910 @example
10911 fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)'
10912 @end example
10913
10914 @item
10915 Sharpen:
10916 @example
10917 fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)'
10918 @end example
10919
10920 @item
10921 Blur:
10922 @example
10923 fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))'
10924 @end example
10925
10926 @end itemize
10927
10928 @section field
10929
10930 Extract a single field from an interlaced image using stride
10931 arithmetic to avoid wasting CPU time. The output frames are marked as
10932 non-interlaced.
10933
10934 The filter accepts the following options:
10935
10936 @table @option
10937 @item type
10938 Specify whether to extract the top (if the value is @code{0} or
10939 @code{top}) or the bottom field (if the value is @code{1} or
10940 @code{bottom}).
10941 @end table
10942
10943 @section fieldhint
10944
10945 Create new frames by copying the top and bottom fields from surrounding frames
10946 supplied as numbers by the hint file.
10947
10948 @table @option
10949 @item hint
10950 Set file containing hints: absolute/relative frame numbers.
10951
10952 There must be one line for each frame in a clip. Each line must contain two
10953 numbers separated by the comma, optionally followed by @code{-} or @code{+}.
10954 Numbers supplied on each line of file can not be out of [N-1,N+1] where N
10955 is current frame number for @code{absolute} mode or out of [-1, 1] range
10956 for @code{relative} mode. First number tells from which frame to pick up top
10957 field and second number tells from which frame to pick up bottom field.
10958
10959 If optionally followed by @code{+} output frame will be marked as interlaced,
10960 else if followed by @code{-} output frame will be marked as progressive, else
10961 it will be marked same as input frame.
10962 If optionally followed by @code{t} output frame will use only top field, or in
10963 case of @code{b} it will use only bottom field.
10964 If line starts with @code{#} or @code{;} that line is skipped.
10965
10966 @item mode
10967 Can be item @code{absolute} or @code{relative}. Default is @code{absolute}.
10968 @end table
10969
10970 Example of first several lines of @code{hint} file for @code{relative} mode:
10971 @example
10972 0,0 - # first frame
10973 1,0 - # second frame, use third's frame top field and second's frame bottom field
10974 1,0 - # third frame, use fourth's frame top field and third's frame bottom field
10975 1,0 -
10976 0,0 -
10977 0,0 -
10978 1,0 -
10979 1,0 -
10980 1,0 -
10981 0,0 -
10982 0,0 -
10983 1,0 -
10984 1,0 -
10985 1,0 -
10986 0,0 -
10987 @end example
10988
10989 @section fieldmatch
10990
10991 Field matching filter for inverse telecine. It is meant to reconstruct the
10992 progressive frames from a telecined stream. The filter does not drop duplicated
10993 frames, so to achieve a complete inverse telecine @code{fieldmatch} needs to be
10994 followed by a decimation filter such as @ref{decimate} in the filtergraph.
10995
10996 The separation of the field matching and the decimation is notably motivated by
10997 the possibility of inserting a de-interlacing filter fallback between the two.
10998 If the source has mixed telecined and real interlaced content,
10999 @code{fieldmatch} will not be able to match fields for the interlaced parts.
11000 But these remaining combed frames will be marked as interlaced, and thus can be
11001 de-interlaced by a later filter such as @ref{yadif} before decimation.
11002
11003 In addition to the various configuration options, @code{fieldmatch} can take an
11004 optional second stream, activated through the @option{ppsrc} option. If
11005 enabled, the frames reconstruction will be based on the fields and frames from
11006 this second stream. This allows the first input to be pre-processed in order to
11007 help the various algorithms of the filter, while keeping the output lossless
11008 (assuming the fields are matched properly). Typically, a field-aware denoiser,
11009 or brightness/contrast adjustments can help.
11010
11011 Note that this filter uses the same algorithms as TIVTC/TFM (AviSynth project)
11012 and VIVTC/VFM (VapourSynth project). The later is a light clone of TFM from
11013 which @code{fieldmatch} is based on. While the semantic and usage are very
11014 close, some behaviour and options names can differ.
11015
11016 The @ref{decimate} filter currently only works for constant frame rate input.
11017 If your input has mixed telecined (30fps) and progressive content with a lower
11018 framerate like 24fps use the following filterchain to produce the necessary cfr
11019 stream: @code{dejudder,fps=30000/1001,fieldmatch,decimate}.
11020
11021 The filter accepts the following options:
11022
11023 @table @option
11024 @item order
11025 Specify the assumed field order of the input stream. Available values are:
11026
11027 @table @samp
11028 @item auto
11029 Auto detect parity (use FFmpeg's internal parity value).
11030 @item bff
11031 Assume bottom field first.
11032 @item tff
11033 Assume top field first.
11034 @end table
11035
11036 Note that it is sometimes recommended not to trust the parity announced by the
11037 stream.
11038
11039 Default value is @var{auto}.
11040
11041 @item mode
11042 Set the matching mode or strategy to use. @option{pc} mode is the safest in the
11043 sense that it won't risk creating jerkiness due to duplicate frames when
11044 possible, but if there are bad edits or blended fields it will end up
11045 outputting combed frames when a good match might actually exist. On the other
11046 hand, @option{pcn_ub} mode is the most risky in terms of creating jerkiness,
11047 but will almost always find a good frame if there is one. The other values are
11048 all somewhere in between @option{pc} and @option{pcn_ub} in terms of risking
11049 jerkiness and creating duplicate frames versus finding good matches in sections
11050 with bad edits, orphaned fields, blended fields, etc.
11051
11052 More details about p/c/n/u/b are available in @ref{p/c/n/u/b meaning} section.
11053
11054 Available values are:
11055
11056 @table @samp
11057 @item pc
11058 2-way matching (p/c)
11059 @item pc_n
11060 2-way matching, and trying 3rd match if still combed (p/c + n)
11061 @item pc_u
11062 2-way matching, and trying 3rd match (same order) if still combed (p/c + u)
11063 @item pc_n_ub
11064 2-way matching, trying 3rd match if still combed, and trying 4th/5th matches if
11065 still combed (p/c + n + u/b)
11066 @item pcn
11067 3-way matching (p/c/n)
11068 @item pcn_ub
11069 3-way matching, and trying 4th/5th matches if all 3 of the original matches are
11070 detected as combed (p/c/n + u/b)
11071 @end table
11072
11073 The parenthesis at the end indicate the matches that would be used for that
11074 mode assuming @option{order}=@var{tff} (and @option{field} on @var{auto} or
11075 @var{top}).
11076
11077 In terms of speed @option{pc} mode is by far the fastest and @option{pcn_ub} is
11078 the slowest.
11079
11080 Default value is @var{pc_n}.
11081
11082 @item ppsrc
11083 Mark the main input stream as a pre-processed input, and enable the secondary
11084 input stream as the clean source to pick the fields from. See the filter
11085 introduction for more details. It is similar to the @option{clip2} feature from
11086 VFM/TFM.
11087
11088 Default value is @code{0} (disabled).
11089
11090 @item field
11091 Set the field to match from. It is recommended to set this to the same value as
11092 @option{order} unless you experience matching failures with that setting. In
11093 certain circumstances changing the field that is used to match from can have a
11094 large impact on matching performance. Available values are:
11095
11096 @table @samp
11097 @item auto
11098 Automatic (same value as @option{order}).
11099 @item bottom
11100 Match from the bottom field.
11101 @item top
11102 Match from the top field.
11103 @end table
11104
11105 Default value is @var{auto}.
11106
11107 @item mchroma
11108 Set whether or not chroma is included during the match comparisons. In most
11109 cases it is recommended to leave this enabled. You should set this to @code{0}
11110 only if your clip has bad chroma problems such as heavy rainbowing or other
11111 artifacts. Setting this to @code{0} could also be used to speed things up at
11112 the cost of some accuracy.
11113
11114 Default value is @code{1}.
11115
11116 @item y0
11117 @item y1
11118 These define an exclusion band which excludes the lines between @option{y0} and
11119 @option{y1} from being included in the field matching decision. An exclusion
11120 band can be used to ignore subtitles, a logo, or other things that may
11121 interfere with the matching. @option{y0} sets the starting scan line and
11122 @option{y1} sets the ending line; all lines in between @option{y0} and
11123 @option{y1} (including @option{y0} and @option{y1}) will be ignored. Setting
11124 @option{y0} and @option{y1} to the same value will disable the feature.
11125 @option{y0} and @option{y1} defaults to @code{0}.
11126
11127 @item scthresh
11128 Set the scene change detection threshold as a percentage of maximum change on
11129 the luma plane. Good values are in the @code{[8.0, 14.0]} range. Scene change
11130 detection is only relevant in case @option{combmatch}=@var{sc}.  The range for
11131 @option{scthresh} is @code{[0.0, 100.0]}.
11132
11133 Default value is @code{12.0}.
11134
11135 @item combmatch
11136 When @option{combatch} is not @var{none}, @code{fieldmatch} will take into
11137 account the combed scores of matches when deciding what match to use as the
11138 final match. Available values are:
11139
11140 @table @samp
11141 @item none
11142 No final matching based on combed scores.
11143 @item sc
11144 Combed scores are only used when a scene change is detected.
11145 @item full
11146 Use combed scores all the time.
11147 @end table
11148
11149 Default is @var{sc}.
11150
11151 @item combdbg
11152 Force @code{fieldmatch} to calculate the combed metrics for certain matches and
11153 print them. This setting is known as @option{micout} in TFM/VFM vocabulary.
11154 Available values are:
11155
11156 @table @samp
11157 @item none
11158 No forced calculation.
11159 @item pcn
11160 Force p/c/n calculations.
11161 @item pcnub
11162 Force p/c/n/u/b calculations.
11163 @end table
11164
11165 Default value is @var{none}.
11166
11167 @item cthresh
11168 This is the area combing threshold used for combed frame detection. This
11169 essentially controls how "strong" or "visible" combing must be to be detected.
11170 Larger values mean combing must be more visible and smaller values mean combing
11171 can be less visible or strong and still be detected. Valid settings are from
11172 @code{-1} (every pixel will be detected as combed) to @code{255} (no pixel will
11173 be detected as combed). This is basically a pixel difference value. A good
11174 range is @code{[8, 12]}.
11175
11176 Default value is @code{9}.
11177
11178 @item chroma
11179 Sets whether or not chroma is considered in the combed frame decision.  Only
11180 disable this if your source has chroma problems (rainbowing, etc.) that are
11181 causing problems for the combed frame detection with chroma enabled. Actually,
11182 using @option{chroma}=@var{0} is usually more reliable, except for the case
11183 where there is chroma only combing in the source.
11184
11185 Default value is @code{0}.
11186
11187 @item blockx
11188 @item blocky
11189 Respectively set the x-axis and y-axis size of the window used during combed
11190 frame detection. This has to do with the size of the area in which
11191 @option{combpel} pixels are required to be detected as combed for a frame to be
11192 declared combed. See the @option{combpel} parameter description for more info.
11193 Possible values are any number that is a power of 2 starting at 4 and going up
11194 to 512.
11195
11196 Default value is @code{16}.
11197
11198 @item combpel
11199 The number of combed pixels inside any of the @option{blocky} by
11200 @option{blockx} size blocks on the frame for the frame to be detected as
11201 combed. While @option{cthresh} controls how "visible" the combing must be, this
11202 setting controls "how much" combing there must be in any localized area (a
11203 window defined by the @option{blockx} and @option{blocky} settings) on the
11204 frame. Minimum value is @code{0} and maximum is @code{blocky x blockx} (at
11205 which point no frames will ever be detected as combed). This setting is known
11206 as @option{MI} in TFM/VFM vocabulary.
11207
11208 Default value is @code{80}.
11209 @end table
11210
11211 @anchor{p/c/n/u/b meaning}
11212 @subsection p/c/n/u/b meaning
11213
11214 @subsubsection p/c/n
11215
11216 We assume the following telecined stream:
11217
11218 @example
11219 Top fields:     1 2 2 3 4
11220 Bottom fields:  1 2 3 4 4
11221 @end example
11222
11223 The numbers correspond to the progressive frame the fields relate to. Here, the
11224 first two frames are progressive, the 3rd and 4th are combed, and so on.
11225
11226 When @code{fieldmatch} is configured to run a matching from bottom
11227 (@option{field}=@var{bottom}) this is how this input stream get transformed:
11228
11229 @example
11230 Input stream:
11231                 T     1 2 2 3 4
11232                 B     1 2 3 4 4   <-- matching reference
11233
11234 Matches:              c c n n c
11235
11236 Output stream:
11237                 T     1 2 3 4 4
11238                 B     1 2 3 4 4
11239 @end example
11240
11241 As a result of the field matching, we can see that some frames get duplicated.
11242 To perform a complete inverse telecine, you need to rely on a decimation filter
11243 after this operation. See for instance the @ref{decimate} filter.
11244
11245 The same operation now matching from top fields (@option{field}=@var{top})
11246 looks like this:
11247
11248 @example
11249 Input stream:
11250                 T     1 2 2 3 4   <-- matching reference
11251                 B     1 2 3 4 4
11252
11253 Matches:              c c p p c
11254
11255 Output stream:
11256                 T     1 2 2 3 4
11257                 B     1 2 2 3 4
11258 @end example
11259
11260 In these examples, we can see what @var{p}, @var{c} and @var{n} mean;
11261 basically, they refer to the frame and field of the opposite parity:
11262
11263 @itemize
11264 @item @var{p} matches the field of the opposite parity in the previous frame
11265 @item @var{c} matches the field of the opposite parity in the current frame
11266 @item @var{n} matches the field of the opposite parity in the next frame
11267 @end itemize
11268
11269 @subsubsection u/b
11270
11271 The @var{u} and @var{b} matching are a bit special in the sense that they match
11272 from the opposite parity flag. In the following examples, we assume that we are
11273 currently matching the 2nd frame (Top:2, bottom:2). According to the match, a
11274 'x' is placed above and below each matched fields.
11275
11276 With bottom matching (@option{field}=@var{bottom}):
11277 @example
11278 Match:           c         p           n          b          u
11279
11280                  x       x               x        x          x
11281   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
11282   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
11283                  x         x           x        x              x
11284
11285 Output frames:
11286                  2          1          2          2          2
11287                  2          2          2          1          3
11288 @end example
11289
11290 With top matching (@option{field}=@var{top}):
11291 @example
11292 Match:           c         p           n          b          u
11293
11294                  x         x           x        x              x
11295   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
11296   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
11297                  x       x               x        x          x
11298
11299 Output frames:
11300                  2          2          2          1          2
11301                  2          1          3          2          2
11302 @end example
11303
11304 @subsection Examples
11305
11306 Simple IVTC of a top field first telecined stream:
11307 @example
11308 fieldmatch=order=tff:combmatch=none, decimate
11309 @end example
11310
11311 Advanced IVTC, with fallback on @ref{yadif} for still combed frames:
11312 @example
11313 fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
11314 @end example
11315
11316 @section fieldorder
11317
11318 Transform the field order of the input video.
11319
11320 It accepts the following parameters:
11321
11322 @table @option
11323
11324 @item order
11325 The output field order. Valid values are @var{tff} for top field first or @var{bff}
11326 for bottom field first.
11327 @end table
11328
11329 The default value is @samp{tff}.
11330
11331 The transformation is done by shifting the picture content up or down
11332 by one line, and filling the remaining line with appropriate picture content.
11333 This method is consistent with most broadcast field order converters.
11334
11335 If the input video is not flagged as being interlaced, or it is already
11336 flagged as being of the required output field order, then this filter does
11337 not alter the incoming video.
11338
11339 It is very useful when converting to or from PAL DV material,
11340 which is bottom field first.
11341
11342 For example:
11343 @example
11344 ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
11345 @end example
11346
11347 @section fifo, afifo
11348
11349 Buffer input images and send them when they are requested.
11350
11351 It is mainly useful when auto-inserted by the libavfilter
11352 framework.
11353
11354 It does not take parameters.
11355
11356 @section fillborders
11357
11358 Fill borders of the input video, without changing video stream dimensions.
11359 Sometimes video can have garbage at the four edges and you may not want to
11360 crop video input to keep size multiple of some number.
11361
11362 This filter accepts the following options:
11363
11364 @table @option
11365 @item left
11366 Number of pixels to fill from left border.
11367
11368 @item right
11369 Number of pixels to fill from right border.
11370
11371 @item top
11372 Number of pixels to fill from top border.
11373
11374 @item bottom
11375 Number of pixels to fill from bottom border.
11376
11377 @item mode
11378 Set fill mode.
11379
11380 It accepts the following values:
11381 @table @samp
11382 @item smear
11383 fill pixels using outermost pixels
11384
11385 @item mirror
11386 fill pixels using mirroring
11387
11388 @item fixed
11389 fill pixels with constant value
11390 @end table
11391
11392 Default is @var{smear}.
11393
11394 @item color
11395 Set color for pixels in fixed mode. Default is @var{black}.
11396 @end table
11397
11398 @subsection Commands
11399 This filter supports same @ref{commands} as options.
11400 The command accepts the same syntax of the corresponding option.
11401
11402 If the specified expression is not valid, it is kept at its current
11403 value.
11404
11405 @section find_rect
11406
11407 Find a rectangular object
11408
11409 It accepts the following options:
11410
11411 @table @option
11412 @item object
11413 Filepath of the object image, needs to be in gray8.
11414
11415 @item threshold
11416 Detection threshold, default is 0.5.
11417
11418 @item mipmaps
11419 Number of mipmaps, default is 3.
11420
11421 @item xmin, ymin, xmax, ymax
11422 Specifies the rectangle in which to search.
11423 @end table
11424
11425 @subsection Examples
11426
11427 @itemize
11428 @item
11429 Cover a rectangular object by the supplied image of a given video using @command{ffmpeg}:
11430 @example
11431 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
11432 @end example
11433 @end itemize
11434
11435 @section floodfill
11436
11437 Flood area with values of same pixel components with another values.
11438
11439 It accepts the following options:
11440 @table @option
11441 @item x
11442 Set pixel x coordinate.
11443
11444 @item y
11445 Set pixel y coordinate.
11446
11447 @item s0
11448 Set source #0 component value.
11449
11450 @item s1
11451 Set source #1 component value.
11452
11453 @item s2
11454 Set source #2 component value.
11455
11456 @item s3
11457 Set source #3 component value.
11458
11459 @item d0
11460 Set destination #0 component value.
11461
11462 @item d1
11463 Set destination #1 component value.
11464
11465 @item d2
11466 Set destination #2 component value.
11467
11468 @item d3
11469 Set destination #3 component value.
11470 @end table
11471
11472 @anchor{format}
11473 @section format
11474
11475 Convert the input video to one of the specified pixel formats.
11476 Libavfilter will try to pick one that is suitable as input to
11477 the next filter.
11478
11479 It accepts the following parameters:
11480 @table @option
11481
11482 @item pix_fmts
11483 A '|'-separated list of pixel format names, such as
11484 "pix_fmts=yuv420p|monow|rgb24".
11485
11486 @end table
11487
11488 @subsection Examples
11489
11490 @itemize
11491 @item
11492 Convert the input video to the @var{yuv420p} format
11493 @example
11494 format=pix_fmts=yuv420p
11495 @end example
11496
11497 Convert the input video to any of the formats in the list
11498 @example
11499 format=pix_fmts=yuv420p|yuv444p|yuv410p
11500 @end example
11501 @end itemize
11502
11503 @anchor{fps}
11504 @section fps
11505
11506 Convert the video to specified constant frame rate by duplicating or dropping
11507 frames as necessary.
11508
11509 It accepts the following parameters:
11510 @table @option
11511
11512 @item fps
11513 The desired output frame rate. The default is @code{25}.
11514
11515 @item start_time
11516 Assume the first PTS should be the given value, in seconds. This allows for
11517 padding/trimming at the start of stream. By default, no assumption is made
11518 about the first frame's expected PTS, so no padding or trimming is done.
11519 For example, this could be set to 0 to pad the beginning with duplicates of
11520 the first frame if a video stream starts after the audio stream or to trim any
11521 frames with a negative PTS.
11522
11523 @item round
11524 Timestamp (PTS) rounding method.
11525
11526 Possible values are:
11527 @table @option
11528 @item zero
11529 round towards 0
11530 @item inf
11531 round away from 0
11532 @item down
11533 round towards -infinity
11534 @item up
11535 round towards +infinity
11536 @item near
11537 round to nearest
11538 @end table
11539 The default is @code{near}.
11540
11541 @item eof_action
11542 Action performed when reading the last frame.
11543
11544 Possible values are:
11545 @table @option
11546 @item round
11547 Use same timestamp rounding method as used for other frames.
11548 @item pass
11549 Pass through last frame if input duration has not been reached yet.
11550 @end table
11551 The default is @code{round}.
11552
11553 @end table
11554
11555 Alternatively, the options can be specified as a flat string:
11556 @var{fps}[:@var{start_time}[:@var{round}]].
11557
11558 See also the @ref{setpts} filter.
11559
11560 @subsection Examples
11561
11562 @itemize
11563 @item
11564 A typical usage in order to set the fps to 25:
11565 @example
11566 fps=fps=25
11567 @end example
11568
11569 @item
11570 Sets the fps to 24, using abbreviation and rounding method to round to nearest:
11571 @example
11572 fps=fps=film:round=near
11573 @end example
11574 @end itemize
11575
11576 @section framepack
11577
11578 Pack two different video streams into a stereoscopic video, setting proper
11579 metadata on supported codecs. The two views should have the same size and
11580 framerate and processing will stop when the shorter video ends. Please note
11581 that you may conveniently adjust view properties with the @ref{scale} and
11582 @ref{fps} filters.
11583
11584 It accepts the following parameters:
11585 @table @option
11586
11587 @item format
11588 The desired packing format. Supported values are:
11589
11590 @table @option
11591
11592 @item sbs
11593 The views are next to each other (default).
11594
11595 @item tab
11596 The views are on top of each other.
11597
11598 @item lines
11599 The views are packed by line.
11600
11601 @item columns
11602 The views are packed by column.
11603
11604 @item frameseq
11605 The views are temporally interleaved.
11606
11607 @end table
11608
11609 @end table
11610
11611 Some examples:
11612
11613 @example
11614 # Convert left and right views into a frame-sequential video
11615 ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT
11616
11617 # Convert views into a side-by-side video with the same output resolution as the input
11618 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
11619 @end example
11620
11621 @section framerate
11622
11623 Change the frame rate by interpolating new video output frames from the source
11624 frames.
11625
11626 This filter is not designed to function correctly with interlaced media. If
11627 you wish to change the frame rate of interlaced media then you are required
11628 to deinterlace before this filter and re-interlace after this filter.
11629
11630 A description of the accepted options follows.
11631
11632 @table @option
11633 @item fps
11634 Specify the output frames per second. This option can also be specified
11635 as a value alone. The default is @code{50}.
11636
11637 @item interp_start
11638 Specify the start of a range where the output frame will be created as a
11639 linear interpolation of two frames. The range is [@code{0}-@code{255}],
11640 the default is @code{15}.
11641
11642 @item interp_end
11643 Specify the end of a range where the output frame will be created as a
11644 linear interpolation of two frames. The range is [@code{0}-@code{255}],
11645 the default is @code{240}.
11646
11647 @item scene
11648 Specify the level at which a scene change is detected as a value between
11649 0 and 100 to indicate a new scene; a low value reflects a low
11650 probability for the current frame to introduce a new scene, while a higher
11651 value means the current frame is more likely to be one.
11652 The default is @code{8.2}.
11653
11654 @item flags
11655 Specify flags influencing the filter process.
11656
11657 Available value for @var{flags} is:
11658
11659 @table @option
11660 @item scene_change_detect, scd
11661 Enable scene change detection using the value of the option @var{scene}.
11662 This flag is enabled by default.
11663 @end table
11664 @end table
11665
11666 @section framestep
11667
11668 Select one frame every N-th frame.
11669
11670 This filter accepts the following option:
11671 @table @option
11672 @item step
11673 Select frame after every @code{step} frames.
11674 Allowed values are positive integers higher than 0. Default value is @code{1}.
11675 @end table
11676
11677 @section freezedetect
11678
11679 Detect frozen video.
11680
11681 This filter logs a message and sets frame metadata when it detects that the
11682 input video has no significant change in content during a specified duration.
11683 Video freeze detection calculates the mean average absolute difference of all
11684 the components of video frames and compares it to a noise floor.
11685
11686 The printed times and duration are expressed in seconds. The
11687 @code{lavfi.freezedetect.freeze_start} metadata key is set on the first frame
11688 whose timestamp equals or exceeds the detection duration and it contains the
11689 timestamp of the first frame of the freeze. The
11690 @code{lavfi.freezedetect.freeze_duration} and
11691 @code{lavfi.freezedetect.freeze_end} metadata keys are set on the first frame
11692 after the freeze.
11693
11694 The filter accepts the following options:
11695
11696 @table @option
11697 @item noise, n
11698 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
11699 specified value) or as a difference ratio between 0 and 1. Default is -60dB, or
11700 0.001.
11701
11702 @item duration, d
11703 Set freeze duration until notification (default is 2 seconds).
11704 @end table
11705
11706 @section freezeframes
11707
11708 Freeze video frames.
11709
11710 This filter freezes video frames using frame from 2nd input.
11711
11712 The filter accepts the following options:
11713
11714 @table @option
11715 @item first
11716 Set number of first frame from which to start freeze.
11717
11718 @item last
11719 Set number of last frame from which to end freeze.
11720
11721 @item replace
11722 Set number of frame from 2nd input which will be used instead of replaced frames.
11723 @end table
11724
11725 @anchor{frei0r}
11726 @section frei0r
11727
11728 Apply a frei0r effect to the input video.
11729
11730 To enable the compilation of this filter, you need to install the frei0r
11731 header and configure FFmpeg with @code{--enable-frei0r}.
11732
11733 It accepts the following parameters:
11734
11735 @table @option
11736
11737 @item filter_name
11738 The name of the frei0r effect to load. If the environment variable
11739 @env{FREI0R_PATH} is defined, the frei0r effect is searched for in each of the
11740 directories specified by the colon-separated list in @env{FREI0R_PATH}.
11741 Otherwise, the standard frei0r paths are searched, in this order:
11742 @file{HOME/.frei0r-1/lib/}, @file{/usr/local/lib/frei0r-1/},
11743 @file{/usr/lib/frei0r-1/}.
11744
11745 @item filter_params
11746 A '|'-separated list of parameters to pass to the frei0r effect.
11747
11748 @end table
11749
11750 A frei0r effect parameter can be a boolean (its value is either
11751 "y" or "n"), a double, a color (specified as
11752 @var{R}/@var{G}/@var{B}, where @var{R}, @var{G}, and @var{B} are floating point
11753 numbers between 0.0 and 1.0, inclusive) or a color description as specified in the
11754 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils},
11755 a position (specified as @var{X}/@var{Y}, where
11756 @var{X} and @var{Y} are floating point numbers) and/or a string.
11757
11758 The number and types of parameters depend on the loaded effect. If an
11759 effect parameter is not specified, the default value is set.
11760
11761 @subsection Examples
11762
11763 @itemize
11764 @item
11765 Apply the distort0r effect, setting the first two double parameters:
11766 @example
11767 frei0r=filter_name=distort0r:filter_params=0.5|0.01
11768 @end example
11769
11770 @item
11771 Apply the colordistance effect, taking a color as the first parameter:
11772 @example
11773 frei0r=colordistance:0.2/0.3/0.4
11774 frei0r=colordistance:violet
11775 frei0r=colordistance:0x112233
11776 @end example
11777
11778 @item
11779 Apply the perspective effect, specifying the top left and top right image
11780 positions:
11781 @example
11782 frei0r=perspective:0.2/0.2|0.8/0.2
11783 @end example
11784 @end itemize
11785
11786 For more information, see
11787 @url{http://frei0r.dyne.org}
11788
11789 @subsection Commands
11790
11791 This filter supports the @option{filter_params} option as @ref{commands}.
11792
11793 @section fspp
11794
11795 Apply fast and simple postprocessing. It is a faster version of @ref{spp}.
11796
11797 It splits (I)DCT into horizontal/vertical passes. Unlike the simple post-
11798 processing filter, one of them is performed once per block, not per pixel.
11799 This allows for much higher speed.
11800
11801 The filter accepts the following options:
11802
11803 @table @option
11804 @item quality
11805 Set quality. This option defines the number of levels for averaging. It accepts
11806 an integer in the range 4-5. Default value is @code{4}.
11807
11808 @item qp
11809 Force a constant quantization parameter. It accepts an integer in range 0-63.
11810 If not set, the filter will use the QP from the video stream (if available).
11811
11812 @item strength
11813 Set filter strength. It accepts an integer in range -15 to 32. Lower values mean
11814 more details but also more artifacts, while higher values make the image smoother
11815 but also blurrier. Default value is @code{0} âˆ’ PSNR optimal.
11816
11817 @item use_bframe_qp
11818 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
11819 option may cause flicker since the B-Frames have often larger QP. Default is
11820 @code{0} (not enabled).
11821
11822 @end table
11823
11824 @section gblur
11825
11826 Apply Gaussian blur filter.
11827
11828 The filter accepts the following options:
11829
11830 @table @option
11831 @item sigma
11832 Set horizontal sigma, standard deviation of Gaussian blur. Default is @code{0.5}.
11833
11834 @item steps
11835 Set number of steps for Gaussian approximation. Default is @code{1}.
11836
11837 @item planes
11838 Set which planes to filter. By default all planes are filtered.
11839
11840 @item sigmaV
11841 Set vertical sigma, if negative it will be same as @code{sigma}.
11842 Default is @code{-1}.
11843 @end table
11844
11845 @subsection Commands
11846 This filter supports same commands as options.
11847 The command accepts the same syntax of the corresponding option.
11848
11849 If the specified expression is not valid, it is kept at its current
11850 value.
11851
11852 @section geq
11853
11854 Apply generic equation to each pixel.
11855
11856 The filter accepts the following options:
11857
11858 @table @option
11859 @item lum_expr, lum
11860 Set the luminance expression.
11861 @item cb_expr, cb
11862 Set the chrominance blue expression.
11863 @item cr_expr, cr
11864 Set the chrominance red expression.
11865 @item alpha_expr, a
11866 Set the alpha expression.
11867 @item red_expr, r
11868 Set the red expression.
11869 @item green_expr, g
11870 Set the green expression.
11871 @item blue_expr, b
11872 Set the blue expression.
11873 @end table
11874
11875 The colorspace is selected according to the specified options. If one
11876 of the @option{lum_expr}, @option{cb_expr}, or @option{cr_expr}
11877 options is specified, the filter will automatically select a YCbCr
11878 colorspace. If one of the @option{red_expr}, @option{green_expr}, or
11879 @option{blue_expr} options is specified, it will select an RGB
11880 colorspace.
11881
11882 If one of the chrominance expression is not defined, it falls back on the other
11883 one. If no alpha expression is specified it will evaluate to opaque value.
11884 If none of chrominance expressions are specified, they will evaluate
11885 to the luminance expression.
11886
11887 The expressions can use the following variables and functions:
11888
11889 @table @option
11890 @item N
11891 The sequential number of the filtered frame, starting from @code{0}.
11892
11893 @item X
11894 @item Y
11895 The coordinates of the current sample.
11896
11897 @item W
11898 @item H
11899 The width and height of the image.
11900
11901 @item SW
11902 @item SH
11903 Width and height scale depending on the currently filtered plane. It is the
11904 ratio between the corresponding luma plane number of pixels and the current
11905 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
11906 @code{0.5,0.5} for chroma planes.
11907
11908 @item T
11909 Time of the current frame, expressed in seconds.
11910
11911 @item p(x, y)
11912 Return the value of the pixel at location (@var{x},@var{y}) of the current
11913 plane.
11914
11915 @item lum(x, y)
11916 Return the value of the pixel at location (@var{x},@var{y}) of the luminance
11917 plane.
11918
11919 @item cb(x, y)
11920 Return the value of the pixel at location (@var{x},@var{y}) of the
11921 blue-difference chroma plane. Return 0 if there is no such plane.
11922
11923 @item cr(x, y)
11924 Return the value of the pixel at location (@var{x},@var{y}) of the
11925 red-difference chroma plane. Return 0 if there is no such plane.
11926
11927 @item r(x, y)
11928 @item g(x, y)
11929 @item b(x, y)
11930 Return the value of the pixel at location (@var{x},@var{y}) of the
11931 red/green/blue component. Return 0 if there is no such component.
11932
11933 @item alpha(x, y)
11934 Return the value of the pixel at location (@var{x},@var{y}) of the alpha
11935 plane. Return 0 if there is no such plane.
11936
11937 @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)
11938 Sum of sample values in the rectangle from (0,0) to (x,y), this allows obtaining
11939 sums of samples within a rectangle. See the functions without the sum postfix.
11940
11941 @item interpolation
11942 Set one of interpolation methods:
11943 @table @option
11944 @item nearest, n
11945 @item bilinear, b
11946 @end table
11947 Default is bilinear.
11948 @end table
11949
11950 For functions, if @var{x} and @var{y} are outside the area, the value will be
11951 automatically clipped to the closer edge.
11952
11953 Please note that this filter can use multiple threads in which case each slice
11954 will have its own expression state. If you want to use only a single expression
11955 state because your expressions depend on previous state then you should limit
11956 the number of filter threads to 1.
11957
11958 @subsection Examples
11959
11960 @itemize
11961 @item
11962 Flip the image horizontally:
11963 @example
11964 geq=p(W-X\,Y)
11965 @end example
11966
11967 @item
11968 Generate a bidimensional sine wave, with angle @code{PI/3} and a
11969 wavelength of 100 pixels:
11970 @example
11971 geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
11972 @end example
11973
11974 @item
11975 Generate a fancy enigmatic moving light:
11976 @example
11977 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
11978 @end example
11979
11980 @item
11981 Generate a quick emboss effect:
11982 @example
11983 format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
11984 @end example
11985
11986 @item
11987 Modify RGB components depending on pixel position:
11988 @example
11989 geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
11990 @end example
11991
11992 @item
11993 Create a radial gradient that is the same size as the input (also see
11994 the @ref{vignette} filter):
11995 @example
11996 geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
11997 @end example
11998 @end itemize
11999
12000 @section gradfun
12001
12002 Fix the banding artifacts that are sometimes introduced into nearly flat
12003 regions by truncation to 8-bit color depth.
12004 Interpolate the gradients that should go where the bands are, and
12005 dither them.
12006
12007 It is designed for playback only.  Do not use it prior to
12008 lossy compression, because compression tends to lose the dither and
12009 bring back the bands.
12010
12011 It accepts the following parameters:
12012
12013 @table @option
12014
12015 @item strength
12016 The maximum amount by which the filter will change any one pixel. This is also
12017 the threshold for detecting nearly flat regions. Acceptable values range from
12018 .51 to 64; the default value is 1.2. Out-of-range values will be clipped to the
12019 valid range.
12020
12021 @item radius
12022 The neighborhood to fit the gradient to. A larger radius makes for smoother
12023 gradients, but also prevents the filter from modifying the pixels near detailed
12024 regions. Acceptable values are 8-32; the default value is 16. Out-of-range
12025 values will be clipped to the valid range.
12026
12027 @end table
12028
12029 Alternatively, the options can be specified as a flat string:
12030 @var{strength}[:@var{radius}]
12031
12032 @subsection Examples
12033
12034 @itemize
12035 @item
12036 Apply the filter with a @code{3.5} strength and radius of @code{8}:
12037 @example
12038 gradfun=3.5:8
12039 @end example
12040
12041 @item
12042 Specify radius, omitting the strength (which will fall-back to the default
12043 value):
12044 @example
12045 gradfun=radius=8
12046 @end example
12047
12048 @end itemize
12049
12050 @anchor{graphmonitor}
12051 @section graphmonitor
12052 Show various filtergraph stats.
12053
12054 With this filter one can debug complete filtergraph.
12055 Especially issues with links filling with queued frames.
12056
12057 The filter accepts the following options:
12058
12059 @table @option
12060 @item size, s
12061 Set video output size. Default is @var{hd720}.
12062
12063 @item opacity, o
12064 Set video opacity. Default is @var{0.9}. Allowed range is from @var{0} to @var{1}.
12065
12066 @item mode, m
12067 Set output mode, can be @var{fulll} or @var{compact}.
12068 In @var{compact} mode only filters with some queued frames have displayed stats.
12069
12070 @item flags, f
12071 Set flags which enable which stats are shown in video.
12072
12073 Available values for flags are:
12074 @table @samp
12075 @item queue
12076 Display number of queued frames in each link.
12077
12078 @item frame_count_in
12079 Display number of frames taken from filter.
12080
12081 @item frame_count_out
12082 Display number of frames given out from filter.
12083
12084 @item pts
12085 Display current filtered frame pts.
12086
12087 @item time
12088 Display current filtered frame time.
12089
12090 @item timebase
12091 Display time base for filter link.
12092
12093 @item format
12094 Display used format for filter link.
12095
12096 @item size
12097 Display video size or number of audio channels in case of audio used by filter link.
12098
12099 @item rate
12100 Display video frame rate or sample rate in case of audio used by filter link.
12101
12102 @item eof
12103 Display link output status.
12104 @end table
12105
12106 @item rate, r
12107 Set upper limit for video rate of output stream, Default value is @var{25}.
12108 This guarantee that output video frame rate will not be higher than this value.
12109 @end table
12110
12111 @section greyedge
12112 A color constancy variation filter which estimates scene illumination via grey edge algorithm
12113 and corrects the scene colors accordingly.
12114
12115 See: @url{https://staff.science.uva.nl/th.gevers/pub/GeversTIP07.pdf}
12116
12117 The filter accepts the following options:
12118
12119 @table @option
12120 @item difford
12121 The order of differentiation to be applied on the scene. Must be chosen in the range
12122 [0,2] and default value is 1.
12123
12124 @item minknorm
12125 The Minkowski parameter to be used for calculating the Minkowski distance. Must
12126 be chosen in the range [0,20] and default value is 1. Set to 0 for getting
12127 max value instead of calculating Minkowski distance.
12128
12129 @item sigma
12130 The standard deviation of Gaussian blur to be applied on the scene. Must be
12131 chosen in the range [0,1024.0] and default value = 1. floor( @var{sigma} * break_off_sigma(3) )
12132 can't be equal to 0 if @var{difford} is greater than 0.
12133 @end table
12134
12135 @subsection Examples
12136 @itemize
12137
12138 @item
12139 Grey Edge:
12140 @example
12141 greyedge=difford=1:minknorm=5:sigma=2
12142 @end example
12143
12144 @item
12145 Max Edge:
12146 @example
12147 greyedge=difford=1:minknorm=0:sigma=2
12148 @end example
12149
12150 @end itemize
12151
12152 @anchor{haldclut}
12153 @section haldclut
12154
12155 Apply a Hald CLUT to a video stream.
12156
12157 First input is the video stream to process, and second one is the Hald CLUT.
12158 The Hald CLUT input can be a simple picture or a complete video stream.
12159
12160 The filter accepts the following options:
12161
12162 @table @option
12163 @item shortest
12164 Force termination when the shortest input terminates. Default is @code{0}.
12165 @item repeatlast
12166 Continue applying the last CLUT after the end of the stream. A value of
12167 @code{0} disable the filter after the last frame of the CLUT is reached.
12168 Default is @code{1}.
12169 @end table
12170
12171 @code{haldclut} also has the same interpolation options as @ref{lut3d} (both
12172 filters share the same internals).
12173
12174 This filter also supports the @ref{framesync} options.
12175
12176 More information about the Hald CLUT can be found on Eskil Steenberg's website
12177 (Hald CLUT author) at @url{http://www.quelsolaar.com/technology/clut.html}.
12178
12179 @subsection Workflow examples
12180
12181 @subsubsection Hald CLUT video stream
12182
12183 Generate an identity Hald CLUT stream altered with various effects:
12184 @example
12185 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
12186 @end example
12187
12188 Note: make sure you use a lossless codec.
12189
12190 Then use it with @code{haldclut} to apply it on some random stream:
12191 @example
12192 ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
12193 @end example
12194
12195 The Hald CLUT will be applied to the 10 first seconds (duration of
12196 @file{clut.nut}), then the latest picture of that CLUT stream will be applied
12197 to the remaining frames of the @code{mandelbrot} stream.
12198
12199 @subsubsection Hald CLUT with preview
12200
12201 A Hald CLUT is supposed to be a squared image of @code{Level*Level*Level} by
12202 @code{Level*Level*Level} pixels. For a given Hald CLUT, FFmpeg will select the
12203 biggest possible square starting at the top left of the picture. The remaining
12204 padding pixels (bottom or right) will be ignored. This area can be used to add
12205 a preview of the Hald CLUT.
12206
12207 Typically, the following generated Hald CLUT will be supported by the
12208 @code{haldclut} filter:
12209
12210 @example
12211 ffmpeg -f lavfi -i @ref{haldclutsrc}=8 -vf "
12212    pad=iw+320 [padded_clut];
12213    smptebars=s=320x256, split [a][b];
12214    [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
12215    [main][b] overlay=W-320" -frames:v 1 clut.png
12216 @end example
12217
12218 It contains the original and a preview of the effect of the CLUT: SMPTE color
12219 bars are displayed on the right-top, and below the same color bars processed by
12220 the color changes.
12221
12222 Then, the effect of this Hald CLUT can be visualized with:
12223 @example
12224 ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
12225 @end example
12226
12227 @section hflip
12228
12229 Flip the input video horizontally.
12230
12231 For example, to horizontally flip the input video with @command{ffmpeg}:
12232 @example
12233 ffmpeg -i in.avi -vf "hflip" out.avi
12234 @end example
12235
12236 @section histeq
12237 This filter applies a global color histogram equalization on a
12238 per-frame basis.
12239
12240 It can be used to correct video that has a compressed range of pixel
12241 intensities.  The filter redistributes the pixel intensities to
12242 equalize their distribution across the intensity range. It may be
12243 viewed as an "automatically adjusting contrast filter". This filter is
12244 useful only for correcting degraded or poorly captured source
12245 video.
12246
12247 The filter accepts the following options:
12248
12249 @table @option
12250 @item strength
12251 Determine the amount of equalization to be applied.  As the strength
12252 is reduced, the distribution of pixel intensities more-and-more
12253 approaches that of the input frame. The value must be a float number
12254 in the range [0,1] and defaults to 0.200.
12255
12256 @item intensity
12257 Set the maximum intensity that can generated and scale the output
12258 values appropriately.  The strength should be set as desired and then
12259 the intensity can be limited if needed to avoid washing-out. The value
12260 must be a float number in the range [0,1] and defaults to 0.210.
12261
12262 @item antibanding
12263 Set the antibanding level. If enabled the filter will randomly vary
12264 the luminance of output pixels by a small amount to avoid banding of
12265 the histogram. Possible values are @code{none}, @code{weak} or
12266 @code{strong}. It defaults to @code{none}.
12267 @end table
12268
12269 @anchor{histogram}
12270 @section histogram
12271
12272 Compute and draw a color distribution histogram for the input video.
12273
12274 The computed histogram is a representation of the color component
12275 distribution in an image.
12276
12277 Standard histogram displays the color components distribution in an image.
12278 Displays color graph for each color component. Shows distribution of
12279 the Y, U, V, A or R, G, B components, depending on input format, in the
12280 current frame. Below each graph a color component scale meter is shown.
12281
12282 The filter accepts the following options:
12283
12284 @table @option
12285 @item level_height
12286 Set height of level. Default value is @code{200}.
12287 Allowed range is [50, 2048].
12288
12289 @item scale_height
12290 Set height of color scale. Default value is @code{12}.
12291 Allowed range is [0, 40].
12292
12293 @item display_mode
12294 Set display mode.
12295 It accepts the following values:
12296 @table @samp
12297 @item stack
12298 Per color component graphs are placed below each other.
12299
12300 @item parade
12301 Per color component graphs are placed side by side.
12302
12303 @item overlay
12304 Presents information identical to that in the @code{parade}, except
12305 that the graphs representing color components are superimposed directly
12306 over one another.
12307 @end table
12308 Default is @code{stack}.
12309
12310 @item levels_mode
12311 Set mode. Can be either @code{linear}, or @code{logarithmic}.
12312 Default is @code{linear}.
12313
12314 @item components
12315 Set what color components to display.
12316 Default is @code{7}.
12317
12318 @item fgopacity
12319 Set foreground opacity. Default is @code{0.7}.
12320
12321 @item bgopacity
12322 Set background opacity. Default is @code{0.5}.
12323 @end table
12324
12325 @subsection Examples
12326
12327 @itemize
12328
12329 @item
12330 Calculate and draw histogram:
12331 @example
12332 ffplay -i input -vf histogram
12333 @end example
12334
12335 @end itemize
12336
12337 @anchor{hqdn3d}
12338 @section hqdn3d
12339
12340 This is a high precision/quality 3d denoise filter. It aims to reduce
12341 image noise, producing smooth images and making still images really
12342 still. It should enhance compressibility.
12343
12344 It accepts the following optional parameters:
12345
12346 @table @option
12347 @item luma_spatial
12348 A non-negative floating point number which specifies spatial luma strength.
12349 It defaults to 4.0.
12350
12351 @item chroma_spatial
12352 A non-negative floating point number which specifies spatial chroma strength.
12353 It defaults to 3.0*@var{luma_spatial}/4.0.
12354
12355 @item luma_tmp
12356 A floating point number which specifies luma temporal strength. It defaults to
12357 6.0*@var{luma_spatial}/4.0.
12358
12359 @item chroma_tmp
12360 A floating point number which specifies chroma temporal strength. It defaults to
12361 @var{luma_tmp}*@var{chroma_spatial}/@var{luma_spatial}.
12362 @end table
12363
12364 @subsection Commands
12365 This filter supports same @ref{commands} as options.
12366 The command accepts the same syntax of the corresponding option.
12367
12368 If the specified expression is not valid, it is kept at its current
12369 value.
12370
12371 @anchor{hwdownload}
12372 @section hwdownload
12373
12374 Download hardware frames to system memory.
12375
12376 The input must be in hardware frames, and the output a non-hardware format.
12377 Not all formats will be supported on the output - it may be necessary to insert
12378 an additional @option{format} filter immediately following in the graph to get
12379 the output in a supported format.
12380
12381 @section hwmap
12382
12383 Map hardware frames to system memory or to another device.
12384
12385 This filter has several different modes of operation; which one is used depends
12386 on the input and output formats:
12387 @itemize
12388 @item
12389 Hardware frame input, normal frame output
12390
12391 Map the input frames to system memory and pass them to the output.  If the
12392 original hardware frame is later required (for example, after overlaying
12393 something else on part of it), the @option{hwmap} filter can be used again
12394 in the next mode to retrieve it.
12395 @item
12396 Normal frame input, hardware frame output
12397
12398 If the input is actually a software-mapped hardware frame, then unmap it -
12399 that is, return the original hardware frame.
12400
12401 Otherwise, a device must be provided.  Create new hardware surfaces on that
12402 device for the output, then map them back to the software format at the input
12403 and give those frames to the preceding filter.  This will then act like the
12404 @option{hwupload} filter, but may be able to avoid an additional copy when
12405 the input is already in a compatible format.
12406 @item
12407 Hardware frame input and output
12408
12409 A device must be supplied for the output, either directly or with the
12410 @option{derive_device} option.  The input and output devices must be of
12411 different types and compatible - the exact meaning of this is
12412 system-dependent, but typically it means that they must refer to the same
12413 underlying hardware context (for example, refer to the same graphics card).
12414
12415 If the input frames were originally created on the output device, then unmap
12416 to retrieve the original frames.
12417
12418 Otherwise, map the frames to the output device - create new hardware frames
12419 on the output corresponding to the frames on the input.
12420 @end itemize
12421
12422 The following additional parameters are accepted:
12423
12424 @table @option
12425 @item mode
12426 Set the frame mapping mode.  Some combination of:
12427 @table @var
12428 @item read
12429 The mapped frame should be readable.
12430 @item write
12431 The mapped frame should be writeable.
12432 @item overwrite
12433 The mapping will always overwrite the entire frame.
12434
12435 This may improve performance in some cases, as the original contents of the
12436 frame need not be loaded.
12437 @item direct
12438 The mapping must not involve any copying.
12439
12440 Indirect mappings to copies of frames are created in some cases where either
12441 direct mapping is not possible or it would have unexpected properties.
12442 Setting this flag ensures that the mapping is direct and will fail if that is
12443 not possible.
12444 @end table
12445 Defaults to @var{read+write} if not specified.
12446
12447 @item derive_device @var{type}
12448 Rather than using the device supplied at initialisation, instead derive a new
12449 device of type @var{type} from the device the input frames exist on.
12450
12451 @item reverse
12452 In a hardware to hardware mapping, map in reverse - create frames in the sink
12453 and map them back to the source.  This may be necessary in some cases where
12454 a mapping in one direction is required but only the opposite direction is
12455 supported by the devices being used.
12456
12457 This option is dangerous - it may break the preceding filter in undefined
12458 ways if there are any additional constraints on that filter's output.
12459 Do not use it without fully understanding the implications of its use.
12460 @end table
12461
12462 @anchor{hwupload}
12463 @section hwupload
12464
12465 Upload system memory frames to hardware surfaces.
12466
12467 The device to upload to must be supplied when the filter is initialised.  If
12468 using ffmpeg, select the appropriate device with the @option{-filter_hw_device}
12469 option or with the @option{derive_device} option.  The input and output devices
12470 must be of different types and compatible - the exact meaning of this is
12471 system-dependent, but typically it means that they must refer to the same
12472 underlying hardware context (for example, refer to the same graphics card).
12473
12474 The following additional parameters are accepted:
12475
12476 @table @option
12477 @item derive_device @var{type}
12478 Rather than using the device supplied at initialisation, instead derive a new
12479 device of type @var{type} from the device the input frames exist on.
12480 @end table
12481
12482 @anchor{hwupload_cuda}
12483 @section hwupload_cuda
12484
12485 Upload system memory frames to a CUDA device.
12486
12487 It accepts the following optional parameters:
12488
12489 @table @option
12490 @item device
12491 The number of the CUDA device to use
12492 @end table
12493
12494 @section hqx
12495
12496 Apply a high-quality magnification filter designed for pixel art. This filter
12497 was originally created by Maxim Stepin.
12498
12499 It accepts the following option:
12500
12501 @table @option
12502 @item n
12503 Set the scaling dimension: @code{2} for @code{hq2x}, @code{3} for
12504 @code{hq3x} and @code{4} for @code{hq4x}.
12505 Default is @code{3}.
12506 @end table
12507
12508 @section hstack
12509 Stack input videos horizontally.
12510
12511 All streams must be of same pixel format and of same height.
12512
12513 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
12514 to create same output.
12515
12516 The filter accepts the following option:
12517
12518 @table @option
12519 @item inputs
12520 Set number of input streams. Default is 2.
12521
12522 @item shortest
12523 If set to 1, force the output to terminate when the shortest input
12524 terminates. Default value is 0.
12525 @end table
12526
12527 @section hue
12528
12529 Modify the hue and/or the saturation of the input.
12530
12531 It accepts the following parameters:
12532
12533 @table @option
12534 @item h
12535 Specify the hue angle as a number of degrees. It accepts an expression,
12536 and defaults to "0".
12537
12538 @item s
12539 Specify the saturation in the [-10,10] range. It accepts an expression and
12540 defaults to "1".
12541
12542 @item H
12543 Specify the hue angle as a number of radians. It accepts an
12544 expression, and defaults to "0".
12545
12546 @item b
12547 Specify the brightness in the [-10,10] range. It accepts an expression and
12548 defaults to "0".
12549 @end table
12550
12551 @option{h} and @option{H} are mutually exclusive, and can't be
12552 specified at the same time.
12553
12554 The @option{b}, @option{h}, @option{H} and @option{s} option values are
12555 expressions containing the following constants:
12556
12557 @table @option
12558 @item n
12559 frame count of the input frame starting from 0
12560
12561 @item pts
12562 presentation timestamp of the input frame expressed in time base units
12563
12564 @item r
12565 frame rate of the input video, NAN if the input frame rate is unknown
12566
12567 @item t
12568 timestamp expressed in seconds, NAN if the input timestamp is unknown
12569
12570 @item tb
12571 time base of the input video
12572 @end table
12573
12574 @subsection Examples
12575
12576 @itemize
12577 @item
12578 Set the hue to 90 degrees and the saturation to 1.0:
12579 @example
12580 hue=h=90:s=1
12581 @end example
12582
12583 @item
12584 Same command but expressing the hue in radians:
12585 @example
12586 hue=H=PI/2:s=1
12587 @end example
12588
12589 @item
12590 Rotate hue and make the saturation swing between 0
12591 and 2 over a period of 1 second:
12592 @example
12593 hue="H=2*PI*t: s=sin(2*PI*t)+1"
12594 @end example
12595
12596 @item
12597 Apply a 3 seconds saturation fade-in effect starting at 0:
12598 @example
12599 hue="s=min(t/3\,1)"
12600 @end example
12601
12602 The general fade-in expression can be written as:
12603 @example
12604 hue="s=min(0\, max((t-START)/DURATION\, 1))"
12605 @end example
12606
12607 @item
12608 Apply a 3 seconds saturation fade-out effect starting at 5 seconds:
12609 @example
12610 hue="s=max(0\, min(1\, (8-t)/3))"
12611 @end example
12612
12613 The general fade-out expression can be written as:
12614 @example
12615 hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
12616 @end example
12617
12618 @end itemize
12619
12620 @subsection Commands
12621
12622 This filter supports the following commands:
12623 @table @option
12624 @item b
12625 @item s
12626 @item h
12627 @item H
12628 Modify the hue and/or the saturation and/or brightness of the input video.
12629 The command accepts the same syntax of the corresponding option.
12630
12631 If the specified expression is not valid, it is kept at its current
12632 value.
12633 @end table
12634
12635 @section hysteresis
12636
12637 Grow first stream into second stream by connecting components.
12638 This makes it possible to build more robust edge masks.
12639
12640 This filter accepts the following options:
12641
12642 @table @option
12643 @item planes
12644 Set which planes will be processed as bitmap, unprocessed planes will be
12645 copied from first stream.
12646 By default value 0xf, all planes will be processed.
12647
12648 @item threshold
12649 Set threshold which is used in filtering. If pixel component value is higher than
12650 this value filter algorithm for connecting components is activated.
12651 By default value is 0.
12652 @end table
12653
12654 The @code{hysteresis} filter also supports the @ref{framesync} options.
12655
12656 @section idet
12657
12658 Detect video interlacing type.
12659
12660 This filter tries to detect if the input frames are interlaced, progressive,
12661 top or bottom field first. It will also try to detect fields that are
12662 repeated between adjacent frames (a sign of telecine).
12663
12664 Single frame detection considers only immediately adjacent frames when classifying each frame.
12665 Multiple frame detection incorporates the classification history of previous frames.
12666
12667 The filter will log these metadata values:
12668
12669 @table @option
12670 @item single.current_frame
12671 Detected type of current frame using single-frame detection. One of:
12672 ``tff'' (top field first), ``bff'' (bottom field first),
12673 ``progressive'', or ``undetermined''
12674
12675 @item single.tff
12676 Cumulative number of frames detected as top field first using single-frame detection.
12677
12678 @item multiple.tff
12679 Cumulative number of frames detected as top field first using multiple-frame detection.
12680
12681 @item single.bff
12682 Cumulative number of frames detected as bottom field first using single-frame detection.
12683
12684 @item multiple.current_frame
12685 Detected type of current frame using multiple-frame detection. One of:
12686 ``tff'' (top field first), ``bff'' (bottom field first),
12687 ``progressive'', or ``undetermined''
12688
12689 @item multiple.bff
12690 Cumulative number of frames detected as bottom field first using multiple-frame detection.
12691
12692 @item single.progressive
12693 Cumulative number of frames detected as progressive using single-frame detection.
12694
12695 @item multiple.progressive
12696 Cumulative number of frames detected as progressive using multiple-frame detection.
12697
12698 @item single.undetermined
12699 Cumulative number of frames that could not be classified using single-frame detection.
12700
12701 @item multiple.undetermined
12702 Cumulative number of frames that could not be classified using multiple-frame detection.
12703
12704 @item repeated.current_frame
12705 Which field in the current frame is repeated from the last. One of ``neither'', ``top'', or ``bottom''.
12706
12707 @item repeated.neither
12708 Cumulative number of frames with no repeated field.
12709
12710 @item repeated.top
12711 Cumulative number of frames with the top field repeated from the previous frame's top field.
12712
12713 @item repeated.bottom
12714 Cumulative number of frames with the bottom field repeated from the previous frame's bottom field.
12715 @end table
12716
12717 The filter accepts the following options:
12718
12719 @table @option
12720 @item intl_thres
12721 Set interlacing threshold.
12722 @item prog_thres
12723 Set progressive threshold.
12724 @item rep_thres
12725 Threshold for repeated field detection.
12726 @item half_life
12727 Number of frames after which a given frame's contribution to the
12728 statistics is halved (i.e., it contributes only 0.5 to its
12729 classification). The default of 0 means that all frames seen are given
12730 full weight of 1.0 forever.
12731 @item analyze_interlaced_flag
12732 When this is not 0 then idet will use the specified number of frames to determine
12733 if the interlaced flag is accurate, it will not count undetermined frames.
12734 If the flag is found to be accurate it will be used without any further
12735 computations, if it is found to be inaccurate it will be cleared without any
12736 further computations. This allows inserting the idet filter as a low computational
12737 method to clean up the interlaced flag
12738 @end table
12739
12740 @section il
12741
12742 Deinterleave or interleave fields.
12743
12744 This filter allows one to process interlaced images fields without
12745 deinterlacing them. Deinterleaving splits the input frame into 2
12746 fields (so called half pictures). Odd lines are moved to the top
12747 half of the output image, even lines to the bottom half.
12748 You can process (filter) them independently and then re-interleave them.
12749
12750 The filter accepts the following options:
12751
12752 @table @option
12753 @item luma_mode, l
12754 @item chroma_mode, c
12755 @item alpha_mode, a
12756 Available values for @var{luma_mode}, @var{chroma_mode} and
12757 @var{alpha_mode} are:
12758
12759 @table @samp
12760 @item none
12761 Do nothing.
12762
12763 @item deinterleave, d
12764 Deinterleave fields, placing one above the other.
12765
12766 @item interleave, i
12767 Interleave fields. Reverse the effect of deinterleaving.
12768 @end table
12769 Default value is @code{none}.
12770
12771 @item luma_swap, ls
12772 @item chroma_swap, cs
12773 @item alpha_swap, as
12774 Swap luma/chroma/alpha fields. Exchange even & odd lines. Default value is @code{0}.
12775 @end table
12776
12777 @subsection Commands
12778
12779 This filter supports the all above options as @ref{commands}.
12780
12781 @section inflate
12782
12783 Apply inflate effect to the video.
12784
12785 This filter replaces the pixel by the local(3x3) average by taking into account
12786 only values higher than the pixel.
12787
12788 It accepts the following options:
12789
12790 @table @option
12791 @item threshold0
12792 @item threshold1
12793 @item threshold2
12794 @item threshold3
12795 Limit the maximum change for each plane, default is 65535.
12796 If 0, plane will remain unchanged.
12797 @end table
12798
12799 @subsection Commands
12800
12801 This filter supports the all above options as @ref{commands}.
12802
12803 @section interlace
12804
12805 Simple interlacing filter from progressive contents. This interleaves upper (or
12806 lower) lines from odd frames with lower (or upper) lines from even frames,
12807 halving the frame rate and preserving image height.
12808
12809 @example
12810    Original        Original             New Frame
12811    Frame 'j'      Frame 'j+1'             (tff)
12812   ==========      ===========       ==================
12813     Line 0  -------------------->    Frame 'j' Line 0
12814     Line 1          Line 1  ---->   Frame 'j+1' Line 1
12815     Line 2 --------------------->    Frame 'j' Line 2
12816     Line 3          Line 3  ---->   Frame 'j+1' Line 3
12817      ...             ...                   ...
12818 New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
12819 @end example
12820
12821 It accepts the following optional parameters:
12822
12823 @table @option
12824 @item scan
12825 This determines whether the interlaced frame is taken from the even
12826 (tff - default) or odd (bff) lines of the progressive frame.
12827
12828 @item lowpass
12829 Vertical lowpass filter to avoid twitter interlacing and
12830 reduce moire patterns.
12831
12832 @table @samp
12833 @item 0, off
12834 Disable vertical lowpass filter
12835
12836 @item 1, linear
12837 Enable linear filter (default)
12838
12839 @item 2, complex
12840 Enable complex filter. This will slightly less reduce twitter and moire
12841 but better retain detail and subjective sharpness impression.
12842
12843 @end table
12844 @end table
12845
12846 @section kerndeint
12847
12848 Deinterlace input video by applying Donald Graft's adaptive kernel
12849 deinterling. Work on interlaced parts of a video to produce
12850 progressive frames.
12851
12852 The description of the accepted parameters follows.
12853
12854 @table @option
12855 @item thresh
12856 Set the threshold which affects the filter's tolerance when
12857 determining if a pixel line must be processed. It must be an integer
12858 in the range [0,255] and defaults to 10. A value of 0 will result in
12859 applying the process on every pixels.
12860
12861 @item map
12862 Paint pixels exceeding the threshold value to white if set to 1.
12863 Default is 0.
12864
12865 @item order
12866 Set the fields order. Swap fields if set to 1, leave fields alone if
12867 0. Default is 0.
12868
12869 @item sharp
12870 Enable additional sharpening if set to 1. Default is 0.
12871
12872 @item twoway
12873 Enable twoway sharpening if set to 1. Default is 0.
12874 @end table
12875
12876 @subsection Examples
12877
12878 @itemize
12879 @item
12880 Apply default values:
12881 @example
12882 kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
12883 @end example
12884
12885 @item
12886 Enable additional sharpening:
12887 @example
12888 kerndeint=sharp=1
12889 @end example
12890
12891 @item
12892 Paint processed pixels in white:
12893 @example
12894 kerndeint=map=1
12895 @end example
12896 @end itemize
12897
12898 @section lagfun
12899
12900 Slowly update darker pixels.
12901
12902 This filter makes short flashes of light appear longer.
12903 This filter accepts the following options:
12904
12905 @table @option
12906 @item decay
12907 Set factor for decaying. Default is .95. Allowed range is from 0 to 1.
12908
12909 @item planes
12910 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
12911 @end table
12912
12913 @section lenscorrection
12914
12915 Correct radial lens distortion
12916
12917 This filter can be used to correct for radial distortion as can result from the use
12918 of wide angle lenses, and thereby re-rectify the image. To find the right parameters
12919 one can use tools available for example as part of opencv or simply trial-and-error.
12920 To use opencv use the calibration sample (under samples/cpp) from the opencv sources
12921 and extract the k1 and k2 coefficients from the resulting matrix.
12922
12923 Note that effectively the same filter is available in the open-source tools Krita and
12924 Digikam from the KDE project.
12925
12926 In contrast to the @ref{vignette} filter, which can also be used to compensate lens errors,
12927 this filter corrects the distortion of the image, whereas @ref{vignette} corrects the
12928 brightness distribution, so you may want to use both filters together in certain
12929 cases, though you will have to take care of ordering, i.e. whether vignetting should
12930 be applied before or after lens correction.
12931
12932 @subsection Options
12933
12934 The filter accepts the following options:
12935
12936 @table @option
12937 @item cx
12938 Relative x-coordinate of the focal point of the image, and thereby the center of the
12939 distortion. This value has a range [0,1] and is expressed as fractions of the image
12940 width. Default is 0.5.
12941 @item cy
12942 Relative y-coordinate of the focal point of the image, and thereby the center of the
12943 distortion. This value has a range [0,1] and is expressed as fractions of the image
12944 height. Default is 0.5.
12945 @item k1
12946 Coefficient of the quadratic correction term. This value has a range [-1,1]. 0 means
12947 no correction. Default is 0.
12948 @item k2
12949 Coefficient of the double quadratic correction term. This value has a range [-1,1].
12950 0 means no correction. Default is 0.
12951 @end table
12952
12953 The formula that generates the correction is:
12954
12955 @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)
12956
12957 where @var{r_0} is halve of the image diagonal and @var{r_src} and @var{r_tgt} are the
12958 distances from the focal point in the source and target images, respectively.
12959
12960 @section lensfun
12961
12962 Apply lens correction via the lensfun library (@url{http://lensfun.sourceforge.net/}).
12963
12964 The @code{lensfun} filter requires the camera make, camera model, and lens model
12965 to apply the lens correction. The filter will load the lensfun database and
12966 query it to find the corresponding camera and lens entries in the database. As
12967 long as these entries can be found with the given options, the filter can
12968 perform corrections on frames. Note that incomplete strings will result in the
12969 filter choosing the best match with the given options, and the filter will
12970 output the chosen camera and lens models (logged with level "info"). You must
12971 provide the make, camera model, and lens model as they are required.
12972
12973 The filter accepts the following options:
12974
12975 @table @option
12976 @item make
12977 The make of the camera (for example, "Canon"). This option is required.
12978
12979 @item model
12980 The model of the camera (for example, "Canon EOS 100D"). This option is
12981 required.
12982
12983 @item lens_model
12984 The model of the lens (for example, "Canon EF-S 18-55mm f/3.5-5.6 IS STM"). This
12985 option is required.
12986
12987 @item mode
12988 The type of correction to apply. The following values are valid options:
12989
12990 @table @samp
12991 @item vignetting
12992 Enables fixing lens vignetting.
12993
12994 @item geometry
12995 Enables fixing lens geometry. This is the default.
12996
12997 @item subpixel
12998 Enables fixing chromatic aberrations.
12999
13000 @item vig_geo
13001 Enables fixing lens vignetting and lens geometry.
13002
13003 @item vig_subpixel
13004 Enables fixing lens vignetting and chromatic aberrations.
13005
13006 @item distortion
13007 Enables fixing both lens geometry and chromatic aberrations.
13008
13009 @item all
13010 Enables all possible corrections.
13011
13012 @end table
13013 @item focal_length
13014 The focal length of the image/video (zoom; expected constant for video). For
13015 example, a 18--55mm lens has focal length range of [18--55], so a value in that
13016 range should be chosen when using that lens. Default 18.
13017
13018 @item aperture
13019 The aperture of the image/video (expected constant for video). Note that
13020 aperture is only used for vignetting correction. Default 3.5.
13021
13022 @item focus_distance
13023 The focus distance of the image/video (expected constant for video). Note that
13024 focus distance is only used for vignetting and only slightly affects the
13025 vignetting correction process. If unknown, leave it at the default value (which
13026 is 1000).
13027
13028 @item scale
13029 The scale factor which is applied after transformation. After correction the
13030 video is no longer necessarily rectangular. This parameter controls how much of
13031 the resulting image is visible. The value 0 means that a value will be chosen
13032 automatically such that there is little or no unmapped area in the output
13033 image. 1.0 means that no additional scaling is done. Lower values may result
13034 in more of the corrected image being visible, while higher values may avoid
13035 unmapped areas in the output.
13036
13037 @item target_geometry
13038 The target geometry of the output image/video. The following values are valid
13039 options:
13040
13041 @table @samp
13042 @item rectilinear (default)
13043 @item fisheye
13044 @item panoramic
13045 @item equirectangular
13046 @item fisheye_orthographic
13047 @item fisheye_stereographic
13048 @item fisheye_equisolid
13049 @item fisheye_thoby
13050 @end table
13051 @item reverse
13052 Apply the reverse of image correction (instead of correcting distortion, apply
13053 it).
13054
13055 @item interpolation
13056 The type of interpolation used when correcting distortion. The following values
13057 are valid options:
13058
13059 @table @samp
13060 @item nearest
13061 @item linear (default)
13062 @item lanczos
13063 @end table
13064 @end table
13065
13066 @subsection Examples
13067
13068 @itemize
13069 @item
13070 Apply lens correction with make "Canon", camera model "Canon EOS 100D", and lens
13071 model "Canon EF-S 18-55mm f/3.5-5.6 IS STM" with focal length of "18" and
13072 aperture of "8.0".
13073
13074 @example
13075 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
13076 @end example
13077
13078 @item
13079 Apply the same as before, but only for the first 5 seconds of video.
13080
13081 @example
13082 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
13083 @end example
13084
13085 @end itemize
13086
13087 @section libvmaf
13088
13089 Obtain the VMAF (Video Multi-Method Assessment Fusion)
13090 score between two input videos.
13091
13092 The obtained VMAF score is printed through the logging system.
13093
13094 It requires Netflix's vmaf library (libvmaf) as a pre-requisite.
13095 After installing the library it can be enabled using:
13096 @code{./configure --enable-libvmaf}.
13097 If no model path is specified it uses the default model: @code{vmaf_v0.6.1.pkl}.
13098
13099 The filter has following options:
13100
13101 @table @option
13102 @item model_path
13103 Set the model path which is to be used for SVM.
13104 Default value: @code{"/usr/local/share/model/vmaf_v0.6.1.pkl"}
13105
13106 @item log_path
13107 Set the file path to be used to store logs.
13108
13109 @item log_fmt
13110 Set the format of the log file (csv, json or xml).
13111
13112 @item enable_transform
13113 This option can enable/disable the @code{score_transform} applied to the final predicted VMAF score,
13114 if you have specified score_transform option in the input parameter file passed to @code{run_vmaf_training.py}
13115 Default value: @code{false}
13116
13117 @item phone_model
13118 Invokes the phone model which will generate VMAF scores higher than in the
13119 regular model, which is more suitable for laptop, TV, etc. viewing conditions.
13120 Default value: @code{false}
13121
13122 @item psnr
13123 Enables computing psnr along with vmaf.
13124 Default value: @code{false}
13125
13126 @item ssim
13127 Enables computing ssim along with vmaf.
13128 Default value: @code{false}
13129
13130 @item ms_ssim
13131 Enables computing ms_ssim along with vmaf.
13132 Default value: @code{false}
13133
13134 @item pool
13135 Set the pool method to be used for computing vmaf.
13136 Options are @code{min}, @code{harmonic_mean} or @code{mean} (default).
13137
13138 @item n_threads
13139 Set number of threads to be used when computing vmaf.
13140 Default value: @code{0}, which makes use of all available logical processors.
13141
13142 @item n_subsample
13143 Set interval for frame subsampling used when computing vmaf.
13144 Default value: @code{1}
13145
13146 @item enable_conf_interval
13147 Enables confidence interval.
13148 Default value: @code{false}
13149 @end table
13150
13151 This filter also supports the @ref{framesync} options.
13152
13153 @subsection Examples
13154 @itemize
13155 @item
13156 On the below examples the input file @file{main.mpg} being processed is
13157 compared with the reference file @file{ref.mpg}.
13158
13159 @example
13160 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf -f null -
13161 @end example
13162
13163 @item
13164 Example with options:
13165 @example
13166 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf="psnr=1:log_fmt=json" -f null -
13167 @end example
13168
13169 @item
13170 Example with options and different containers:
13171 @example
13172 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 -
13173 @end example
13174 @end itemize
13175
13176 @section limiter
13177
13178 Limits the pixel components values to the specified range [min, max].
13179
13180 The filter accepts the following options:
13181
13182 @table @option
13183 @item min
13184 Lower bound. Defaults to the lowest allowed value for the input.
13185
13186 @item max
13187 Upper bound. Defaults to the highest allowed value for the input.
13188
13189 @item planes
13190 Specify which planes will be processed. Defaults to all available.
13191 @end table
13192
13193 @section loop
13194
13195 Loop video frames.
13196
13197 The filter accepts the following options:
13198
13199 @table @option
13200 @item loop
13201 Set the number of loops. Setting this value to -1 will result in infinite loops.
13202 Default is 0.
13203
13204 @item size
13205 Set maximal size in number of frames. Default is 0.
13206
13207 @item start
13208 Set first frame of loop. Default is 0.
13209 @end table
13210
13211 @subsection Examples
13212
13213 @itemize
13214 @item
13215 Loop single first frame infinitely:
13216 @example
13217 loop=loop=-1:size=1:start=0
13218 @end example
13219
13220 @item
13221 Loop single first frame 10 times:
13222 @example
13223 loop=loop=10:size=1:start=0
13224 @end example
13225
13226 @item
13227 Loop 10 first frames 5 times:
13228 @example
13229 loop=loop=5:size=10:start=0
13230 @end example
13231 @end itemize
13232
13233 @section lut1d
13234
13235 Apply a 1D LUT to an input video.
13236
13237 The filter accepts the following options:
13238
13239 @table @option
13240 @item file
13241 Set the 1D LUT file name.
13242
13243 Currently supported formats:
13244 @table @samp
13245 @item cube
13246 Iridas
13247 @item csp
13248 cineSpace
13249 @end table
13250
13251 @item interp
13252 Select interpolation mode.
13253
13254 Available values are:
13255
13256 @table @samp
13257 @item nearest
13258 Use values from the nearest defined point.
13259 @item linear
13260 Interpolate values using the linear interpolation.
13261 @item cosine
13262 Interpolate values using the cosine interpolation.
13263 @item cubic
13264 Interpolate values using the cubic interpolation.
13265 @item spline
13266 Interpolate values using the spline interpolation.
13267 @end table
13268 @end table
13269
13270 @anchor{lut3d}
13271 @section lut3d
13272
13273 Apply a 3D LUT to an input video.
13274
13275 The filter accepts the following options:
13276
13277 @table @option
13278 @item file
13279 Set the 3D LUT file name.
13280
13281 Currently supported formats:
13282 @table @samp
13283 @item 3dl
13284 AfterEffects
13285 @item cube
13286 Iridas
13287 @item dat
13288 DaVinci
13289 @item m3d
13290 Pandora
13291 @item csp
13292 cineSpace
13293 @end table
13294 @item interp
13295 Select interpolation mode.
13296
13297 Available values are:
13298
13299 @table @samp
13300 @item nearest
13301 Use values from the nearest defined point.
13302 @item trilinear
13303 Interpolate values using the 8 points defining a cube.
13304 @item tetrahedral
13305 Interpolate values using a tetrahedron.
13306 @end table
13307 @end table
13308
13309 @section lumakey
13310
13311 Turn certain luma values into transparency.
13312
13313 The filter accepts the following options:
13314
13315 @table @option
13316 @item threshold
13317 Set the luma which will be used as base for transparency.
13318 Default value is @code{0}.
13319
13320 @item tolerance
13321 Set the range of luma values to be keyed out.
13322 Default value is @code{0.01}.
13323
13324 @item softness
13325 Set the range of softness. Default value is @code{0}.
13326 Use this to control gradual transition from zero to full transparency.
13327 @end table
13328
13329 @subsection Commands
13330 This filter supports same @ref{commands} as options.
13331 The command accepts the same syntax of the corresponding option.
13332
13333 If the specified expression is not valid, it is kept at its current
13334 value.
13335
13336 @section lut, lutrgb, lutyuv
13337
13338 Compute a look-up table for binding each pixel component input value
13339 to an output value, and apply it to the input video.
13340
13341 @var{lutyuv} applies a lookup table to a YUV input video, @var{lutrgb}
13342 to an RGB input video.
13343
13344 These filters accept the following parameters:
13345 @table @option
13346 @item c0
13347 set first pixel component expression
13348 @item c1
13349 set second pixel component expression
13350 @item c2
13351 set third pixel component expression
13352 @item c3
13353 set fourth pixel component expression, corresponds to the alpha component
13354
13355 @item r
13356 set red component expression
13357 @item g
13358 set green component expression
13359 @item b
13360 set blue component expression
13361 @item a
13362 alpha component expression
13363
13364 @item y
13365 set Y/luminance component expression
13366 @item u
13367 set U/Cb component expression
13368 @item v
13369 set V/Cr component expression
13370 @end table
13371
13372 Each of them specifies the expression to use for computing the lookup table for
13373 the corresponding pixel component values.
13374
13375 The exact component associated to each of the @var{c*} options depends on the
13376 format in input.
13377
13378 The @var{lut} filter requires either YUV or RGB pixel formats in input,
13379 @var{lutrgb} requires RGB pixel formats in input, and @var{lutyuv} requires YUV.
13380
13381 The expressions can contain the following constants and functions:
13382
13383 @table @option
13384 @item w
13385 @item h
13386 The input width and height.
13387
13388 @item val
13389 The input value for the pixel component.
13390
13391 @item clipval
13392 The input value, clipped to the @var{minval}-@var{maxval} range.
13393
13394 @item maxval
13395 The maximum value for the pixel component.
13396
13397 @item minval
13398 The minimum value for the pixel component.
13399
13400 @item negval
13401 The negated value for the pixel component value, clipped to the
13402 @var{minval}-@var{maxval} range; it corresponds to the expression
13403 "maxval-clipval+minval".
13404
13405 @item clip(val)
13406 The computed value in @var{val}, clipped to the
13407 @var{minval}-@var{maxval} range.
13408
13409 @item gammaval(gamma)
13410 The computed gamma correction value of the pixel component value,
13411 clipped to the @var{minval}-@var{maxval} range. It corresponds to the
13412 expression
13413 "pow((clipval-minval)/(maxval-minval)\,@var{gamma})*(maxval-minval)+minval"
13414
13415 @end table
13416
13417 All expressions default to "val".
13418
13419 @subsection Examples
13420
13421 @itemize
13422 @item
13423 Negate input video:
13424 @example
13425 lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
13426 lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
13427 @end example
13428
13429 The above is the same as:
13430 @example
13431 lutrgb="r=negval:g=negval:b=negval"
13432 lutyuv="y=negval:u=negval:v=negval"
13433 @end example
13434
13435 @item
13436 Negate luminance:
13437 @example
13438 lutyuv=y=negval
13439 @end example
13440
13441 @item
13442 Remove chroma components, turning the video into a graytone image:
13443 @example
13444 lutyuv="u=128:v=128"
13445 @end example
13446
13447 @item
13448 Apply a luma burning effect:
13449 @example
13450 lutyuv="y=2*val"
13451 @end example
13452
13453 @item
13454 Remove green and blue components:
13455 @example
13456 lutrgb="g=0:b=0"
13457 @end example
13458
13459 @item
13460 Set a constant alpha channel value on input:
13461 @example
13462 format=rgba,lutrgb=a="maxval-minval/2"
13463 @end example
13464
13465 @item
13466 Correct luminance gamma by a factor of 0.5:
13467 @example
13468 lutyuv=y=gammaval(0.5)
13469 @end example
13470
13471 @item
13472 Discard least significant bits of luma:
13473 @example
13474 lutyuv=y='bitand(val, 128+64+32)'
13475 @end example
13476
13477 @item
13478 Technicolor like effect:
13479 @example
13480 lutyuv=u='(val-maxval/2)*2+maxval/2':v='(val-maxval/2)*2+maxval/2'
13481 @end example
13482 @end itemize
13483
13484 @section lut2, tlut2
13485
13486 The @code{lut2} filter takes two input streams and outputs one
13487 stream.
13488
13489 The @code{tlut2} (time lut2) filter takes two consecutive frames
13490 from one single stream.
13491
13492 This filter accepts the following parameters:
13493 @table @option
13494 @item c0
13495 set first pixel component expression
13496 @item c1
13497 set second pixel component expression
13498 @item c2
13499 set third pixel component expression
13500 @item c3
13501 set fourth pixel component expression, corresponds to the alpha component
13502
13503 @item d
13504 set output bit depth, only available for @code{lut2} filter. By default is 0,
13505 which means bit depth is automatically picked from first input format.
13506 @end table
13507
13508 The @code{lut2} filter also supports the @ref{framesync} options.
13509
13510 Each of them specifies the expression to use for computing the lookup table for
13511 the corresponding pixel component values.
13512
13513 The exact component associated to each of the @var{c*} options depends on the
13514 format in inputs.
13515
13516 The expressions can contain the following constants:
13517
13518 @table @option
13519 @item w
13520 @item h
13521 The input width and height.
13522
13523 @item x
13524 The first input value for the pixel component.
13525
13526 @item y
13527 The second input value for the pixel component.
13528
13529 @item bdx
13530 The first input video bit depth.
13531
13532 @item bdy
13533 The second input video bit depth.
13534 @end table
13535
13536 All expressions default to "x".
13537
13538 @subsection Examples
13539
13540 @itemize
13541 @item
13542 Highlight differences between two RGB video streams:
13543 @example
13544 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)'
13545 @end example
13546
13547 @item
13548 Highlight differences between two YUV video streams:
13549 @example
13550 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)'
13551 @end example
13552
13553 @item
13554 Show max difference between two video streams:
13555 @example
13556 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)))'
13557 @end example
13558 @end itemize
13559
13560 @section maskedclamp
13561
13562 Clamp the first input stream with the second input and third input stream.
13563
13564 Returns the value of first stream to be between second input
13565 stream - @code{undershoot} and third input stream + @code{overshoot}.
13566
13567 This filter accepts the following options:
13568 @table @option
13569 @item undershoot
13570 Default value is @code{0}.
13571
13572 @item overshoot
13573 Default value is @code{0}.
13574
13575 @item planes
13576 Set which planes will be processed as bitmap, unprocessed planes will be
13577 copied from first stream.
13578 By default value 0xf, all planes will be processed.
13579 @end table
13580
13581 @section maskedmax
13582
13583 Merge the second and third input stream into output stream using absolute differences
13584 between second input stream and first input stream and absolute difference between
13585 third input stream and first input stream. The picked value will be from second input
13586 stream if second absolute difference is greater than first one or from third input stream
13587 otherwise.
13588
13589 This filter accepts the following options:
13590 @table @option
13591 @item planes
13592 Set which planes will be processed as bitmap, unprocessed planes will be
13593 copied from first stream.
13594 By default value 0xf, all planes will be processed.
13595 @end table
13596
13597 @section maskedmerge
13598
13599 Merge the first input stream with the second input stream using per pixel
13600 weights in the third input stream.
13601
13602 A value of 0 in the third stream pixel component means that pixel component
13603 from first stream is returned unchanged, while maximum value (eg. 255 for
13604 8-bit videos) means that pixel component from second stream is returned
13605 unchanged. Intermediate values define the amount of merging between both
13606 input stream's pixel components.
13607
13608 This filter accepts the following options:
13609 @table @option
13610 @item planes
13611 Set which planes will be processed as bitmap, unprocessed planes will be
13612 copied from first stream.
13613 By default value 0xf, all planes will be processed.
13614 @end table
13615
13616 @section maskedmin
13617
13618 Merge the second and third input stream into output stream using absolute differences
13619 between second input stream and first input stream and absolute difference between
13620 third input stream and first input stream. The picked value will be from second input
13621 stream if second absolute difference is less than first one or from third input stream
13622 otherwise.
13623
13624 This filter accepts the following options:
13625 @table @option
13626 @item planes
13627 Set which planes will be processed as bitmap, unprocessed planes will be
13628 copied from first stream.
13629 By default value 0xf, all planes will be processed.
13630 @end table
13631
13632 @section maskedthreshold
13633 Pick pixels comparing absolute difference of two video streams with fixed
13634 threshold.
13635
13636 If absolute difference between pixel component of first and second video
13637 stream is equal or lower than user supplied threshold than pixel component
13638 from first video stream is picked, otherwise pixel component from second
13639 video stream is picked.
13640
13641 This filter accepts the following options:
13642 @table @option
13643 @item threshold
13644 Set threshold used when picking pixels from absolute difference from two input
13645 video streams.
13646
13647 @item planes
13648 Set which planes will be processed as bitmap, unprocessed planes will be
13649 copied from second stream.
13650 By default value 0xf, all planes will be processed.
13651 @end table
13652
13653 @section maskfun
13654 Create mask from input video.
13655
13656 For example it is useful to create motion masks after @code{tblend} filter.
13657
13658 This filter accepts the following options:
13659
13660 @table @option
13661 @item low
13662 Set low threshold. Any pixel component lower or exact than this value will be set to 0.
13663
13664 @item high
13665 Set high threshold. Any pixel component higher than this value will be set to max value
13666 allowed for current pixel format.
13667
13668 @item planes
13669 Set planes to filter, by default all available planes are filtered.
13670
13671 @item fill
13672 Fill all frame pixels with this value.
13673
13674 @item sum
13675 Set max average pixel value for frame. If sum of all pixel components is higher that this
13676 average, output frame will be completely filled with value set by @var{fill} option.
13677 Typically useful for scene changes when used in combination with @code{tblend} filter.
13678 @end table
13679
13680 @section mcdeint
13681
13682 Apply motion-compensation deinterlacing.
13683
13684 It needs one field per frame as input and must thus be used together
13685 with yadif=1/3 or equivalent.
13686
13687 This filter accepts the following options:
13688 @table @option
13689 @item mode
13690 Set the deinterlacing mode.
13691
13692 It accepts one of the following values:
13693 @table @samp
13694 @item fast
13695 @item medium
13696 @item slow
13697 use iterative motion estimation
13698 @item extra_slow
13699 like @samp{slow}, but use multiple reference frames.
13700 @end table
13701 Default value is @samp{fast}.
13702
13703 @item parity
13704 Set the picture field parity assumed for the input video. It must be
13705 one of the following values:
13706
13707 @table @samp
13708 @item 0, tff
13709 assume top field first
13710 @item 1, bff
13711 assume bottom field first
13712 @end table
13713
13714 Default value is @samp{bff}.
13715
13716 @item qp
13717 Set per-block quantization parameter (QP) used by the internal
13718 encoder.
13719
13720 Higher values should result in a smoother motion vector field but less
13721 optimal individual vectors. Default value is 1.
13722 @end table
13723
13724 @section median
13725
13726 Pick median pixel from certain rectangle defined by radius.
13727
13728 This filter accepts the following options:
13729
13730 @table @option
13731 @item radius
13732 Set horizontal radius size. Default value is @code{1}.
13733 Allowed range is integer from 1 to 127.
13734
13735 @item planes
13736 Set which planes to process. Default is @code{15}, which is all available planes.
13737
13738 @item radiusV
13739 Set vertical radius size. Default value is @code{0}.
13740 Allowed range is integer from 0 to 127.
13741 If it is 0, value will be picked from horizontal @code{radius} option.
13742
13743 @item percentile
13744 Set median percentile. Default value is @code{0.5}.
13745 Default value of @code{0.5} will pick always median values, while @code{0} will pick
13746 minimum values, and @code{1} maximum values.
13747 @end table
13748
13749 @subsection Commands
13750 This filter supports same @ref{commands} as options.
13751 The command accepts the same syntax of the corresponding option.
13752
13753 If the specified expression is not valid, it is kept at its current
13754 value.
13755
13756 @section mergeplanes
13757
13758 Merge color channel components from several video streams.
13759
13760 The filter accepts up to 4 input streams, and merge selected input
13761 planes to the output video.
13762
13763 This filter accepts the following options:
13764 @table @option
13765 @item mapping
13766 Set input to output plane mapping. Default is @code{0}.
13767
13768 The mappings is specified as a bitmap. It should be specified as a
13769 hexadecimal number in the form 0xAa[Bb[Cc[Dd]]]. 'Aa' describes the
13770 mapping for the first plane of the output stream. 'A' sets the number of
13771 the input stream to use (from 0 to 3), and 'a' the plane number of the
13772 corresponding input to use (from 0 to 3). The rest of the mappings is
13773 similar, 'Bb' describes the mapping for the output stream second
13774 plane, 'Cc' describes the mapping for the output stream third plane and
13775 'Dd' describes the mapping for the output stream fourth plane.
13776
13777 @item format
13778 Set output pixel format. Default is @code{yuva444p}.
13779 @end table
13780
13781 @subsection Examples
13782
13783 @itemize
13784 @item
13785 Merge three gray video streams of same width and height into single video stream:
13786 @example
13787 [a0][a1][a2]mergeplanes=0x001020:yuv444p
13788 @end example
13789
13790 @item
13791 Merge 1st yuv444p stream and 2nd gray video stream into yuva444p video stream:
13792 @example
13793 [a0][a1]mergeplanes=0x00010210:yuva444p
13794 @end example
13795
13796 @item
13797 Swap Y and A plane in yuva444p stream:
13798 @example
13799 format=yuva444p,mergeplanes=0x03010200:yuva444p
13800 @end example
13801
13802 @item
13803 Swap U and V plane in yuv420p stream:
13804 @example
13805 format=yuv420p,mergeplanes=0x000201:yuv420p
13806 @end example
13807
13808 @item
13809 Cast a rgb24 clip to yuv444p:
13810 @example
13811 format=rgb24,mergeplanes=0x000102:yuv444p
13812 @end example
13813 @end itemize
13814
13815 @section mestimate
13816
13817 Estimate and export motion vectors using block matching algorithms.
13818 Motion vectors are stored in frame side data to be used by other filters.
13819
13820 This filter accepts the following options:
13821 @table @option
13822 @item method
13823 Specify the motion estimation method. Accepts one of the following values:
13824
13825 @table @samp
13826 @item esa
13827 Exhaustive search algorithm.
13828 @item tss
13829 Three step search algorithm.
13830 @item tdls
13831 Two dimensional logarithmic search algorithm.
13832 @item ntss
13833 New three step search algorithm.
13834 @item fss
13835 Four step search algorithm.
13836 @item ds
13837 Diamond search algorithm.
13838 @item hexbs
13839 Hexagon-based search algorithm.
13840 @item epzs
13841 Enhanced predictive zonal search algorithm.
13842 @item umh
13843 Uneven multi-hexagon search algorithm.
13844 @end table
13845 Default value is @samp{esa}.
13846
13847 @item mb_size
13848 Macroblock size. Default @code{16}.
13849
13850 @item search_param
13851 Search parameter. Default @code{7}.
13852 @end table
13853
13854 @section midequalizer
13855
13856 Apply Midway Image Equalization effect using two video streams.
13857
13858 Midway Image Equalization adjusts a pair of images to have the same
13859 histogram, while maintaining their dynamics as much as possible. It's
13860 useful for e.g. matching exposures from a pair of stereo cameras.
13861
13862 This filter has two inputs and one output, which must be of same pixel format, but
13863 may be of different sizes. The output of filter is first input adjusted with
13864 midway histogram of both inputs.
13865
13866 This filter accepts the following option:
13867
13868 @table @option
13869 @item planes
13870 Set which planes to process. Default is @code{15}, which is all available planes.
13871 @end table
13872
13873 @section minterpolate
13874
13875 Convert the video to specified frame rate using motion interpolation.
13876
13877 This filter accepts the following options:
13878 @table @option
13879 @item fps
13880 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}.
13881
13882 @item mi_mode
13883 Motion interpolation mode. Following values are accepted:
13884 @table @samp
13885 @item dup
13886 Duplicate previous or next frame for interpolating new ones.
13887 @item blend
13888 Blend source frames. Interpolated frame is mean of previous and next frames.
13889 @item mci
13890 Motion compensated interpolation. Following options are effective when this mode is selected:
13891
13892 @table @samp
13893 @item mc_mode
13894 Motion compensation mode. Following values are accepted:
13895 @table @samp
13896 @item obmc
13897 Overlapped block motion compensation.
13898 @item aobmc
13899 Adaptive overlapped block motion compensation. Window weighting coefficients are controlled adaptively according to the reliabilities of the neighboring motion vectors to reduce oversmoothing.
13900 @end table
13901 Default mode is @samp{obmc}.
13902
13903 @item me_mode
13904 Motion estimation mode. Following values are accepted:
13905 @table @samp
13906 @item bidir
13907 Bidirectional motion estimation. Motion vectors are estimated for each source frame in both forward and backward directions.
13908 @item bilat
13909 Bilateral motion estimation. Motion vectors are estimated directly for interpolated frame.
13910 @end table
13911 Default mode is @samp{bilat}.
13912
13913 @item me
13914 The algorithm to be used for motion estimation. Following values are accepted:
13915 @table @samp
13916 @item esa
13917 Exhaustive search algorithm.
13918 @item tss
13919 Three step search algorithm.
13920 @item tdls
13921 Two dimensional logarithmic search algorithm.
13922 @item ntss
13923 New three step search algorithm.
13924 @item fss
13925 Four step search algorithm.
13926 @item ds
13927 Diamond search algorithm.
13928 @item hexbs
13929 Hexagon-based search algorithm.
13930 @item epzs
13931 Enhanced predictive zonal search algorithm.
13932 @item umh
13933 Uneven multi-hexagon search algorithm.
13934 @end table
13935 Default algorithm is @samp{epzs}.
13936
13937 @item mb_size
13938 Macroblock size. Default @code{16}.
13939
13940 @item search_param
13941 Motion estimation search parameter. Default @code{32}.
13942
13943 @item vsbmc
13944 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).
13945 @end table
13946 @end table
13947
13948 @item scd
13949 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:
13950 @table @samp
13951 @item none
13952 Disable scene change detection.
13953 @item fdiff
13954 Frame difference. Corresponding pixel values are compared and if it satisfies @var{scd_threshold} scene change is detected.
13955 @end table
13956 Default method is @samp{fdiff}.
13957
13958 @item scd_threshold
13959 Scene change detection threshold. Default is @code{10.}.
13960 @end table
13961
13962 @section mix
13963
13964 Mix several video input streams into one video stream.
13965
13966 A description of the accepted options follows.
13967
13968 @table @option
13969 @item nb_inputs
13970 The number of inputs. If unspecified, it defaults to 2.
13971
13972 @item weights
13973 Specify weight of each input video stream as sequence.
13974 Each weight is separated by space. If number of weights
13975 is smaller than number of @var{frames} last specified
13976 weight will be used for all remaining unset weights.
13977
13978 @item scale
13979 Specify scale, if it is set it will be multiplied with sum
13980 of each weight multiplied with pixel values to give final destination
13981 pixel value. By default @var{scale} is auto scaled to sum of weights.
13982
13983 @item duration
13984 Specify how end of stream is determined.
13985 @table @samp
13986 @item longest
13987 The duration of the longest input. (default)
13988
13989 @item shortest
13990 The duration of the shortest input.
13991
13992 @item first
13993 The duration of the first input.
13994 @end table
13995 @end table
13996
13997 @section mpdecimate
13998
13999 Drop frames that do not differ greatly from the previous frame in
14000 order to reduce frame rate.
14001
14002 The main use of this filter is for very-low-bitrate encoding
14003 (e.g. streaming over dialup modem), but it could in theory be used for
14004 fixing movies that were inverse-telecined incorrectly.
14005
14006 A description of the accepted options follows.
14007
14008 @table @option
14009 @item max
14010 Set the maximum number of consecutive frames which can be dropped (if
14011 positive), or the minimum interval between dropped frames (if
14012 negative). If the value is 0, the frame is dropped disregarding the
14013 number of previous sequentially dropped frames.
14014
14015 Default value is 0.
14016
14017 @item hi
14018 @item lo
14019 @item frac
14020 Set the dropping threshold values.
14021
14022 Values for @option{hi} and @option{lo} are for 8x8 pixel blocks and
14023 represent actual pixel value differences, so a threshold of 64
14024 corresponds to 1 unit of difference for each pixel, or the same spread
14025 out differently over the block.
14026
14027 A frame is a candidate for dropping if no 8x8 blocks differ by more
14028 than a threshold of @option{hi}, and if no more than @option{frac} blocks (1
14029 meaning the whole image) differ by more than a threshold of @option{lo}.
14030
14031 Default value for @option{hi} is 64*12, default value for @option{lo} is
14032 64*5, and default value for @option{frac} is 0.33.
14033 @end table
14034
14035
14036 @section negate
14037
14038 Negate (invert) the input video.
14039
14040 It accepts the following option:
14041
14042 @table @option
14043
14044 @item negate_alpha
14045 With value 1, it negates the alpha component, if present. Default value is 0.
14046 @end table
14047
14048 @anchor{nlmeans}
14049 @section nlmeans
14050
14051 Denoise frames using Non-Local Means algorithm.
14052
14053 Each pixel is adjusted by looking for other pixels with similar contexts. This
14054 context similarity is defined by comparing their surrounding patches of size
14055 @option{p}x@option{p}. Patches are searched in an area of @option{r}x@option{r}
14056 around the pixel.
14057
14058 Note that the research area defines centers for patches, which means some
14059 patches will be made of pixels outside that research area.
14060
14061 The filter accepts the following options.
14062
14063 @table @option
14064 @item s
14065 Set denoising strength. Default is 1.0. Must be in range [1.0, 30.0].
14066
14067 @item p
14068 Set patch size. Default is 7. Must be odd number in range [0, 99].
14069
14070 @item pc
14071 Same as @option{p} but for chroma planes.
14072
14073 The default value is @var{0} and means automatic.
14074
14075 @item r
14076 Set research size. Default is 15. Must be odd number in range [0, 99].
14077
14078 @item rc
14079 Same as @option{r} but for chroma planes.
14080
14081 The default value is @var{0} and means automatic.
14082 @end table
14083
14084 @section nnedi
14085
14086 Deinterlace video using neural network edge directed interpolation.
14087
14088 This filter accepts the following options:
14089
14090 @table @option
14091 @item weights
14092 Mandatory option, without binary file filter can not work.
14093 Currently file can be found here:
14094 https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin
14095
14096 @item deint
14097 Set which frames to deinterlace, by default it is @code{all}.
14098 Can be @code{all} or @code{interlaced}.
14099
14100 @item field
14101 Set mode of operation.
14102
14103 Can be one of the following:
14104
14105 @table @samp
14106 @item af
14107 Use frame flags, both fields.
14108 @item a
14109 Use frame flags, single field.
14110 @item t
14111 Use top field only.
14112 @item b
14113 Use bottom field only.
14114 @item tf
14115 Use both fields, top first.
14116 @item bf
14117 Use both fields, bottom first.
14118 @end table
14119
14120 @item planes
14121 Set which planes to process, by default filter process all frames.
14122
14123 @item nsize
14124 Set size of local neighborhood around each pixel, used by the predictor neural
14125 network.
14126
14127 Can be one of the following:
14128
14129 @table @samp
14130 @item s8x6
14131 @item s16x6
14132 @item s32x6
14133 @item s48x6
14134 @item s8x4
14135 @item s16x4
14136 @item s32x4
14137 @end table
14138
14139 @item nns
14140 Set the number of neurons in predictor neural network.
14141 Can be one of the following:
14142
14143 @table @samp
14144 @item n16
14145 @item n32
14146 @item n64
14147 @item n128
14148 @item n256
14149 @end table
14150
14151 @item qual
14152 Controls the number of different neural network predictions that are blended
14153 together to compute the final output value. Can be @code{fast}, default or
14154 @code{slow}.
14155
14156 @item etype
14157 Set which set of weights to use in the predictor.
14158 Can be one of the following:
14159
14160 @table @samp
14161 @item a
14162 weights trained to minimize absolute error
14163 @item s
14164 weights trained to minimize squared error
14165 @end table
14166
14167 @item pscrn
14168 Controls whether or not the prescreener neural network is used to decide
14169 which pixels should be processed by the predictor neural network and which
14170 can be handled by simple cubic interpolation.
14171 The prescreener is trained to know whether cubic interpolation will be
14172 sufficient for a pixel or whether it should be predicted by the predictor nn.
14173 The computational complexity of the prescreener nn is much less than that of
14174 the predictor nn. Since most pixels can be handled by cubic interpolation,
14175 using the prescreener generally results in much faster processing.
14176 The prescreener is pretty accurate, so the difference between using it and not
14177 using it is almost always unnoticeable.
14178
14179 Can be one of the following:
14180
14181 @table @samp
14182 @item none
14183 @item original
14184 @item new
14185 @end table
14186
14187 Default is @code{new}.
14188
14189 @item fapprox
14190 Set various debugging flags.
14191 @end table
14192
14193 @section noformat
14194
14195 Force libavfilter not to use any of the specified pixel formats for the
14196 input to the next filter.
14197
14198 It accepts the following parameters:
14199 @table @option
14200
14201 @item pix_fmts
14202 A '|'-separated list of pixel format names, such as
14203 pix_fmts=yuv420p|monow|rgb24".
14204
14205 @end table
14206
14207 @subsection Examples
14208
14209 @itemize
14210 @item
14211 Force libavfilter to use a format different from @var{yuv420p} for the
14212 input to the vflip filter:
14213 @example
14214 noformat=pix_fmts=yuv420p,vflip
14215 @end example
14216
14217 @item
14218 Convert the input video to any of the formats not contained in the list:
14219 @example
14220 noformat=yuv420p|yuv444p|yuv410p
14221 @end example
14222 @end itemize
14223
14224 @section noise
14225
14226 Add noise on video input frame.
14227
14228 The filter accepts the following options:
14229
14230 @table @option
14231 @item all_seed
14232 @item c0_seed
14233 @item c1_seed
14234 @item c2_seed
14235 @item c3_seed
14236 Set noise seed for specific pixel component or all pixel components in case
14237 of @var{all_seed}. Default value is @code{123457}.
14238
14239 @item all_strength, alls
14240 @item c0_strength, c0s
14241 @item c1_strength, c1s
14242 @item c2_strength, c2s
14243 @item c3_strength, c3s
14244 Set noise strength for specific pixel component or all pixel components in case
14245 @var{all_strength}. Default value is @code{0}. Allowed range is [0, 100].
14246
14247 @item all_flags, allf
14248 @item c0_flags, c0f
14249 @item c1_flags, c1f
14250 @item c2_flags, c2f
14251 @item c3_flags, c3f
14252 Set pixel component flags or set flags for all components if @var{all_flags}.
14253 Available values for component flags are:
14254 @table @samp
14255 @item a
14256 averaged temporal noise (smoother)
14257 @item p
14258 mix random noise with a (semi)regular pattern
14259 @item t
14260 temporal noise (noise pattern changes between frames)
14261 @item u
14262 uniform noise (gaussian otherwise)
14263 @end table
14264 @end table
14265
14266 @subsection Examples
14267
14268 Add temporal and uniform noise to input video:
14269 @example
14270 noise=alls=20:allf=t+u
14271 @end example
14272
14273 @section normalize
14274
14275 Normalize RGB video (aka histogram stretching, contrast stretching).
14276 See: https://en.wikipedia.org/wiki/Normalization_(image_processing)
14277
14278 For each channel of each frame, the filter computes the input range and maps
14279 it linearly to the user-specified output range. The output range defaults
14280 to the full dynamic range from pure black to pure white.
14281
14282 Temporal smoothing can be used on the input range to reduce flickering (rapid
14283 changes in brightness) caused when small dark or bright objects enter or leave
14284 the scene. This is similar to the auto-exposure (automatic gain control) on a
14285 video camera, and, like a video camera, it may cause a period of over- or
14286 under-exposure of the video.
14287
14288 The R,G,B channels can be normalized independently, which may cause some
14289 color shifting, or linked together as a single channel, which prevents
14290 color shifting. Linked normalization preserves hue. Independent normalization
14291 does not, so it can be used to remove some color casts. Independent and linked
14292 normalization can be combined in any ratio.
14293
14294 The normalize filter accepts the following options:
14295
14296 @table @option
14297 @item blackpt
14298 @item whitept
14299 Colors which define the output range. The minimum input value is mapped to
14300 the @var{blackpt}. The maximum input value is mapped to the @var{whitept}.
14301 The defaults are black and white respectively. Specifying white for
14302 @var{blackpt} and black for @var{whitept} will give color-inverted,
14303 normalized video. Shades of grey can be used to reduce the dynamic range
14304 (contrast). Specifying saturated colors here can create some interesting
14305 effects.
14306
14307 @item smoothing
14308 The number of previous frames to use for temporal smoothing. The input range
14309 of each channel is smoothed using a rolling average over the current frame
14310 and the @var{smoothing} previous frames. The default is 0 (no temporal
14311 smoothing).
14312
14313 @item independence
14314 Controls the ratio of independent (color shifting) channel normalization to
14315 linked (color preserving) normalization. 0.0 is fully linked, 1.0 is fully
14316 independent. Defaults to 1.0 (fully independent).
14317
14318 @item strength
14319 Overall strength of the filter. 1.0 is full strength. 0.0 is a rather
14320 expensive no-op. Defaults to 1.0 (full strength).
14321
14322 @end table
14323
14324 @subsection Commands
14325 This filter supports same @ref{commands} as options, excluding @var{smoothing} option.
14326 The command accepts the same syntax of the corresponding option.
14327
14328 If the specified expression is not valid, it is kept at its current
14329 value.
14330
14331 @subsection Examples
14332
14333 Stretch video contrast to use the full dynamic range, with no temporal
14334 smoothing; may flicker depending on the source content:
14335 @example
14336 normalize=blackpt=black:whitept=white:smoothing=0
14337 @end example
14338
14339 As above, but with 50 frames of temporal smoothing; flicker should be
14340 reduced, depending on the source content:
14341 @example
14342 normalize=blackpt=black:whitept=white:smoothing=50
14343 @end example
14344
14345 As above, but with hue-preserving linked channel normalization:
14346 @example
14347 normalize=blackpt=black:whitept=white:smoothing=50:independence=0
14348 @end example
14349
14350 As above, but with half strength:
14351 @example
14352 normalize=blackpt=black:whitept=white:smoothing=50:independence=0:strength=0.5
14353 @end example
14354
14355 Map the darkest input color to red, the brightest input color to cyan:
14356 @example
14357 normalize=blackpt=red:whitept=cyan
14358 @end example
14359
14360 @section null
14361
14362 Pass the video source unchanged to the output.
14363
14364 @section ocr
14365 Optical Character Recognition
14366
14367 This filter uses Tesseract for optical character recognition. To enable
14368 compilation of this filter, you need to configure FFmpeg with
14369 @code{--enable-libtesseract}.
14370
14371 It accepts the following options:
14372
14373 @table @option
14374 @item datapath
14375 Set datapath to tesseract data. Default is to use whatever was
14376 set at installation.
14377
14378 @item language
14379 Set language, default is "eng".
14380
14381 @item whitelist
14382 Set character whitelist.
14383
14384 @item blacklist
14385 Set character blacklist.
14386 @end table
14387
14388 The filter exports recognized text as the frame metadata @code{lavfi.ocr.text}.
14389 The filter exports confidence of recognized words as the frame metadata @code{lavfi.ocr.confidence}.
14390
14391 @section ocv
14392
14393 Apply a video transform using libopencv.
14394
14395 To enable this filter, install the libopencv library and headers and
14396 configure FFmpeg with @code{--enable-libopencv}.
14397
14398 It accepts the following parameters:
14399
14400 @table @option
14401
14402 @item filter_name
14403 The name of the libopencv filter to apply.
14404
14405 @item filter_params
14406 The parameters to pass to the libopencv filter. If not specified, the default
14407 values are assumed.
14408
14409 @end table
14410
14411 Refer to the official libopencv documentation for more precise
14412 information:
14413 @url{http://docs.opencv.org/master/modules/imgproc/doc/filtering.html}
14414
14415 Several libopencv filters are supported; see the following subsections.
14416
14417 @anchor{dilate}
14418 @subsection dilate
14419
14420 Dilate an image by using a specific structuring element.
14421 It corresponds to the libopencv function @code{cvDilate}.
14422
14423 It accepts the parameters: @var{struct_el}|@var{nb_iterations}.
14424
14425 @var{struct_el} represents a structuring element, and has the syntax:
14426 @var{cols}x@var{rows}+@var{anchor_x}x@var{anchor_y}/@var{shape}
14427
14428 @var{cols} and @var{rows} represent the number of columns and rows of
14429 the structuring element, @var{anchor_x} and @var{anchor_y} the anchor
14430 point, and @var{shape} the shape for the structuring element. @var{shape}
14431 must be "rect", "cross", "ellipse", or "custom".
14432
14433 If the value for @var{shape} is "custom", it must be followed by a
14434 string of the form "=@var{filename}". The file with name
14435 @var{filename} is assumed to represent a binary image, with each
14436 printable character corresponding to a bright pixel. When a custom
14437 @var{shape} is used, @var{cols} and @var{rows} are ignored, the number
14438 or columns and rows of the read file are assumed instead.
14439
14440 The default value for @var{struct_el} is "3x3+0x0/rect".
14441
14442 @var{nb_iterations} specifies the number of times the transform is
14443 applied to the image, and defaults to 1.
14444
14445 Some examples:
14446 @example
14447 # Use the default values
14448 ocv=dilate
14449
14450 # Dilate using a structuring element with a 5x5 cross, iterating two times
14451 ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
14452
14453 # Read the shape from the file diamond.shape, iterating two times.
14454 # The file diamond.shape may contain a pattern of characters like this
14455 #   *
14456 #  ***
14457 # *****
14458 #  ***
14459 #   *
14460 # The specified columns and rows are ignored
14461 # but the anchor point coordinates are not
14462 ocv=dilate:0x0+2x2/custom=diamond.shape|2
14463 @end example
14464
14465 @subsection erode
14466
14467 Erode an image by using a specific structuring element.
14468 It corresponds to the libopencv function @code{cvErode}.
14469
14470 It accepts the parameters: @var{struct_el}:@var{nb_iterations},
14471 with the same syntax and semantics as the @ref{dilate} filter.
14472
14473 @subsection smooth
14474
14475 Smooth the input video.
14476
14477 The filter takes the following parameters:
14478 @var{type}|@var{param1}|@var{param2}|@var{param3}|@var{param4}.
14479
14480 @var{type} is the type of smooth filter to apply, and must be one of
14481 the following values: "blur", "blur_no_scale", "median", "gaussian",
14482 or "bilateral". The default value is "gaussian".
14483
14484 The meaning of @var{param1}, @var{param2}, @var{param3}, and @var{param4}
14485 depends on the smooth type. @var{param1} and
14486 @var{param2} accept integer positive values or 0. @var{param3} and
14487 @var{param4} accept floating point values.
14488
14489 The default value for @var{param1} is 3. The default value for the
14490 other parameters is 0.
14491
14492 These parameters correspond to the parameters assigned to the
14493 libopencv function @code{cvSmooth}.
14494
14495 @section oscilloscope
14496
14497 2D Video Oscilloscope.
14498
14499 Useful to measure spatial impulse, step responses, chroma delays, etc.
14500
14501 It accepts the following parameters:
14502
14503 @table @option
14504 @item x
14505 Set scope center x position.
14506
14507 @item y
14508 Set scope center y position.
14509
14510 @item s
14511 Set scope size, relative to frame diagonal.
14512
14513 @item t
14514 Set scope tilt/rotation.
14515
14516 @item o
14517 Set trace opacity.
14518
14519 @item tx
14520 Set trace center x position.
14521
14522 @item ty
14523 Set trace center y position.
14524
14525 @item tw
14526 Set trace width, relative to width of frame.
14527
14528 @item th
14529 Set trace height, relative to height of frame.
14530
14531 @item c
14532 Set which components to trace. By default it traces first three components.
14533
14534 @item g
14535 Draw trace grid. By default is enabled.
14536
14537 @item st
14538 Draw some statistics. By default is enabled.
14539
14540 @item sc
14541 Draw scope. By default is enabled.
14542 @end table
14543
14544 @subsection Commands
14545 This filter supports same @ref{commands} as options.
14546 The command accepts the same syntax of the corresponding option.
14547
14548 If the specified expression is not valid, it is kept at its current
14549 value.
14550
14551 @subsection Examples
14552
14553 @itemize
14554 @item
14555 Inspect full first row of video frame.
14556 @example
14557 oscilloscope=x=0.5:y=0:s=1
14558 @end example
14559
14560 @item
14561 Inspect full last row of video frame.
14562 @example
14563 oscilloscope=x=0.5:y=1:s=1
14564 @end example
14565
14566 @item
14567 Inspect full 5th line of video frame of height 1080.
14568 @example
14569 oscilloscope=x=0.5:y=5/1080:s=1
14570 @end example
14571
14572 @item
14573 Inspect full last column of video frame.
14574 @example
14575 oscilloscope=x=1:y=0.5:s=1:t=1
14576 @end example
14577
14578 @end itemize
14579
14580 @anchor{overlay}
14581 @section overlay
14582
14583 Overlay one video on top of another.
14584
14585 It takes two inputs and has one output. The first input is the "main"
14586 video on which the second input is overlaid.
14587
14588 It accepts the following parameters:
14589
14590 A description of the accepted options follows.
14591
14592 @table @option
14593 @item x
14594 @item y
14595 Set the expression for the x and y coordinates of the overlaid video
14596 on the main video. Default value is "0" for both expressions. In case
14597 the expression is invalid, it is set to a huge value (meaning that the
14598 overlay will not be displayed within the output visible area).
14599
14600 @item eof_action
14601 See @ref{framesync}.
14602
14603 @item eval
14604 Set when the expressions for @option{x}, and @option{y} are evaluated.
14605
14606 It accepts the following values:
14607 @table @samp
14608 @item init
14609 only evaluate expressions once during the filter initialization or
14610 when a command is processed
14611
14612 @item frame
14613 evaluate expressions for each incoming frame
14614 @end table
14615
14616 Default value is @samp{frame}.
14617
14618 @item shortest
14619 See @ref{framesync}.
14620
14621 @item format
14622 Set the format for the output video.
14623
14624 It accepts the following values:
14625 @table @samp
14626 @item yuv420
14627 force YUV420 output
14628
14629 @item yuv420p10
14630 force YUV420p10 output
14631
14632 @item yuv422
14633 force YUV422 output
14634
14635 @item yuv422p10
14636 force YUV422p10 output
14637
14638 @item yuv444
14639 force YUV444 output
14640
14641 @item rgb
14642 force packed RGB output
14643
14644 @item gbrp
14645 force planar RGB output
14646
14647 @item auto
14648 automatically pick format
14649 @end table
14650
14651 Default value is @samp{yuv420}.
14652
14653 @item repeatlast
14654 See @ref{framesync}.
14655
14656 @item alpha
14657 Set format of alpha of the overlaid video, it can be @var{straight} or
14658 @var{premultiplied}. Default is @var{straight}.
14659 @end table
14660
14661 The @option{x}, and @option{y} expressions can contain the following
14662 parameters.
14663
14664 @table @option
14665 @item main_w, W
14666 @item main_h, H
14667 The main input width and height.
14668
14669 @item overlay_w, w
14670 @item overlay_h, h
14671 The overlay input width and height.
14672
14673 @item x
14674 @item y
14675 The computed values for @var{x} and @var{y}. They are evaluated for
14676 each new frame.
14677
14678 @item hsub
14679 @item vsub
14680 horizontal and vertical chroma subsample values of the output
14681 format. For example for the pixel format "yuv422p" @var{hsub} is 2 and
14682 @var{vsub} is 1.
14683
14684 @item n
14685 the number of input frame, starting from 0
14686
14687 @item pos
14688 the position in the file of the input frame, NAN if unknown
14689
14690 @item t
14691 The timestamp, expressed in seconds. It's NAN if the input timestamp is unknown.
14692
14693 @end table
14694
14695 This filter also supports the @ref{framesync} options.
14696
14697 Note that the @var{n}, @var{pos}, @var{t} variables are available only
14698 when evaluation is done @emph{per frame}, and will evaluate to NAN
14699 when @option{eval} is set to @samp{init}.
14700
14701 Be aware that frames are taken from each input video in timestamp
14702 order, hence, if their initial timestamps differ, it is a good idea
14703 to pass the two inputs through a @var{setpts=PTS-STARTPTS} filter to
14704 have them begin in the same zero timestamp, as the example for
14705 the @var{movie} filter does.
14706
14707 You can chain together more overlays but you should test the
14708 efficiency of such approach.
14709
14710 @subsection Commands
14711
14712 This filter supports the following commands:
14713 @table @option
14714 @item x
14715 @item y
14716 Modify the x and y of the overlay input.
14717 The command accepts the same syntax of the corresponding option.
14718
14719 If the specified expression is not valid, it is kept at its current
14720 value.
14721 @end table
14722
14723 @subsection Examples
14724
14725 @itemize
14726 @item
14727 Draw the overlay at 10 pixels from the bottom right corner of the main
14728 video:
14729 @example
14730 overlay=main_w-overlay_w-10:main_h-overlay_h-10
14731 @end example
14732
14733 Using named options the example above becomes:
14734 @example
14735 overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
14736 @end example
14737
14738 @item
14739 Insert a transparent PNG logo in the bottom left corner of the input,
14740 using the @command{ffmpeg} tool with the @code{-filter_complex} option:
14741 @example
14742 ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
14743 @end example
14744
14745 @item
14746 Insert 2 different transparent PNG logos (second logo on bottom
14747 right corner) using the @command{ffmpeg} tool:
14748 @example
14749 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
14750 @end example
14751
14752 @item
14753 Add a transparent color layer on top of the main video; @code{WxH}
14754 must specify the size of the main input to the overlay filter:
14755 @example
14756 color=color=red@@.3:size=WxH [over]; [in][over] overlay [out]
14757 @end example
14758
14759 @item
14760 Play an original video and a filtered version (here with the deshake
14761 filter) side by side using the @command{ffplay} tool:
14762 @example
14763 ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
14764 @end example
14765
14766 The above command is the same as:
14767 @example
14768 ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
14769 @end example
14770
14771 @item
14772 Make a sliding overlay appearing from the left to the right top part of the
14773 screen starting since time 2:
14774 @example
14775 overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
14776 @end example
14777
14778 @item
14779 Compose output by putting two input videos side to side:
14780 @example
14781 ffmpeg -i left.avi -i right.avi -filter_complex "
14782 nullsrc=size=200x100 [background];
14783 [0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
14784 [1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
14785 [background][left]       overlay=shortest=1       [background+left];
14786 [background+left][right] overlay=shortest=1:x=100 [left+right]
14787 "
14788 @end example
14789
14790 @item
14791 Mask 10-20 seconds of a video by applying the delogo filter to a section
14792 @example
14793 ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
14794 -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]'
14795 masked.avi
14796 @end example
14797
14798 @item
14799 Chain several overlays in cascade:
14800 @example
14801 nullsrc=s=200x200 [bg];
14802 testsrc=s=100x100, split=4 [in0][in1][in2][in3];
14803 [in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
14804 [in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
14805 [in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
14806 [in3] null,       [mid2] overlay=100:100 [out0]
14807 @end example
14808
14809 @end itemize
14810
14811 @anchor{overlay_cuda}
14812 @section overlay_cuda
14813
14814 Overlay one video on top of another.
14815
14816 This is the CUDA cariant of the @ref{overlay} filter.
14817 It only accepts CUDA frames. The underlying input pixel formats have to match.
14818
14819 It takes two inputs and has one output. The first input is the "main"
14820 video on which the second input is overlaid.
14821
14822 It accepts the following parameters:
14823
14824 @table @option
14825 @item x
14826 @item y
14827 Set the x and y coordinates of the overlaid video on the main video.
14828 Default value is "0" for both expressions.
14829
14830 @item eof_action
14831 See @ref{framesync}.
14832
14833 @item shortest
14834 See @ref{framesync}.
14835
14836 @item repeatlast
14837 See @ref{framesync}.
14838
14839 @end table
14840
14841 This filter also supports the @ref{framesync} options.
14842
14843 @section owdenoise
14844
14845 Apply Overcomplete Wavelet denoiser.
14846
14847 The filter accepts the following options:
14848
14849 @table @option
14850 @item depth
14851 Set depth.
14852
14853 Larger depth values will denoise lower frequency components more, but
14854 slow down filtering.
14855
14856 Must be an int in the range 8-16, default is @code{8}.
14857
14858 @item luma_strength, ls
14859 Set luma strength.
14860
14861 Must be a double value in the range 0-1000, default is @code{1.0}.
14862
14863 @item chroma_strength, cs
14864 Set chroma strength.
14865
14866 Must be a double value in the range 0-1000, default is @code{1.0}.
14867 @end table
14868
14869 @anchor{pad}
14870 @section pad
14871
14872 Add paddings to the input image, and place the original input at the
14873 provided @var{x}, @var{y} coordinates.
14874
14875 It accepts the following parameters:
14876
14877 @table @option
14878 @item width, w
14879 @item height, h
14880 Specify an expression for the size of the output image with the
14881 paddings added. If the value for @var{width} or @var{height} is 0, the
14882 corresponding input size is used for the output.
14883
14884 The @var{width} expression can reference the value set by the
14885 @var{height} expression, and vice versa.
14886
14887 The default value of @var{width} and @var{height} is 0.
14888
14889 @item x
14890 @item y
14891 Specify the offsets to place the input image at within the padded area,
14892 with respect to the top/left border of the output image.
14893
14894 The @var{x} expression can reference the value set by the @var{y}
14895 expression, and vice versa.
14896
14897 The default value of @var{x} and @var{y} is 0.
14898
14899 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
14900 so the input image is centered on the padded area.
14901
14902 @item color
14903 Specify the color of the padded area. For the syntax of this option,
14904 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
14905 manual,ffmpeg-utils}.
14906
14907 The default value of @var{color} is "black".
14908
14909 @item eval
14910 Specify when to evaluate  @var{width}, @var{height}, @var{x} and @var{y} expression.
14911
14912 It accepts the following values:
14913
14914 @table @samp
14915 @item init
14916 Only evaluate expressions once during the filter initialization or when
14917 a command is processed.
14918
14919 @item frame
14920 Evaluate expressions for each incoming frame.
14921
14922 @end table
14923
14924 Default value is @samp{init}.
14925
14926 @item aspect
14927 Pad to aspect instead to a resolution.
14928
14929 @end table
14930
14931 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
14932 options are expressions containing the following constants:
14933
14934 @table @option
14935 @item in_w
14936 @item in_h
14937 The input video width and height.
14938
14939 @item iw
14940 @item ih
14941 These are the same as @var{in_w} and @var{in_h}.
14942
14943 @item out_w
14944 @item out_h
14945 The output width and height (the size of the padded area), as
14946 specified by the @var{width} and @var{height} expressions.
14947
14948 @item ow
14949 @item oh
14950 These are the same as @var{out_w} and @var{out_h}.
14951
14952 @item x
14953 @item y
14954 The x and y offsets as specified by the @var{x} and @var{y}
14955 expressions, or NAN if not yet specified.
14956
14957 @item a
14958 same as @var{iw} / @var{ih}
14959
14960 @item sar
14961 input sample aspect ratio
14962
14963 @item dar
14964 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
14965
14966 @item hsub
14967 @item vsub
14968 The horizontal and vertical chroma subsample values. For example for the
14969 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
14970 @end table
14971
14972 @subsection Examples
14973
14974 @itemize
14975 @item
14976 Add paddings with the color "violet" to the input video. The output video
14977 size is 640x480, and the top-left corner of the input video is placed at
14978 column 0, row 40
14979 @example
14980 pad=640:480:0:40:violet
14981 @end example
14982
14983 The example above is equivalent to the following command:
14984 @example
14985 pad=width=640:height=480:x=0:y=40:color=violet
14986 @end example
14987
14988 @item
14989 Pad the input to get an output with dimensions increased by 3/2,
14990 and put the input video at the center of the padded area:
14991 @example
14992 pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
14993 @end example
14994
14995 @item
14996 Pad the input to get a squared output with size equal to the maximum
14997 value between the input width and height, and put the input video at
14998 the center of the padded area:
14999 @example
15000 pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
15001 @end example
15002
15003 @item
15004 Pad the input to get a final w/h ratio of 16:9:
15005 @example
15006 pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
15007 @end example
15008
15009 @item
15010 In case of anamorphic video, in order to set the output display aspect
15011 correctly, it is necessary to use @var{sar} in the expression,
15012 according to the relation:
15013 @example
15014 (ih * X / ih) * sar = output_dar
15015 X = output_dar / sar
15016 @end example
15017
15018 Thus the previous example needs to be modified to:
15019 @example
15020 pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
15021 @end example
15022
15023 @item
15024 Double the output size and put the input video in the bottom-right
15025 corner of the output padded area:
15026 @example
15027 pad="2*iw:2*ih:ow-iw:oh-ih"
15028 @end example
15029 @end itemize
15030
15031 @anchor{palettegen}
15032 @section palettegen
15033
15034 Generate one palette for a whole video stream.
15035
15036 It accepts the following options:
15037
15038 @table @option
15039 @item max_colors
15040 Set the maximum number of colors to quantize in the palette.
15041 Note: the palette will still contain 256 colors; the unused palette entries
15042 will be black.
15043
15044 @item reserve_transparent
15045 Create a palette of 255 colors maximum and reserve the last one for
15046 transparency. Reserving the transparency color is useful for GIF optimization.
15047 If not set, the maximum of colors in the palette will be 256. You probably want
15048 to disable this option for a standalone image.
15049 Set by default.
15050
15051 @item transparency_color
15052 Set the color that will be used as background for transparency.
15053
15054 @item stats_mode
15055 Set statistics mode.
15056
15057 It accepts the following values:
15058 @table @samp
15059 @item full
15060 Compute full frame histograms.
15061 @item diff
15062 Compute histograms only for the part that differs from previous frame. This
15063 might be relevant to give more importance to the moving part of your input if
15064 the background is static.
15065 @item single
15066 Compute new histogram for each frame.
15067 @end table
15068
15069 Default value is @var{full}.
15070 @end table
15071
15072 The filter also exports the frame metadata @code{lavfi.color_quant_ratio}
15073 (@code{nb_color_in / nb_color_out}) which you can use to evaluate the degree of
15074 color quantization of the palette. This information is also visible at
15075 @var{info} logging level.
15076
15077 @subsection Examples
15078
15079 @itemize
15080 @item
15081 Generate a representative palette of a given video using @command{ffmpeg}:
15082 @example
15083 ffmpeg -i input.mkv -vf palettegen palette.png
15084 @end example
15085 @end itemize
15086
15087 @section paletteuse
15088
15089 Use a palette to downsample an input video stream.
15090
15091 The filter takes two inputs: one video stream and a palette. The palette must
15092 be a 256 pixels image.
15093
15094 It accepts the following options:
15095
15096 @table @option
15097 @item dither
15098 Select dithering mode. Available algorithms are:
15099 @table @samp
15100 @item bayer
15101 Ordered 8x8 bayer dithering (deterministic)
15102 @item heckbert
15103 Dithering as defined by Paul Heckbert in 1982 (simple error diffusion).
15104 Note: this dithering is sometimes considered "wrong" and is included as a
15105 reference.
15106 @item floyd_steinberg
15107 Floyd and Steingberg dithering (error diffusion)
15108 @item sierra2
15109 Frankie Sierra dithering v2 (error diffusion)
15110 @item sierra2_4a
15111 Frankie Sierra dithering v2 "Lite" (error diffusion)
15112 @end table
15113
15114 Default is @var{sierra2_4a}.
15115
15116 @item bayer_scale
15117 When @var{bayer} dithering is selected, this option defines the scale of the
15118 pattern (how much the crosshatch pattern is visible). A low value means more
15119 visible pattern for less banding, and higher value means less visible pattern
15120 at the cost of more banding.
15121
15122 The option must be an integer value in the range [0,5]. Default is @var{2}.
15123
15124 @item diff_mode
15125 If set, define the zone to process
15126
15127 @table @samp
15128 @item rectangle
15129 Only the changing rectangle will be reprocessed. This is similar to GIF
15130 cropping/offsetting compression mechanism. This option can be useful for speed
15131 if only a part of the image is changing, and has use cases such as limiting the
15132 scope of the error diffusal @option{dither} to the rectangle that bounds the
15133 moving scene (it leads to more deterministic output if the scene doesn't change
15134 much, and as a result less moving noise and better GIF compression).
15135 @end table
15136
15137 Default is @var{none}.
15138
15139 @item new
15140 Take new palette for each output frame.
15141
15142 @item alpha_threshold
15143 Sets the alpha threshold for transparency. Alpha values above this threshold
15144 will be treated as completely opaque, and values below this threshold will be
15145 treated as completely transparent.
15146
15147 The option must be an integer value in the range [0,255]. Default is @var{128}.
15148 @end table
15149
15150 @subsection Examples
15151
15152 @itemize
15153 @item
15154 Use a palette (generated for example with @ref{palettegen}) to encode a GIF
15155 using @command{ffmpeg}:
15156 @example
15157 ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
15158 @end example
15159 @end itemize
15160
15161 @section perspective
15162
15163 Correct perspective of video not recorded perpendicular to the screen.
15164
15165 A description of the accepted parameters follows.
15166
15167 @table @option
15168 @item x0
15169 @item y0
15170 @item x1
15171 @item y1
15172 @item x2
15173 @item y2
15174 @item x3
15175 @item y3
15176 Set coordinates expression for top left, top right, bottom left and bottom right corners.
15177 Default values are @code{0:0:W:0:0:H:W:H} with which perspective will remain unchanged.
15178 If the @code{sense} option is set to @code{source}, then the specified points will be sent
15179 to the corners of the destination. If the @code{sense} option is set to @code{destination},
15180 then the corners of the source will be sent to the specified coordinates.
15181
15182 The expressions can use the following variables:
15183
15184 @table @option
15185 @item W
15186 @item H
15187 the width and height of video frame.
15188 @item in
15189 Input frame count.
15190 @item on
15191 Output frame count.
15192 @end table
15193
15194 @item interpolation
15195 Set interpolation for perspective correction.
15196
15197 It accepts the following values:
15198 @table @samp
15199 @item linear
15200 @item cubic
15201 @end table
15202
15203 Default value is @samp{linear}.
15204
15205 @item sense
15206 Set interpretation of coordinate options.
15207
15208 It accepts the following values:
15209 @table @samp
15210 @item 0, source
15211
15212 Send point in the source specified by the given coordinates to
15213 the corners of the destination.
15214
15215 @item 1, destination
15216
15217 Send the corners of the source to the point in the destination specified
15218 by the given coordinates.
15219
15220 Default value is @samp{source}.
15221 @end table
15222
15223 @item eval
15224 Set when the expressions for coordinates @option{x0,y0,...x3,y3} are evaluated.
15225
15226 It accepts the following values:
15227 @table @samp
15228 @item init
15229 only evaluate expressions once during the filter initialization or
15230 when a command is processed
15231
15232 @item frame
15233 evaluate expressions for each incoming frame
15234 @end table
15235
15236 Default value is @samp{init}.
15237 @end table
15238
15239 @section phase
15240
15241 Delay interlaced video by one field time so that the field order changes.
15242
15243 The intended use is to fix PAL movies that have been captured with the
15244 opposite field order to the film-to-video transfer.
15245
15246 A description of the accepted parameters follows.
15247
15248 @table @option
15249 @item mode
15250 Set phase mode.
15251
15252 It accepts the following values:
15253 @table @samp
15254 @item t
15255 Capture field order top-first, transfer bottom-first.
15256 Filter will delay the bottom field.
15257
15258 @item b
15259 Capture field order bottom-first, transfer top-first.
15260 Filter will delay the top field.
15261
15262 @item p
15263 Capture and transfer with the same field order. This mode only exists
15264 for the documentation of the other options to refer to, but if you
15265 actually select it, the filter will faithfully do nothing.
15266
15267 @item a
15268 Capture field order determined automatically by field flags, transfer
15269 opposite.
15270 Filter selects among @samp{t} and @samp{b} modes on a frame by frame
15271 basis using field flags. If no field information is available,
15272 then this works just like @samp{u}.
15273
15274 @item u
15275 Capture unknown or varying, transfer opposite.
15276 Filter selects among @samp{t} and @samp{b} on a frame by frame basis by
15277 analyzing the images and selecting the alternative that produces best
15278 match between the fields.
15279
15280 @item T
15281 Capture top-first, transfer unknown or varying.
15282 Filter selects among @samp{t} and @samp{p} using image analysis.
15283
15284 @item B
15285 Capture bottom-first, transfer unknown or varying.
15286 Filter selects among @samp{b} and @samp{p} using image analysis.
15287
15288 @item A
15289 Capture determined by field flags, transfer unknown or varying.
15290 Filter selects among @samp{t}, @samp{b} and @samp{p} using field flags and
15291 image analysis. If no field information is available, then this works just
15292 like @samp{U}. This is the default mode.
15293
15294 @item U
15295 Both capture and transfer unknown or varying.
15296 Filter selects among @samp{t}, @samp{b} and @samp{p} using image analysis only.
15297 @end table
15298 @end table
15299
15300 @section photosensitivity
15301 Reduce various flashes in video, so to help users with epilepsy.
15302
15303 It accepts the following options:
15304 @table @option
15305 @item frames, f
15306 Set how many frames to use when filtering. Default is 30.
15307
15308 @item threshold, t
15309 Set detection threshold factor. Default is 1.
15310 Lower is stricter.
15311
15312 @item skip
15313 Set how many pixels to skip when sampling frames. Default is 1.
15314 Allowed range is from 1 to 1024.
15315
15316 @item bypass
15317 Leave frames unchanged. Default is disabled.
15318 @end table
15319
15320 @section pixdesctest
15321
15322 Pixel format descriptor test filter, mainly useful for internal
15323 testing. The output video should be equal to the input video.
15324
15325 For example:
15326 @example
15327 format=monow, pixdesctest
15328 @end example
15329
15330 can be used to test the monowhite pixel format descriptor definition.
15331
15332 @section pixscope
15333
15334 Display sample values of color channels. Mainly useful for checking color
15335 and levels. Minimum supported resolution is 640x480.
15336
15337 The filters accept the following options:
15338
15339 @table @option
15340 @item x
15341 Set scope X position, relative offset on X axis.
15342
15343 @item y
15344 Set scope Y position, relative offset on Y axis.
15345
15346 @item w
15347 Set scope width.
15348
15349 @item h
15350 Set scope height.
15351
15352 @item o
15353 Set window opacity. This window also holds statistics about pixel area.
15354
15355 @item wx
15356 Set window X position, relative offset on X axis.
15357
15358 @item wy
15359 Set window Y position, relative offset on Y axis.
15360 @end table
15361
15362 @section pp
15363
15364 Enable the specified chain of postprocessing subfilters using libpostproc. This
15365 library should be automatically selected with a GPL build (@code{--enable-gpl}).
15366 Subfilters must be separated by '/' and can be disabled by prepending a '-'.
15367 Each subfilter and some options have a short and a long name that can be used
15368 interchangeably, i.e. dr/dering are the same.
15369
15370 The filters accept the following options:
15371
15372 @table @option
15373 @item subfilters
15374 Set postprocessing subfilters string.
15375 @end table
15376
15377 All subfilters share common options to determine their scope:
15378
15379 @table @option
15380 @item a/autoq
15381 Honor the quality commands for this subfilter.
15382
15383 @item c/chrom
15384 Do chrominance filtering, too (default).
15385
15386 @item y/nochrom
15387 Do luminance filtering only (no chrominance).
15388
15389 @item n/noluma
15390 Do chrominance filtering only (no luminance).
15391 @end table
15392
15393 These options can be appended after the subfilter name, separated by a '|'.
15394
15395 Available subfilters are:
15396
15397 @table @option
15398 @item hb/hdeblock[|difference[|flatness]]
15399 Horizontal deblocking filter
15400 @table @option
15401 @item difference
15402 Difference factor where higher values mean more deblocking (default: @code{32}).
15403 @item flatness
15404 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15405 @end table
15406
15407 @item vb/vdeblock[|difference[|flatness]]
15408 Vertical deblocking filter
15409 @table @option
15410 @item difference
15411 Difference factor where higher values mean more deblocking (default: @code{32}).
15412 @item flatness
15413 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15414 @end table
15415
15416 @item ha/hadeblock[|difference[|flatness]]
15417 Accurate horizontal deblocking filter
15418 @table @option
15419 @item difference
15420 Difference factor where higher values mean more deblocking (default: @code{32}).
15421 @item flatness
15422 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15423 @end table
15424
15425 @item va/vadeblock[|difference[|flatness]]
15426 Accurate vertical deblocking filter
15427 @table @option
15428 @item difference
15429 Difference factor where higher values mean more deblocking (default: @code{32}).
15430 @item flatness
15431 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15432 @end table
15433 @end table
15434
15435 The horizontal and vertical deblocking filters share the difference and
15436 flatness values so you cannot set different horizontal and vertical
15437 thresholds.
15438
15439 @table @option
15440 @item h1/x1hdeblock
15441 Experimental horizontal deblocking filter
15442
15443 @item v1/x1vdeblock
15444 Experimental vertical deblocking filter
15445
15446 @item dr/dering
15447 Deringing filter
15448
15449 @item tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer
15450 @table @option
15451 @item threshold1
15452 larger -> stronger filtering
15453 @item threshold2
15454 larger -> stronger filtering
15455 @item threshold3
15456 larger -> stronger filtering
15457 @end table
15458
15459 @item al/autolevels[:f/fullyrange], automatic brightness / contrast correction
15460 @table @option
15461 @item f/fullyrange
15462 Stretch luminance to @code{0-255}.
15463 @end table
15464
15465 @item lb/linblenddeint
15466 Linear blend deinterlacing filter that deinterlaces the given block by
15467 filtering all lines with a @code{(1 2 1)} filter.
15468
15469 @item li/linipoldeint
15470 Linear interpolating deinterlacing filter that deinterlaces the given block by
15471 linearly interpolating every second line.
15472
15473 @item ci/cubicipoldeint
15474 Cubic interpolating deinterlacing filter deinterlaces the given block by
15475 cubically interpolating every second line.
15476
15477 @item md/mediandeint
15478 Median deinterlacing filter that deinterlaces the given block by applying a
15479 median filter to every second line.
15480
15481 @item fd/ffmpegdeint
15482 FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
15483 second line with a @code{(-1 4 2 4 -1)} filter.
15484
15485 @item l5/lowpass5
15486 Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
15487 block by filtering all lines with a @code{(-1 2 6 2 -1)} filter.
15488
15489 @item fq/forceQuant[|quantizer]
15490 Overrides the quantizer table from the input with the constant quantizer you
15491 specify.
15492 @table @option
15493 @item quantizer
15494 Quantizer to use
15495 @end table
15496
15497 @item de/default
15498 Default pp filter combination (@code{hb|a,vb|a,dr|a})
15499
15500 @item fa/fast
15501 Fast pp filter combination (@code{h1|a,v1|a,dr|a})
15502
15503 @item ac
15504 High quality pp filter combination (@code{ha|a|128|7,va|a,dr|a})
15505 @end table
15506
15507 @subsection Examples
15508
15509 @itemize
15510 @item
15511 Apply horizontal and vertical deblocking, deringing and automatic
15512 brightness/contrast:
15513 @example
15514 pp=hb/vb/dr/al
15515 @end example
15516
15517 @item
15518 Apply default filters without brightness/contrast correction:
15519 @example
15520 pp=de/-al
15521 @end example
15522
15523 @item
15524 Apply default filters and temporal denoiser:
15525 @example
15526 pp=default/tmpnoise|1|2|3
15527 @end example
15528
15529 @item
15530 Apply deblocking on luminance only, and switch vertical deblocking on or off
15531 automatically depending on available CPU time:
15532 @example
15533 pp=hb|y/vb|a
15534 @end example
15535 @end itemize
15536
15537 @section pp7
15538 Apply Postprocessing filter 7. It is variant of the @ref{spp} filter,
15539 similar to spp = 6 with 7 point DCT, where only the center sample is
15540 used after IDCT.
15541
15542 The filter accepts the following options:
15543
15544 @table @option
15545 @item qp
15546 Force a constant quantization parameter. It accepts an integer in range
15547 0 to 63. If not set, the filter will use the QP from the video stream
15548 (if available).
15549
15550 @item mode
15551 Set thresholding mode. Available modes are:
15552
15553 @table @samp
15554 @item hard
15555 Set hard thresholding.
15556 @item soft
15557 Set soft thresholding (better de-ringing effect, but likely blurrier).
15558 @item medium
15559 Set medium thresholding (good results, default).
15560 @end table
15561 @end table
15562
15563 @section premultiply
15564 Apply alpha premultiply effect to input video stream using first plane
15565 of second stream as alpha.
15566
15567 Both streams must have same dimensions and same pixel format.
15568
15569 The filter accepts the following option:
15570
15571 @table @option
15572 @item planes
15573 Set which planes will be processed, unprocessed planes will be copied.
15574 By default value 0xf, all planes will be processed.
15575
15576 @item inplace
15577 Do not require 2nd input for processing, instead use alpha plane from input stream.
15578 @end table
15579
15580 @section prewitt
15581 Apply prewitt operator to input video stream.
15582
15583 The filter accepts the following option:
15584
15585 @table @option
15586 @item planes
15587 Set which planes will be processed, unprocessed planes will be copied.
15588 By default value 0xf, all planes will be processed.
15589
15590 @item scale
15591 Set value which will be multiplied with filtered result.
15592
15593 @item delta
15594 Set value which will be added to filtered result.
15595 @end table
15596
15597 @section pseudocolor
15598
15599 Alter frame colors in video with pseudocolors.
15600
15601 This filter accepts the following options:
15602
15603 @table @option
15604 @item c0
15605 set pixel first component expression
15606
15607 @item c1
15608 set pixel second component expression
15609
15610 @item c2
15611 set pixel third component expression
15612
15613 @item c3
15614 set pixel fourth component expression, corresponds to the alpha component
15615
15616 @item i
15617 set component to use as base for altering colors
15618 @end table
15619
15620 Each of them specifies the expression to use for computing the lookup table for
15621 the corresponding pixel component values.
15622
15623 The expressions can contain the following constants and functions:
15624
15625 @table @option
15626 @item w
15627 @item h
15628 The input width and height.
15629
15630 @item val
15631 The input value for the pixel component.
15632
15633 @item ymin, umin, vmin, amin
15634 The minimum allowed component value.
15635
15636 @item ymax, umax, vmax, amax
15637 The maximum allowed component value.
15638 @end table
15639
15640 All expressions default to "val".
15641
15642 @subsection Examples
15643
15644 @itemize
15645 @item
15646 Change too high luma values to gradient:
15647 @example
15648 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'"
15649 @end example
15650 @end itemize
15651
15652 @section psnr
15653
15654 Obtain the average, maximum and minimum PSNR (Peak Signal to Noise
15655 Ratio) between two input videos.
15656
15657 This filter takes in input two input videos, the first input is
15658 considered the "main" source and is passed unchanged to the
15659 output. The second input is used as a "reference" video for computing
15660 the PSNR.
15661
15662 Both video inputs must have the same resolution and pixel format for
15663 this filter to work correctly. Also it assumes that both inputs
15664 have the same number of frames, which are compared one by one.
15665
15666 The obtained average PSNR is printed through the logging system.
15667
15668 The filter stores the accumulated MSE (mean squared error) of each
15669 frame, and at the end of the processing it is averaged across all frames
15670 equally, and the following formula is applied to obtain the PSNR:
15671
15672 @example
15673 PSNR = 10*log10(MAX^2/MSE)
15674 @end example
15675
15676 Where MAX is the average of the maximum values of each component of the
15677 image.
15678
15679 The description of the accepted parameters follows.
15680
15681 @table @option
15682 @item stats_file, f
15683 If specified the filter will use the named file to save the PSNR of
15684 each individual frame. When filename equals "-" the data is sent to
15685 standard output.
15686
15687 @item stats_version
15688 Specifies which version of the stats file format to use. Details of
15689 each format are written below.
15690 Default value is 1.
15691
15692 @item stats_add_max
15693 Determines whether the max value is output to the stats log.
15694 Default value is 0.
15695 Requires stats_version >= 2. If this is set and stats_version < 2,
15696 the filter will return an error.
15697 @end table
15698
15699 This filter also supports the @ref{framesync} options.
15700
15701 The file printed if @var{stats_file} is selected, contains a sequence of
15702 key/value pairs of the form @var{key}:@var{value} for each compared
15703 couple of frames.
15704
15705 If a @var{stats_version} greater than 1 is specified, a header line precedes
15706 the list of per-frame-pair stats, with key value pairs following the frame
15707 format with the following parameters:
15708
15709 @table @option
15710 @item psnr_log_version
15711 The version of the log file format. Will match @var{stats_version}.
15712
15713 @item fields
15714 A comma separated list of the per-frame-pair parameters included in
15715 the log.
15716 @end table
15717
15718 A description of each shown per-frame-pair parameter follows:
15719
15720 @table @option
15721 @item n
15722 sequential number of the input frame, starting from 1
15723
15724 @item mse_avg
15725 Mean Square Error pixel-by-pixel average difference of the compared
15726 frames, averaged over all the image components.
15727
15728 @item mse_y, mse_u, mse_v, mse_r, mse_g, mse_b, mse_a
15729 Mean Square Error pixel-by-pixel average difference of the compared
15730 frames for the component specified by the suffix.
15731
15732 @item psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a
15733 Peak Signal to Noise ratio of the compared frames for the component
15734 specified by the suffix.
15735
15736 @item max_avg, max_y, max_u, max_v
15737 Maximum allowed value for each channel, and average over all
15738 channels.
15739 @end table
15740
15741 @subsection Examples
15742 @itemize
15743 @item
15744 For example:
15745 @example
15746 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
15747 [main][ref] psnr="stats_file=stats.log" [out]
15748 @end example
15749
15750 On this example the input file being processed is compared with the
15751 reference file @file{ref_movie.mpg}. The PSNR of each individual frame
15752 is stored in @file{stats.log}.
15753
15754 @item
15755 Another example with different containers:
15756 @example
15757 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 -
15758 @end example
15759 @end itemize
15760
15761 @anchor{pullup}
15762 @section pullup
15763
15764 Pulldown reversal (inverse telecine) filter, capable of handling mixed
15765 hard-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
15766 content.
15767
15768 The pullup filter is designed to take advantage of future context in making
15769 its decisions. This filter is stateless in the sense that it does not lock
15770 onto a pattern to follow, but it instead looks forward to the following
15771 fields in order to identify matches and rebuild progressive frames.
15772
15773 To produce content with an even framerate, insert the fps filter after
15774 pullup, use @code{fps=24000/1001} if the input frame rate is 29.97fps,
15775 @code{fps=24} for 30fps and the (rare) telecined 25fps input.
15776
15777 The filter accepts the following options:
15778
15779 @table @option
15780 @item jl
15781 @item jr
15782 @item jt
15783 @item jb
15784 These options set the amount of "junk" to ignore at the left, right, top, and
15785 bottom of the image, respectively. Left and right are in units of 8 pixels,
15786 while top and bottom are in units of 2 lines.
15787 The default is 8 pixels on each side.
15788
15789 @item sb
15790 Set the strict breaks. Setting this option to 1 will reduce the chances of
15791 filter generating an occasional mismatched frame, but it may also cause an
15792 excessive number of frames to be dropped during high motion sequences.
15793 Conversely, setting it to -1 will make filter match fields more easily.
15794 This may help processing of video where there is slight blurring between
15795 the fields, but may also cause there to be interlaced frames in the output.
15796 Default value is @code{0}.
15797
15798 @item mp
15799 Set the metric plane to use. It accepts the following values:
15800 @table @samp
15801 @item l
15802 Use luma plane.
15803
15804 @item u
15805 Use chroma blue plane.
15806
15807 @item v
15808 Use chroma red plane.
15809 @end table
15810
15811 This option may be set to use chroma plane instead of the default luma plane
15812 for doing filter's computations. This may improve accuracy on very clean
15813 source material, but more likely will decrease accuracy, especially if there
15814 is chroma noise (rainbow effect) or any grayscale video.
15815 The main purpose of setting @option{mp} to a chroma plane is to reduce CPU
15816 load and make pullup usable in realtime on slow machines.
15817 @end table
15818
15819 For best results (without duplicated frames in the output file) it is
15820 necessary to change the output frame rate. For example, to inverse
15821 telecine NTSC input:
15822 @example
15823 ffmpeg -i input -vf pullup -r 24000/1001 ...
15824 @end example
15825
15826 @section qp
15827
15828 Change video quantization parameters (QP).
15829
15830 The filter accepts the following option:
15831
15832 @table @option
15833 @item qp
15834 Set expression for quantization parameter.
15835 @end table
15836
15837 The expression is evaluated through the eval API and can contain, among others,
15838 the following constants:
15839
15840 @table @var
15841 @item known
15842 1 if index is not 129, 0 otherwise.
15843
15844 @item qp
15845 Sequential index starting from -129 to 128.
15846 @end table
15847
15848 @subsection Examples
15849
15850 @itemize
15851 @item
15852 Some equation like:
15853 @example
15854 qp=2+2*sin(PI*qp)
15855 @end example
15856 @end itemize
15857
15858 @section random
15859
15860 Flush video frames from internal cache of frames into a random order.
15861 No frame is discarded.
15862 Inspired by @ref{frei0r} nervous filter.
15863
15864 @table @option
15865 @item frames
15866 Set size in number of frames of internal cache, in range from @code{2} to
15867 @code{512}. Default is @code{30}.
15868
15869 @item seed
15870 Set seed for random number generator, must be an integer included between
15871 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
15872 less than @code{0}, the filter will try to use a good random seed on a
15873 best effort basis.
15874 @end table
15875
15876 @section readeia608
15877
15878 Read closed captioning (EIA-608) information from the top lines of a video frame.
15879
15880 This filter adds frame metadata for @code{lavfi.readeia608.X.cc} and
15881 @code{lavfi.readeia608.X.line}, where @code{X} is the number of the identified line
15882 with EIA-608 data (starting from 0). A description of each metadata value follows:
15883
15884 @table @option
15885 @item lavfi.readeia608.X.cc
15886 The two bytes stored as EIA-608 data (printed in hexadecimal).
15887
15888 @item lavfi.readeia608.X.line
15889 The number of the line on which the EIA-608 data was identified and read.
15890 @end table
15891
15892 This filter accepts the following options:
15893
15894 @table @option
15895 @item scan_min
15896 Set the line to start scanning for EIA-608 data. Default is @code{0}.
15897
15898 @item scan_max
15899 Set the line to end scanning for EIA-608 data. Default is @code{29}.
15900
15901 @item spw
15902 Set the ratio of width reserved for sync code detection.
15903 Default is @code{0.27}. Allowed range is @code{[0.1 - 0.7]}.
15904
15905 @item chp
15906 Enable checking the parity bit. In the event of a parity error, the filter will output
15907 @code{0x00} for that character. Default is false.
15908
15909 @item lp
15910 Lowpass lines prior to further processing. Default is enabled.
15911 @end table
15912
15913 @subsection Commands
15914
15915 This filter supports the all above options as @ref{commands}.
15916
15917 @subsection Examples
15918
15919 @itemize
15920 @item
15921 Output a csv with presentation time and the first two lines of identified EIA-608 captioning data.
15922 @example
15923 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
15924 @end example
15925 @end itemize
15926
15927 @section readvitc
15928
15929 Read vertical interval timecode (VITC) information from the top lines of a
15930 video frame.
15931
15932 The filter adds frame metadata key @code{lavfi.readvitc.tc_str} with the
15933 timecode value, if a valid timecode has been detected. Further metadata key
15934 @code{lavfi.readvitc.found} is set to 0/1 depending on whether
15935 timecode data has been found or not.
15936
15937 This filter accepts the following options:
15938
15939 @table @option
15940 @item scan_max
15941 Set the maximum number of lines to scan for VITC data. If the value is set to
15942 @code{-1} the full video frame is scanned. Default is @code{45}.
15943
15944 @item thr_b
15945 Set the luma threshold for black. Accepts float numbers in the range [0.0,1.0],
15946 default value is @code{0.2}. The value must be equal or less than @code{thr_w}.
15947
15948 @item thr_w
15949 Set the luma threshold for white. Accepts float numbers in the range [0.0,1.0],
15950 default value is @code{0.6}. The value must be equal or greater than @code{thr_b}.
15951 @end table
15952
15953 @subsection Examples
15954
15955 @itemize
15956 @item
15957 Detect and draw VITC data onto the video frame; if no valid VITC is detected,
15958 draw @code{--:--:--:--} as a placeholder:
15959 @example
15960 ffmpeg -i input.avi -filter:v 'readvitc,drawtext=fontfile=FreeMono.ttf:text=%@{metadata\\:lavfi.readvitc.tc_str\\:--\\\\\\:--\\\\\\:--\\\\\\:--@}:x=(w-tw)/2:y=400-ascent'
15961 @end example
15962 @end itemize
15963
15964 @section remap
15965
15966 Remap pixels using 2nd: Xmap and 3rd: Ymap input video stream.
15967
15968 Destination pixel at position (X, Y) will be picked from source (x, y) position
15969 where x = Xmap(X, Y) and y = Ymap(X, Y). If mapping values are out of range, zero
15970 value for pixel will be used for destination pixel.
15971
15972 Xmap and Ymap input video streams must be of same dimensions. Output video stream
15973 will have Xmap/Ymap video stream dimensions.
15974 Xmap and Ymap input video streams are 16bit depth, single channel.
15975
15976 @table @option
15977 @item format
15978 Specify pixel format of output from this filter. Can be @code{color} or @code{gray}.
15979 Default is @code{color}.
15980
15981 @item fill
15982 Specify the color of the unmapped pixels. For the syntax of this option,
15983 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
15984 manual,ffmpeg-utils}. Default color is @code{black}.
15985 @end table
15986
15987 @section removegrain
15988
15989 The removegrain filter is a spatial denoiser for progressive video.
15990
15991 @table @option
15992 @item m0
15993 Set mode for the first plane.
15994
15995 @item m1
15996 Set mode for the second plane.
15997
15998 @item m2
15999 Set mode for the third plane.
16000
16001 @item m3
16002 Set mode for the fourth plane.
16003 @end table
16004
16005 Range of mode is from 0 to 24. Description of each mode follows:
16006
16007 @table @var
16008 @item 0
16009 Leave input plane unchanged. Default.
16010
16011 @item 1
16012 Clips the pixel with the minimum and maximum of the 8 neighbour pixels.
16013
16014 @item 2
16015 Clips the pixel with the second minimum and maximum of the 8 neighbour pixels.
16016
16017 @item 3
16018 Clips the pixel with the third minimum and maximum of the 8 neighbour pixels.
16019
16020 @item 4
16021 Clips the pixel with the fourth minimum and maximum of the 8 neighbour pixels.
16022 This is equivalent to a median filter.
16023
16024 @item 5
16025 Line-sensitive clipping giving the minimal change.
16026
16027 @item 6
16028 Line-sensitive clipping, intermediate.
16029
16030 @item 7
16031 Line-sensitive clipping, intermediate.
16032
16033 @item 8
16034 Line-sensitive clipping, intermediate.
16035
16036 @item 9
16037 Line-sensitive clipping on a line where the neighbours pixels are the closest.
16038
16039 @item 10
16040 Replaces the target pixel with the closest neighbour.
16041
16042 @item 11
16043 [1 2 1] horizontal and vertical kernel blur.
16044
16045 @item 12
16046 Same as mode 11.
16047
16048 @item 13
16049 Bob mode, interpolates top field from the line where the neighbours
16050 pixels are the closest.
16051
16052 @item 14
16053 Bob mode, interpolates bottom field from the line where the neighbours
16054 pixels are the closest.
16055
16056 @item 15
16057 Bob mode, interpolates top field. Same as 13 but with a more complicated
16058 interpolation formula.
16059
16060 @item 16
16061 Bob mode, interpolates bottom field. Same as 14 but with a more complicated
16062 interpolation formula.
16063
16064 @item 17
16065 Clips the pixel with the minimum and maximum of respectively the maximum and
16066 minimum of each pair of opposite neighbour pixels.
16067
16068 @item 18
16069 Line-sensitive clipping using opposite neighbours whose greatest distance from
16070 the current pixel is minimal.
16071
16072 @item 19
16073 Replaces the pixel with the average of its 8 neighbours.
16074
16075 @item 20
16076 Averages the 9 pixels ([1 1 1] horizontal and vertical blur).
16077
16078 @item 21
16079 Clips pixels using the averages of opposite neighbour.
16080
16081 @item 22
16082 Same as mode 21 but simpler and faster.
16083
16084 @item 23
16085 Small edge and halo removal, but reputed useless.
16086
16087 @item 24
16088 Similar as 23.
16089 @end table
16090
16091 @section removelogo
16092
16093 Suppress a TV station logo, using an image file to determine which
16094 pixels comprise the logo. It works by filling in the pixels that
16095 comprise the logo with neighboring pixels.
16096
16097 The filter accepts the following options:
16098
16099 @table @option
16100 @item filename, f
16101 Set the filter bitmap file, which can be any image format supported by
16102 libavformat. The width and height of the image file must match those of the
16103 video stream being processed.
16104 @end table
16105
16106 Pixels in the provided bitmap image with a value of zero are not
16107 considered part of the logo, non-zero pixels are considered part of
16108 the logo. If you use white (255) for the logo and black (0) for the
16109 rest, you will be safe. For making the filter bitmap, it is
16110 recommended to take a screen capture of a black frame with the logo
16111 visible, and then using a threshold filter followed by the erode
16112 filter once or twice.
16113
16114 If needed, little splotches can be fixed manually. Remember that if
16115 logo pixels are not covered, the filter quality will be much
16116 reduced. Marking too many pixels as part of the logo does not hurt as
16117 much, but it will increase the amount of blurring needed to cover over
16118 the image and will destroy more information than necessary, and extra
16119 pixels will slow things down on a large logo.
16120
16121 @section repeatfields
16122
16123 This filter uses the repeat_field flag from the Video ES headers and hard repeats
16124 fields based on its value.
16125
16126 @section reverse
16127
16128 Reverse a video clip.
16129
16130 Warning: This filter requires memory to buffer the entire clip, so trimming
16131 is suggested.
16132
16133 @subsection Examples
16134
16135 @itemize
16136 @item
16137 Take the first 5 seconds of a clip, and reverse it.
16138 @example
16139 trim=end=5,reverse
16140 @end example
16141 @end itemize
16142
16143 @section rgbashift
16144 Shift R/G/B/A pixels horizontally and/or vertically.
16145
16146 The filter accepts the following options:
16147 @table @option
16148 @item rh
16149 Set amount to shift red horizontally.
16150 @item rv
16151 Set amount to shift red vertically.
16152 @item gh
16153 Set amount to shift green horizontally.
16154 @item gv
16155 Set amount to shift green vertically.
16156 @item bh
16157 Set amount to shift blue horizontally.
16158 @item bv
16159 Set amount to shift blue vertically.
16160 @item ah
16161 Set amount to shift alpha horizontally.
16162 @item av
16163 Set amount to shift alpha vertically.
16164 @item edge
16165 Set edge mode, can be @var{smear}, default, or @var{warp}.
16166 @end table
16167
16168 @subsection Commands
16169
16170 This filter supports the all above options as @ref{commands}.
16171
16172 @section roberts
16173 Apply roberts cross operator to input video stream.
16174
16175 The filter accepts the following option:
16176
16177 @table @option
16178 @item planes
16179 Set which planes will be processed, unprocessed planes will be copied.
16180 By default value 0xf, all planes will be processed.
16181
16182 @item scale
16183 Set value which will be multiplied with filtered result.
16184
16185 @item delta
16186 Set value which will be added to filtered result.
16187 @end table
16188
16189 @section rotate
16190
16191 Rotate video by an arbitrary angle expressed in radians.
16192
16193 The filter accepts the following options:
16194
16195 A description of the optional parameters follows.
16196 @table @option
16197 @item angle, a
16198 Set an expression for the angle by which to rotate the input video
16199 clockwise, expressed as a number of radians. A negative value will
16200 result in a counter-clockwise rotation. By default it is set to "0".
16201
16202 This expression is evaluated for each frame.
16203
16204 @item out_w, ow
16205 Set the output width expression, default value is "iw".
16206 This expression is evaluated just once during configuration.
16207
16208 @item out_h, oh
16209 Set the output height expression, default value is "ih".
16210 This expression is evaluated just once during configuration.
16211
16212 @item bilinear
16213 Enable bilinear interpolation if set to 1, a value of 0 disables
16214 it. Default value is 1.
16215
16216 @item fillcolor, c
16217 Set the color used to fill the output area not covered by the rotated
16218 image. For the general syntax of this option, check the
16219 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
16220 If the special value "none" is selected then no
16221 background is printed (useful for example if the background is never shown).
16222
16223 Default value is "black".
16224 @end table
16225
16226 The expressions for the angle and the output size can contain the
16227 following constants and functions:
16228
16229 @table @option
16230 @item n
16231 sequential number of the input frame, starting from 0. It is always NAN
16232 before the first frame is filtered.
16233
16234 @item t
16235 time in seconds of the input frame, it is set to 0 when the filter is
16236 configured. It is always NAN before the first frame is filtered.
16237
16238 @item hsub
16239 @item vsub
16240 horizontal and vertical chroma subsample values. For example for the
16241 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16242
16243 @item in_w, iw
16244 @item in_h, ih
16245 the input video width and height
16246
16247 @item out_w, ow
16248 @item out_h, oh
16249 the output width and height, that is the size of the padded area as
16250 specified by the @var{width} and @var{height} expressions
16251
16252 @item rotw(a)
16253 @item roth(a)
16254 the minimal width/height required for completely containing the input
16255 video rotated by @var{a} radians.
16256
16257 These are only available when computing the @option{out_w} and
16258 @option{out_h} expressions.
16259 @end table
16260
16261 @subsection Examples
16262
16263 @itemize
16264 @item
16265 Rotate the input by PI/6 radians clockwise:
16266 @example
16267 rotate=PI/6
16268 @end example
16269
16270 @item
16271 Rotate the input by PI/6 radians counter-clockwise:
16272 @example
16273 rotate=-PI/6
16274 @end example
16275
16276 @item
16277 Rotate the input by 45 degrees clockwise:
16278 @example
16279 rotate=45*PI/180
16280 @end example
16281
16282 @item
16283 Apply a constant rotation with period T, starting from an angle of PI/3:
16284 @example
16285 rotate=PI/3+2*PI*t/T
16286 @end example
16287
16288 @item
16289 Make the input video rotation oscillating with a period of T
16290 seconds and an amplitude of A radians:
16291 @example
16292 rotate=A*sin(2*PI/T*t)
16293 @end example
16294
16295 @item
16296 Rotate the video, output size is chosen so that the whole rotating
16297 input video is always completely contained in the output:
16298 @example
16299 rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
16300 @end example
16301
16302 @item
16303 Rotate the video, reduce the output size so that no background is ever
16304 shown:
16305 @example
16306 rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
16307 @end example
16308 @end itemize
16309
16310 @subsection Commands
16311
16312 The filter supports the following commands:
16313
16314 @table @option
16315 @item a, angle
16316 Set the angle expression.
16317 The command accepts the same syntax of the corresponding option.
16318
16319 If the specified expression is not valid, it is kept at its current
16320 value.
16321 @end table
16322
16323 @section sab
16324
16325 Apply Shape Adaptive Blur.
16326
16327 The filter accepts the following options:
16328
16329 @table @option
16330 @item luma_radius, lr
16331 Set luma blur filter strength, must be a value in range 0.1-4.0, default
16332 value is 1.0. A greater value will result in a more blurred image, and
16333 in slower processing.
16334
16335 @item luma_pre_filter_radius, lpfr
16336 Set luma pre-filter radius, must be a value in the 0.1-2.0 range, default
16337 value is 1.0.
16338
16339 @item luma_strength, ls
16340 Set luma maximum difference between pixels to still be considered, must
16341 be a value in the 0.1-100.0 range, default value is 1.0.
16342
16343 @item chroma_radius, cr
16344 Set chroma blur filter strength, must be a value in range -0.9-4.0. A
16345 greater value will result in a more blurred image, and in slower
16346 processing.
16347
16348 @item chroma_pre_filter_radius, cpfr
16349 Set chroma pre-filter radius, must be a value in the -0.9-2.0 range.
16350
16351 @item chroma_strength, cs
16352 Set chroma maximum difference between pixels to still be considered,
16353 must be a value in the -0.9-100.0 range.
16354 @end table
16355
16356 Each chroma option value, if not explicitly specified, is set to the
16357 corresponding luma option value.
16358
16359 @anchor{scale}
16360 @section scale
16361
16362 Scale (resize) the input video, using the libswscale library.
16363
16364 The scale filter forces the output display aspect ratio to be the same
16365 of the input, by changing the output sample aspect ratio.
16366
16367 If the input image format is different from the format requested by
16368 the next filter, the scale filter will convert the input to the
16369 requested format.
16370
16371 @subsection Options
16372 The filter accepts the following options, or any of the options
16373 supported by the libswscale scaler.
16374
16375 See @ref{scaler_options,,the ffmpeg-scaler manual,ffmpeg-scaler} for
16376 the complete list of scaler options.
16377
16378 @table @option
16379 @item width, w
16380 @item height, h
16381 Set the output video dimension expression. Default value is the input
16382 dimension.
16383
16384 If the @var{width} or @var{w} value is 0, the input width is used for
16385 the output. If the @var{height} or @var{h} value is 0, the input height
16386 is used for the output.
16387
16388 If one and only one of the values is -n with n >= 1, the scale filter
16389 will use a value that maintains the aspect ratio of the input image,
16390 calculated from the other specified dimension. After that it will,
16391 however, make sure that the calculated dimension is divisible by n and
16392 adjust the value if necessary.
16393
16394 If both values are -n with n >= 1, the behavior will be identical to
16395 both values being set to 0 as previously detailed.
16396
16397 See below for the list of accepted constants for use in the dimension
16398 expression.
16399
16400 @item eval
16401 Specify when to evaluate @var{width} and @var{height} expression. It accepts the following values:
16402
16403 @table @samp
16404 @item init
16405 Only evaluate expressions once during the filter initialization or when a command is processed.
16406
16407 @item frame
16408 Evaluate expressions for each incoming frame.
16409
16410 @end table
16411
16412 Default value is @samp{init}.
16413
16414
16415 @item interl
16416 Set the interlacing mode. It accepts the following values:
16417
16418 @table @samp
16419 @item 1
16420 Force interlaced aware scaling.
16421
16422 @item 0
16423 Do not apply interlaced scaling.
16424
16425 @item -1
16426 Select interlaced aware scaling depending on whether the source frames
16427 are flagged as interlaced or not.
16428 @end table
16429
16430 Default value is @samp{0}.
16431
16432 @item flags
16433 Set libswscale scaling flags. See
16434 @ref{sws_flags,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
16435 complete list of values. If not explicitly specified the filter applies
16436 the default flags.
16437
16438
16439 @item param0, param1
16440 Set libswscale input parameters for scaling algorithms that need them. See
16441 @ref{sws_params,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
16442 complete documentation. If not explicitly specified the filter applies
16443 empty parameters.
16444
16445
16446
16447 @item size, s
16448 Set the video size. For the syntax of this option, check the
16449 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
16450
16451 @item in_color_matrix
16452 @item out_color_matrix
16453 Set in/output YCbCr color space type.
16454
16455 This allows the autodetected value to be overridden as well as allows forcing
16456 a specific value used for the output and encoder.
16457
16458 If not specified, the color space type depends on the pixel format.
16459
16460 Possible values:
16461
16462 @table @samp
16463 @item auto
16464 Choose automatically.
16465
16466 @item bt709
16467 Format conforming to International Telecommunication Union (ITU)
16468 Recommendation BT.709.
16469
16470 @item fcc
16471 Set color space conforming to the United States Federal Communications
16472 Commission (FCC) Code of Federal Regulations (CFR) Title 47 (2003) 73.682 (a).
16473
16474 @item bt601
16475 @item bt470
16476 @item smpte170m
16477 Set color space conforming to:
16478
16479 @itemize
16480 @item
16481 ITU Radiocommunication Sector (ITU-R) Recommendation BT.601
16482
16483 @item
16484 ITU-R Rec. BT.470-6 (1998) Systems B, B1, and G
16485
16486 @item
16487 Society of Motion Picture and Television Engineers (SMPTE) ST 170:2004
16488
16489 @end itemize
16490
16491 @item smpte240m
16492 Set color space conforming to SMPTE ST 240:1999.
16493
16494 @item bt2020
16495 Set color space conforming to ITU-R BT.2020 non-constant luminance system.
16496 @end table
16497
16498 @item in_range
16499 @item out_range
16500 Set in/output YCbCr sample range.
16501
16502 This allows the autodetected value to be overridden as well as allows forcing
16503 a specific value used for the output and encoder. If not specified, the
16504 range depends on the pixel format. Possible values:
16505
16506 @table @samp
16507 @item auto/unknown
16508 Choose automatically.
16509
16510 @item jpeg/full/pc
16511 Set full range (0-255 in case of 8-bit luma).
16512
16513 @item mpeg/limited/tv
16514 Set "MPEG" range (16-235 in case of 8-bit luma).
16515 @end table
16516
16517 @item force_original_aspect_ratio
16518 Enable decreasing or increasing output video width or height if necessary to
16519 keep the original aspect ratio. Possible values:
16520
16521 @table @samp
16522 @item disable
16523 Scale the video as specified and disable this feature.
16524
16525 @item decrease
16526 The output video dimensions will automatically be decreased if needed.
16527
16528 @item increase
16529 The output video dimensions will automatically be increased if needed.
16530
16531 @end table
16532
16533 One useful instance of this option is that when you know a specific device's
16534 maximum allowed resolution, you can use this to limit the output video to
16535 that, while retaining the aspect ratio. For example, device A allows
16536 1280x720 playback, and your video is 1920x800. Using this option (set it to
16537 decrease) and specifying 1280x720 to the command line makes the output
16538 1280x533.
16539
16540 Please note that this is a different thing than specifying -1 for @option{w}
16541 or @option{h}, you still need to specify the output resolution for this option
16542 to work.
16543
16544 @item force_divisible_by
16545 Ensures that both the output dimensions, width and height, are divisible by the
16546 given integer when used together with @option{force_original_aspect_ratio}. This
16547 works similar to using @code{-n} in the @option{w} and @option{h} options.
16548
16549 This option respects the value set for @option{force_original_aspect_ratio},
16550 increasing or decreasing the resolution accordingly. The video's aspect ratio
16551 may be slightly modified.
16552
16553 This option can be handy if you need to have a video fit within or exceed
16554 a defined resolution using @option{force_original_aspect_ratio} but also have
16555 encoder restrictions on width or height divisibility.
16556
16557 @end table
16558
16559 The values of the @option{w} and @option{h} options are expressions
16560 containing the following constants:
16561
16562 @table @var
16563 @item in_w
16564 @item in_h
16565 The input width and height
16566
16567 @item iw
16568 @item ih
16569 These are the same as @var{in_w} and @var{in_h}.
16570
16571 @item out_w
16572 @item out_h
16573 The output (scaled) width and height
16574
16575 @item ow
16576 @item oh
16577 These are the same as @var{out_w} and @var{out_h}
16578
16579 @item a
16580 The same as @var{iw} / @var{ih}
16581
16582 @item sar
16583 input sample aspect ratio
16584
16585 @item dar
16586 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
16587
16588 @item hsub
16589 @item vsub
16590 horizontal and vertical input chroma subsample values. For example for the
16591 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16592
16593 @item ohsub
16594 @item ovsub
16595 horizontal and vertical output chroma subsample values. For example for the
16596 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16597
16598 @item n
16599 The (sequential) number of the input frame, starting from 0.
16600 Only available with @code{eval=frame}.
16601
16602 @item t
16603 The presentation timestamp of the input frame, expressed as a number of
16604 seconds. Only available with @code{eval=frame}.
16605
16606 @item pos
16607 The position (byte offset) of the frame in the input stream, or NaN if
16608 this information is unavailable and/or meaningless (for example in case of synthetic video).
16609 Only available with @code{eval=frame}.
16610 @end table
16611
16612 @subsection Examples
16613
16614 @itemize
16615 @item
16616 Scale the input video to a size of 200x100
16617 @example
16618 scale=w=200:h=100
16619 @end example
16620
16621 This is equivalent to:
16622 @example
16623 scale=200:100
16624 @end example
16625
16626 or:
16627 @example
16628 scale=200x100
16629 @end example
16630
16631 @item
16632 Specify a size abbreviation for the output size:
16633 @example
16634 scale=qcif
16635 @end example
16636
16637 which can also be written as:
16638 @example
16639 scale=size=qcif
16640 @end example
16641
16642 @item
16643 Scale the input to 2x:
16644 @example
16645 scale=w=2*iw:h=2*ih
16646 @end example
16647
16648 @item
16649 The above is the same as:
16650 @example
16651 scale=2*in_w:2*in_h
16652 @end example
16653
16654 @item
16655 Scale the input to 2x with forced interlaced scaling:
16656 @example
16657 scale=2*iw:2*ih:interl=1
16658 @end example
16659
16660 @item
16661 Scale the input to half size:
16662 @example
16663 scale=w=iw/2:h=ih/2
16664 @end example
16665
16666 @item
16667 Increase the width, and set the height to the same size:
16668 @example
16669 scale=3/2*iw:ow
16670 @end example
16671
16672 @item
16673 Seek Greek harmony:
16674 @example
16675 scale=iw:1/PHI*iw
16676 scale=ih*PHI:ih
16677 @end example
16678
16679 @item
16680 Increase the height, and set the width to 3/2 of the height:
16681 @example
16682 scale=w=3/2*oh:h=3/5*ih
16683 @end example
16684
16685 @item
16686 Increase the size, making the size a multiple of the chroma
16687 subsample values:
16688 @example
16689 scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
16690 @end example
16691
16692 @item
16693 Increase the width to a maximum of 500 pixels,
16694 keeping the same aspect ratio as the input:
16695 @example
16696 scale=w='min(500\, iw*3/2):h=-1'
16697 @end example
16698
16699 @item
16700 Make pixels square by combining scale and setsar:
16701 @example
16702 scale='trunc(ih*dar):ih',setsar=1/1
16703 @end example
16704
16705 @item
16706 Make pixels square by combining scale and setsar,
16707 making sure the resulting resolution is even (required by some codecs):
16708 @example
16709 scale='trunc(ih*dar/2)*2:trunc(ih/2)*2',setsar=1/1
16710 @end example
16711 @end itemize
16712
16713 @subsection Commands
16714
16715 This filter supports the following commands:
16716 @table @option
16717 @item width, w
16718 @item height, h
16719 Set the output video dimension expression.
16720 The command accepts the same syntax of the corresponding option.
16721
16722 If the specified expression is not valid, it is kept at its current
16723 value.
16724 @end table
16725
16726 @section scale_npp
16727
16728 Use the NVIDIA Performance Primitives (libnpp) to perform scaling and/or pixel
16729 format conversion on CUDA video frames. Setting the output width and height
16730 works in the same way as for the @var{scale} filter.
16731
16732 The following additional options are accepted:
16733 @table @option
16734 @item format
16735 The pixel format of the output CUDA frames. If set to the string "same" (the
16736 default), the input format will be kept. Note that automatic format negotiation
16737 and conversion is not yet supported for hardware frames
16738
16739 @item interp_algo
16740 The interpolation algorithm used for resizing. One of the following:
16741 @table @option
16742 @item nn
16743 Nearest neighbour.
16744
16745 @item linear
16746 @item cubic
16747 @item cubic2p_bspline
16748 2-parameter cubic (B=1, C=0)
16749
16750 @item cubic2p_catmullrom
16751 2-parameter cubic (B=0, C=1/2)
16752
16753 @item cubic2p_b05c03
16754 2-parameter cubic (B=1/2, C=3/10)
16755
16756 @item super
16757 Supersampling
16758
16759 @item lanczos
16760 @end table
16761
16762 @item force_original_aspect_ratio
16763 Enable decreasing or increasing output video width or height if necessary to
16764 keep the original aspect ratio. Possible values:
16765
16766 @table @samp
16767 @item disable
16768 Scale the video as specified and disable this feature.
16769
16770 @item decrease
16771 The output video dimensions will automatically be decreased if needed.
16772
16773 @item increase
16774 The output video dimensions will automatically be increased if needed.
16775
16776 @end table
16777
16778 One useful instance of this option is that when you know a specific device's
16779 maximum allowed resolution, you can use this to limit the output video to
16780 that, while retaining the aspect ratio. For example, device A allows
16781 1280x720 playback, and your video is 1920x800. Using this option (set it to
16782 decrease) and specifying 1280x720 to the command line makes the output
16783 1280x533.
16784
16785 Please note that this is a different thing than specifying -1 for @option{w}
16786 or @option{h}, you still need to specify the output resolution for this option
16787 to work.
16788
16789 @item force_divisible_by
16790 Ensures that both the output dimensions, width and height, are divisible by the
16791 given integer when used together with @option{force_original_aspect_ratio}. This
16792 works similar to using @code{-n} in the @option{w} and @option{h} options.
16793
16794 This option respects the value set for @option{force_original_aspect_ratio},
16795 increasing or decreasing the resolution accordingly. The video's aspect ratio
16796 may be slightly modified.
16797
16798 This option can be handy if you need to have a video fit within or exceed
16799 a defined resolution using @option{force_original_aspect_ratio} but also have
16800 encoder restrictions on width or height divisibility.
16801
16802 @end table
16803
16804 @section scale2ref
16805
16806 Scale (resize) the input video, based on a reference video.
16807
16808 See the scale filter for available options, scale2ref supports the same but
16809 uses the reference video instead of the main input as basis. scale2ref also
16810 supports the following additional constants for the @option{w} and
16811 @option{h} options:
16812
16813 @table @var
16814 @item main_w
16815 @item main_h
16816 The main input video's width and height
16817
16818 @item main_a
16819 The same as @var{main_w} / @var{main_h}
16820
16821 @item main_sar
16822 The main input video's sample aspect ratio
16823
16824 @item main_dar, mdar
16825 The main input video's display aspect ratio. Calculated from
16826 @code{(main_w / main_h) * main_sar}.
16827
16828 @item main_hsub
16829 @item main_vsub
16830 The main input video's horizontal and vertical chroma subsample values.
16831 For example for the pixel format "yuv422p" @var{hsub} is 2 and @var{vsub}
16832 is 1.
16833
16834 @item main_n
16835 The (sequential) number of the main input frame, starting from 0.
16836 Only available with @code{eval=frame}.
16837
16838 @item main_t
16839 The presentation timestamp of the main input frame, expressed as a number of
16840 seconds. Only available with @code{eval=frame}.
16841
16842 @item main_pos
16843 The position (byte offset) of the frame in the main input stream, or NaN if
16844 this information is unavailable and/or meaningless (for example in case of synthetic video).
16845 Only available with @code{eval=frame}.
16846 @end table
16847
16848 @subsection Examples
16849
16850 @itemize
16851 @item
16852 Scale a subtitle stream (b) to match the main video (a) in size before overlaying
16853 @example
16854 'scale2ref[b][a];[a][b]overlay'
16855 @end example
16856
16857 @item
16858 Scale a logo to 1/10th the height of a video, while preserving its display aspect ratio.
16859 @example
16860 [logo-in][video-in]scale2ref=w=oh*mdar:h=ih/10[logo-out][video-out]
16861 @end example
16862 @end itemize
16863
16864 @subsection Commands
16865
16866 This filter supports the following commands:
16867 @table @option
16868 @item width, w
16869 @item height, h
16870 Set the output video dimension expression.
16871 The command accepts the same syntax of the corresponding option.
16872
16873 If the specified expression is not valid, it is kept at its current
16874 value.
16875 @end table
16876
16877 @section scroll
16878 Scroll input video horizontally and/or vertically by constant speed.
16879
16880 The filter accepts the following options:
16881 @table @option
16882 @item horizontal, h
16883 Set the horizontal scrolling speed. Default is 0. Allowed range is from -1 to 1.
16884 Negative values changes scrolling direction.
16885
16886 @item vertical, v
16887 Set the vertical scrolling speed. Default is 0. Allowed range is from -1 to 1.
16888 Negative values changes scrolling direction.
16889
16890 @item hpos
16891 Set the initial horizontal scrolling position. Default is 0. Allowed range is from 0 to 1.
16892
16893 @item vpos
16894 Set the initial vertical scrolling position. Default is 0. Allowed range is from 0 to 1.
16895 @end table
16896
16897 @subsection Commands
16898
16899 This filter supports the following @ref{commands}:
16900 @table @option
16901 @item horizontal, h
16902 Set the horizontal scrolling speed.
16903 @item vertical, v
16904 Set the vertical scrolling speed.
16905 @end table
16906
16907 @anchor{scdet}
16908 @section scdet
16909
16910 Detect video scene change.
16911
16912 This filter sets frame metadata with mafd between frame, the scene score, and
16913 forward the frame to the next filter, so they can use these metadata to detect
16914 scene change or others.
16915
16916 In addition, this filter logs a message and sets frame metadata when it detects
16917 a scene change by @option{threshold}.
16918
16919 @code{lavfi.scd.mafd} metadata keys are set with mafd for every frame.
16920
16921 @code{lavfi.scd.score} metadata keys are set with scene change score for every frame
16922 to detect scene change.
16923
16924 @code{lavfi.scd.time} metadata keys are set with current filtered frame time which
16925 detect scene change with @option{threshold}.
16926
16927 The filter accepts the following options:
16928
16929 @table @option
16930 @item threshold, t
16931 Set the scene change detection threshold as a percentage of maximum change. Good
16932 values are in the @code{[8.0, 14.0]} range. The range for @option{threshold} is
16933 @code{[0., 100.]}.
16934
16935 Default value is @code{10.}.
16936
16937 @item sc_pass, s
16938 Set the flag to pass scene change frames to the next filter. Default value is @code{0}
16939 You can enable it if you want to get snapshot of scene change frames only.
16940 @end table
16941
16942 @anchor{selectivecolor}
16943 @section selectivecolor
16944
16945 Adjust cyan, magenta, yellow and black (CMYK) to certain ranges of colors (such
16946 as "reds", "yellows", "greens", "cyans", ...). The adjustment range is defined
16947 by the "purity" of the color (that is, how saturated it already is).
16948
16949 This filter is similar to the Adobe Photoshop Selective Color tool.
16950
16951 The filter accepts the following options:
16952
16953 @table @option
16954 @item correction_method
16955 Select color correction method.
16956
16957 Available values are:
16958 @table @samp
16959 @item absolute
16960 Specified adjustments are applied "as-is" (added/subtracted to original pixel
16961 component value).
16962 @item relative
16963 Specified adjustments are relative to the original component value.
16964 @end table
16965 Default is @code{absolute}.
16966 @item reds
16967 Adjustments for red pixels (pixels where the red component is the maximum)
16968 @item yellows
16969 Adjustments for yellow pixels (pixels where the blue component is the minimum)
16970 @item greens
16971 Adjustments for green pixels (pixels where the green component is the maximum)
16972 @item cyans
16973 Adjustments for cyan pixels (pixels where the red component is the minimum)
16974 @item blues
16975 Adjustments for blue pixels (pixels where the blue component is the maximum)
16976 @item magentas
16977 Adjustments for magenta pixels (pixels where the green component is the minimum)
16978 @item whites
16979 Adjustments for white pixels (pixels where all components are greater than 128)
16980 @item neutrals
16981 Adjustments for all pixels except pure black and pure white
16982 @item blacks
16983 Adjustments for black pixels (pixels where all components are lesser than 128)
16984 @item psfile
16985 Specify a Photoshop selective color file (@code{.asv}) to import the settings from.
16986 @end table
16987
16988 All the adjustment settings (@option{reds}, @option{yellows}, ...) accept up to
16989 4 space separated floating point adjustment values in the [-1,1] range,
16990 respectively to adjust the amount of cyan, magenta, yellow and black for the
16991 pixels of its range.
16992
16993 @subsection Examples
16994
16995 @itemize
16996 @item
16997 Increase cyan by 50% and reduce yellow by 33% in every green areas, and
16998 increase magenta by 27% in blue areas:
16999 @example
17000 selectivecolor=greens=.5 0 -.33 0:blues=0 .27
17001 @end example
17002
17003 @item
17004 Use a Photoshop selective color preset:
17005 @example
17006 selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
17007 @end example
17008 @end itemize
17009
17010 @anchor{separatefields}
17011 @section separatefields
17012
17013 The @code{separatefields} takes a frame-based video input and splits
17014 each frame into its components fields, producing a new half height clip
17015 with twice the frame rate and twice the frame count.
17016
17017 This filter use field-dominance information in frame to decide which
17018 of each pair of fields to place first in the output.
17019 If it gets it wrong use @ref{setfield} filter before @code{separatefields} filter.
17020
17021 @section setdar, setsar
17022
17023 The @code{setdar} filter sets the Display Aspect Ratio for the filter
17024 output video.
17025
17026 This is done by changing the specified Sample (aka Pixel) Aspect
17027 Ratio, according to the following equation:
17028 @example
17029 @var{DAR} = @var{HORIZONTAL_RESOLUTION} / @var{VERTICAL_RESOLUTION} * @var{SAR}
17030 @end example
17031
17032 Keep in mind that the @code{setdar} filter does not modify the pixel
17033 dimensions of the video frame. Also, the display aspect ratio set by
17034 this filter may be changed by later filters in the filterchain,
17035 e.g. in case of scaling or if another "setdar" or a "setsar" filter is
17036 applied.
17037
17038 The @code{setsar} filter sets the Sample (aka Pixel) Aspect Ratio for
17039 the filter output video.
17040
17041 Note that as a consequence of the application of this filter, the
17042 output display aspect ratio will change according to the equation
17043 above.
17044
17045 Keep in mind that the sample aspect ratio set by the @code{setsar}
17046 filter may be changed by later filters in the filterchain, e.g. if
17047 another "setsar" or a "setdar" filter is applied.
17048
17049 It accepts the following parameters:
17050
17051 @table @option
17052 @item r, ratio, dar (@code{setdar} only), sar (@code{setsar} only)
17053 Set the aspect ratio used by the filter.
17054
17055 The parameter can be a floating point number string, an expression, or
17056 a string of the form @var{num}:@var{den}, where @var{num} and
17057 @var{den} are the numerator and denominator of the aspect ratio. If
17058 the parameter is not specified, it is assumed the value "0".
17059 In case the form "@var{num}:@var{den}" is used, the @code{:} character
17060 should be escaped.
17061
17062 @item max
17063 Set the maximum integer value to use for expressing numerator and
17064 denominator when reducing the expressed aspect ratio to a rational.
17065 Default value is @code{100}.
17066
17067 @end table
17068
17069 The parameter @var{sar} is an expression containing
17070 the following constants:
17071
17072 @table @option
17073 @item E, PI, PHI
17074 These are approximated values for the mathematical constants e
17075 (Euler's number), pi (Greek pi), and phi (the golden ratio).
17076
17077 @item w, h
17078 The input width and height.
17079
17080 @item a
17081 These are the same as @var{w} / @var{h}.
17082
17083 @item sar
17084 The input sample aspect ratio.
17085
17086 @item dar
17087 The input display aspect ratio. It is the same as
17088 (@var{w} / @var{h}) * @var{sar}.
17089
17090 @item hsub, vsub
17091 Horizontal and vertical chroma subsample values. For example, for the
17092 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
17093 @end table
17094
17095 @subsection Examples
17096
17097 @itemize
17098
17099 @item
17100 To change the display aspect ratio to 16:9, specify one of the following:
17101 @example
17102 setdar=dar=1.77777
17103 setdar=dar=16/9
17104 @end example
17105
17106 @item
17107 To change the sample aspect ratio to 10:11, specify:
17108 @example
17109 setsar=sar=10/11
17110 @end example
17111
17112 @item
17113 To set a display aspect ratio of 16:9, and specify a maximum integer value of
17114 1000 in the aspect ratio reduction, use the command:
17115 @example
17116 setdar=ratio=16/9:max=1000
17117 @end example
17118
17119 @end itemize
17120
17121 @anchor{setfield}
17122 @section setfield
17123
17124 Force field for the output video frame.
17125
17126 The @code{setfield} filter marks the interlace type field for the
17127 output frames. It does not change the input frame, but only sets the
17128 corresponding property, which affects how the frame is treated by
17129 following filters (e.g. @code{fieldorder} or @code{yadif}).
17130
17131 The filter accepts the following options:
17132
17133 @table @option
17134
17135 @item mode
17136 Available values are:
17137
17138 @table @samp
17139 @item auto
17140 Keep the same field property.
17141
17142 @item bff
17143 Mark the frame as bottom-field-first.
17144
17145 @item tff
17146 Mark the frame as top-field-first.
17147
17148 @item prog
17149 Mark the frame as progressive.
17150 @end table
17151 @end table
17152
17153 @anchor{setparams}
17154 @section setparams
17155
17156 Force frame parameter for the output video frame.
17157
17158 The @code{setparams} filter marks interlace and color range for the
17159 output frames. It does not change the input frame, but only sets the
17160 corresponding property, which affects how the frame is treated by
17161 filters/encoders.
17162
17163 @table @option
17164 @item field_mode
17165 Available values are:
17166
17167 @table @samp
17168 @item auto
17169 Keep the same field property (default).
17170
17171 @item bff
17172 Mark the frame as bottom-field-first.
17173
17174 @item tff
17175 Mark the frame as top-field-first.
17176
17177 @item prog
17178 Mark the frame as progressive.
17179 @end table
17180
17181 @item range
17182 Available values are:
17183
17184 @table @samp
17185 @item auto
17186 Keep the same color range property (default).
17187
17188 @item unspecified, unknown
17189 Mark the frame as unspecified color range.
17190
17191 @item limited, tv, mpeg
17192 Mark the frame as limited range.
17193
17194 @item full, pc, jpeg
17195 Mark the frame as full range.
17196 @end table
17197
17198 @item color_primaries
17199 Set the color primaries.
17200 Available values are:
17201
17202 @table @samp
17203 @item auto
17204 Keep the same color primaries property (default).
17205
17206 @item bt709
17207 @item unknown
17208 @item bt470m
17209 @item bt470bg
17210 @item smpte170m
17211 @item smpte240m
17212 @item film
17213 @item bt2020
17214 @item smpte428
17215 @item smpte431
17216 @item smpte432
17217 @item jedec-p22
17218 @end table
17219
17220 @item color_trc
17221 Set the color transfer.
17222 Available values are:
17223
17224 @table @samp
17225 @item auto
17226 Keep the same color trc property (default).
17227
17228 @item bt709
17229 @item unknown
17230 @item bt470m
17231 @item bt470bg
17232 @item smpte170m
17233 @item smpte240m
17234 @item linear
17235 @item log100
17236 @item log316
17237 @item iec61966-2-4
17238 @item bt1361e
17239 @item iec61966-2-1
17240 @item bt2020-10
17241 @item bt2020-12
17242 @item smpte2084
17243 @item smpte428
17244 @item arib-std-b67
17245 @end table
17246
17247 @item colorspace
17248 Set the colorspace.
17249 Available values are:
17250
17251 @table @samp
17252 @item auto
17253 Keep the same colorspace property (default).
17254
17255 @item gbr
17256 @item bt709
17257 @item unknown
17258 @item fcc
17259 @item bt470bg
17260 @item smpte170m
17261 @item smpte240m
17262 @item ycgco
17263 @item bt2020nc
17264 @item bt2020c
17265 @item smpte2085
17266 @item chroma-derived-nc
17267 @item chroma-derived-c
17268 @item ictcp
17269 @end table
17270 @end table
17271
17272 @section showinfo
17273
17274 Show a line containing various information for each input video frame.
17275 The input video is not modified.
17276
17277 This filter supports the following options:
17278
17279 @table @option
17280 @item checksum
17281 Calculate checksums of each plane. By default enabled.
17282 @end table
17283
17284 The shown line contains a sequence of key/value pairs of the form
17285 @var{key}:@var{value}.
17286
17287 The following values are shown in the output:
17288
17289 @table @option
17290 @item n
17291 The (sequential) number of the input frame, starting from 0.
17292
17293 @item pts
17294 The Presentation TimeStamp of the input frame, expressed as a number of
17295 time base units. The time base unit depends on the filter input pad.
17296
17297 @item pts_time
17298 The Presentation TimeStamp of the input frame, expressed as a number of
17299 seconds.
17300
17301 @item pos
17302 The position of the frame in the input stream, or -1 if this information is
17303 unavailable and/or meaningless (for example in case of synthetic video).
17304
17305 @item fmt
17306 The pixel format name.
17307
17308 @item sar
17309 The sample aspect ratio of the input frame, expressed in the form
17310 @var{num}/@var{den}.
17311
17312 @item s
17313 The size of the input frame. For the syntax of this option, check the
17314 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17315
17316 @item i
17317 The type of interlaced mode ("P" for "progressive", "T" for top field first, "B"
17318 for bottom field first).
17319
17320 @item iskey
17321 This is 1 if the frame is a key frame, 0 otherwise.
17322
17323 @item type
17324 The picture type of the input frame ("I" for an I-frame, "P" for a
17325 P-frame, "B" for a B-frame, or "?" for an unknown type).
17326 Also refer to the documentation of the @code{AVPictureType} enum and of
17327 the @code{av_get_picture_type_char} function defined in
17328 @file{libavutil/avutil.h}.
17329
17330 @item checksum
17331 The Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame.
17332
17333 @item plane_checksum
17334 The Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
17335 expressed in the form "[@var{c0} @var{c1} @var{c2} @var{c3}]".
17336
17337 @item mean
17338 The mean value of pixels in each plane of the input frame, expressed in the form
17339 "[@var{mean0} @var{mean1} @var{mean2} @var{mean3}]".
17340
17341 @item stdev
17342 The standard deviation of pixel values in each plane of the input frame, expressed
17343 in the form "[@var{stdev0} @var{stdev1} @var{stdev2} @var{stdev3}]".
17344
17345 @end table
17346
17347 @section showpalette
17348
17349 Displays the 256 colors palette of each frame. This filter is only relevant for
17350 @var{pal8} pixel format frames.
17351
17352 It accepts the following option:
17353
17354 @table @option
17355 @item s
17356 Set the size of the box used to represent one palette color entry. Default is
17357 @code{30} (for a @code{30x30} pixel box).
17358 @end table
17359
17360 @section shuffleframes
17361
17362 Reorder and/or duplicate and/or drop video frames.
17363
17364 It accepts the following parameters:
17365
17366 @table @option
17367 @item mapping
17368 Set the destination indexes of input frames.
17369 This is space or '|' separated list of indexes that maps input frames to output
17370 frames. Number of indexes also sets maximal value that each index may have.
17371 '-1' index have special meaning and that is to drop frame.
17372 @end table
17373
17374 The first frame has the index 0. The default is to keep the input unchanged.
17375
17376 @subsection Examples
17377
17378 @itemize
17379 @item
17380 Swap second and third frame of every three frames of the input:
17381 @example
17382 ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
17383 @end example
17384
17385 @item
17386 Swap 10th and 1st frame of every ten frames of the input:
17387 @example
17388 ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
17389 @end example
17390 @end itemize
17391
17392 @section shuffleplanes
17393
17394 Reorder and/or duplicate video planes.
17395
17396 It accepts the following parameters:
17397
17398 @table @option
17399
17400 @item map0
17401 The index of the input plane to be used as the first output plane.
17402
17403 @item map1
17404 The index of the input plane to be used as the second output plane.
17405
17406 @item map2
17407 The index of the input plane to be used as the third output plane.
17408
17409 @item map3
17410 The index of the input plane to be used as the fourth output plane.
17411
17412 @end table
17413
17414 The first plane has the index 0. The default is to keep the input unchanged.
17415
17416 @subsection Examples
17417
17418 @itemize
17419 @item
17420 Swap the second and third planes of the input:
17421 @example
17422 ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
17423 @end example
17424 @end itemize
17425
17426 @anchor{signalstats}
17427 @section signalstats
17428 Evaluate various visual metrics that assist in determining issues associated
17429 with the digitization of analog video media.
17430
17431 By default the filter will log these metadata values:
17432
17433 @table @option
17434 @item YMIN
17435 Display the minimal Y value contained within the input frame. Expressed in
17436 range of [0-255].
17437
17438 @item YLOW
17439 Display the Y value at the 10% percentile within the input frame. Expressed in
17440 range of [0-255].
17441
17442 @item YAVG
17443 Display the average Y value within the input frame. Expressed in range of
17444 [0-255].
17445
17446 @item YHIGH
17447 Display the Y value at the 90% percentile within the input frame. Expressed in
17448 range of [0-255].
17449
17450 @item YMAX
17451 Display the maximum Y value contained within the input frame. Expressed in
17452 range of [0-255].
17453
17454 @item UMIN
17455 Display the minimal U value contained within the input frame. Expressed in
17456 range of [0-255].
17457
17458 @item ULOW
17459 Display the U value at the 10% percentile within the input frame. Expressed in
17460 range of [0-255].
17461
17462 @item UAVG
17463 Display the average U value within the input frame. Expressed in range of
17464 [0-255].
17465
17466 @item UHIGH
17467 Display the U value at the 90% percentile within the input frame. Expressed in
17468 range of [0-255].
17469
17470 @item UMAX
17471 Display the maximum U value contained within the input frame. Expressed in
17472 range of [0-255].
17473
17474 @item VMIN
17475 Display the minimal V value contained within the input frame. Expressed in
17476 range of [0-255].
17477
17478 @item VLOW
17479 Display the V value at the 10% percentile within the input frame. Expressed in
17480 range of [0-255].
17481
17482 @item VAVG
17483 Display the average V value within the input frame. Expressed in range of
17484 [0-255].
17485
17486 @item VHIGH
17487 Display the V value at the 90% percentile within the input frame. Expressed in
17488 range of [0-255].
17489
17490 @item VMAX
17491 Display the maximum V value contained within the input frame. Expressed in
17492 range of [0-255].
17493
17494 @item SATMIN
17495 Display the minimal saturation value contained within the input frame.
17496 Expressed in range of [0-~181.02].
17497
17498 @item SATLOW
17499 Display the saturation value at the 10% percentile within the input frame.
17500 Expressed in range of [0-~181.02].
17501
17502 @item SATAVG
17503 Display the average saturation value within the input frame. Expressed in range
17504 of [0-~181.02].
17505
17506 @item SATHIGH
17507 Display the saturation value at the 90% percentile within the input frame.
17508 Expressed in range of [0-~181.02].
17509
17510 @item SATMAX
17511 Display the maximum saturation value contained within the input frame.
17512 Expressed in range of [0-~181.02].
17513
17514 @item HUEMED
17515 Display the median value for hue within the input frame. Expressed in range of
17516 [0-360].
17517
17518 @item HUEAVG
17519 Display the average value for hue within the input frame. Expressed in range of
17520 [0-360].
17521
17522 @item YDIF
17523 Display the average of sample value difference between all values of the Y
17524 plane in the current frame and corresponding values of the previous input frame.
17525 Expressed in range of [0-255].
17526
17527 @item UDIF
17528 Display the average of sample value difference between all values of the U
17529 plane in the current frame and corresponding values of the previous input frame.
17530 Expressed in range of [0-255].
17531
17532 @item VDIF
17533 Display the average of sample value difference between all values of the V
17534 plane in the current frame and corresponding values of the previous input frame.
17535 Expressed in range of [0-255].
17536
17537 @item YBITDEPTH
17538 Display bit depth of Y plane in current frame.
17539 Expressed in range of [0-16].
17540
17541 @item UBITDEPTH
17542 Display bit depth of U plane in current frame.
17543 Expressed in range of [0-16].
17544
17545 @item VBITDEPTH
17546 Display bit depth of V plane in current frame.
17547 Expressed in range of [0-16].
17548 @end table
17549
17550 The filter accepts the following options:
17551
17552 @table @option
17553 @item stat
17554 @item out
17555
17556 @option{stat} specify an additional form of image analysis.
17557 @option{out} output video with the specified type of pixel highlighted.
17558
17559 Both options accept the following values:
17560
17561 @table @samp
17562 @item tout
17563 Identify @var{temporal outliers} pixels. A @var{temporal outlier} is a pixel
17564 unlike the neighboring pixels of the same field. Examples of temporal outliers
17565 include the results of video dropouts, head clogs, or tape tracking issues.
17566
17567 @item vrep
17568 Identify @var{vertical line repetition}. Vertical line repetition includes
17569 similar rows of pixels within a frame. In born-digital video vertical line
17570 repetition is common, but this pattern is uncommon in video digitized from an
17571 analog source. When it occurs in video that results from the digitization of an
17572 analog source it can indicate concealment from a dropout compensator.
17573
17574 @item brng
17575 Identify pixels that fall outside of legal broadcast range.
17576 @end table
17577
17578 @item color, c
17579 Set the highlight color for the @option{out} option. The default color is
17580 yellow.
17581 @end table
17582
17583 @subsection Examples
17584
17585 @itemize
17586 @item
17587 Output data of various video metrics:
17588 @example
17589 ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
17590 @end example
17591
17592 @item
17593 Output specific data about the minimum and maximum values of the Y plane per frame:
17594 @example
17595 ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
17596 @end example
17597
17598 @item
17599 Playback video while highlighting pixels that are outside of broadcast range in red.
17600 @example
17601 ffplay example.mov -vf signalstats="out=brng:color=red"
17602 @end example
17603
17604 @item
17605 Playback video with signalstats metadata drawn over the frame.
17606 @example
17607 ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
17608 @end example
17609
17610 The contents of signalstat_drawtext.txt used in the command are:
17611 @example
17612 time %@{pts:hms@}
17613 Y (%@{metadata:lavfi.signalstats.YMIN@}-%@{metadata:lavfi.signalstats.YMAX@})
17614 U (%@{metadata:lavfi.signalstats.UMIN@}-%@{metadata:lavfi.signalstats.UMAX@})
17615 V (%@{metadata:lavfi.signalstats.VMIN@}-%@{metadata:lavfi.signalstats.VMAX@})
17616 saturation maximum: %@{metadata:lavfi.signalstats.SATMAX@}
17617
17618 @end example
17619 @end itemize
17620
17621 @anchor{signature}
17622 @section signature
17623
17624 Calculates the MPEG-7 Video Signature. The filter can handle more than one
17625 input. In this case the matching between the inputs can be calculated additionally.
17626 The filter always passes through the first input. The signature of each stream can
17627 be written into a file.
17628
17629 It accepts the following options:
17630
17631 @table @option
17632 @item detectmode
17633 Enable or disable the matching process.
17634
17635 Available values are:
17636
17637 @table @samp
17638 @item off
17639 Disable the calculation of a matching (default).
17640 @item full
17641 Calculate the matching for the whole video and output whether the whole video
17642 matches or only parts.
17643 @item fast
17644 Calculate only until a matching is found or the video ends. Should be faster in
17645 some cases.
17646 @end table
17647
17648 @item nb_inputs
17649 Set the number of inputs. The option value must be a non negative integer.
17650 Default value is 1.
17651
17652 @item filename
17653 Set the path to which the output is written. If there is more than one input,
17654 the path must be a prototype, i.e. must contain %d or %0nd (where n is a positive
17655 integer), that will be replaced with the input number. If no filename is
17656 specified, no output will be written. This is the default.
17657
17658 @item format
17659 Choose the output format.
17660
17661 Available values are:
17662
17663 @table @samp
17664 @item binary
17665 Use the specified binary representation (default).
17666 @item xml
17667 Use the specified xml representation.
17668 @end table
17669
17670 @item th_d
17671 Set threshold to detect one word as similar. The option value must be an integer
17672 greater than zero. The default value is 9000.
17673
17674 @item th_dc
17675 Set threshold to detect all words as similar. The option value must be an integer
17676 greater than zero. The default value is 60000.
17677
17678 @item th_xh
17679 Set threshold to detect frames as similar. The option value must be an integer
17680 greater than zero. The default value is 116.
17681
17682 @item th_di
17683 Set the minimum length of a sequence in frames to recognize it as matching
17684 sequence. The option value must be a non negative integer value.
17685 The default value is 0.
17686
17687 @item th_it
17688 Set the minimum relation, that matching frames to all frames must have.
17689 The option value must be a double value between 0 and 1. The default value is 0.5.
17690 @end table
17691
17692 @subsection Examples
17693
17694 @itemize
17695 @item
17696 To calculate the signature of an input video and store it in signature.bin:
17697 @example
17698 ffmpeg -i input.mkv -vf signature=filename=signature.bin -map 0:v -f null -
17699 @end example
17700
17701 @item
17702 To detect whether two videos match and store the signatures in XML format in
17703 signature0.xml and signature1.xml:
17704 @example
17705 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 -
17706 @end example
17707
17708 @end itemize
17709
17710 @anchor{smartblur}
17711 @section smartblur
17712
17713 Blur the input video without impacting the outlines.
17714
17715 It accepts the following options:
17716
17717 @table @option
17718 @item luma_radius, lr
17719 Set the luma radius. The option value must be a float number in
17720 the range [0.1,5.0] that specifies the variance of the gaussian filter
17721 used to blur the image (slower if larger). Default value is 1.0.
17722
17723 @item luma_strength, ls
17724 Set the luma strength. The option value must be a float number
17725 in the range [-1.0,1.0] that configures the blurring. A value included
17726 in [0.0,1.0] will blur the image whereas a value included in
17727 [-1.0,0.0] will sharpen the image. Default value is 1.0.
17728
17729 @item luma_threshold, lt
17730 Set the luma threshold used as a coefficient to determine
17731 whether a pixel should be blurred or not. The option value must be an
17732 integer in the range [-30,30]. A value of 0 will filter all the image,
17733 a value included in [0,30] will filter flat areas and a value included
17734 in [-30,0] will filter edges. Default value is 0.
17735
17736 @item chroma_radius, cr
17737 Set the chroma radius. The option value must be a float number in
17738 the range [0.1,5.0] that specifies the variance of the gaussian filter
17739 used to blur the image (slower if larger). Default value is @option{luma_radius}.
17740
17741 @item chroma_strength, cs
17742 Set the chroma strength. The option value must be a float number
17743 in the range [-1.0,1.0] that configures the blurring. A value included
17744 in [0.0,1.0] will blur the image whereas a value included in
17745 [-1.0,0.0] will sharpen the image. Default value is @option{luma_strength}.
17746
17747 @item chroma_threshold, ct
17748 Set the chroma threshold used as a coefficient to determine
17749 whether a pixel should be blurred or not. The option value must be an
17750 integer in the range [-30,30]. A value of 0 will filter all the image,
17751 a value included in [0,30] will filter flat areas and a value included
17752 in [-30,0] will filter edges. Default value is @option{luma_threshold}.
17753 @end table
17754
17755 If a chroma option is not explicitly set, the corresponding luma value
17756 is set.
17757
17758 @section sobel
17759 Apply sobel operator to input video stream.
17760
17761 The filter accepts the following option:
17762
17763 @table @option
17764 @item planes
17765 Set which planes will be processed, unprocessed planes will be copied.
17766 By default value 0xf, all planes will be processed.
17767
17768 @item scale
17769 Set value which will be multiplied with filtered result.
17770
17771 @item delta
17772 Set value which will be added to filtered result.
17773 @end table
17774
17775 @anchor{spp}
17776 @section spp
17777
17778 Apply a simple postprocessing filter that compresses and decompresses the image
17779 at several (or - in the case of @option{quality} level @code{6} - all) shifts
17780 and average the results.
17781
17782 The filter accepts the following options:
17783
17784 @table @option
17785 @item quality
17786 Set quality. This option defines the number of levels for averaging. It accepts
17787 an integer in the range 0-6. If set to @code{0}, the filter will have no
17788 effect. A value of @code{6} means the higher quality. For each increment of
17789 that value the speed drops by a factor of approximately 2.  Default value is
17790 @code{3}.
17791
17792 @item qp
17793 Force a constant quantization parameter. If not set, the filter will use the QP
17794 from the video stream (if available).
17795
17796 @item mode
17797 Set thresholding mode. Available modes are:
17798
17799 @table @samp
17800 @item hard
17801 Set hard thresholding (default).
17802 @item soft
17803 Set soft thresholding (better de-ringing effect, but likely blurrier).
17804 @end table
17805
17806 @item use_bframe_qp
17807 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
17808 option may cause flicker since the B-Frames have often larger QP. Default is
17809 @code{0} (not enabled).
17810 @end table
17811
17812 @subsection Commands
17813
17814 This filter supports the following commands:
17815 @table @option
17816 @item quality, level
17817 Set quality level. The value @code{max} can be used to set the maximum level,
17818 currently @code{6}.
17819 @end table
17820
17821 @anchor{sr}
17822 @section sr
17823
17824 Scale the input by applying one of the super-resolution methods based on
17825 convolutional neural networks. Supported models:
17826
17827 @itemize
17828 @item
17829 Super-Resolution Convolutional Neural Network model (SRCNN).
17830 See @url{https://arxiv.org/abs/1501.00092}.
17831
17832 @item
17833 Efficient Sub-Pixel Convolutional Neural Network model (ESPCN).
17834 See @url{https://arxiv.org/abs/1609.05158}.
17835 @end itemize
17836
17837 Training scripts as well as scripts for model file (.pb) saving can be found at
17838 @url{https://github.com/XueweiMeng/sr/tree/sr_dnn_native}. Original repository
17839 is at @url{https://github.com/HighVoltageRocknRoll/sr.git}.
17840
17841 Native model files (.model) can be generated from TensorFlow model
17842 files (.pb) by using tools/python/convert.py
17843
17844 The filter accepts the following options:
17845
17846 @table @option
17847 @item dnn_backend
17848 Specify which DNN backend to use for model loading and execution. This option accepts
17849 the following values:
17850
17851 @table @samp
17852 @item native
17853 Native implementation of DNN loading and execution.
17854
17855 @item tensorflow
17856 TensorFlow backend. To enable this backend you
17857 need to install the TensorFlow for C library (see
17858 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
17859 @code{--enable-libtensorflow}
17860 @end table
17861
17862 Default value is @samp{native}.
17863
17864 @item model
17865 Set path to model file specifying network architecture and its parameters.
17866 Note that different backends use different file formats. TensorFlow backend
17867 can load files for both formats, while native backend can load files for only
17868 its format.
17869
17870 @item scale_factor
17871 Set scale factor for SRCNN model. Allowed values are @code{2}, @code{3} and @code{4}.
17872 Default value is @code{2}. Scale factor is necessary for SRCNN model, because it accepts
17873 input upscaled using bicubic upscaling with proper scale factor.
17874 @end table
17875
17876 This feature can also be finished with @ref{dnn_processing} filter.
17877
17878 @section ssim
17879
17880 Obtain the SSIM (Structural SImilarity Metric) between two input videos.
17881
17882 This filter takes in input two input videos, the first input is
17883 considered the "main" source and is passed unchanged to the
17884 output. The second input is used as a "reference" video for computing
17885 the SSIM.
17886
17887 Both video inputs must have the same resolution and pixel format for
17888 this filter to work correctly. Also it assumes that both inputs
17889 have the same number of frames, which are compared one by one.
17890
17891 The filter stores the calculated SSIM of each frame.
17892
17893 The description of the accepted parameters follows.
17894
17895 @table @option
17896 @item stats_file, f
17897 If specified the filter will use the named file to save the SSIM of
17898 each individual frame. When filename equals "-" the data is sent to
17899 standard output.
17900 @end table
17901
17902 The file printed if @var{stats_file} is selected, contains a sequence of
17903 key/value pairs of the form @var{key}:@var{value} for each compared
17904 couple of frames.
17905
17906 A description of each shown parameter follows:
17907
17908 @table @option
17909 @item n
17910 sequential number of the input frame, starting from 1
17911
17912 @item Y, U, V, R, G, B
17913 SSIM of the compared frames for the component specified by the suffix.
17914
17915 @item All
17916 SSIM of the compared frames for the whole frame.
17917
17918 @item dB
17919 Same as above but in dB representation.
17920 @end table
17921
17922 This filter also supports the @ref{framesync} options.
17923
17924 @subsection Examples
17925 @itemize
17926 @item
17927 For example:
17928 @example
17929 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
17930 [main][ref] ssim="stats_file=stats.log" [out]
17931 @end example
17932
17933 On this example the input file being processed is compared with the
17934 reference file @file{ref_movie.mpg}. The SSIM of each individual frame
17935 is stored in @file{stats.log}.
17936
17937 @item
17938 Another example with both psnr and ssim at same time:
17939 @example
17940 ffmpeg -i main.mpg -i ref.mpg -lavfi  "ssim;[0:v][1:v]psnr" -f null -
17941 @end example
17942
17943 @item
17944 Another example with different containers:
17945 @example
17946 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 -
17947 @end example
17948 @end itemize
17949
17950 @section stereo3d
17951
17952 Convert between different stereoscopic image formats.
17953
17954 The filters accept the following options:
17955
17956 @table @option
17957 @item in
17958 Set stereoscopic image format of input.
17959
17960 Available values for input image formats are:
17961 @table @samp
17962 @item sbsl
17963 side by side parallel (left eye left, right eye right)
17964
17965 @item sbsr
17966 side by side crosseye (right eye left, left eye right)
17967
17968 @item sbs2l
17969 side by side parallel with half width resolution
17970 (left eye left, right eye right)
17971
17972 @item sbs2r
17973 side by side crosseye with half width resolution
17974 (right eye left, left eye right)
17975
17976 @item abl
17977 @item tbl
17978 above-below (left eye above, right eye below)
17979
17980 @item abr
17981 @item tbr
17982 above-below (right eye above, left eye below)
17983
17984 @item ab2l
17985 @item tb2l
17986 above-below with half height resolution
17987 (left eye above, right eye below)
17988
17989 @item ab2r
17990 @item tb2r
17991 above-below with half height resolution
17992 (right eye above, left eye below)
17993
17994 @item al
17995 alternating frames (left eye first, right eye second)
17996
17997 @item ar
17998 alternating frames (right eye first, left eye second)
17999
18000 @item irl
18001 interleaved rows (left eye has top row, right eye starts on next row)
18002
18003 @item irr
18004 interleaved rows (right eye has top row, left eye starts on next row)
18005
18006 @item icl
18007 interleaved columns, left eye first
18008
18009 @item icr
18010 interleaved columns, right eye first
18011
18012 Default value is @samp{sbsl}.
18013 @end table
18014
18015 @item out
18016 Set stereoscopic image format of output.
18017
18018 @table @samp
18019 @item sbsl
18020 side by side parallel (left eye left, right eye right)
18021
18022 @item sbsr
18023 side by side crosseye (right eye left, left eye right)
18024
18025 @item sbs2l
18026 side by side parallel with half width resolution
18027 (left eye left, right eye right)
18028
18029 @item sbs2r
18030 side by side crosseye with half width resolution
18031 (right eye left, left eye right)
18032
18033 @item abl
18034 @item tbl
18035 above-below (left eye above, right eye below)
18036
18037 @item abr
18038 @item tbr
18039 above-below (right eye above, left eye below)
18040
18041 @item ab2l
18042 @item tb2l
18043 above-below with half height resolution
18044 (left eye above, right eye below)
18045
18046 @item ab2r
18047 @item tb2r
18048 above-below with half height resolution
18049 (right eye above, left eye below)
18050
18051 @item al
18052 alternating frames (left eye first, right eye second)
18053
18054 @item ar
18055 alternating frames (right eye first, left eye second)
18056
18057 @item irl
18058 interleaved rows (left eye has top row, right eye starts on next row)
18059
18060 @item irr
18061 interleaved rows (right eye has top row, left eye starts on next row)
18062
18063 @item arbg
18064 anaglyph red/blue gray
18065 (red filter on left eye, blue filter on right eye)
18066
18067 @item argg
18068 anaglyph red/green gray
18069 (red filter on left eye, green filter on right eye)
18070
18071 @item arcg
18072 anaglyph red/cyan gray
18073 (red filter on left eye, cyan filter on right eye)
18074
18075 @item arch
18076 anaglyph red/cyan half colored
18077 (red filter on left eye, cyan filter on right eye)
18078
18079 @item arcc
18080 anaglyph red/cyan color
18081 (red filter on left eye, cyan filter on right eye)
18082
18083 @item arcd
18084 anaglyph red/cyan color optimized with the least squares projection of dubois
18085 (red filter on left eye, cyan filter on right eye)
18086
18087 @item agmg
18088 anaglyph green/magenta gray
18089 (green filter on left eye, magenta filter on right eye)
18090
18091 @item agmh
18092 anaglyph green/magenta half colored
18093 (green filter on left eye, magenta filter on right eye)
18094
18095 @item agmc
18096 anaglyph green/magenta colored
18097 (green filter on left eye, magenta filter on right eye)
18098
18099 @item agmd
18100 anaglyph green/magenta color optimized with the least squares projection of dubois
18101 (green filter on left eye, magenta filter on right eye)
18102
18103 @item aybg
18104 anaglyph yellow/blue gray
18105 (yellow filter on left eye, blue filter on right eye)
18106
18107 @item aybh
18108 anaglyph yellow/blue half colored
18109 (yellow filter on left eye, blue filter on right eye)
18110
18111 @item aybc
18112 anaglyph yellow/blue colored
18113 (yellow filter on left eye, blue filter on right eye)
18114
18115 @item aybd
18116 anaglyph yellow/blue color optimized with the least squares projection of dubois
18117 (yellow filter on left eye, blue filter on right eye)
18118
18119 @item ml
18120 mono output (left eye only)
18121
18122 @item mr
18123 mono output (right eye only)
18124
18125 @item chl
18126 checkerboard, left eye first
18127
18128 @item chr
18129 checkerboard, right eye first
18130
18131 @item icl
18132 interleaved columns, left eye first
18133
18134 @item icr
18135 interleaved columns, right eye first
18136
18137 @item hdmi
18138 HDMI frame pack
18139 @end table
18140
18141 Default value is @samp{arcd}.
18142 @end table
18143
18144 @subsection Examples
18145
18146 @itemize
18147 @item
18148 Convert input video from side by side parallel to anaglyph yellow/blue dubois:
18149 @example
18150 stereo3d=sbsl:aybd
18151 @end example
18152
18153 @item
18154 Convert input video from above below (left eye above, right eye below) to side by side crosseye.
18155 @example
18156 stereo3d=abl:sbsr
18157 @end example
18158 @end itemize
18159
18160 @section streamselect, astreamselect
18161 Select video or audio streams.
18162
18163 The filter accepts the following options:
18164
18165 @table @option
18166 @item inputs
18167 Set number of inputs. Default is 2.
18168
18169 @item map
18170 Set input indexes to remap to outputs.
18171 @end table
18172
18173 @subsection Commands
18174
18175 The @code{streamselect} and @code{astreamselect} filter supports the following
18176 commands:
18177
18178 @table @option
18179 @item map
18180 Set input indexes to remap to outputs.
18181 @end table
18182
18183 @subsection Examples
18184
18185 @itemize
18186 @item
18187 Select first 5 seconds 1st stream and rest of time 2nd stream:
18188 @example
18189 sendcmd='5.0 streamselect map 1',streamselect=inputs=2:map=0
18190 @end example
18191
18192 @item
18193 Same as above, but for audio:
18194 @example
18195 asendcmd='5.0 astreamselect map 1',astreamselect=inputs=2:map=0
18196 @end example
18197 @end itemize
18198
18199 @anchor{subtitles}
18200 @section subtitles
18201
18202 Draw subtitles on top of input video using the libass library.
18203
18204 To enable compilation of this filter you need to configure FFmpeg with
18205 @code{--enable-libass}. This filter also requires a build with libavcodec and
18206 libavformat to convert the passed subtitles file to ASS (Advanced Substation
18207 Alpha) subtitles format.
18208
18209 The filter accepts the following options:
18210
18211 @table @option
18212 @item filename, f
18213 Set the filename of the subtitle file to read. It must be specified.
18214
18215 @item original_size
18216 Specify the size of the original video, the video for which the ASS file
18217 was composed. For the syntax of this option, check the
18218 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18219 Due to a misdesign in ASS aspect ratio arithmetic, this is necessary to
18220 correctly scale the fonts if the aspect ratio has been changed.
18221
18222 @item fontsdir
18223 Set a directory path containing fonts that can be used by the filter.
18224 These fonts will be used in addition to whatever the font provider uses.
18225
18226 @item alpha
18227 Process alpha channel, by default alpha channel is untouched.
18228
18229 @item charenc
18230 Set subtitles input character encoding. @code{subtitles} filter only. Only
18231 useful if not UTF-8.
18232
18233 @item stream_index, si
18234 Set subtitles stream index. @code{subtitles} filter only.
18235
18236 @item force_style
18237 Override default style or script info parameters of the subtitles. It accepts a
18238 string containing ASS style format @code{KEY=VALUE} couples separated by ",".
18239 @end table
18240
18241 If the first key is not specified, it is assumed that the first value
18242 specifies the @option{filename}.
18243
18244 For example, to render the file @file{sub.srt} on top of the input
18245 video, use the command:
18246 @example
18247 subtitles=sub.srt
18248 @end example
18249
18250 which is equivalent to:
18251 @example
18252 subtitles=filename=sub.srt
18253 @end example
18254
18255 To render the default subtitles stream from file @file{video.mkv}, use:
18256 @example
18257 subtitles=video.mkv
18258 @end example
18259
18260 To render the second subtitles stream from that file, use:
18261 @example
18262 subtitles=video.mkv:si=1
18263 @end example
18264
18265 To make the subtitles stream from @file{sub.srt} appear in 80% transparent blue
18266 @code{DejaVu Serif}, use:
18267 @example
18268 subtitles=sub.srt:force_style='Fontname=DejaVu Serif,PrimaryColour=&HCCFF0000'
18269 @end example
18270
18271 @section super2xsai
18272
18273 Scale the input by 2x and smooth using the Super2xSaI (Scale and
18274 Interpolate) pixel art scaling algorithm.
18275
18276 Useful for enlarging pixel art images without reducing sharpness.
18277
18278 @section swaprect
18279
18280 Swap two rectangular objects in video.
18281
18282 This filter accepts the following options:
18283
18284 @table @option
18285 @item w
18286 Set object width.
18287
18288 @item h
18289 Set object height.
18290
18291 @item x1
18292 Set 1st rect x coordinate.
18293
18294 @item y1
18295 Set 1st rect y coordinate.
18296
18297 @item x2
18298 Set 2nd rect x coordinate.
18299
18300 @item y2
18301 Set 2nd rect y coordinate.
18302
18303 All expressions are evaluated once for each frame.
18304 @end table
18305
18306 The all options are expressions containing the following constants:
18307
18308 @table @option
18309 @item w
18310 @item h
18311 The input width and height.
18312
18313 @item a
18314 same as @var{w} / @var{h}
18315
18316 @item sar
18317 input sample aspect ratio
18318
18319 @item dar
18320 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
18321
18322 @item n
18323 The number of the input frame, starting from 0.
18324
18325 @item t
18326 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
18327
18328 @item pos
18329 the position in the file of the input frame, NAN if unknown
18330 @end table
18331
18332 @section swapuv
18333 Swap U & V plane.
18334
18335 @section tblend
18336 Blend successive video frames.
18337
18338 See @ref{blend}
18339
18340 @section telecine
18341
18342 Apply telecine process to the video.
18343
18344 This filter accepts the following options:
18345
18346 @table @option
18347 @item first_field
18348 @table @samp
18349 @item top, t
18350 top field first
18351 @item bottom, b
18352 bottom field first
18353 The default value is @code{top}.
18354 @end table
18355
18356 @item pattern
18357 A string of numbers representing the pulldown pattern you wish to apply.
18358 The default value is @code{23}.
18359 @end table
18360
18361 @example
18362 Some typical patterns:
18363
18364 NTSC output (30i):
18365 27.5p: 32222
18366 24p: 23 (classic)
18367 24p: 2332 (preferred)
18368 20p: 33
18369 18p: 334
18370 16p: 3444
18371
18372 PAL output (25i):
18373 27.5p: 12222
18374 24p: 222222222223 ("Euro pulldown")
18375 16.67p: 33
18376 16p: 33333334
18377 @end example
18378
18379 @section thistogram
18380
18381 Compute and draw a color distribution histogram for the input video across time.
18382
18383 Unlike @ref{histogram} video filter which only shows histogram of single input frame
18384 at certain time, this filter shows also past histograms of number of frames defined
18385 by @code{width} option.
18386
18387 The computed histogram is a representation of the color component
18388 distribution in an image.
18389
18390 The filter accepts the following options:
18391
18392 @table @option
18393 @item width, w
18394 Set width of single color component output. Default value is @code{0}.
18395 Value of @code{0} means width will be picked from input video.
18396 This also set number of passed histograms to keep.
18397 Allowed range is [0, 8192].
18398
18399 @item display_mode, d
18400 Set display mode.
18401 It accepts the following values:
18402 @table @samp
18403 @item stack
18404 Per color component graphs are placed below each other.
18405
18406 @item parade
18407 Per color component graphs are placed side by side.
18408
18409 @item overlay
18410 Presents information identical to that in the @code{parade}, except
18411 that the graphs representing color components are superimposed directly
18412 over one another.
18413 @end table
18414 Default is @code{stack}.
18415
18416 @item levels_mode, m
18417 Set mode. Can be either @code{linear}, or @code{logarithmic}.
18418 Default is @code{linear}.
18419
18420 @item components, c
18421 Set what color components to display.
18422 Default is @code{7}.
18423
18424 @item bgopacity, b
18425 Set background opacity. Default is @code{0.9}.
18426
18427 @item envelope, e
18428 Show envelope. Default is disabled.
18429
18430 @item ecolor, ec
18431 Set envelope color. Default is @code{gold}.
18432
18433 @item slide
18434 Set slide mode.
18435
18436 Available values for slide is:
18437 @table @samp
18438 @item frame
18439 Draw new frame when right border is reached.
18440
18441 @item replace
18442 Replace old columns with new ones.
18443
18444 @item scroll
18445 Scroll from right to left.
18446
18447 @item rscroll
18448 Scroll from left to right.
18449
18450 @item picture
18451 Draw single picture.
18452 @end table
18453
18454 Default is @code{replace}.
18455 @end table
18456
18457 @section threshold
18458
18459 Apply threshold effect to video stream.
18460
18461 This filter needs four video streams to perform thresholding.
18462 First stream is stream we are filtering.
18463 Second stream is holding threshold values, third stream is holding min values,
18464 and last, fourth stream is holding max values.
18465
18466 The filter accepts the following option:
18467
18468 @table @option
18469 @item planes
18470 Set which planes will be processed, unprocessed planes will be copied.
18471 By default value 0xf, all planes will be processed.
18472 @end table
18473
18474 For example if first stream pixel's component value is less then threshold value
18475 of pixel component from 2nd threshold stream, third stream value will picked,
18476 otherwise fourth stream pixel component value will be picked.
18477
18478 Using color source filter one can perform various types of thresholding:
18479
18480 @subsection Examples
18481
18482 @itemize
18483 @item
18484 Binary threshold, using gray color as threshold:
18485 @example
18486 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=black -f lavfi -i color=white -lavfi threshold output.avi
18487 @end example
18488
18489 @item
18490 Inverted binary threshold, using gray color as threshold:
18491 @example
18492 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -f lavfi -i color=black -lavfi threshold output.avi
18493 @end example
18494
18495 @item
18496 Truncate binary threshold, using gray color as threshold:
18497 @example
18498 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=gray -lavfi threshold output.avi
18499 @end example
18500
18501 @item
18502 Threshold to zero, using gray color as threshold:
18503 @example
18504 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -i 320x240.avi -lavfi threshold output.avi
18505 @end example
18506
18507 @item
18508 Inverted threshold to zero, using gray color as threshold:
18509 @example
18510 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=white -lavfi threshold output.avi
18511 @end example
18512 @end itemize
18513
18514 @section thumbnail
18515 Select the most representative frame in a given sequence of consecutive frames.
18516
18517 The filter accepts the following options:
18518
18519 @table @option
18520 @item n
18521 Set the frames batch size to analyze; in a set of @var{n} frames, the filter
18522 will pick one of them, and then handle the next batch of @var{n} frames until
18523 the end. Default is @code{100}.
18524 @end table
18525
18526 Since the filter keeps track of the whole frames sequence, a bigger @var{n}
18527 value will result in a higher memory usage, so a high value is not recommended.
18528
18529 @subsection Examples
18530
18531 @itemize
18532 @item
18533 Extract one picture each 50 frames:
18534 @example
18535 thumbnail=50
18536 @end example
18537
18538 @item
18539 Complete example of a thumbnail creation with @command{ffmpeg}:
18540 @example
18541 ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
18542 @end example
18543 @end itemize
18544
18545 @anchor{tile}
18546 @section tile
18547
18548 Tile several successive frames together.
18549
18550 The @ref{untile} filter can do the reverse.
18551
18552 The filter accepts the following options:
18553
18554 @table @option
18555
18556 @item layout
18557 Set the grid size (i.e. the number of lines and columns). For the syntax of
18558 this option, check the
18559 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18560
18561 @item nb_frames
18562 Set the maximum number of frames to render in the given area. It must be less
18563 than or equal to @var{w}x@var{h}. The default value is @code{0}, meaning all
18564 the area will be used.
18565
18566 @item margin
18567 Set the outer border margin in pixels.
18568
18569 @item padding
18570 Set the inner border thickness (i.e. the number of pixels between frames). For
18571 more advanced padding options (such as having different values for the edges),
18572 refer to the pad video filter.
18573
18574 @item color
18575 Specify the color of the unused area. For the syntax of this option, check the
18576 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
18577 The default value of @var{color} is "black".
18578
18579 @item overlap
18580 Set the number of frames to overlap when tiling several successive frames together.
18581 The value must be between @code{0} and @var{nb_frames - 1}.
18582
18583 @item init_padding
18584 Set the number of frames to initially be empty before displaying first output frame.
18585 This controls how soon will one get first output frame.
18586 The value must be between @code{0} and @var{nb_frames - 1}.
18587 @end table
18588
18589 @subsection Examples
18590
18591 @itemize
18592 @item
18593 Produce 8x8 PNG tiles of all keyframes (@option{-skip_frame nokey}) in a movie:
18594 @example
18595 ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
18596 @end example
18597 The @option{-vsync 0} is necessary to prevent @command{ffmpeg} from
18598 duplicating each output frame to accommodate the originally detected frame
18599 rate.
18600
18601 @item
18602 Display @code{5} pictures in an area of @code{3x2} frames,
18603 with @code{7} pixels between them, and @code{2} pixels of initial margin, using
18604 mixed flat and named options:
18605 @example
18606 tile=3x2:nb_frames=5:padding=7:margin=2
18607 @end example
18608 @end itemize
18609
18610 @section tinterlace
18611
18612 Perform various types of temporal field interlacing.
18613
18614 Frames are counted starting from 1, so the first input frame is
18615 considered odd.
18616
18617 The filter accepts the following options:
18618
18619 @table @option
18620
18621 @item mode
18622 Specify the mode of the interlacing. This option can also be specified
18623 as a value alone. See below for a list of values for this option.
18624
18625 Available values are:
18626
18627 @table @samp
18628 @item merge, 0
18629 Move odd frames into the upper field, even into the lower field,
18630 generating a double height frame at half frame rate.
18631 @example
18632  ------> time
18633 Input:
18634 Frame 1         Frame 2         Frame 3         Frame 4
18635
18636 11111           22222           33333           44444
18637 11111           22222           33333           44444
18638 11111           22222           33333           44444
18639 11111           22222           33333           44444
18640
18641 Output:
18642 11111                           33333
18643 22222                           44444
18644 11111                           33333
18645 22222                           44444
18646 11111                           33333
18647 22222                           44444
18648 11111                           33333
18649 22222                           44444
18650 @end example
18651
18652 @item drop_even, 1
18653 Only output odd frames, even frames are dropped, generating a frame with
18654 unchanged height at half frame rate.
18655
18656 @example
18657  ------> time
18658 Input:
18659 Frame 1         Frame 2         Frame 3         Frame 4
18660
18661 11111           22222           33333           44444
18662 11111           22222           33333           44444
18663 11111           22222           33333           44444
18664 11111           22222           33333           44444
18665
18666 Output:
18667 11111                           33333
18668 11111                           33333
18669 11111                           33333
18670 11111                           33333
18671 @end example
18672
18673 @item drop_odd, 2
18674 Only output even frames, odd frames are dropped, generating a frame with
18675 unchanged height at half frame rate.
18676
18677 @example
18678  ------> time
18679 Input:
18680 Frame 1         Frame 2         Frame 3         Frame 4
18681
18682 11111           22222           33333           44444
18683 11111           22222           33333           44444
18684 11111           22222           33333           44444
18685 11111           22222           33333           44444
18686
18687 Output:
18688                 22222                           44444
18689                 22222                           44444
18690                 22222                           44444
18691                 22222                           44444
18692 @end example
18693
18694 @item pad, 3
18695 Expand each frame to full height, but pad alternate lines with black,
18696 generating a frame with double height at the same input frame rate.
18697
18698 @example
18699  ------> time
18700 Input:
18701 Frame 1         Frame 2         Frame 3         Frame 4
18702
18703 11111           22222           33333           44444
18704 11111           22222           33333           44444
18705 11111           22222           33333           44444
18706 11111           22222           33333           44444
18707
18708 Output:
18709 11111           .....           33333           .....
18710 .....           22222           .....           44444
18711 11111           .....           33333           .....
18712 .....           22222           .....           44444
18713 11111           .....           33333           .....
18714 .....           22222           .....           44444
18715 11111           .....           33333           .....
18716 .....           22222           .....           44444
18717 @end example
18718
18719
18720 @item interleave_top, 4
18721 Interleave the upper field from odd frames with the lower field from
18722 even frames, generating a frame with unchanged height at half frame rate.
18723
18724 @example
18725  ------> time
18726 Input:
18727 Frame 1         Frame 2         Frame 3         Frame 4
18728
18729 11111<-         22222           33333<-         44444
18730 11111           22222<-         33333           44444<-
18731 11111<-         22222           33333<-         44444
18732 11111           22222<-         33333           44444<-
18733
18734 Output:
18735 11111                           33333
18736 22222                           44444
18737 11111                           33333
18738 22222                           44444
18739 @end example
18740
18741
18742 @item interleave_bottom, 5
18743 Interleave the lower field from odd frames with the upper field from
18744 even frames, generating a frame with unchanged height at half frame rate.
18745
18746 @example
18747  ------> time
18748 Input:
18749 Frame 1         Frame 2         Frame 3         Frame 4
18750
18751 11111           22222<-         33333           44444<-
18752 11111<-         22222           33333<-         44444
18753 11111           22222<-         33333           44444<-
18754 11111<-         22222           33333<-         44444
18755
18756 Output:
18757 22222                           44444
18758 11111                           33333
18759 22222                           44444
18760 11111                           33333
18761 @end example
18762
18763
18764 @item interlacex2, 6
18765 Double frame rate with unchanged height. Frames are inserted each
18766 containing the second temporal field from the previous input frame and
18767 the first temporal field from the next input frame. This mode relies on
18768 the top_field_first flag. Useful for interlaced video displays with no
18769 field synchronisation.
18770
18771 @example
18772  ------> time
18773 Input:
18774 Frame 1         Frame 2         Frame 3         Frame 4
18775
18776 11111           22222           33333           44444
18777  11111           22222           33333           44444
18778 11111           22222           33333           44444
18779  11111           22222           33333           44444
18780
18781 Output:
18782 11111   22222   22222   33333   33333   44444   44444
18783  11111   11111   22222   22222   33333   33333   44444
18784 11111   22222   22222   33333   33333   44444   44444
18785  11111   11111   22222   22222   33333   33333   44444
18786 @end example
18787
18788
18789 @item mergex2, 7
18790 Move odd frames into the upper field, even into the lower field,
18791 generating a double height frame at same frame rate.
18792
18793 @example
18794  ------> time
18795 Input:
18796 Frame 1         Frame 2         Frame 3         Frame 4
18797
18798 11111           22222           33333           44444
18799 11111           22222           33333           44444
18800 11111           22222           33333           44444
18801 11111           22222           33333           44444
18802
18803 Output:
18804 11111           33333           33333           55555
18805 22222           22222           44444           44444
18806 11111           33333           33333           55555
18807 22222           22222           44444           44444
18808 11111           33333           33333           55555
18809 22222           22222           44444           44444
18810 11111           33333           33333           55555
18811 22222           22222           44444           44444
18812 @end example
18813
18814 @end table
18815
18816 Numeric values are deprecated but are accepted for backward
18817 compatibility reasons.
18818
18819 Default mode is @code{merge}.
18820
18821 @item flags
18822 Specify flags influencing the filter process.
18823
18824 Available value for @var{flags} is:
18825
18826 @table @option
18827 @item low_pass_filter, vlpf
18828 Enable linear vertical low-pass filtering in the filter.
18829 Vertical low-pass filtering is required when creating an interlaced
18830 destination from a progressive source which contains high-frequency
18831 vertical detail. Filtering will reduce interlace 'twitter' and Moire
18832 patterning.
18833
18834 @item complex_filter, cvlpf
18835 Enable complex vertical low-pass filtering.
18836 This will slightly less reduce interlace 'twitter' and Moire
18837 patterning but better retain detail and subjective sharpness impression.
18838
18839 @item bypass_il
18840 Bypass already interlaced frames, only adjust the frame rate.
18841 @end table
18842
18843 Vertical low-pass filtering and bypassing already interlaced frames can only be
18844 enabled for @option{mode} @var{interleave_top} and @var{interleave_bottom}.
18845
18846 @end table
18847
18848 @section tmedian
18849 Pick median pixels from several successive input video frames.
18850
18851 The filter accepts the following options:
18852
18853 @table @option
18854 @item radius
18855 Set radius of median filter.
18856 Default is 1. Allowed range is from 1 to 127.
18857
18858 @item planes
18859 Set which planes to filter. Default value is @code{15}, by which all planes are processed.
18860
18861 @item percentile
18862 Set median percentile. Default value is @code{0.5}.
18863 Default value of @code{0.5} will pick always median values, while @code{0} will pick
18864 minimum values, and @code{1} maximum values.
18865 @end table
18866
18867 @section tmix
18868
18869 Mix successive video frames.
18870
18871 A description of the accepted options follows.
18872
18873 @table @option
18874 @item frames
18875 The number of successive frames to mix. If unspecified, it defaults to 3.
18876
18877 @item weights
18878 Specify weight of each input video frame.
18879 Each weight is separated by space. If number of weights is smaller than
18880 number of @var{frames} last specified weight will be used for all remaining
18881 unset weights.
18882
18883 @item scale
18884 Specify scale, if it is set it will be multiplied with sum
18885 of each weight multiplied with pixel values to give final destination
18886 pixel value. By default @var{scale} is auto scaled to sum of weights.
18887 @end table
18888
18889 @subsection Examples
18890
18891 @itemize
18892 @item
18893 Average 7 successive frames:
18894 @example
18895 tmix=frames=7:weights="1 1 1 1 1 1 1"
18896 @end example
18897
18898 @item
18899 Apply simple temporal convolution:
18900 @example
18901 tmix=frames=3:weights="-1 3 -1"
18902 @end example
18903
18904 @item
18905 Similar as above but only showing temporal differences:
18906 @example
18907 tmix=frames=3:weights="-1 2 -1":scale=1
18908 @end example
18909 @end itemize
18910
18911 @anchor{tonemap}
18912 @section tonemap
18913 Tone map colors from different dynamic ranges.
18914
18915 This filter expects data in single precision floating point, as it needs to
18916 operate on (and can output) out-of-range values. Another filter, such as
18917 @ref{zscale}, is needed to convert the resulting frame to a usable format.
18918
18919 The tonemapping algorithms implemented only work on linear light, so input
18920 data should be linearized beforehand (and possibly correctly tagged).
18921
18922 @example
18923 ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT
18924 @end example
18925
18926 @subsection Options
18927 The filter accepts the following options.
18928
18929 @table @option
18930 @item tonemap
18931 Set the tone map algorithm to use.
18932
18933 Possible values are:
18934 @table @var
18935 @item none
18936 Do not apply any tone map, only desaturate overbright pixels.
18937
18938 @item clip
18939 Hard-clip any out-of-range values. Use it for perfect color accuracy for
18940 in-range values, while distorting out-of-range values.
18941
18942 @item linear
18943 Stretch the entire reference gamut to a linear multiple of the display.
18944
18945 @item gamma
18946 Fit a logarithmic transfer between the tone curves.
18947
18948 @item reinhard
18949 Preserve overall image brightness with a simple curve, using nonlinear
18950 contrast, which results in flattening details and degrading color accuracy.
18951
18952 @item hable
18953 Preserve both dark and bright details better than @var{reinhard}, at the cost
18954 of slightly darkening everything. Use it when detail preservation is more
18955 important than color and brightness accuracy.
18956
18957 @item mobius
18958 Smoothly map out-of-range values, while retaining contrast and colors for
18959 in-range material as much as possible. Use it when color accuracy is more
18960 important than detail preservation.
18961 @end table
18962
18963 Default is none.
18964
18965 @item param
18966 Tune the tone mapping algorithm.
18967
18968 This affects the following algorithms:
18969 @table @var
18970 @item none
18971 Ignored.
18972
18973 @item linear
18974 Specifies the scale factor to use while stretching.
18975 Default to 1.0.
18976
18977 @item gamma
18978 Specifies the exponent of the function.
18979 Default to 1.8.
18980
18981 @item clip
18982 Specify an extra linear coefficient to multiply into the signal before clipping.
18983 Default to 1.0.
18984
18985 @item reinhard
18986 Specify the local contrast coefficient at the display peak.
18987 Default to 0.5, which means that in-gamut values will be about half as bright
18988 as when clipping.
18989
18990 @item hable
18991 Ignored.
18992
18993 @item mobius
18994 Specify the transition point from linear to mobius transform. Every value
18995 below this point is guaranteed to be mapped 1:1. The higher the value, the
18996 more accurate the result will be, at the cost of losing bright details.
18997 Default to 0.3, which due to the steep initial slope still preserves in-range
18998 colors fairly accurately.
18999 @end table
19000
19001 @item desat
19002 Apply desaturation for highlights that exceed this level of brightness. The
19003 higher the parameter, the more color information will be preserved. This
19004 setting helps prevent unnaturally blown-out colors for super-highlights, by
19005 (smoothly) turning into white instead. This makes images feel more natural,
19006 at the cost of reducing information about out-of-range colors.
19007
19008 The default of 2.0 is somewhat conservative and will mostly just apply to
19009 skies or directly sunlit surfaces. A setting of 0.0 disables this option.
19010
19011 This option works only if the input frame has a supported color tag.
19012
19013 @item peak
19014 Override signal/nominal/reference peak with this value. Useful when the
19015 embedded peak information in display metadata is not reliable or when tone
19016 mapping from a lower range to a higher range.
19017 @end table
19018
19019 @section tpad
19020
19021 Temporarily pad video frames.
19022
19023 The filter accepts the following options:
19024
19025 @table @option
19026 @item start
19027 Specify number of delay frames before input video stream. Default is 0.
19028
19029 @item stop
19030 Specify number of padding frames after input video stream.
19031 Set to -1 to pad indefinitely. Default is 0.
19032
19033 @item start_mode
19034 Set kind of frames added to beginning of stream.
19035 Can be either @var{add} or @var{clone}.
19036 With @var{add} frames of solid-color are added.
19037 With @var{clone} frames are clones of first frame.
19038 Default is @var{add}.
19039
19040 @item stop_mode
19041 Set kind of frames added to end of stream.
19042 Can be either @var{add} or @var{clone}.
19043 With @var{add} frames of solid-color are added.
19044 With @var{clone} frames are clones of last frame.
19045 Default is @var{add}.
19046
19047 @item start_duration, stop_duration
19048 Specify the duration of the start/stop delay. See
19049 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
19050 for the accepted syntax.
19051 These options override @var{start} and @var{stop}. Default is 0.
19052
19053 @item color
19054 Specify the color of the padded area. For the syntax of this option,
19055 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
19056 manual,ffmpeg-utils}.
19057
19058 The default value of @var{color} is "black".
19059 @end table
19060
19061 @anchor{transpose}
19062 @section transpose
19063
19064 Transpose rows with columns in the input video and optionally flip it.
19065
19066 It accepts the following parameters:
19067
19068 @table @option
19069
19070 @item dir
19071 Specify the transposition direction.
19072
19073 Can assume the following values:
19074 @table @samp
19075 @item 0, 4, cclock_flip
19076 Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
19077 @example
19078 L.R     L.l
19079 . . ->  . .
19080 l.r     R.r
19081 @end example
19082
19083 @item 1, 5, clock
19084 Rotate by 90 degrees clockwise, that is:
19085 @example
19086 L.R     l.L
19087 . . ->  . .
19088 l.r     r.R
19089 @end example
19090
19091 @item 2, 6, cclock
19092 Rotate by 90 degrees counterclockwise, that is:
19093 @example
19094 L.R     R.r
19095 . . ->  . .
19096 l.r     L.l
19097 @end example
19098
19099 @item 3, 7, clock_flip
19100 Rotate by 90 degrees clockwise and vertically flip, that is:
19101 @example
19102 L.R     r.R
19103 . . ->  . .
19104 l.r     l.L
19105 @end example
19106 @end table
19107
19108 For values between 4-7, the transposition is only done if the input
19109 video geometry is portrait and not landscape. These values are
19110 deprecated, the @code{passthrough} option should be used instead.
19111
19112 Numerical values are deprecated, and should be dropped in favor of
19113 symbolic constants.
19114
19115 @item passthrough
19116 Do not apply the transposition if the input geometry matches the one
19117 specified by the specified value. It accepts the following values:
19118 @table @samp
19119 @item none
19120 Always apply transposition.
19121 @item portrait
19122 Preserve portrait geometry (when @var{height} >= @var{width}).
19123 @item landscape
19124 Preserve landscape geometry (when @var{width} >= @var{height}).
19125 @end table
19126
19127 Default value is @code{none}.
19128 @end table
19129
19130 For example to rotate by 90 degrees clockwise and preserve portrait
19131 layout:
19132 @example
19133 transpose=dir=1:passthrough=portrait
19134 @end example
19135
19136 The command above can also be specified as:
19137 @example
19138 transpose=1:portrait
19139 @end example
19140
19141 @section transpose_npp
19142
19143 Transpose rows with columns in the input video and optionally flip it.
19144 For more in depth examples see the @ref{transpose} video filter, which shares mostly the same options.
19145
19146 It accepts the following parameters:
19147
19148 @table @option
19149
19150 @item dir
19151 Specify the transposition direction.
19152
19153 Can assume the following values:
19154 @table @samp
19155 @item cclock_flip
19156 Rotate by 90 degrees counterclockwise and vertically flip. (default)
19157
19158 @item clock
19159 Rotate by 90 degrees clockwise.
19160
19161 @item cclock
19162 Rotate by 90 degrees counterclockwise.
19163
19164 @item clock_flip
19165 Rotate by 90 degrees clockwise and vertically flip.
19166 @end table
19167
19168 @item passthrough
19169 Do not apply the transposition if the input geometry matches the one
19170 specified by the specified value. It accepts the following values:
19171 @table @samp
19172 @item none
19173 Always apply transposition. (default)
19174 @item portrait
19175 Preserve portrait geometry (when @var{height} >= @var{width}).
19176 @item landscape
19177 Preserve landscape geometry (when @var{width} >= @var{height}).
19178 @end table
19179
19180 @end table
19181
19182 @section trim
19183 Trim the input so that the output contains one continuous subpart of the input.
19184
19185 It accepts the following parameters:
19186 @table @option
19187 @item start
19188 Specify the time of the start of the kept section, i.e. the frame with the
19189 timestamp @var{start} will be the first frame in the output.
19190
19191 @item end
19192 Specify the time of the first frame that will be dropped, i.e. the frame
19193 immediately preceding the one with the timestamp @var{end} will be the last
19194 frame in the output.
19195
19196 @item start_pts
19197 This is the same as @var{start}, except this option sets the start timestamp
19198 in timebase units instead of seconds.
19199
19200 @item end_pts
19201 This is the same as @var{end}, except this option sets the end timestamp
19202 in timebase units instead of seconds.
19203
19204 @item duration
19205 The maximum duration of the output in seconds.
19206
19207 @item start_frame
19208 The number of the first frame that should be passed to the output.
19209
19210 @item end_frame
19211 The number of the first frame that should be dropped.
19212 @end table
19213
19214 @option{start}, @option{end}, and @option{duration} are expressed as time
19215 duration specifications; see
19216 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
19217 for the accepted syntax.
19218
19219 Note that the first two sets of the start/end options and the @option{duration}
19220 option look at the frame timestamp, while the _frame variants simply count the
19221 frames that pass through the filter. Also note that this filter does not modify
19222 the timestamps. If you wish for the output timestamps to start at zero, insert a
19223 setpts filter after the trim filter.
19224
19225 If multiple start or end options are set, this filter tries to be greedy and
19226 keep all the frames that match at least one of the specified constraints. To keep
19227 only the part that matches all the constraints at once, chain multiple trim
19228 filters.
19229
19230 The defaults are such that all the input is kept. So it is possible to set e.g.
19231 just the end values to keep everything before the specified time.
19232
19233 Examples:
19234 @itemize
19235 @item
19236 Drop everything except the second minute of input:
19237 @example
19238 ffmpeg -i INPUT -vf trim=60:120
19239 @end example
19240
19241 @item
19242 Keep only the first second:
19243 @example
19244 ffmpeg -i INPUT -vf trim=duration=1
19245 @end example
19246
19247 @end itemize
19248
19249 @section unpremultiply
19250 Apply alpha unpremultiply effect to input video stream using first plane
19251 of second stream as alpha.
19252
19253 Both streams must have same dimensions and same pixel format.
19254
19255 The filter accepts the following option:
19256
19257 @table @option
19258 @item planes
19259 Set which planes will be processed, unprocessed planes will be copied.
19260 By default value 0xf, all planes will be processed.
19261
19262 If the format has 1 or 2 components, then luma is bit 0.
19263 If the format has 3 or 4 components:
19264 for RGB formats bit 0 is green, bit 1 is blue and bit 2 is red;
19265 for YUV formats bit 0 is luma, bit 1 is chroma-U and bit 2 is chroma-V.
19266 If present, the alpha channel is always the last bit.
19267
19268 @item inplace
19269 Do not require 2nd input for processing, instead use alpha plane from input stream.
19270 @end table
19271
19272 @anchor{unsharp}
19273 @section unsharp
19274
19275 Sharpen or blur the input video.
19276
19277 It accepts the following parameters:
19278
19279 @table @option
19280 @item luma_msize_x, lx
19281 Set the luma matrix horizontal size. It must be an odd integer between
19282 3 and 23. The default value is 5.
19283
19284 @item luma_msize_y, ly
19285 Set the luma matrix vertical size. It must be an odd integer between 3
19286 and 23. The default value is 5.
19287
19288 @item luma_amount, la
19289 Set the luma effect strength. It must be a floating point number, reasonable
19290 values lay between -1.5 and 1.5.
19291
19292 Negative values will blur the input video, while positive values will
19293 sharpen it, a value of zero will disable the effect.
19294
19295 Default value is 1.0.
19296
19297 @item chroma_msize_x, cx
19298 Set the chroma matrix horizontal size. It must be an odd integer
19299 between 3 and 23. The default value is 5.
19300
19301 @item chroma_msize_y, cy
19302 Set the chroma matrix vertical size. It must be an odd integer
19303 between 3 and 23. The default value is 5.
19304
19305 @item chroma_amount, ca
19306 Set the chroma effect strength. It must be a floating point number, reasonable
19307 values lay between -1.5 and 1.5.
19308
19309 Negative values will blur the input video, while positive values will
19310 sharpen it, a value of zero will disable the effect.
19311
19312 Default value is 0.0.
19313
19314 @end table
19315
19316 All parameters are optional and default to the equivalent of the
19317 string '5:5:1.0:5:5:0.0'.
19318
19319 @subsection Examples
19320
19321 @itemize
19322 @item
19323 Apply strong luma sharpen effect:
19324 @example
19325 unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
19326 @end example
19327
19328 @item
19329 Apply a strong blur of both luma and chroma parameters:
19330 @example
19331 unsharp=7:7:-2:7:7:-2
19332 @end example
19333 @end itemize
19334
19335 @anchor{untile}
19336 @section untile
19337
19338 Decompose a video made of tiled images into the individual images.
19339
19340 The frame rate of the output video is the frame rate of the input video
19341 multiplied by the number of tiles.
19342
19343 This filter does the reverse of @ref{tile}.
19344
19345 The filter accepts the following options:
19346
19347 @table @option
19348
19349 @item layout
19350 Set the grid size (i.e. the number of lines and columns). For the syntax of
19351 this option, check the
19352 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19353 @end table
19354
19355 @subsection Examples
19356
19357 @itemize
19358 @item
19359 Produce a 1-second video from a still image file made of 25 frames stacked
19360 vertically, like an analogic film reel:
19361 @example
19362 ffmpeg -r 1 -i image.jpg -vf untile=1x25 movie.mkv
19363 @end example
19364 @end itemize
19365
19366 @section uspp
19367
19368 Apply ultra slow/simple postprocessing filter that compresses and decompresses
19369 the image at several (or - in the case of @option{quality} level @code{8} - all)
19370 shifts and average the results.
19371
19372 The way this differs from the behavior of spp is that uspp actually encodes &
19373 decodes each case with libavcodec Snow, whereas spp uses a simplified intra only 8x8
19374 DCT similar to MJPEG.
19375
19376 The filter accepts the following options:
19377
19378 @table @option
19379 @item quality
19380 Set quality. This option defines the number of levels for averaging. It accepts
19381 an integer in the range 0-8. If set to @code{0}, the filter will have no
19382 effect. A value of @code{8} means the higher quality. For each increment of
19383 that value the speed drops by a factor of approximately 2.  Default value is
19384 @code{3}.
19385
19386 @item qp
19387 Force a constant quantization parameter. If not set, the filter will use the QP
19388 from the video stream (if available).
19389 @end table
19390
19391 @section v360
19392
19393 Convert 360 videos between various formats.
19394
19395 The filter accepts the following options:
19396
19397 @table @option
19398
19399 @item input
19400 @item output
19401 Set format of the input/output video.
19402
19403 Available formats:
19404
19405 @table @samp
19406
19407 @item e
19408 @item equirect
19409 Equirectangular projection.
19410
19411 @item c3x2
19412 @item c6x1
19413 @item c1x6
19414 Cubemap with 3x2/6x1/1x6 layout.
19415
19416 Format specific options:
19417
19418 @table @option
19419 @item in_pad
19420 @item out_pad
19421 Set padding proportion for the input/output cubemap. Values in decimals.
19422
19423 Example values:
19424 @table @samp
19425 @item 0
19426 No padding.
19427 @item 0.01
19428 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)
19429 @end table
19430
19431 Default value is @b{@samp{0}}.
19432 Maximum value is @b{@samp{0.1}}.
19433
19434 @item fin_pad
19435 @item fout_pad
19436 Set fixed padding for the input/output cubemap. Values in pixels.
19437
19438 Default value is @b{@samp{0}}. If greater than zero it overrides other padding options.
19439
19440 @item in_forder
19441 @item out_forder
19442 Set order of faces for the input/output cubemap. Choose one direction for each position.
19443
19444 Designation of directions:
19445 @table @samp
19446 @item r
19447 right
19448 @item l
19449 left
19450 @item u
19451 up
19452 @item d
19453 down
19454 @item f
19455 forward
19456 @item b
19457 back
19458 @end table
19459
19460 Default value is @b{@samp{rludfb}}.
19461
19462 @item in_frot
19463 @item out_frot
19464 Set rotation of faces for the input/output cubemap. Choose one angle for each position.
19465
19466 Designation of angles:
19467 @table @samp
19468 @item 0
19469 0 degrees clockwise
19470 @item 1
19471 90 degrees clockwise
19472 @item 2
19473 180 degrees clockwise
19474 @item 3
19475 270 degrees clockwise
19476 @end table
19477
19478 Default value is @b{@samp{000000}}.
19479 @end table
19480
19481 @item eac
19482 Equi-Angular Cubemap.
19483
19484 @item flat
19485 @item gnomonic
19486 @item rectilinear
19487 Regular video.
19488
19489 Format specific options:
19490 @table @option
19491 @item h_fov
19492 @item v_fov
19493 @item d_fov
19494 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19495
19496 If diagonal field of view is set it overrides horizontal and vertical field of view.
19497
19498 @item ih_fov
19499 @item iv_fov
19500 @item id_fov
19501 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19502
19503 If diagonal field of view is set it overrides horizontal and vertical field of view.
19504 @end table
19505
19506 @item dfisheye
19507 Dual fisheye.
19508
19509 Format specific options:
19510 @table @option
19511 @item h_fov
19512 @item v_fov
19513 @item d_fov
19514 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19515
19516 If diagonal field of view is set it overrides horizontal and vertical field of view.
19517
19518 @item ih_fov
19519 @item iv_fov
19520 @item id_fov
19521 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19522
19523 If diagonal field of view is set it overrides horizontal and vertical field of view.
19524 @end table
19525
19526 @item barrel
19527 @item fb
19528 @item barrelsplit
19529 Facebook's 360 formats.
19530
19531 @item sg
19532 Stereographic format.
19533
19534 Format specific options:
19535 @table @option
19536 @item h_fov
19537 @item v_fov
19538 @item d_fov
19539 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19540
19541 If diagonal field of view is set it overrides horizontal and vertical field of view.
19542
19543 @item ih_fov
19544 @item iv_fov
19545 @item id_fov
19546 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19547
19548 If diagonal field of view is set it overrides horizontal and vertical field of view.
19549 @end table
19550
19551 @item mercator
19552 Mercator format.
19553
19554 @item ball
19555 Ball format, gives significant distortion toward the back.
19556
19557 @item hammer
19558 Hammer-Aitoff map projection format.
19559
19560 @item sinusoidal
19561 Sinusoidal map projection format.
19562
19563 @item fisheye
19564 Fisheye projection.
19565
19566 Format specific options:
19567 @table @option
19568 @item h_fov
19569 @item v_fov
19570 @item d_fov
19571 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19572
19573 If diagonal field of view is set it overrides horizontal and vertical field of view.
19574
19575 @item ih_fov
19576 @item iv_fov
19577 @item id_fov
19578 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19579
19580 If diagonal field of view is set it overrides horizontal and vertical field of view.
19581 @end table
19582
19583 @item pannini
19584 Pannini projection.
19585
19586 Format specific options:
19587 @table @option
19588 @item h_fov
19589 Set output pannini parameter.
19590
19591 @item ih_fov
19592 Set input pannini parameter.
19593 @end table
19594
19595 @item cylindrical
19596 Cylindrical projection.
19597
19598 Format specific options:
19599 @table @option
19600 @item h_fov
19601 @item v_fov
19602 @item d_fov
19603 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19604
19605 If diagonal field of view is set it overrides horizontal and vertical field of view.
19606
19607 @item ih_fov
19608 @item iv_fov
19609 @item id_fov
19610 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19611
19612 If diagonal field of view is set it overrides horizontal and vertical field of view.
19613 @end table
19614
19615 @item perspective
19616 Perspective projection. @i{(output only)}
19617
19618 Format specific options:
19619 @table @option
19620 @item v_fov
19621 Set perspective parameter.
19622 @end table
19623
19624 @item tetrahedron
19625 Tetrahedron projection.
19626
19627 @item tsp
19628 Truncated square pyramid projection.
19629
19630 @item he
19631 @item hequirect
19632 Half equirectangular projection.
19633
19634 @item equisolid
19635 Equisolid format.
19636
19637 Format specific options:
19638 @table @option
19639 @item h_fov
19640 @item v_fov
19641 @item d_fov
19642 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19643
19644 If diagonal field of view is set it overrides horizontal and vertical field of view.
19645
19646 @item ih_fov
19647 @item iv_fov
19648 @item id_fov
19649 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19650
19651 If diagonal field of view is set it overrides horizontal and vertical field of view.
19652 @end table
19653
19654 @item og
19655 Orthographic format.
19656
19657 Format specific options:
19658 @table @option
19659 @item h_fov
19660 @item v_fov
19661 @item d_fov
19662 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19663
19664 If diagonal field of view is set it overrides horizontal and vertical field of view.
19665
19666 @item ih_fov
19667 @item iv_fov
19668 @item id_fov
19669 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19670
19671 If diagonal field of view is set it overrides horizontal and vertical field of view.
19672 @end table
19673
19674 @item octahedron
19675 Octahedron projection.
19676 @end table
19677
19678 @item interp
19679 Set interpolation method.@*
19680 @i{Note: more complex interpolation methods require much more memory to run.}
19681
19682 Available methods:
19683
19684 @table @samp
19685 @item near
19686 @item nearest
19687 Nearest neighbour.
19688 @item line
19689 @item linear
19690 Bilinear interpolation.
19691 @item lagrange9
19692 Lagrange9 interpolation.
19693 @item cube
19694 @item cubic
19695 Bicubic interpolation.
19696 @item lanc
19697 @item lanczos
19698 Lanczos interpolation.
19699 @item sp16
19700 @item spline16
19701 Spline16 interpolation.
19702 @item gauss
19703 @item gaussian
19704 Gaussian interpolation.
19705 @item mitchell
19706 Mitchell interpolation.
19707 @end table
19708
19709 Default value is @b{@samp{line}}.
19710
19711 @item w
19712 @item h
19713 Set the output video resolution.
19714
19715 Default resolution depends on formats.
19716
19717 @item in_stereo
19718 @item out_stereo
19719 Set the input/output stereo format.
19720
19721 @table @samp
19722 @item 2d
19723 2D mono
19724 @item sbs
19725 Side by side
19726 @item tb
19727 Top bottom
19728 @end table
19729
19730 Default value is @b{@samp{2d}} for input and output format.
19731
19732 @item yaw
19733 @item pitch
19734 @item roll
19735 Set rotation for the output video. Values in degrees.
19736
19737 @item rorder
19738 Set rotation order for the output video. Choose one item for each position.
19739
19740 @table @samp
19741 @item y, Y
19742 yaw
19743 @item p, P
19744 pitch
19745 @item r, R
19746 roll
19747 @end table
19748
19749 Default value is @b{@samp{ypr}}.
19750
19751 @item h_flip
19752 @item v_flip
19753 @item d_flip
19754 Flip the output video horizontally(swaps left-right)/vertically(swaps up-down)/in-depth(swaps back-forward). Boolean values.
19755
19756 @item ih_flip
19757 @item iv_flip
19758 Set if input video is flipped horizontally/vertically. Boolean values.
19759
19760 @item in_trans
19761 Set if input video is transposed. Boolean value, by default disabled.
19762
19763 @item out_trans
19764 Set if output video needs to be transposed. Boolean value, by default disabled.
19765
19766 @item alpha_mask
19767 Build mask in alpha plane for all unmapped pixels by marking them fully transparent. Boolean value, by default disabled.
19768 @end table
19769
19770 @subsection Examples
19771
19772 @itemize
19773 @item
19774 Convert equirectangular video to cubemap with 3x2 layout and 1% padding using bicubic interpolation:
19775 @example
19776 ffmpeg -i input.mkv -vf v360=e:c3x2:cubic:out_pad=0.01 output.mkv
19777 @end example
19778 @item
19779 Extract back view of Equi-Angular Cubemap:
19780 @example
19781 ffmpeg -i input.mkv -vf v360=eac:flat:yaw=180 output.mkv
19782 @end example
19783 @item
19784 Convert transposed and horizontally flipped Equi-Angular Cubemap in side-by-side stereo format to equirectangular top-bottom stereo format:
19785 @example
19786 v360=eac:equirect:in_stereo=sbs:in_trans=1:ih_flip=1:out_stereo=tb
19787 @end example
19788 @end itemize
19789
19790 @subsection Commands
19791
19792 This filter supports subset of above options as @ref{commands}.
19793
19794 @section vaguedenoiser
19795
19796 Apply a wavelet based denoiser.
19797
19798 It transforms each frame from the video input into the wavelet domain,
19799 using Cohen-Daubechies-Feauveau 9/7. Then it applies some filtering to
19800 the obtained coefficients. It does an inverse wavelet transform after.
19801 Due to wavelet properties, it should give a nice smoothed result, and
19802 reduced noise, without blurring picture features.
19803
19804 This filter accepts the following options:
19805
19806 @table @option
19807 @item threshold
19808 The filtering strength. The higher, the more filtered the video will be.
19809 Hard thresholding can use a higher threshold than soft thresholding
19810 before the video looks overfiltered. Default value is 2.
19811
19812 @item method
19813 The filtering method the filter will use.
19814
19815 It accepts the following values:
19816 @table @samp
19817 @item hard
19818 All values under the threshold will be zeroed.
19819
19820 @item soft
19821 All values under the threshold will be zeroed. All values above will be
19822 reduced by the threshold.
19823
19824 @item garrote
19825 Scales or nullifies coefficients - intermediary between (more) soft and
19826 (less) hard thresholding.
19827 @end table
19828
19829 Default is garrote.
19830
19831 @item nsteps
19832 Number of times, the wavelet will decompose the picture. Picture can't
19833 be decomposed beyond a particular point (typically, 8 for a 640x480
19834 frame - as 2^9 = 512 > 480). Valid values are integers between 1 and 32. Default value is 6.
19835
19836 @item percent
19837 Partial of full denoising (limited coefficients shrinking), from 0 to 100. Default value is 85.
19838
19839 @item planes
19840 A list of the planes to process. By default all planes are processed.
19841
19842 @item type
19843 The threshold type the filter will use.
19844
19845 It accepts the following values:
19846 @table @samp
19847 @item universal
19848 Threshold used is same for all decompositions.
19849
19850 @item bayes
19851 Threshold used depends also on each decomposition coefficients.
19852 @end table
19853
19854 Default is universal.
19855 @end table
19856
19857 @section vectorscope
19858
19859 Display 2 color component values in the two dimensional graph (which is called
19860 a vectorscope).
19861
19862 This filter accepts the following options:
19863
19864 @table @option
19865 @item mode, m
19866 Set vectorscope mode.
19867
19868 It accepts the following values:
19869 @table @samp
19870 @item gray
19871 @item tint
19872 Gray values are displayed on graph, higher brightness means more pixels have
19873 same component color value on location in graph. This is the default mode.
19874
19875 @item color
19876 Gray values are displayed on graph. Surrounding pixels values which are not
19877 present in video frame are drawn in gradient of 2 color components which are
19878 set by option @code{x} and @code{y}. The 3rd color component is static.
19879
19880 @item color2
19881 Actual color components values present in video frame are displayed on graph.
19882
19883 @item color3
19884 Similar as color2 but higher frequency of same values @code{x} and @code{y}
19885 on graph increases value of another color component, which is luminance by
19886 default values of @code{x} and @code{y}.
19887
19888 @item color4
19889 Actual colors present in video frame are displayed on graph. If two different
19890 colors map to same position on graph then color with higher value of component
19891 not present in graph is picked.
19892
19893 @item color5
19894 Gray values are displayed on graph. Similar to @code{color} but with 3rd color
19895 component picked from radial gradient.
19896 @end table
19897
19898 @item x
19899 Set which color component will be represented on X-axis. Default is @code{1}.
19900
19901 @item y
19902 Set which color component will be represented on Y-axis. Default is @code{2}.
19903
19904 @item intensity, i
19905 Set intensity, used by modes: gray, color, color3 and color5 for increasing brightness
19906 of color component which represents frequency of (X, Y) location in graph.
19907
19908 @item envelope, e
19909 @table @samp
19910 @item none
19911 No envelope, this is default.
19912
19913 @item instant
19914 Instant envelope, even darkest single pixel will be clearly highlighted.
19915
19916 @item peak
19917 Hold maximum and minimum values presented in graph over time. This way you
19918 can still spot out of range values without constantly looking at vectorscope.
19919
19920 @item peak+instant
19921 Peak and instant envelope combined together.
19922 @end table
19923
19924 @item graticule, g
19925 Set what kind of graticule to draw.
19926 @table @samp
19927 @item none
19928 @item green
19929 @item color
19930 @item invert
19931 @end table
19932
19933 @item opacity, o
19934 Set graticule opacity.
19935
19936 @item flags, f
19937 Set graticule flags.
19938
19939 @table @samp
19940 @item white
19941 Draw graticule for white point.
19942
19943 @item black
19944 Draw graticule for black point.
19945
19946 @item name
19947 Draw color points short names.
19948 @end table
19949
19950 @item bgopacity, b
19951 Set background opacity.
19952
19953 @item lthreshold, l
19954 Set low threshold for color component not represented on X or Y axis.
19955 Values lower than this value will be ignored. Default is 0.
19956 Note this value is multiplied with actual max possible value one pixel component
19957 can have. So for 8-bit input and low threshold value of 0.1 actual threshold
19958 is 0.1 * 255 = 25.
19959
19960 @item hthreshold, h
19961 Set high threshold for color component not represented on X or Y axis.
19962 Values higher than this value will be ignored. Default is 1.
19963 Note this value is multiplied with actual max possible value one pixel component
19964 can have. So for 8-bit input and high threshold value of 0.9 actual threshold
19965 is 0.9 * 255 = 230.
19966
19967 @item colorspace, c
19968 Set what kind of colorspace to use when drawing graticule.
19969 @table @samp
19970 @item auto
19971 @item 601
19972 @item 709
19973 @end table
19974 Default is auto.
19975
19976 @item tint0, t0
19977 @item tint1, t1
19978 Set color tint for gray/tint vectorscope mode. By default both options are zero.
19979 This means no tint, and output will remain gray.
19980 @end table
19981
19982 @anchor{vidstabdetect}
19983 @section vidstabdetect
19984
19985 Analyze video stabilization/deshaking. Perform pass 1 of 2, see
19986 @ref{vidstabtransform} for pass 2.
19987
19988 This filter generates a file with relative translation and rotation
19989 transform information about subsequent frames, which is then used by
19990 the @ref{vidstabtransform} filter.
19991
19992 To enable compilation of this filter you need to configure FFmpeg with
19993 @code{--enable-libvidstab}.
19994
19995 This filter accepts the following options:
19996
19997 @table @option
19998 @item result
19999 Set the path to the file used to write the transforms information.
20000 Default value is @file{transforms.trf}.
20001
20002 @item shakiness
20003 Set how shaky the video is and how quick the camera is. It accepts an
20004 integer in the range 1-10, a value of 1 means little shakiness, a
20005 value of 10 means strong shakiness. Default value is 5.
20006
20007 @item accuracy
20008 Set the accuracy of the detection process. It must be a value in the
20009 range 1-15. A value of 1 means low accuracy, a value of 15 means high
20010 accuracy. Default value is 15.
20011
20012 @item stepsize
20013 Set stepsize of the search process. The region around minimum is
20014 scanned with 1 pixel resolution. Default value is 6.
20015
20016 @item mincontrast
20017 Set minimum contrast. Below this value a local measurement field is
20018 discarded. Must be a floating point value in the range 0-1. Default
20019 value is 0.3.
20020
20021 @item tripod
20022 Set reference frame number for tripod mode.
20023
20024 If enabled, the motion of the frames is compared to a reference frame
20025 in the filtered stream, identified by the specified number. The idea
20026 is to compensate all movements in a more-or-less static scene and keep
20027 the camera view absolutely still.
20028
20029 If set to 0, it is disabled. The frames are counted starting from 1.
20030
20031 @item show
20032 Show fields and transforms in the resulting frames. It accepts an
20033 integer in the range 0-2. Default value is 0, which disables any
20034 visualization.
20035 @end table
20036
20037 @subsection Examples
20038
20039 @itemize
20040 @item
20041 Use default values:
20042 @example
20043 vidstabdetect
20044 @end example
20045
20046 @item
20047 Analyze strongly shaky movie and put the results in file
20048 @file{mytransforms.trf}:
20049 @example
20050 vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
20051 @end example
20052
20053 @item
20054 Visualize the result of internal transformations in the resulting
20055 video:
20056 @example
20057 vidstabdetect=show=1
20058 @end example
20059
20060 @item
20061 Analyze a video with medium shakiness using @command{ffmpeg}:
20062 @example
20063 ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
20064 @end example
20065 @end itemize
20066
20067 @anchor{vidstabtransform}
20068 @section vidstabtransform
20069
20070 Video stabilization/deshaking: pass 2 of 2,
20071 see @ref{vidstabdetect} for pass 1.
20072
20073 Read a file with transform information for each frame and
20074 apply/compensate them. Together with the @ref{vidstabdetect}
20075 filter this can be used to deshake videos. See also
20076 @url{http://public.hronopik.de/vid.stab}. It is important to also use
20077 the @ref{unsharp} filter, see below.
20078
20079 To enable compilation of this filter you need to configure FFmpeg with
20080 @code{--enable-libvidstab}.
20081
20082 @subsection Options
20083
20084 @table @option
20085 @item input
20086 Set path to the file used to read the transforms. Default value is
20087 @file{transforms.trf}.
20088
20089 @item smoothing
20090 Set the number of frames (value*2 + 1) used for lowpass filtering the
20091 camera movements. Default value is 10.
20092
20093 For example a number of 10 means that 21 frames are used (10 in the
20094 past and 10 in the future) to smoothen the motion in the video. A
20095 larger value leads to a smoother video, but limits the acceleration of
20096 the camera (pan/tilt movements). 0 is a special case where a static
20097 camera is simulated.
20098
20099 @item optalgo
20100 Set the camera path optimization algorithm.
20101
20102 Accepted values are:
20103 @table @samp
20104 @item gauss
20105 gaussian kernel low-pass filter on camera motion (default)
20106 @item avg
20107 averaging on transformations
20108 @end table
20109
20110 @item maxshift
20111 Set maximal number of pixels to translate frames. Default value is -1,
20112 meaning no limit.
20113
20114 @item maxangle
20115 Set maximal angle in radians (degree*PI/180) to rotate frames. Default
20116 value is -1, meaning no limit.
20117
20118 @item crop
20119 Specify how to deal with borders that may be visible due to movement
20120 compensation.
20121
20122 Available values are:
20123 @table @samp
20124 @item keep
20125 keep image information from previous frame (default)
20126 @item black
20127 fill the border black
20128 @end table
20129
20130 @item invert
20131 Invert transforms if set to 1. Default value is 0.
20132
20133 @item relative
20134 Consider transforms as relative to previous frame if set to 1,
20135 absolute if set to 0. Default value is 0.
20136
20137 @item zoom
20138 Set percentage to zoom. A positive value will result in a zoom-in
20139 effect, a negative value in a zoom-out effect. Default value is 0 (no
20140 zoom).
20141
20142 @item optzoom
20143 Set optimal zooming to avoid borders.
20144
20145 Accepted values are:
20146 @table @samp
20147 @item 0
20148 disabled
20149 @item 1
20150 optimal static zoom value is determined (only very strong movements
20151 will lead to visible borders) (default)
20152 @item 2
20153 optimal adaptive zoom value is determined (no borders will be
20154 visible), see @option{zoomspeed}
20155 @end table
20156
20157 Note that the value given at zoom is added to the one calculated here.
20158
20159 @item zoomspeed
20160 Set percent to zoom maximally each frame (enabled when
20161 @option{optzoom} is set to 2). Range is from 0 to 5, default value is
20162 0.25.
20163
20164 @item interpol
20165 Specify type of interpolation.
20166
20167 Available values are:
20168 @table @samp
20169 @item no
20170 no interpolation
20171 @item linear
20172 linear only horizontal
20173 @item bilinear
20174 linear in both directions (default)
20175 @item bicubic
20176 cubic in both directions (slow)
20177 @end table
20178
20179 @item tripod
20180 Enable virtual tripod mode if set to 1, which is equivalent to
20181 @code{relative=0:smoothing=0}. Default value is 0.
20182
20183 Use also @code{tripod} option of @ref{vidstabdetect}.
20184
20185 @item debug
20186 Increase log verbosity if set to 1. Also the detected global motions
20187 are written to the temporary file @file{global_motions.trf}. Default
20188 value is 0.
20189 @end table
20190
20191 @subsection Examples
20192
20193 @itemize
20194 @item
20195 Use @command{ffmpeg} for a typical stabilization with default values:
20196 @example
20197 ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
20198 @end example
20199
20200 Note the use of the @ref{unsharp} filter which is always recommended.
20201
20202 @item
20203 Zoom in a bit more and load transform data from a given file:
20204 @example
20205 vidstabtransform=zoom=5:input="mytransforms.trf"
20206 @end example
20207
20208 @item
20209 Smoothen the video even more:
20210 @example
20211 vidstabtransform=smoothing=30
20212 @end example
20213 @end itemize
20214
20215 @section vflip
20216
20217 Flip the input video vertically.
20218
20219 For example, to vertically flip a video with @command{ffmpeg}:
20220 @example
20221 ffmpeg -i in.avi -vf "vflip" out.avi
20222 @end example
20223
20224 @section vfrdet
20225
20226 Detect variable frame rate video.
20227
20228 This filter tries to detect if the input is variable or constant frame rate.
20229
20230 At end it will output number of frames detected as having variable delta pts,
20231 and ones with constant delta pts.
20232 If there was frames with variable delta, than it will also show min, max and
20233 average delta encountered.
20234
20235 @section vibrance
20236
20237 Boost or alter saturation.
20238
20239 The filter accepts the following options:
20240 @table @option
20241 @item intensity
20242 Set strength of boost if positive value or strength of alter if negative value.
20243 Default is 0. Allowed range is from -2 to 2.
20244
20245 @item rbal
20246 Set the red balance. Default is 1. Allowed range is from -10 to 10.
20247
20248 @item gbal
20249 Set the green balance. Default is 1. Allowed range is from -10 to 10.
20250
20251 @item bbal
20252 Set the blue balance. Default is 1. Allowed range is from -10 to 10.
20253
20254 @item rlum
20255 Set the red luma coefficient.
20256
20257 @item glum
20258 Set the green luma coefficient.
20259
20260 @item blum
20261 Set the blue luma coefficient.
20262
20263 @item alternate
20264 If @code{intensity} is negative and this is set to 1, colors will change,
20265 otherwise colors will be less saturated, more towards gray.
20266 @end table
20267
20268 @subsection Commands
20269
20270 This filter supports the all above options as @ref{commands}.
20271
20272 @anchor{vignette}
20273 @section vignette
20274
20275 Make or reverse a natural vignetting effect.
20276
20277 The filter accepts the following options:
20278
20279 @table @option
20280 @item angle, a
20281 Set lens angle expression as a number of radians.
20282
20283 The value is clipped in the @code{[0,PI/2]} range.
20284
20285 Default value: @code{"PI/5"}
20286
20287 @item x0
20288 @item y0
20289 Set center coordinates expressions. Respectively @code{"w/2"} and @code{"h/2"}
20290 by default.
20291
20292 @item mode
20293 Set forward/backward mode.
20294
20295 Available modes are:
20296 @table @samp
20297 @item forward
20298 The larger the distance from the central point, the darker the image becomes.
20299
20300 @item backward
20301 The larger the distance from the central point, the brighter the image becomes.
20302 This can be used to reverse a vignette effect, though there is no automatic
20303 detection to extract the lens @option{angle} and other settings (yet). It can
20304 also be used to create a burning effect.
20305 @end table
20306
20307 Default value is @samp{forward}.
20308
20309 @item eval
20310 Set evaluation mode for the expressions (@option{angle}, @option{x0}, @option{y0}).
20311
20312 It accepts the following values:
20313 @table @samp
20314 @item init
20315 Evaluate expressions only once during the filter initialization.
20316
20317 @item frame
20318 Evaluate expressions for each incoming frame. This is way slower than the
20319 @samp{init} mode since it requires all the scalers to be re-computed, but it
20320 allows advanced dynamic expressions.
20321 @end table
20322
20323 Default value is @samp{init}.
20324
20325 @item dither
20326 Set dithering to reduce the circular banding effects. Default is @code{1}
20327 (enabled).
20328
20329 @item aspect
20330 Set vignette aspect. This setting allows one to adjust the shape of the vignette.
20331 Setting this value to the SAR of the input will make a rectangular vignetting
20332 following the dimensions of the video.
20333
20334 Default is @code{1/1}.
20335 @end table
20336
20337 @subsection Expressions
20338
20339 The @option{alpha}, @option{x0} and @option{y0} expressions can contain the
20340 following parameters.
20341
20342 @table @option
20343 @item w
20344 @item h
20345 input width and height
20346
20347 @item n
20348 the number of input frame, starting from 0
20349
20350 @item pts
20351 the PTS (Presentation TimeStamp) time of the filtered video frame, expressed in
20352 @var{TB} units, NAN if undefined
20353
20354 @item r
20355 frame rate of the input video, NAN if the input frame rate is unknown
20356
20357 @item t
20358 the PTS (Presentation TimeStamp) of the filtered video frame,
20359 expressed in seconds, NAN if undefined
20360
20361 @item tb
20362 time base of the input video
20363 @end table
20364
20365
20366 @subsection Examples
20367
20368 @itemize
20369 @item
20370 Apply simple strong vignetting effect:
20371 @example
20372 vignette=PI/4
20373 @end example
20374
20375 @item
20376 Make a flickering vignetting:
20377 @example
20378 vignette='PI/4+random(1)*PI/50':eval=frame
20379 @end example
20380
20381 @end itemize
20382
20383 @section vmafmotion
20384
20385 Obtain the average VMAF motion score of a video.
20386 It is one of the component metrics of VMAF.
20387
20388 The obtained average motion score is printed through the logging system.
20389
20390 The filter accepts the following options:
20391
20392 @table @option
20393 @item stats_file
20394 If specified, the filter will use the named file to save the motion score of
20395 each frame with respect to the previous frame.
20396 When filename equals "-" the data is sent to standard output.
20397 @end table
20398
20399 Example:
20400 @example
20401 ffmpeg -i ref.mpg -vf vmafmotion -f null -
20402 @end example
20403
20404 @section vstack
20405 Stack input videos vertically.
20406
20407 All streams must be of same pixel format and of same width.
20408
20409 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
20410 to create same output.
20411
20412 The filter accepts the following options:
20413
20414 @table @option
20415 @item inputs
20416 Set number of input streams. Default is 2.
20417
20418 @item shortest
20419 If set to 1, force the output to terminate when the shortest input
20420 terminates. Default value is 0.
20421 @end table
20422
20423 @section w3fdif
20424
20425 Deinterlace the input video ("w3fdif" stands for "Weston 3 Field
20426 Deinterlacing Filter").
20427
20428 Based on the process described by Martin Weston for BBC R&D, and
20429 implemented based on the de-interlace algorithm written by Jim
20430 Easterbrook for BBC R&D, the Weston 3 field deinterlacing filter
20431 uses filter coefficients calculated by BBC R&D.
20432
20433 This filter uses field-dominance information in frame to decide which
20434 of each pair of fields to place first in the output.
20435 If it gets it wrong use @ref{setfield} filter before @code{w3fdif} filter.
20436
20437 There are two sets of filter coefficients, so called "simple"
20438 and "complex". Which set of filter coefficients is used can
20439 be set by passing an optional parameter:
20440
20441 @table @option
20442 @item filter
20443 Set the interlacing filter coefficients. Accepts one of the following values:
20444
20445 @table @samp
20446 @item simple
20447 Simple filter coefficient set.
20448 @item complex
20449 More-complex filter coefficient set.
20450 @end table
20451 Default value is @samp{complex}.
20452
20453 @item deint
20454 Specify which frames to deinterlace. Accepts one of the following values:
20455
20456 @table @samp
20457 @item all
20458 Deinterlace all frames,
20459 @item interlaced
20460 Only deinterlace frames marked as interlaced.
20461 @end table
20462
20463 Default value is @samp{all}.
20464 @end table
20465
20466 @section waveform
20467 Video waveform monitor.
20468
20469 The waveform monitor plots color component intensity. By default luminance
20470 only. Each column of the waveform corresponds to a column of pixels in the
20471 source video.
20472
20473 It accepts the following options:
20474
20475 @table @option
20476 @item mode, m
20477 Can be either @code{row}, or @code{column}. Default is @code{column}.
20478 In row mode, the graph on the left side represents color component value 0 and
20479 the right side represents value = 255. In column mode, the top side represents
20480 color component value = 0 and bottom side represents value = 255.
20481
20482 @item intensity, i
20483 Set intensity. Smaller values are useful to find out how many values of the same
20484 luminance are distributed across input rows/columns.
20485 Default value is @code{0.04}. Allowed range is [0, 1].
20486
20487 @item mirror, r
20488 Set mirroring mode. @code{0} means unmirrored, @code{1} means mirrored.
20489 In mirrored mode, higher values will be represented on the left
20490 side for @code{row} mode and at the top for @code{column} mode. Default is
20491 @code{1} (mirrored).
20492
20493 @item display, d
20494 Set display mode.
20495 It accepts the following values:
20496 @table @samp
20497 @item overlay
20498 Presents information identical to that in the @code{parade}, except
20499 that the graphs representing color components are superimposed directly
20500 over one another.
20501
20502 This display mode makes it easier to spot relative differences or similarities
20503 in overlapping areas of the color components that are supposed to be identical,
20504 such as neutral whites, grays, or blacks.
20505
20506 @item stack
20507 Display separate graph for the color components side by side in
20508 @code{row} mode or one below the other in @code{column} mode.
20509
20510 @item parade
20511 Display separate graph for the color components side by side in
20512 @code{column} mode or one below the other in @code{row} mode.
20513
20514 Using this display mode makes it easy to spot color casts in the highlights
20515 and shadows of an image, by comparing the contours of the top and the bottom
20516 graphs of each waveform. Since whites, grays, and blacks are characterized
20517 by exactly equal amounts of red, green, and blue, neutral areas of the picture
20518 should display three waveforms of roughly equal width/height. If not, the
20519 correction is easy to perform by making level adjustments the three waveforms.
20520 @end table
20521 Default is @code{stack}.
20522
20523 @item components, c
20524 Set which color components to display. Default is 1, which means only luminance
20525 or red color component if input is in RGB colorspace. If is set for example to
20526 7 it will display all 3 (if) available color components.
20527
20528 @item envelope, e
20529 @table @samp
20530 @item none
20531 No envelope, this is default.
20532
20533 @item instant
20534 Instant envelope, minimum and maximum values presented in graph will be easily
20535 visible even with small @code{step} value.
20536
20537 @item peak
20538 Hold minimum and maximum values presented in graph across time. This way you
20539 can still spot out of range values without constantly looking at waveforms.
20540
20541 @item peak+instant
20542 Peak and instant envelope combined together.
20543 @end table
20544
20545 @item filter, f
20546 @table @samp
20547 @item lowpass
20548 No filtering, this is default.
20549
20550 @item flat
20551 Luma and chroma combined together.
20552
20553 @item aflat
20554 Similar as above, but shows difference between blue and red chroma.
20555
20556 @item xflat
20557 Similar as above, but use different colors.
20558
20559 @item yflat
20560 Similar as above, but again with different colors.
20561
20562 @item chroma
20563 Displays only chroma.
20564
20565 @item color
20566 Displays actual color value on waveform.
20567
20568 @item acolor
20569 Similar as above, but with luma showing frequency of chroma values.
20570 @end table
20571
20572 @item graticule, g
20573 Set which graticule to display.
20574
20575 @table @samp
20576 @item none
20577 Do not display graticule.
20578
20579 @item green
20580 Display green graticule showing legal broadcast ranges.
20581
20582 @item orange
20583 Display orange graticule showing legal broadcast ranges.
20584
20585 @item invert
20586 Display invert graticule showing legal broadcast ranges.
20587 @end table
20588
20589 @item opacity, o
20590 Set graticule opacity.
20591
20592 @item flags, fl
20593 Set graticule flags.
20594
20595 @table @samp
20596 @item numbers
20597 Draw numbers above lines. By default enabled.
20598
20599 @item dots
20600 Draw dots instead of lines.
20601 @end table
20602
20603 @item scale, s
20604 Set scale used for displaying graticule.
20605
20606 @table @samp
20607 @item digital
20608 @item millivolts
20609 @item ire
20610 @end table
20611 Default is digital.
20612
20613 @item bgopacity, b
20614 Set background opacity.
20615
20616 @item tint0, t0
20617 @item tint1, t1
20618 Set tint for output.
20619 Only used with lowpass filter and when display is not overlay and input
20620 pixel formats are not RGB.
20621 @end table
20622
20623 @section weave, doubleweave
20624
20625 The @code{weave} takes a field-based video input and join
20626 each two sequential fields into single frame, producing a new double
20627 height clip with half the frame rate and half the frame count.
20628
20629 The @code{doubleweave} works same as @code{weave} but without
20630 halving frame rate and frame count.
20631
20632 It accepts the following option:
20633
20634 @table @option
20635 @item first_field
20636 Set first field. Available values are:
20637
20638 @table @samp
20639 @item top, t
20640 Set the frame as top-field-first.
20641
20642 @item bottom, b
20643 Set the frame as bottom-field-first.
20644 @end table
20645 @end table
20646
20647 @subsection Examples
20648
20649 @itemize
20650 @item
20651 Interlace video using @ref{select} and @ref{separatefields} filter:
20652 @example
20653 separatefields,select=eq(mod(n,4),0)+eq(mod(n,4),3),weave
20654 @end example
20655 @end itemize
20656
20657 @section xbr
20658 Apply the xBR high-quality magnification filter which is designed for pixel
20659 art. It follows a set of edge-detection rules, see
20660 @url{https://forums.libretro.com/t/xbr-algorithm-tutorial/123}.
20661
20662 It accepts the following option:
20663
20664 @table @option
20665 @item n
20666 Set the scaling dimension: @code{2} for @code{2xBR}, @code{3} for
20667 @code{3xBR} and @code{4} for @code{4xBR}.
20668 Default is @code{3}.
20669 @end table
20670
20671 @section xfade
20672
20673 Apply cross fade from one input video stream to another input video stream.
20674 The cross fade is applied for specified duration.
20675
20676 The filter accepts the following options:
20677
20678 @table @option
20679 @item transition
20680 Set one of available transition effects:
20681
20682 @table @samp
20683 @item custom
20684 @item fade
20685 @item wipeleft
20686 @item wiperight
20687 @item wipeup
20688 @item wipedown
20689 @item slideleft
20690 @item slideright
20691 @item slideup
20692 @item slidedown
20693 @item circlecrop
20694 @item rectcrop
20695 @item distance
20696 @item fadeblack
20697 @item fadewhite
20698 @item radial
20699 @item smoothleft
20700 @item smoothright
20701 @item smoothup
20702 @item smoothdown
20703 @item circleopen
20704 @item circleclose
20705 @item vertopen
20706 @item vertclose
20707 @item horzopen
20708 @item horzclose
20709 @item dissolve
20710 @item pixelize
20711 @item diagtl
20712 @item diagtr
20713 @item diagbl
20714 @item diagbr
20715 @item hlslice
20716 @item hrslice
20717 @item vuslice
20718 @item vdslice
20719 @item hblur
20720 @item fadegrays
20721 @item wipetl
20722 @item wipetr
20723 @item wipebl
20724 @item wipebr
20725 @item squeezeh
20726 @item squeezev
20727 @end table
20728 Default transition effect is fade.
20729
20730 @item duration
20731 Set cross fade duration in seconds.
20732 Default duration is 1 second.
20733
20734 @item offset
20735 Set cross fade start relative to first input stream in seconds.
20736 Default offset is 0.
20737
20738 @item expr
20739 Set expression for custom transition effect.
20740
20741 The expressions can use the following variables and functions:
20742
20743 @table @option
20744 @item X
20745 @item Y
20746 The coordinates of the current sample.
20747
20748 @item W
20749 @item H
20750 The width and height of the image.
20751
20752 @item P
20753 Progress of transition effect.
20754
20755 @item PLANE
20756 Currently processed plane.
20757
20758 @item A
20759 Return value of first input at current location and plane.
20760
20761 @item B
20762 Return value of second input at current location and plane.
20763
20764 @item a0(x, y)
20765 @item a1(x, y)
20766 @item a2(x, y)
20767 @item a3(x, y)
20768 Return the value of the pixel at location (@var{x},@var{y}) of the
20769 first/second/third/fourth component of first input.
20770
20771 @item b0(x, y)
20772 @item b1(x, y)
20773 @item b2(x, y)
20774 @item b3(x, y)
20775 Return the value of the pixel at location (@var{x},@var{y}) of the
20776 first/second/third/fourth component of second input.
20777 @end table
20778 @end table
20779
20780 @subsection Examples
20781
20782 @itemize
20783 @item
20784 Cross fade from one input video to another input video, with fade transition and duration of transition
20785 of 2 seconds starting at offset of 5 seconds:
20786 @example
20787 ffmpeg -i first.mp4 -i second.mp4 -filter_complex xfade=transition=fade:duration=2:offset=5 output.mp4
20788 @end example
20789 @end itemize
20790
20791 @section xmedian
20792 Pick median pixels from several input videos.
20793
20794 The filter accepts the following options:
20795
20796 @table @option
20797 @item inputs
20798 Set number of inputs.
20799 Default is 3. Allowed range is from 3 to 255.
20800 If number of inputs is even number, than result will be mean value between two median values.
20801
20802 @item planes
20803 Set which planes to filter. Default value is @code{15}, by which all planes are processed.
20804
20805 @item percentile
20806 Set median percentile. Default value is @code{0.5}.
20807 Default value of @code{0.5} will pick always median values, while @code{0} will pick
20808 minimum values, and @code{1} maximum values.
20809 @end table
20810
20811 @section xstack
20812 Stack video inputs into custom layout.
20813
20814 All streams must be of same pixel format.
20815
20816 The filter accepts the following options:
20817
20818 @table @option
20819 @item inputs
20820 Set number of input streams. Default is 2.
20821
20822 @item layout
20823 Specify layout of inputs.
20824 This option requires the desired layout configuration to be explicitly set by the user.
20825 This sets position of each video input in output. Each input
20826 is separated by '|'.
20827 The first number represents the column, and the second number represents the row.
20828 Numbers start at 0 and are separated by '_'. Optionally one can use wX and hX,
20829 where X is video input from which to take width or height.
20830 Multiple values can be used when separated by '+'. In such
20831 case values are summed together.
20832
20833 Note that if inputs are of different sizes gaps may appear, as not all of
20834 the output video frame will be filled. Similarly, videos can overlap each
20835 other if their position doesn't leave enough space for the full frame of
20836 adjoining videos.
20837
20838 For 2 inputs, a default layout of @code{0_0|w0_0} is set. In all other cases,
20839 a layout must be set by the user.
20840
20841 @item shortest
20842 If set to 1, force the output to terminate when the shortest input
20843 terminates. Default value is 0.
20844
20845 @item fill
20846 If set to valid color, all unused pixels will be filled with that color.
20847 By default fill is set to none, so it is disabled.
20848 @end table
20849
20850 @subsection Examples
20851
20852 @itemize
20853 @item
20854 Display 4 inputs into 2x2 grid.
20855
20856 Layout:
20857 @example
20858 input1(0, 0)  | input3(w0, 0)
20859 input2(0, h0) | input4(w0, h0)
20860 @end example
20861
20862 @example
20863 xstack=inputs=4:layout=0_0|0_h0|w0_0|w0_h0
20864 @end example
20865
20866 Note that if inputs are of different sizes, gaps or overlaps may occur.
20867
20868 @item
20869 Display 4 inputs into 1x4 grid.
20870
20871 Layout:
20872 @example
20873 input1(0, 0)
20874 input2(0, h0)
20875 input3(0, h0+h1)
20876 input4(0, h0+h1+h2)
20877 @end example
20878
20879 @example
20880 xstack=inputs=4:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2
20881 @end example
20882
20883 Note that if inputs are of different widths, unused space will appear.
20884
20885 @item
20886 Display 9 inputs into 3x3 grid.
20887
20888 Layout:
20889 @example
20890 input1(0, 0)       | input4(w0, 0)      | input7(w0+w3, 0)
20891 input2(0, h0)      | input5(w0, h0)     | input8(w0+w3, h0)
20892 input3(0, h0+h1)   | input6(w0, h0+h1)  | input9(w0+w3, h0+h1)
20893 @end example
20894
20895 @example
20896 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
20897 @end example
20898
20899 Note that if inputs are of different sizes, gaps or overlaps may occur.
20900
20901 @item
20902 Display 16 inputs into 4x4 grid.
20903
20904 Layout:
20905 @example
20906 input1(0, 0)       | input5(w0, 0)       | input9 (w0+w4, 0)       | input13(w0+w4+w8, 0)
20907 input2(0, h0)      | input6(w0, h0)      | input10(w0+w4, h0)      | input14(w0+w4+w8, h0)
20908 input3(0, h0+h1)   | input7(w0, h0+h1)   | input11(w0+w4, h0+h1)   | input15(w0+w4+w8, h0+h1)
20909 input4(0, h0+h1+h2)| input8(w0, h0+h1+h2)| input12(w0+w4, h0+h1+h2)| input16(w0+w4+w8, h0+h1+h2)
20910 @end example
20911
20912 @example
20913 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|
20914 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
20915 @end example
20916
20917 Note that if inputs are of different sizes, gaps or overlaps may occur.
20918
20919 @end itemize
20920
20921 @anchor{yadif}
20922 @section yadif
20923
20924 Deinterlace the input video ("yadif" means "yet another deinterlacing
20925 filter").
20926
20927 It accepts the following parameters:
20928
20929
20930 @table @option
20931
20932 @item mode
20933 The interlacing mode to adopt. It accepts one of the following values:
20934
20935 @table @option
20936 @item 0, send_frame
20937 Output one frame for each frame.
20938 @item 1, send_field
20939 Output one frame for each field.
20940 @item 2, send_frame_nospatial
20941 Like @code{send_frame}, but it skips the spatial interlacing check.
20942 @item 3, send_field_nospatial
20943 Like @code{send_field}, but it skips the spatial interlacing check.
20944 @end table
20945
20946 The default value is @code{send_frame}.
20947
20948 @item parity
20949 The picture field parity assumed for the input interlaced video. It accepts one
20950 of the following values:
20951
20952 @table @option
20953 @item 0, tff
20954 Assume the top field is first.
20955 @item 1, bff
20956 Assume the bottom field is first.
20957 @item -1, auto
20958 Enable automatic detection of field parity.
20959 @end table
20960
20961 The default value is @code{auto}.
20962 If the interlacing is unknown or the decoder does not export this information,
20963 top field first will be assumed.
20964
20965 @item deint
20966 Specify which frames to deinterlace. Accepts one of the following
20967 values:
20968
20969 @table @option
20970 @item 0, all
20971 Deinterlace all frames.
20972 @item 1, interlaced
20973 Only deinterlace frames marked as interlaced.
20974 @end table
20975
20976 The default value is @code{all}.
20977 @end table
20978
20979 @section yadif_cuda
20980
20981 Deinterlace the input video using the @ref{yadif} algorithm, but implemented
20982 in CUDA so that it can work as part of a GPU accelerated pipeline with nvdec
20983 and/or nvenc.
20984
20985 It accepts the following parameters:
20986
20987
20988 @table @option
20989
20990 @item mode
20991 The interlacing mode to adopt. It accepts one of the following values:
20992
20993 @table @option
20994 @item 0, send_frame
20995 Output one frame for each frame.
20996 @item 1, send_field
20997 Output one frame for each field.
20998 @item 2, send_frame_nospatial
20999 Like @code{send_frame}, but it skips the spatial interlacing check.
21000 @item 3, send_field_nospatial
21001 Like @code{send_field}, but it skips the spatial interlacing check.
21002 @end table
21003
21004 The default value is @code{send_frame}.
21005
21006 @item parity
21007 The picture field parity assumed for the input interlaced video. It accepts one
21008 of the following values:
21009
21010 @table @option
21011 @item 0, tff
21012 Assume the top field is first.
21013 @item 1, bff
21014 Assume the bottom field is first.
21015 @item -1, auto
21016 Enable automatic detection of field parity.
21017 @end table
21018
21019 The default value is @code{auto}.
21020 If the interlacing is unknown or the decoder does not export this information,
21021 top field first will be assumed.
21022
21023 @item deint
21024 Specify which frames to deinterlace. Accepts one of the following
21025 values:
21026
21027 @table @option
21028 @item 0, all
21029 Deinterlace all frames.
21030 @item 1, interlaced
21031 Only deinterlace frames marked as interlaced.
21032 @end table
21033
21034 The default value is @code{all}.
21035 @end table
21036
21037 @section yaepblur
21038
21039 Apply blur filter while preserving edges ("yaepblur" means "yet another edge preserving blur filter").
21040 The algorithm is described in
21041 "J. S. Lee, Digital image enhancement and noise filtering by use of local statistics, IEEE Trans. Pattern Anal. Mach. Intell. PAMI-2, 1980."
21042
21043 It accepts the following parameters:
21044
21045 @table @option
21046 @item radius, r
21047 Set the window radius. Default value is 3.
21048
21049 @item planes, p
21050 Set which planes to filter. Default is only the first plane.
21051
21052 @item sigma, s
21053 Set blur strength. Default value is 128.
21054 @end table
21055
21056 @subsection Commands
21057 This filter supports same @ref{commands} as options.
21058
21059 @section zoompan
21060
21061 Apply Zoom & Pan effect.
21062
21063 This filter accepts the following options:
21064
21065 @table @option
21066 @item zoom, z
21067 Set the zoom expression. Range is 1-10. Default is 1.
21068
21069 @item x
21070 @item y
21071 Set the x and y expression. Default is 0.
21072
21073 @item d
21074 Set the duration expression in number of frames.
21075 This sets for how many number of frames effect will last for
21076 single input image.
21077
21078 @item s
21079 Set the output image size, default is 'hd720'.
21080
21081 @item fps
21082 Set the output frame rate, default is '25'.
21083 @end table
21084
21085 Each expression can contain the following constants:
21086
21087 @table @option
21088 @item in_w, iw
21089 Input width.
21090
21091 @item in_h, ih
21092 Input height.
21093
21094 @item out_w, ow
21095 Output width.
21096
21097 @item out_h, oh
21098 Output height.
21099
21100 @item in
21101 Input frame count.
21102
21103 @item on
21104 Output frame count.
21105
21106 @item in_time, it
21107 The input timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
21108
21109 @item out_time, time, ot
21110 The output timestamp expressed in seconds.
21111
21112 @item x
21113 @item y
21114 Last calculated 'x' and 'y' position from 'x' and 'y' expression
21115 for current input frame.
21116
21117 @item px
21118 @item py
21119 'x' and 'y' of last output frame of previous input frame or 0 when there was
21120 not yet such frame (first input frame).
21121
21122 @item zoom
21123 Last calculated zoom from 'z' expression for current input frame.
21124
21125 @item pzoom
21126 Last calculated zoom of last output frame of previous input frame.
21127
21128 @item duration
21129 Number of output frames for current input frame. Calculated from 'd' expression
21130 for each input frame.
21131
21132 @item pduration
21133 number of output frames created for previous input frame
21134
21135 @item a
21136 Rational number: input width / input height
21137
21138 @item sar
21139 sample aspect ratio
21140
21141 @item dar
21142 display aspect ratio
21143
21144 @end table
21145
21146 @subsection Examples
21147
21148 @itemize
21149 @item
21150 Zoom in up to 1.5x and pan at same time to some spot near center of picture:
21151 @example
21152 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
21153 @end example
21154
21155 @item
21156 Zoom in up to 1.5x and pan always at center of picture:
21157 @example
21158 zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
21159 @end example
21160
21161 @item
21162 Same as above but without pausing:
21163 @example
21164 zoompan=z='min(max(zoom,pzoom)+0.0015,1.5)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
21165 @end example
21166
21167 @item
21168 Zoom in 2x into center of picture only for the first second of the input video:
21169 @example
21170 zoompan=z='if(between(in_time,0,1),2,1)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
21171 @end example
21172
21173 @end itemize
21174
21175 @anchor{zscale}
21176 @section zscale
21177 Scale (resize) the input video, using the z.lib library:
21178 @url{https://github.com/sekrit-twc/zimg}. To enable compilation of this
21179 filter, you need to configure FFmpeg with @code{--enable-libzimg}.
21180
21181 The zscale filter forces the output display aspect ratio to be the same
21182 as the input, by changing the output sample aspect ratio.
21183
21184 If the input image format is different from the format requested by
21185 the next filter, the zscale filter will convert the input to the
21186 requested format.
21187
21188 @subsection Options
21189 The filter accepts the following options.
21190
21191 @table @option
21192 @item width, w
21193 @item height, h
21194 Set the output video dimension expression. Default value is the input
21195 dimension.
21196
21197 If the @var{width} or @var{w} value is 0, the input width is used for
21198 the output. If the @var{height} or @var{h} value is 0, the input height
21199 is used for the output.
21200
21201 If one and only one of the values is -n with n >= 1, the zscale filter
21202 will use a value that maintains the aspect ratio of the input image,
21203 calculated from the other specified dimension. After that it will,
21204 however, make sure that the calculated dimension is divisible by n and
21205 adjust the value if necessary.
21206
21207 If both values are -n with n >= 1, the behavior will be identical to
21208 both values being set to 0 as previously detailed.
21209
21210 See below for the list of accepted constants for use in the dimension
21211 expression.
21212
21213 @item size, s
21214 Set the video size. For the syntax of this option, check the
21215 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21216
21217 @item dither, d
21218 Set the dither type.
21219
21220 Possible values are:
21221 @table @var
21222 @item none
21223 @item ordered
21224 @item random
21225 @item error_diffusion
21226 @end table
21227
21228 Default is none.
21229
21230 @item filter, f
21231 Set the resize filter type.
21232
21233 Possible values are:
21234 @table @var
21235 @item point
21236 @item bilinear
21237 @item bicubic
21238 @item spline16
21239 @item spline36
21240 @item lanczos
21241 @end table
21242
21243 Default is bilinear.
21244
21245 @item range, r
21246 Set the color range.
21247
21248 Possible values are:
21249 @table @var
21250 @item input
21251 @item limited
21252 @item full
21253 @end table
21254
21255 Default is same as input.
21256
21257 @item primaries, p
21258 Set the color primaries.
21259
21260 Possible values are:
21261 @table @var
21262 @item input
21263 @item 709
21264 @item unspecified
21265 @item 170m
21266 @item 240m
21267 @item 2020
21268 @end table
21269
21270 Default is same as input.
21271
21272 @item transfer, t
21273 Set the transfer characteristics.
21274
21275 Possible values are:
21276 @table @var
21277 @item input
21278 @item 709
21279 @item unspecified
21280 @item 601
21281 @item linear
21282 @item 2020_10
21283 @item 2020_12
21284 @item smpte2084
21285 @item iec61966-2-1
21286 @item arib-std-b67
21287 @end table
21288
21289 Default is same as input.
21290
21291 @item matrix, m
21292 Set the colorspace matrix.
21293
21294 Possible value are:
21295 @table @var
21296 @item input
21297 @item 709
21298 @item unspecified
21299 @item 470bg
21300 @item 170m
21301 @item 2020_ncl
21302 @item 2020_cl
21303 @end table
21304
21305 Default is same as input.
21306
21307 @item rangein, rin
21308 Set the input color range.
21309
21310 Possible values are:
21311 @table @var
21312 @item input
21313 @item limited
21314 @item full
21315 @end table
21316
21317 Default is same as input.
21318
21319 @item primariesin, pin
21320 Set the input color primaries.
21321
21322 Possible values are:
21323 @table @var
21324 @item input
21325 @item 709
21326 @item unspecified
21327 @item 170m
21328 @item 240m
21329 @item 2020
21330 @end table
21331
21332 Default is same as input.
21333
21334 @item transferin, tin
21335 Set the input transfer characteristics.
21336
21337 Possible values are:
21338 @table @var
21339 @item input
21340 @item 709
21341 @item unspecified
21342 @item 601
21343 @item linear
21344 @item 2020_10
21345 @item 2020_12
21346 @end table
21347
21348 Default is same as input.
21349
21350 @item matrixin, min
21351 Set the input colorspace matrix.
21352
21353 Possible value are:
21354 @table @var
21355 @item input
21356 @item 709
21357 @item unspecified
21358 @item 470bg
21359 @item 170m
21360 @item 2020_ncl
21361 @item 2020_cl
21362 @end table
21363
21364 @item chromal, c
21365 Set the output chroma location.
21366
21367 Possible values are:
21368 @table @var
21369 @item input
21370 @item left
21371 @item center
21372 @item topleft
21373 @item top
21374 @item bottomleft
21375 @item bottom
21376 @end table
21377
21378 @item chromalin, cin
21379 Set the input chroma location.
21380
21381 Possible values are:
21382 @table @var
21383 @item input
21384 @item left
21385 @item center
21386 @item topleft
21387 @item top
21388 @item bottomleft
21389 @item bottom
21390 @end table
21391
21392 @item npl
21393 Set the nominal peak luminance.
21394 @end table
21395
21396 The values of the @option{w} and @option{h} options are expressions
21397 containing the following constants:
21398
21399 @table @var
21400 @item in_w
21401 @item in_h
21402 The input width and height
21403
21404 @item iw
21405 @item ih
21406 These are the same as @var{in_w} and @var{in_h}.
21407
21408 @item out_w
21409 @item out_h
21410 The output (scaled) width and height
21411
21412 @item ow
21413 @item oh
21414 These are the same as @var{out_w} and @var{out_h}
21415
21416 @item a
21417 The same as @var{iw} / @var{ih}
21418
21419 @item sar
21420 input sample aspect ratio
21421
21422 @item dar
21423 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
21424
21425 @item hsub
21426 @item vsub
21427 horizontal and vertical input chroma subsample values. For example for the
21428 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
21429
21430 @item ohsub
21431 @item ovsub
21432 horizontal and vertical output chroma subsample values. For example for the
21433 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
21434 @end table
21435
21436 @subsection Commands
21437
21438 This filter supports the following commands:
21439 @table @option
21440 @item width, w
21441 @item height, h
21442 Set the output video dimension expression.
21443 The command accepts the same syntax of the corresponding option.
21444
21445 If the specified expression is not valid, it is kept at its current
21446 value.
21447 @end table
21448
21449 @c man end VIDEO FILTERS
21450
21451 @chapter OpenCL Video Filters
21452 @c man begin OPENCL VIDEO FILTERS
21453
21454 Below is a description of the currently available OpenCL video filters.
21455
21456 To enable compilation of these filters you need to configure FFmpeg with
21457 @code{--enable-opencl}.
21458
21459 Running OpenCL filters requires you to initialize a hardware device and to pass that device to all filters in any filter graph.
21460 @table @option
21461
21462 @item -init_hw_device opencl[=@var{name}][:@var{device}[,@var{key=value}...]]
21463 Initialise a new hardware device of type @var{opencl} called @var{name}, using the
21464 given device parameters.
21465
21466 @item -filter_hw_device @var{name}
21467 Pass the hardware device called @var{name} to all filters in any filter graph.
21468
21469 @end table
21470
21471 For more detailed information see @url{https://www.ffmpeg.org/ffmpeg.html#Advanced-Video-options}
21472
21473 @itemize
21474 @item
21475 Example of choosing the first device on the second platform and running avgblur_opencl filter with default parameters on it.
21476 @example
21477 -init_hw_device opencl=gpu:1.0 -filter_hw_device gpu -i INPUT -vf "hwupload, avgblur_opencl, hwdownload" OUTPUT
21478 @end example
21479 @end itemize
21480
21481 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.
21482
21483 @section avgblur_opencl
21484
21485 Apply average blur filter.
21486
21487 The filter accepts the following options:
21488
21489 @table @option
21490 @item sizeX
21491 Set horizontal radius size.
21492 Range is @code{[1, 1024]} and default value is @code{1}.
21493
21494 @item planes
21495 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
21496
21497 @item sizeY
21498 Set vertical radius size. Range is @code{[1, 1024]} and default value is @code{0}. If zero, @code{sizeX} value will be used.
21499 @end table
21500
21501 @subsection Example
21502
21503 @itemize
21504 @item
21505 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.
21506 @example
21507 -i INPUT -vf "hwupload, avgblur_opencl=3, hwdownload" OUTPUT
21508 @end example
21509 @end itemize
21510
21511 @section boxblur_opencl
21512
21513 Apply a boxblur algorithm to the input video.
21514
21515 It accepts the following parameters:
21516
21517 @table @option
21518
21519 @item luma_radius, lr
21520 @item luma_power, lp
21521 @item chroma_radius, cr
21522 @item chroma_power, cp
21523 @item alpha_radius, ar
21524 @item alpha_power, ap
21525
21526 @end table
21527
21528 A description of the accepted options follows.
21529
21530 @table @option
21531 @item luma_radius, lr
21532 @item chroma_radius, cr
21533 @item alpha_radius, ar
21534 Set an expression for the box radius in pixels used for blurring the
21535 corresponding input plane.
21536
21537 The radius value must be a non-negative number, and must not be
21538 greater than the value of the expression @code{min(w,h)/2} for the
21539 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
21540 planes.
21541
21542 Default value for @option{luma_radius} is "2". If not specified,
21543 @option{chroma_radius} and @option{alpha_radius} default to the
21544 corresponding value set for @option{luma_radius}.
21545
21546 The expressions can contain the following constants:
21547 @table @option
21548 @item w
21549 @item h
21550 The input width and height in pixels.
21551
21552 @item cw
21553 @item ch
21554 The input chroma image width and height in pixels.
21555
21556 @item hsub
21557 @item vsub
21558 The horizontal and vertical chroma subsample values. For example, for the
21559 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
21560 @end table
21561
21562 @item luma_power, lp
21563 @item chroma_power, cp
21564 @item alpha_power, ap
21565 Specify how many times the boxblur filter is applied to the
21566 corresponding plane.
21567
21568 Default value for @option{luma_power} is 2. If not specified,
21569 @option{chroma_power} and @option{alpha_power} default to the
21570 corresponding value set for @option{luma_power}.
21571
21572 A value of 0 will disable the effect.
21573 @end table
21574
21575 @subsection Examples
21576
21577 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.
21578
21579 @itemize
21580 @item
21581 Apply a boxblur filter with the luma, chroma, and alpha radius
21582 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.
21583 @example
21584 -i INPUT -vf "hwupload, boxblur_opencl=luma_radius=2:luma_power=3, hwdownload" OUTPUT
21585 -i INPUT -vf "hwupload, boxblur_opencl=2:3, hwdownload" OUTPUT
21586 @end example
21587
21588 @item
21589 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.
21590
21591 For the luma plane, a 2x2 box radius will be run once.
21592
21593 For the chroma plane, a 4x4 box radius will be run 5 times.
21594
21595 For the alpha plane, a 3x3 box radius will be run 7 times.
21596 @example
21597 -i INPUT -vf "hwupload, boxblur_opencl=2:1:4:5:3:7, hwdownload" OUTPUT
21598 @end example
21599 @end itemize
21600
21601 @section colorkey_opencl
21602 RGB colorspace color keying.
21603
21604 The filter accepts the following options:
21605
21606 @table @option
21607 @item color
21608 The color which will be replaced with transparency.
21609
21610 @item similarity
21611 Similarity percentage with the key color.
21612
21613 0.01 matches only the exact key color, while 1.0 matches everything.
21614
21615 @item blend
21616 Blend percentage.
21617
21618 0.0 makes pixels either fully transparent, or not transparent at all.
21619
21620 Higher values result in semi-transparent pixels, with a higher transparency
21621 the more similar the pixels color is to the key color.
21622 @end table
21623
21624 @subsection Examples
21625
21626 @itemize
21627 @item
21628 Make every semi-green pixel in the input transparent with some slight blending:
21629 @example
21630 -i INPUT -vf "hwupload, colorkey_opencl=green:0.3:0.1, hwdownload" OUTPUT
21631 @end example
21632 @end itemize
21633
21634 @section convolution_opencl
21635
21636 Apply convolution of 3x3, 5x5, 7x7 matrix.
21637
21638 The filter accepts the following options:
21639
21640 @table @option
21641 @item 0m
21642 @item 1m
21643 @item 2m
21644 @item 3m
21645 Set matrix for each plane.
21646 Matrix is sequence of 9, 25 or 49 signed numbers.
21647 Default value for each plane is @code{0 0 0 0 1 0 0 0 0}.
21648
21649 @item 0rdiv
21650 @item 1rdiv
21651 @item 2rdiv
21652 @item 3rdiv
21653 Set multiplier for calculated value for each plane.
21654 If unset or 0, it will be sum of all matrix elements.
21655 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{1.0}.
21656
21657 @item 0bias
21658 @item 1bias
21659 @item 2bias
21660 @item 3bias
21661 Set bias for each plane. This value is added to the result of the multiplication.
21662 Useful for making the overall image brighter or darker.
21663 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{0.0}.
21664
21665 @end table
21666
21667 @subsection Examples
21668
21669 @itemize
21670 @item
21671 Apply sharpen:
21672 @example
21673 -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
21674 @end example
21675
21676 @item
21677 Apply blur:
21678 @example
21679 -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
21680 @end example
21681
21682 @item
21683 Apply edge enhance:
21684 @example
21685 -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
21686 @end example
21687
21688 @item
21689 Apply edge detect:
21690 @example
21691 -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
21692 @end example
21693
21694 @item
21695 Apply laplacian edge detector which includes diagonals:
21696 @example
21697 -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
21698 @end example
21699
21700 @item
21701 Apply emboss:
21702 @example
21703 -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
21704 @end example
21705 @end itemize
21706
21707 @section erosion_opencl
21708
21709 Apply erosion effect to the video.
21710
21711 This filter replaces the pixel by the local(3x3) minimum.
21712
21713 It accepts the following options:
21714
21715 @table @option
21716 @item threshold0
21717 @item threshold1
21718 @item threshold2
21719 @item threshold3
21720 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
21721 If @code{0}, plane will remain unchanged.
21722
21723 @item coordinates
21724 Flag which specifies the pixel to refer to.
21725 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
21726
21727 Flags to local 3x3 coordinates region centered on @code{x}:
21728
21729     1 2 3
21730
21731     4 x 5
21732
21733     6 7 8
21734 @end table
21735
21736 @subsection Example
21737
21738 @itemize
21739 @item
21740 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.
21741 @example
21742 -i INPUT -vf "hwupload, erosion_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
21743 @end example
21744 @end itemize
21745
21746 @section deshake_opencl
21747 Feature-point based video stabilization filter.
21748
21749 The filter accepts the following options:
21750
21751 @table @option
21752 @item tripod
21753 Simulates a tripod by preventing any camera movement whatsoever from the original frame. Defaults to @code{0}.
21754
21755 @item debug
21756 Whether or not additional debug info should be displayed, both in the processed output and in the console.
21757
21758 Note that in order to see console debug output you will also need to pass @code{-v verbose} to ffmpeg.
21759
21760 Viewing point matches in the output video is only supported for RGB input.
21761
21762 Defaults to @code{0}.
21763
21764 @item adaptive_crop
21765 Whether or not to do a tiny bit of cropping at the borders to cut down on the amount of mirrored pixels.
21766
21767 Defaults to @code{1}.
21768
21769 @item refine_features
21770 Whether or not feature points should be refined at a sub-pixel level.
21771
21772 This can be turned off for a slight performance gain at the cost of precision.
21773
21774 Defaults to @code{1}.
21775
21776 @item smooth_strength
21777 The strength of the smoothing applied to the camera path from @code{0.0} to @code{1.0}.
21778
21779 @code{1.0} is the maximum smoothing strength while values less than that result in less smoothing.
21780
21781 @code{0.0} causes the filter to adaptively choose a smoothing strength on a per-frame basis.
21782
21783 Defaults to @code{0.0}.
21784
21785 @item smooth_window_multiplier
21786 Controls the size of the smoothing window (the number of frames buffered to determine motion information from).
21787
21788 The size of the smoothing window is determined by multiplying the framerate of the video by this number.
21789
21790 Acceptable values range from @code{0.1} to @code{10.0}.
21791
21792 Larger values increase the amount of motion data available for determining how to smooth the camera path,
21793 potentially improving smoothness, but also increase latency and memory usage.
21794
21795 Defaults to @code{2.0}.
21796
21797 @end table
21798
21799 @subsection Examples
21800
21801 @itemize
21802 @item
21803 Stabilize a video with a fixed, medium smoothing strength:
21804 @example
21805 -i INPUT -vf "hwupload, deshake_opencl=smooth_strength=0.5, hwdownload" OUTPUT
21806 @end example
21807
21808 @item
21809 Stabilize a video with debugging (both in console and in rendered video):
21810 @example
21811 -i INPUT -filter_complex "[0:v]format=rgba, hwupload, deshake_opencl=debug=1, hwdownload, format=rgba, format=yuv420p" -v verbose OUTPUT
21812 @end example
21813 @end itemize
21814
21815 @section dilation_opencl
21816
21817 Apply dilation effect to the video.
21818
21819 This filter replaces the pixel by the local(3x3) maximum.
21820
21821 It accepts the following options:
21822
21823 @table @option
21824 @item threshold0
21825 @item threshold1
21826 @item threshold2
21827 @item threshold3
21828 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
21829 If @code{0}, plane will remain unchanged.
21830
21831 @item coordinates
21832 Flag which specifies the pixel to refer to.
21833 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
21834
21835 Flags to local 3x3 coordinates region centered on @code{x}:
21836
21837     1 2 3
21838
21839     4 x 5
21840
21841     6 7 8
21842 @end table
21843
21844 @subsection Example
21845
21846 @itemize
21847 @item
21848 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.
21849 @example
21850 -i INPUT -vf "hwupload, dilation_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
21851 @end example
21852 @end itemize
21853
21854 @section nlmeans_opencl
21855
21856 Non-local Means denoise filter through OpenCL, this filter accepts same options as @ref{nlmeans}.
21857
21858 @section overlay_opencl
21859
21860 Overlay one video on top of another.
21861
21862 It takes two inputs and has one output. The first input is the "main" video on which the second input is overlaid.
21863 This filter requires same memory layout for all the inputs. So, format conversion may be needed.
21864
21865 The filter accepts the following options:
21866
21867 @table @option
21868
21869 @item x
21870 Set the x coordinate of the overlaid video on the main video.
21871 Default value is @code{0}.
21872
21873 @item y
21874 Set the y coordinate of the overlaid video on the main video.
21875 Default value is @code{0}.
21876
21877 @end table
21878
21879 @subsection Examples
21880
21881 @itemize
21882 @item
21883 Overlay an image LOGO at the top-left corner of the INPUT video. Both inputs are yuv420p format.
21884 @example
21885 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuv420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
21886 @end example
21887 @item
21888 The inputs have same memory layout for color channels , the overlay has additional alpha plane, like INPUT is yuv420p, and the LOGO is yuva420p.
21889 @example
21890 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuva420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
21891 @end example
21892
21893 @end itemize
21894
21895 @section pad_opencl
21896
21897 Add paddings to the input image, and place the original input at the
21898 provided @var{x}, @var{y} coordinates.
21899
21900 It accepts the following options:
21901
21902 @table @option
21903 @item width, w
21904 @item height, h
21905 Specify an expression for the size of the output image with the
21906 paddings added. If the value for @var{width} or @var{height} is 0, the
21907 corresponding input size is used for the output.
21908
21909 The @var{width} expression can reference the value set by the
21910 @var{height} expression, and vice versa.
21911
21912 The default value of @var{width} and @var{height} is 0.
21913
21914 @item x
21915 @item y
21916 Specify the offsets to place the input image at within the padded area,
21917 with respect to the top/left border of the output image.
21918
21919 The @var{x} expression can reference the value set by the @var{y}
21920 expression, and vice versa.
21921
21922 The default value of @var{x} and @var{y} is 0.
21923
21924 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
21925 so the input image is centered on the padded area.
21926
21927 @item color
21928 Specify the color of the padded area. For the syntax of this option,
21929 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
21930 manual,ffmpeg-utils}.
21931
21932 @item aspect
21933 Pad to an aspect instead to a resolution.
21934 @end table
21935
21936 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
21937 options are expressions containing the following constants:
21938
21939 @table @option
21940 @item in_w
21941 @item in_h
21942 The input video width and height.
21943
21944 @item iw
21945 @item ih
21946 These are the same as @var{in_w} and @var{in_h}.
21947
21948 @item out_w
21949 @item out_h
21950 The output width and height (the size of the padded area), as
21951 specified by the @var{width} and @var{height} expressions.
21952
21953 @item ow
21954 @item oh
21955 These are the same as @var{out_w} and @var{out_h}.
21956
21957 @item x
21958 @item y
21959 The x and y offsets as specified by the @var{x} and @var{y}
21960 expressions, or NAN if not yet specified.
21961
21962 @item a
21963 same as @var{iw} / @var{ih}
21964
21965 @item sar
21966 input sample aspect ratio
21967
21968 @item dar
21969 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
21970 @end table
21971
21972 @section prewitt_opencl
21973
21974 Apply the Prewitt operator (@url{https://en.wikipedia.org/wiki/Prewitt_operator}) to input video stream.
21975
21976 The filter accepts the following option:
21977
21978 @table @option
21979 @item planes
21980 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
21981
21982 @item scale
21983 Set value which will be multiplied with filtered result.
21984 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
21985
21986 @item delta
21987 Set value which will be added to filtered result.
21988 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
21989 @end table
21990
21991 @subsection Example
21992
21993 @itemize
21994 @item
21995 Apply the Prewitt operator with scale set to 2 and delta set to 10.
21996 @example
21997 -i INPUT -vf "hwupload, prewitt_opencl=scale=2:delta=10, hwdownload" OUTPUT
21998 @end example
21999 @end itemize
22000
22001 @anchor{program_opencl}
22002 @section program_opencl
22003
22004 Filter video using an OpenCL program.
22005
22006 @table @option
22007
22008 @item source
22009 OpenCL program source file.
22010
22011 @item kernel
22012 Kernel name in program.
22013
22014 @item inputs
22015 Number of inputs to the filter.  Defaults to 1.
22016
22017 @item size, s
22018 Size of output frames.  Defaults to the same as the first input.
22019
22020 @end table
22021
22022 The @code{program_opencl} filter also supports the @ref{framesync} options.
22023
22024 The program source file must contain a kernel function with the given name,
22025 which will be run once for each plane of the output.  Each run on a plane
22026 gets enqueued as a separate 2D global NDRange with one work-item for each
22027 pixel to be generated.  The global ID offset for each work-item is therefore
22028 the coordinates of a pixel in the destination image.
22029
22030 The kernel function needs to take the following arguments:
22031 @itemize
22032 @item
22033 Destination image, @var{__write_only image2d_t}.
22034
22035 This image will become the output; the kernel should write all of it.
22036 @item
22037 Frame index, @var{unsigned int}.
22038
22039 This is a counter starting from zero and increasing by one for each frame.
22040 @item
22041 Source images, @var{__read_only image2d_t}.
22042
22043 These are the most recent images on each input.  The kernel may read from
22044 them to generate the output, but they can't be written to.
22045 @end itemize
22046
22047 Example programs:
22048
22049 @itemize
22050 @item
22051 Copy the input to the output (output must be the same size as the input).
22052 @verbatim
22053 __kernel void copy(__write_only image2d_t destination,
22054                    unsigned int index,
22055                    __read_only  image2d_t source)
22056 {
22057     const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE;
22058
22059     int2 location = (int2)(get_global_id(0), get_global_id(1));
22060
22061     float4 value = read_imagef(source, sampler, location);
22062
22063     write_imagef(destination, location, value);
22064 }
22065 @end verbatim
22066
22067 @item
22068 Apply a simple transformation, rotating the input by an amount increasing
22069 with the index counter.  Pixel values are linearly interpolated by the
22070 sampler, and the output need not have the same dimensions as the input.
22071 @verbatim
22072 __kernel void rotate_image(__write_only image2d_t dst,
22073                            unsigned int index,
22074                            __read_only  image2d_t src)
22075 {
22076     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
22077                                CLK_FILTER_LINEAR);
22078
22079     float angle = (float)index / 100.0f;
22080
22081     float2 dst_dim = convert_float2(get_image_dim(dst));
22082     float2 src_dim = convert_float2(get_image_dim(src));
22083
22084     float2 dst_cen = dst_dim / 2.0f;
22085     float2 src_cen = src_dim / 2.0f;
22086
22087     int2   dst_loc = (int2)(get_global_id(0), get_global_id(1));
22088
22089     float2 dst_pos = convert_float2(dst_loc) - dst_cen;
22090     float2 src_pos = {
22091         cos(angle) * dst_pos.x - sin(angle) * dst_pos.y,
22092         sin(angle) * dst_pos.x + cos(angle) * dst_pos.y
22093     };
22094     src_pos = src_pos * src_dim / dst_dim;
22095
22096     float2 src_loc = src_pos + src_cen;
22097
22098     if (src_loc.x < 0.0f      || src_loc.y < 0.0f ||
22099         src_loc.x > src_dim.x || src_loc.y > src_dim.y)
22100         write_imagef(dst, dst_loc, 0.5f);
22101     else
22102         write_imagef(dst, dst_loc, read_imagef(src, sampler, src_loc));
22103 }
22104 @end verbatim
22105
22106 @item
22107 Blend two inputs together, with the amount of each input used varying
22108 with the index counter.
22109 @verbatim
22110 __kernel void blend_images(__write_only image2d_t dst,
22111                            unsigned int index,
22112                            __read_only  image2d_t src1,
22113                            __read_only  image2d_t src2)
22114 {
22115     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
22116                                CLK_FILTER_LINEAR);
22117
22118     float blend = (cos((float)index / 50.0f) + 1.0f) / 2.0f;
22119
22120     int2  dst_loc = (int2)(get_global_id(0), get_global_id(1));
22121     int2 src1_loc = dst_loc * get_image_dim(src1) / get_image_dim(dst);
22122     int2 src2_loc = dst_loc * get_image_dim(src2) / get_image_dim(dst);
22123
22124     float4 val1 = read_imagef(src1, sampler, src1_loc);
22125     float4 val2 = read_imagef(src2, sampler, src2_loc);
22126
22127     write_imagef(dst, dst_loc, val1 * blend + val2 * (1.0f - blend));
22128 }
22129 @end verbatim
22130
22131 @end itemize
22132
22133 @section roberts_opencl
22134 Apply the Roberts cross operator (@url{https://en.wikipedia.org/wiki/Roberts_cross}) to input video stream.
22135
22136 The filter accepts the following option:
22137
22138 @table @option
22139 @item planes
22140 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
22141
22142 @item scale
22143 Set value which will be multiplied with filtered result.
22144 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
22145
22146 @item delta
22147 Set value which will be added to filtered result.
22148 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
22149 @end table
22150
22151 @subsection Example
22152
22153 @itemize
22154 @item
22155 Apply the Roberts cross operator with scale set to 2 and delta set to 10
22156 @example
22157 -i INPUT -vf "hwupload, roberts_opencl=scale=2:delta=10, hwdownload" OUTPUT
22158 @end example
22159 @end itemize
22160
22161 @section sobel_opencl
22162
22163 Apply the Sobel operator (@url{https://en.wikipedia.org/wiki/Sobel_operator}) to input video stream.
22164
22165 The filter accepts the following option:
22166
22167 @table @option
22168 @item planes
22169 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
22170
22171 @item scale
22172 Set value which will be multiplied with filtered result.
22173 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
22174
22175 @item delta
22176 Set value which will be added to filtered result.
22177 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
22178 @end table
22179
22180 @subsection Example
22181
22182 @itemize
22183 @item
22184 Apply sobel operator with scale set to 2 and delta set to 10
22185 @example
22186 -i INPUT -vf "hwupload, sobel_opencl=scale=2:delta=10, hwdownload" OUTPUT
22187 @end example
22188 @end itemize
22189
22190 @section tonemap_opencl
22191
22192 Perform HDR(PQ/HLG) to SDR conversion with tone-mapping.
22193
22194 It accepts the following parameters:
22195
22196 @table @option
22197 @item tonemap
22198 Specify the tone-mapping operator to be used. Same as tonemap option in @ref{tonemap}.
22199
22200 @item param
22201 Tune the tone mapping algorithm. same as param option in @ref{tonemap}.
22202
22203 @item desat
22204 Apply desaturation for highlights that exceed this level of brightness. The
22205 higher the parameter, the more color information will be preserved. This
22206 setting helps prevent unnaturally blown-out colors for super-highlights, by
22207 (smoothly) turning into white instead. This makes images feel more natural,
22208 at the cost of reducing information about out-of-range colors.
22209
22210 The default value is 0.5, and the algorithm here is a little different from
22211 the cpu version tonemap currently. A setting of 0.0 disables this option.
22212
22213 @item threshold
22214 The tonemapping algorithm parameters is fine-tuned per each scene. And a threshold
22215 is used to detect whether the scene has changed or not. If the distance between
22216 the current frame average brightness and the current running average exceeds
22217 a threshold value, we would re-calculate scene average and peak brightness.
22218 The default value is 0.2.
22219
22220 @item format
22221 Specify the output pixel format.
22222
22223 Currently supported formats are:
22224 @table @var
22225 @item p010
22226 @item nv12
22227 @end table
22228
22229 @item range, r
22230 Set the output color range.
22231
22232 Possible values are:
22233 @table @var
22234 @item tv/mpeg
22235 @item pc/jpeg
22236 @end table
22237
22238 Default is same as input.
22239
22240 @item primaries, p
22241 Set the output color primaries.
22242
22243 Possible values are:
22244 @table @var
22245 @item bt709
22246 @item bt2020
22247 @end table
22248
22249 Default is same as input.
22250
22251 @item transfer, t
22252 Set the output transfer characteristics.
22253
22254 Possible values are:
22255 @table @var
22256 @item bt709
22257 @item bt2020
22258 @end table
22259
22260 Default is bt709.
22261
22262 @item matrix, m
22263 Set the output colorspace matrix.
22264
22265 Possible value are:
22266 @table @var
22267 @item bt709
22268 @item bt2020
22269 @end table
22270
22271 Default is same as input.
22272
22273 @end table
22274
22275 @subsection Example
22276
22277 @itemize
22278 @item
22279 Convert HDR(PQ/HLG) video to bt2020-transfer-characteristic p010 format using linear operator.
22280 @example
22281 -i INPUT -vf "format=p010,hwupload,tonemap_opencl=t=bt2020:tonemap=linear:format=p010,hwdownload,format=p010" OUTPUT
22282 @end example
22283 @end itemize
22284
22285 @section unsharp_opencl
22286
22287 Sharpen or blur the input video.
22288
22289 It accepts the following parameters:
22290
22291 @table @option
22292 @item luma_msize_x, lx
22293 Set the luma matrix horizontal size.
22294 Range is @code{[1, 23]} and default value is @code{5}.
22295
22296 @item luma_msize_y, ly
22297 Set the luma matrix vertical size.
22298 Range is @code{[1, 23]} and default value is @code{5}.
22299
22300 @item luma_amount, la
22301 Set the luma effect strength.
22302 Range is @code{[-10, 10]} and default value is @code{1.0}.
22303
22304 Negative values will blur the input video, while positive values will
22305 sharpen it, a value of zero will disable the effect.
22306
22307 @item chroma_msize_x, cx
22308 Set the chroma matrix horizontal size.
22309 Range is @code{[1, 23]} and default value is @code{5}.
22310
22311 @item chroma_msize_y, cy
22312 Set the chroma matrix vertical size.
22313 Range is @code{[1, 23]} and default value is @code{5}.
22314
22315 @item chroma_amount, ca
22316 Set the chroma effect strength.
22317 Range is @code{[-10, 10]} and default value is @code{0.0}.
22318
22319 Negative values will blur the input video, while positive values will
22320 sharpen it, a value of zero will disable the effect.
22321
22322 @end table
22323
22324 All parameters are optional and default to the equivalent of the
22325 string '5:5:1.0:5:5:0.0'.
22326
22327 @subsection Examples
22328
22329 @itemize
22330 @item
22331 Apply strong luma sharpen effect:
22332 @example
22333 -i INPUT -vf "hwupload, unsharp_opencl=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5, hwdownload" OUTPUT
22334 @end example
22335
22336 @item
22337 Apply a strong blur of both luma and chroma parameters:
22338 @example
22339 -i INPUT -vf "hwupload, unsharp_opencl=7:7:-2:7:7:-2, hwdownload" OUTPUT
22340 @end example
22341 @end itemize
22342
22343 @section xfade_opencl
22344
22345 Cross fade two videos with custom transition effect by using OpenCL.
22346
22347 It accepts the following options:
22348
22349 @table @option
22350 @item transition
22351 Set one of possible transition effects.
22352
22353 @table @option
22354 @item custom
22355 Select custom transition effect, the actual transition description
22356 will be picked from source and kernel options.
22357
22358 @item fade
22359 @item wipeleft
22360 @item wiperight
22361 @item wipeup
22362 @item wipedown
22363 @item slideleft
22364 @item slideright
22365 @item slideup
22366 @item slidedown
22367
22368 Default transition is fade.
22369 @end table
22370
22371 @item source
22372 OpenCL program source file for custom transition.
22373
22374 @item kernel
22375 Set name of kernel to use for custom transition from program source file.
22376
22377 @item duration
22378 Set duration of video transition.
22379
22380 @item offset
22381 Set time of start of transition relative to first video.
22382 @end table
22383
22384 The program source file must contain a kernel function with the given name,
22385 which will be run once for each plane of the output.  Each run on a plane
22386 gets enqueued as a separate 2D global NDRange with one work-item for each
22387 pixel to be generated.  The global ID offset for each work-item is therefore
22388 the coordinates of a pixel in the destination image.
22389
22390 The kernel function needs to take the following arguments:
22391 @itemize
22392 @item
22393 Destination image, @var{__write_only image2d_t}.
22394
22395 This image will become the output; the kernel should write all of it.
22396
22397 @item
22398 First Source image, @var{__read_only image2d_t}.
22399 Second Source image, @var{__read_only image2d_t}.
22400
22401 These are the most recent images on each input.  The kernel may read from
22402 them to generate the output, but they can't be written to.
22403
22404 @item
22405 Transition progress, @var{float}. This value is always between 0 and 1 inclusive.
22406 @end itemize
22407
22408 Example programs:
22409
22410 @itemize
22411 @item
22412 Apply dots curtain transition effect:
22413 @verbatim
22414 __kernel void blend_images(__write_only image2d_t dst,
22415                            __read_only  image2d_t src1,
22416                            __read_only  image2d_t src2,
22417                            float progress)
22418 {
22419     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
22420                                CLK_FILTER_LINEAR);
22421     int2  p = (int2)(get_global_id(0), get_global_id(1));
22422     float2 rp = (float2)(get_global_id(0), get_global_id(1));
22423     float2 dim = (float2)(get_image_dim(src1).x, get_image_dim(src1).y);
22424     rp = rp / dim;
22425
22426     float2 dots = (float2)(20.0, 20.0);
22427     float2 center = (float2)(0,0);
22428     float2 unused;
22429
22430     float4 val1 = read_imagef(src1, sampler, p);
22431     float4 val2 = read_imagef(src2, sampler, p);
22432     bool next = distance(fract(rp * dots, &unused), (float2)(0.5, 0.5)) < (progress / distance(rp, center));
22433
22434     write_imagef(dst, p, next ? val1 : val2);
22435 }
22436 @end verbatim
22437
22438 @end itemize
22439
22440 @c man end OPENCL VIDEO FILTERS
22441
22442 @chapter VAAPI Video Filters
22443 @c man begin VAAPI VIDEO FILTERS
22444
22445 VAAPI Video filters are usually used with VAAPI decoder and VAAPI encoder. Below is a description of VAAPI video filters.
22446
22447 To enable compilation of these filters you need to configure FFmpeg with
22448 @code{--enable-vaapi}.
22449
22450 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}
22451
22452 @section tonemap_vaapi
22453
22454 Perform HDR(High Dynamic Range) to SDR(Standard Dynamic Range) conversion with tone-mapping.
22455 It maps the dynamic range of HDR10 content to the SDR content.
22456 It currently only accepts HDR10 as input.
22457
22458 It accepts the following parameters:
22459
22460 @table @option
22461 @item format
22462 Specify the output pixel format.
22463
22464 Currently supported formats are:
22465 @table @var
22466 @item p010
22467 @item nv12
22468 @end table
22469
22470 Default is nv12.
22471
22472 @item primaries, p
22473 Set the output color primaries.
22474
22475 Default is same as input.
22476
22477 @item transfer, t
22478 Set the output transfer characteristics.
22479
22480 Default is bt709.
22481
22482 @item matrix, m
22483 Set the output colorspace matrix.
22484
22485 Default is same as input.
22486
22487 @end table
22488
22489 @subsection Example
22490
22491 @itemize
22492 @item
22493 Convert HDR(HDR10) video to bt2020-transfer-characteristic p010 format
22494 @example
22495 tonemap_vaapi=format=p010:t=bt2020-10
22496 @end example
22497 @end itemize
22498
22499 @c man end VAAPI VIDEO FILTERS
22500
22501 @chapter Video Sources
22502 @c man begin VIDEO SOURCES
22503
22504 Below is a description of the currently available video sources.
22505
22506 @section buffer
22507
22508 Buffer video frames, and make them available to the filter chain.
22509
22510 This source is mainly intended for a programmatic use, in particular
22511 through the interface defined in @file{libavfilter/buffersrc.h}.
22512
22513 It accepts the following parameters:
22514
22515 @table @option
22516
22517 @item video_size
22518 Specify the size (width and height) of the buffered video frames. For the
22519 syntax of this option, check the
22520 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22521
22522 @item width
22523 The input video width.
22524
22525 @item height
22526 The input video height.
22527
22528 @item pix_fmt
22529 A string representing the pixel format of the buffered video frames.
22530 It may be a number corresponding to a pixel format, or a pixel format
22531 name.
22532
22533 @item time_base
22534 Specify the timebase assumed by the timestamps of the buffered frames.
22535
22536 @item frame_rate
22537 Specify the frame rate expected for the video stream.
22538
22539 @item pixel_aspect, sar
22540 The sample (pixel) aspect ratio of the input video.
22541
22542 @item sws_param
22543 This option is deprecated and ignored. Prepend @code{sws_flags=@var{flags};}
22544 to the filtergraph description to specify swscale flags for automatically
22545 inserted scalers. See @ref{Filtergraph syntax}.
22546
22547 @item hw_frames_ctx
22548 When using a hardware pixel format, this should be a reference to an
22549 AVHWFramesContext describing input frames.
22550 @end table
22551
22552 For example:
22553 @example
22554 buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
22555 @end example
22556
22557 will instruct the source to accept video frames with size 320x240 and
22558 with format "yuv410p", assuming 1/24 as the timestamps timebase and
22559 square pixels (1:1 sample aspect ratio).
22560 Since the pixel format with name "yuv410p" corresponds to the number 6
22561 (check the enum AVPixelFormat definition in @file{libavutil/pixfmt.h}),
22562 this example corresponds to:
22563 @example
22564 buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
22565 @end example
22566
22567 Alternatively, the options can be specified as a flat string, but this
22568 syntax is deprecated:
22569
22570 @var{width}:@var{height}:@var{pix_fmt}:@var{time_base.num}:@var{time_base.den}:@var{pixel_aspect.num}:@var{pixel_aspect.den}
22571
22572 @section cellauto
22573
22574 Create a pattern generated by an elementary cellular automaton.
22575
22576 The initial state of the cellular automaton can be defined through the
22577 @option{filename} and @option{pattern} options. If such options are
22578 not specified an initial state is created randomly.
22579
22580 At each new frame a new row in the video is filled with the result of
22581 the cellular automaton next generation. The behavior when the whole
22582 frame is filled is defined by the @option{scroll} option.
22583
22584 This source accepts the following options:
22585
22586 @table @option
22587 @item filename, f
22588 Read the initial cellular automaton state, i.e. the starting row, from
22589 the specified file.
22590 In the file, each non-whitespace character is considered an alive
22591 cell, a newline will terminate the row, and further characters in the
22592 file will be ignored.
22593
22594 @item pattern, p
22595 Read the initial cellular automaton state, i.e. the starting row, from
22596 the specified string.
22597
22598 Each non-whitespace character in the string is considered an alive
22599 cell, a newline will terminate the row, and further characters in the
22600 string will be ignored.
22601
22602 @item rate, r
22603 Set the video rate, that is the number of frames generated per second.
22604 Default is 25.
22605
22606 @item random_fill_ratio, ratio
22607 Set the random fill ratio for the initial cellular automaton row. It
22608 is a floating point number value ranging from 0 to 1, defaults to
22609 1/PHI.
22610
22611 This option is ignored when a file or a pattern is specified.
22612
22613 @item random_seed, seed
22614 Set the seed for filling randomly the initial row, must be an integer
22615 included between 0 and UINT32_MAX. If not specified, or if explicitly
22616 set to -1, the filter will try to use a good random seed on a best
22617 effort basis.
22618
22619 @item rule
22620 Set the cellular automaton rule, it is a number ranging from 0 to 255.
22621 Default value is 110.
22622
22623 @item size, s
22624 Set the size of the output video. For the syntax of this option, check the
22625 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22626
22627 If @option{filename} or @option{pattern} is specified, the size is set
22628 by default to the width of the specified initial state row, and the
22629 height is set to @var{width} * PHI.
22630
22631 If @option{size} is set, it must contain the width of the specified
22632 pattern string, and the specified pattern will be centered in the
22633 larger row.
22634
22635 If a filename or a pattern string is not specified, the size value
22636 defaults to "320x518" (used for a randomly generated initial state).
22637
22638 @item scroll
22639 If set to 1, scroll the output upward when all the rows in the output
22640 have been already filled. If set to 0, the new generated row will be
22641 written over the top row just after the bottom row is filled.
22642 Defaults to 1.
22643
22644 @item start_full, full
22645 If set to 1, completely fill the output with generated rows before
22646 outputting the first frame.
22647 This is the default behavior, for disabling set the value to 0.
22648
22649 @item stitch
22650 If set to 1, stitch the left and right row edges together.
22651 This is the default behavior, for disabling set the value to 0.
22652 @end table
22653
22654 @subsection Examples
22655
22656 @itemize
22657 @item
22658 Read the initial state from @file{pattern}, and specify an output of
22659 size 200x400.
22660 @example
22661 cellauto=f=pattern:s=200x400
22662 @end example
22663
22664 @item
22665 Generate a random initial row with a width of 200 cells, with a fill
22666 ratio of 2/3:
22667 @example
22668 cellauto=ratio=2/3:s=200x200
22669 @end example
22670
22671 @item
22672 Create a pattern generated by rule 18 starting by a single alive cell
22673 centered on an initial row with width 100:
22674 @example
22675 cellauto=p=@@:s=100x400:full=0:rule=18
22676 @end example
22677
22678 @item
22679 Specify a more elaborated initial pattern:
22680 @example
22681 cellauto=p='@@@@ @@ @@@@':s=100x400:full=0:rule=18
22682 @end example
22683
22684 @end itemize
22685
22686 @anchor{coreimagesrc}
22687 @section coreimagesrc
22688 Video source generated on GPU using Apple's CoreImage API on OSX.
22689
22690 This video source is a specialized version of the @ref{coreimage} video filter.
22691 Use a core image generator at the beginning of the applied filterchain to
22692 generate the content.
22693
22694 The coreimagesrc video source accepts the following options:
22695 @table @option
22696 @item list_generators
22697 List all available generators along with all their respective options as well as
22698 possible minimum and maximum values along with the default values.
22699 @example
22700 list_generators=true
22701 @end example
22702
22703 @item size, s
22704 Specify the size of the sourced video. For the syntax of this option, check the
22705 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22706 The default value is @code{320x240}.
22707
22708 @item rate, r
22709 Specify the frame rate of the sourced video, as the number of frames
22710 generated per second. It has to be a string in the format
22711 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
22712 number or a valid video frame rate abbreviation. The default value is
22713 "25".
22714
22715 @item sar
22716 Set the sample aspect ratio of the sourced video.
22717
22718 @item duration, d
22719 Set the duration of the sourced video. See
22720 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
22721 for the accepted syntax.
22722
22723 If not specified, or the expressed duration is negative, the video is
22724 supposed to be generated forever.
22725 @end table
22726
22727 Additionally, all options of the @ref{coreimage} video filter are accepted.
22728 A complete filterchain can be used for further processing of the
22729 generated input without CPU-HOST transfer. See @ref{coreimage} documentation
22730 and examples for details.
22731
22732 @subsection Examples
22733
22734 @itemize
22735
22736 @item
22737 Use CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
22738 given as complete and escaped command-line for Apple's standard bash shell:
22739 @example
22740 ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
22741 @end example
22742 This example is equivalent to the QRCode example of @ref{coreimage} without the
22743 need for a nullsrc video source.
22744 @end itemize
22745
22746
22747 @section gradients
22748 Generate several gradients.
22749
22750 @table @option
22751 @item size, s
22752 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
22753 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
22754
22755 @item rate, r
22756 Set frame rate, expressed as number of frames per second. Default
22757 value is "25".
22758
22759 @item c0, c1, c2, c3, c4, c5, c6, c7
22760 Set 8 colors. Default values for colors is to pick random one.
22761
22762 @item x0, y0, y0, y1
22763 Set gradient line source and destination points. If negative or out of range, random ones
22764 are picked.
22765
22766 @item nb_colors, n
22767 Set number of colors to use at once. Allowed range is from 2 to 8. Default value is 2.
22768
22769 @item seed
22770 Set seed for picking gradient line points.
22771
22772 @item duration, d
22773 Set the duration of the sourced video. See
22774 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
22775 for the accepted syntax.
22776
22777 If not specified, or the expressed duration is negative, the video is
22778 supposed to be generated forever.
22779
22780 @item speed
22781 Set speed of gradients rotation.
22782 @end table
22783
22784
22785 @section mandelbrot
22786
22787 Generate a Mandelbrot set fractal, and progressively zoom towards the
22788 point specified with @var{start_x} and @var{start_y}.
22789
22790 This source accepts the following options:
22791
22792 @table @option
22793
22794 @item end_pts
22795 Set the terminal pts value. Default value is 400.
22796
22797 @item end_scale
22798 Set the terminal scale value.
22799 Must be a floating point value. Default value is 0.3.
22800
22801 @item inner
22802 Set the inner coloring mode, that is the algorithm used to draw the
22803 Mandelbrot fractal internal region.
22804
22805 It shall assume one of the following values:
22806 @table @option
22807 @item black
22808 Set black mode.
22809 @item convergence
22810 Show time until convergence.
22811 @item mincol
22812 Set color based on point closest to the origin of the iterations.
22813 @item period
22814 Set period mode.
22815 @end table
22816
22817 Default value is @var{mincol}.
22818
22819 @item bailout
22820 Set the bailout value. Default value is 10.0.
22821
22822 @item maxiter
22823 Set the maximum of iterations performed by the rendering
22824 algorithm. Default value is 7189.
22825
22826 @item outer
22827 Set outer coloring mode.
22828 It shall assume one of following values:
22829 @table @option
22830 @item iteration_count
22831 Set iteration count mode.
22832 @item normalized_iteration_count
22833 set normalized iteration count mode.
22834 @end table
22835 Default value is @var{normalized_iteration_count}.
22836
22837 @item rate, r
22838 Set frame rate, expressed as number of frames per second. Default
22839 value is "25".
22840
22841 @item size, s
22842 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
22843 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
22844
22845 @item start_scale
22846 Set the initial scale value. Default value is 3.0.
22847
22848 @item start_x
22849 Set the initial x position. Must be a floating point value between
22850 -100 and 100. Default value is -0.743643887037158704752191506114774.
22851
22852 @item start_y
22853 Set the initial y position. Must be a floating point value between
22854 -100 and 100. Default value is -0.131825904205311970493132056385139.
22855 @end table
22856
22857 @section mptestsrc
22858
22859 Generate various test patterns, as generated by the MPlayer test filter.
22860
22861 The size of the generated video is fixed, and is 256x256.
22862 This source is useful in particular for testing encoding features.
22863
22864 This source accepts the following options:
22865
22866 @table @option
22867
22868 @item rate, r
22869 Specify the frame rate of the sourced video, as the number of frames
22870 generated per second. It has to be a string in the format
22871 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
22872 number or a valid video frame rate abbreviation. The default value is
22873 "25".
22874
22875 @item duration, d
22876 Set the duration of the sourced video. See
22877 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
22878 for the accepted syntax.
22879
22880 If not specified, or the expressed duration is negative, the video is
22881 supposed to be generated forever.
22882
22883 @item test, t
22884
22885 Set the number or the name of the test to perform. Supported tests are:
22886 @table @option
22887 @item dc_luma
22888 @item dc_chroma
22889 @item freq_luma
22890 @item freq_chroma
22891 @item amp_luma
22892 @item amp_chroma
22893 @item cbp
22894 @item mv
22895 @item ring1
22896 @item ring2
22897 @item all
22898
22899 @item max_frames, m
22900 Set the maximum number of frames generated for each test, default value is 30.
22901
22902 @end table
22903
22904 Default value is "all", which will cycle through the list of all tests.
22905 @end table
22906
22907 Some examples:
22908 @example
22909 mptestsrc=t=dc_luma
22910 @end example
22911
22912 will generate a "dc_luma" test pattern.
22913
22914 @section frei0r_src
22915
22916 Provide a frei0r source.
22917
22918 To enable compilation of this filter you need to install the frei0r
22919 header and configure FFmpeg with @code{--enable-frei0r}.
22920
22921 This source accepts the following parameters:
22922
22923 @table @option
22924
22925 @item size
22926 The size of the video to generate. For the syntax of this option, check the
22927 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22928
22929 @item framerate
22930 The framerate of the generated video. It may be a string of the form
22931 @var{num}/@var{den} or a frame rate abbreviation.
22932
22933 @item filter_name
22934 The name to the frei0r source to load. For more information regarding frei0r and
22935 how to set the parameters, read the @ref{frei0r} section in the video filters
22936 documentation.
22937
22938 @item filter_params
22939 A '|'-separated list of parameters to pass to the frei0r source.
22940
22941 @end table
22942
22943 For example, to generate a frei0r partik0l source with size 200x200
22944 and frame rate 10 which is overlaid on the overlay filter main input:
22945 @example
22946 frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
22947 @end example
22948
22949 @section life
22950
22951 Generate a life pattern.
22952
22953 This source is based on a generalization of John Conway's life game.
22954
22955 The sourced input represents a life grid, each pixel represents a cell
22956 which can be in one of two possible states, alive or dead. Every cell
22957 interacts with its eight neighbours, which are the cells that are
22958 horizontally, vertically, or diagonally adjacent.
22959
22960 At each interaction the grid evolves according to the adopted rule,
22961 which specifies the number of neighbor alive cells which will make a
22962 cell stay alive or born. The @option{rule} option allows one to specify
22963 the rule to adopt.
22964
22965 This source accepts the following options:
22966
22967 @table @option
22968 @item filename, f
22969 Set the file from which to read the initial grid state. In the file,
22970 each non-whitespace character is considered an alive cell, and newline
22971 is used to delimit the end of each row.
22972
22973 If this option is not specified, the initial grid is generated
22974 randomly.
22975
22976 @item rate, r
22977 Set the video rate, that is the number of frames generated per second.
22978 Default is 25.
22979
22980 @item random_fill_ratio, ratio
22981 Set the random fill ratio for the initial random grid. It is a
22982 floating point number value ranging from 0 to 1, defaults to 1/PHI.
22983 It is ignored when a file is specified.
22984
22985 @item random_seed, seed
22986 Set the seed for filling the initial random grid, must be an integer
22987 included between 0 and UINT32_MAX. If not specified, or if explicitly
22988 set to -1, the filter will try to use a good random seed on a best
22989 effort basis.
22990
22991 @item rule
22992 Set the life rule.
22993
22994 A rule can be specified with a code of the kind "S@var{NS}/B@var{NB}",
22995 where @var{NS} and @var{NB} are sequences of numbers in the range 0-8,
22996 @var{NS} specifies the number of alive neighbor cells which make a
22997 live cell stay alive, and @var{NB} the number of alive neighbor cells
22998 which make a dead cell to become alive (i.e. to "born").
22999 "s" and "b" can be used in place of "S" and "B", respectively.
23000
23001 Alternatively a rule can be specified by an 18-bits integer. The 9
23002 high order bits are used to encode the next cell state if it is alive
23003 for each number of neighbor alive cells, the low order bits specify
23004 the rule for "borning" new cells. Higher order bits encode for an
23005 higher number of neighbor cells.
23006 For example the number 6153 = @code{(12<<9)+9} specifies a stay alive
23007 rule of 12 and a born rule of 9, which corresponds to "S23/B03".
23008
23009 Default value is "S23/B3", which is the original Conway's game of life
23010 rule, and will keep a cell alive if it has 2 or 3 neighbor alive
23011 cells, and will born a new cell if there are three alive cells around
23012 a dead cell.
23013
23014 @item size, s
23015 Set the size of the output video. For the syntax of this option, check the
23016 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23017
23018 If @option{filename} is specified, the size is set by default to the
23019 same size of the input file. If @option{size} is set, it must contain
23020 the size specified in the input file, and the initial grid defined in
23021 that file is centered in the larger resulting area.
23022
23023 If a filename is not specified, the size value defaults to "320x240"
23024 (used for a randomly generated initial grid).
23025
23026 @item stitch
23027 If set to 1, stitch the left and right grid edges together, and the
23028 top and bottom edges also. Defaults to 1.
23029
23030 @item mold
23031 Set cell mold speed. If set, a dead cell will go from @option{death_color} to
23032 @option{mold_color} with a step of @option{mold}. @option{mold} can have a
23033 value from 0 to 255.
23034
23035 @item life_color
23036 Set the color of living (or new born) cells.
23037
23038 @item death_color
23039 Set the color of dead cells. If @option{mold} is set, this is the first color
23040 used to represent a dead cell.
23041
23042 @item mold_color
23043 Set mold color, for definitely dead and moldy cells.
23044
23045 For the syntax of these 3 color options, check the @ref{color syntax,,"Color" section in the
23046 ffmpeg-utils manual,ffmpeg-utils}.
23047 @end table
23048
23049 @subsection Examples
23050
23051 @itemize
23052 @item
23053 Read a grid from @file{pattern}, and center it on a grid of size
23054 300x300 pixels:
23055 @example
23056 life=f=pattern:s=300x300
23057 @end example
23058
23059 @item
23060 Generate a random grid of size 200x200, with a fill ratio of 2/3:
23061 @example
23062 life=ratio=2/3:s=200x200
23063 @end example
23064
23065 @item
23066 Specify a custom rule for evolving a randomly generated grid:
23067 @example
23068 life=rule=S14/B34
23069 @end example
23070
23071 @item
23072 Full example with slow death effect (mold) using @command{ffplay}:
23073 @example
23074 ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
23075 @end example
23076 @end itemize
23077
23078 @anchor{allrgb}
23079 @anchor{allyuv}
23080 @anchor{color}
23081 @anchor{haldclutsrc}
23082 @anchor{nullsrc}
23083 @anchor{pal75bars}
23084 @anchor{pal100bars}
23085 @anchor{rgbtestsrc}
23086 @anchor{smptebars}
23087 @anchor{smptehdbars}
23088 @anchor{testsrc}
23089 @anchor{testsrc2}
23090 @anchor{yuvtestsrc}
23091 @section allrgb, allyuv, color, haldclutsrc, nullsrc, pal75bars, pal100bars, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc
23092
23093 The @code{allrgb} source returns frames of size 4096x4096 of all rgb colors.
23094
23095 The @code{allyuv} source returns frames of size 4096x4096 of all yuv colors.
23096
23097 The @code{color} source provides an uniformly colored input.
23098
23099 The @code{haldclutsrc} source provides an identity Hald CLUT. See also
23100 @ref{haldclut} filter.
23101
23102 The @code{nullsrc} source returns unprocessed video frames. It is
23103 mainly useful to be employed in analysis / debugging tools, or as the
23104 source for filters which ignore the input data.
23105
23106 The @code{pal75bars} source generates a color bars pattern, based on
23107 EBU PAL recommendations with 75% color levels.
23108
23109 The @code{pal100bars} source generates a color bars pattern, based on
23110 EBU PAL recommendations with 100% color levels.
23111
23112 The @code{rgbtestsrc} source generates an RGB test pattern useful for
23113 detecting RGB vs BGR issues. You should see a red, green and blue
23114 stripe from top to bottom.
23115
23116 The @code{smptebars} source generates a color bars pattern, based on
23117 the SMPTE Engineering Guideline EG 1-1990.
23118
23119 The @code{smptehdbars} source generates a color bars pattern, based on
23120 the SMPTE RP 219-2002.
23121
23122 The @code{testsrc} source generates a test video pattern, showing a
23123 color pattern, a scrolling gradient and a timestamp. This is mainly
23124 intended for testing purposes.
23125
23126 The @code{testsrc2} source is similar to testsrc, but supports more
23127 pixel formats instead of just @code{rgb24}. This allows using it as an
23128 input for other tests without requiring a format conversion.
23129
23130 The @code{yuvtestsrc} source generates an YUV test pattern. You should
23131 see a y, cb and cr stripe from top to bottom.
23132
23133 The sources accept the following parameters:
23134
23135 @table @option
23136
23137 @item level
23138 Specify the level of the Hald CLUT, only available in the @code{haldclutsrc}
23139 source. A level of @code{N} generates a picture of @code{N*N*N} by @code{N*N*N}
23140 pixels to be used as identity matrix for 3D lookup tables. Each component is
23141 coded on a @code{1/(N*N)} scale.
23142
23143 @item color, c
23144 Specify the color of the source, only available in the @code{color}
23145 source. For the syntax of this option, check the
23146 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
23147
23148 @item size, s
23149 Specify the size of the sourced video. For the syntax of this option, check the
23150 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23151 The default value is @code{320x240}.
23152
23153 This option is not available with the @code{allrgb}, @code{allyuv}, and
23154 @code{haldclutsrc} filters.
23155
23156 @item rate, r
23157 Specify the frame rate of the sourced video, as the number of frames
23158 generated per second. It has to be a string in the format
23159 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
23160 number or a valid video frame rate abbreviation. The default value is
23161 "25".
23162
23163 @item duration, d
23164 Set the duration of the sourced video. See
23165 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
23166 for the accepted syntax.
23167
23168 If not specified, or the expressed duration is negative, the video is
23169 supposed to be generated forever.
23170
23171 Since the frame rate is used as time base, all frames including the last one
23172 will have their full duration. If the specified duration is not a multiple
23173 of the frame duration, it will be rounded up.
23174
23175 @item sar
23176 Set the sample aspect ratio of the sourced video.
23177
23178 @item alpha
23179 Specify the alpha (opacity) of the background, only available in the
23180 @code{testsrc2} source. The value must be between 0 (fully transparent) and
23181 255 (fully opaque, the default).
23182
23183 @item decimals, n
23184 Set the number of decimals to show in the timestamp, only available in the
23185 @code{testsrc} source.
23186
23187 The displayed timestamp value will correspond to the original
23188 timestamp value multiplied by the power of 10 of the specified
23189 value. Default value is 0.
23190 @end table
23191
23192 @subsection Examples
23193
23194 @itemize
23195 @item
23196 Generate a video with a duration of 5.3 seconds, with size
23197 176x144 and a frame rate of 10 frames per second:
23198 @example
23199 testsrc=duration=5.3:size=qcif:rate=10
23200 @end example
23201
23202 @item
23203 The following graph description will generate a red source
23204 with an opacity of 0.2, with size "qcif" and a frame rate of 10
23205 frames per second:
23206 @example
23207 color=c=red@@0.2:s=qcif:r=10
23208 @end example
23209
23210 @item
23211 If the input content is to be ignored, @code{nullsrc} can be used. The
23212 following command generates noise in the luminance plane by employing
23213 the @code{geq} filter:
23214 @example
23215 nullsrc=s=256x256, geq=random(1)*255:128:128
23216 @end example
23217 @end itemize
23218
23219 @subsection Commands
23220
23221 The @code{color} source supports the following commands:
23222
23223 @table @option
23224 @item c, color
23225 Set the color of the created image. Accepts the same syntax of the
23226 corresponding @option{color} option.
23227 @end table
23228
23229 @section openclsrc
23230
23231 Generate video using an OpenCL program.
23232
23233 @table @option
23234
23235 @item source
23236 OpenCL program source file.
23237
23238 @item kernel
23239 Kernel name in program.
23240
23241 @item size, s
23242 Size of frames to generate.  This must be set.
23243
23244 @item format
23245 Pixel format to use for the generated frames.  This must be set.
23246
23247 @item rate, r
23248 Number of frames generated every second.  Default value is '25'.
23249
23250 @end table
23251
23252 For details of how the program loading works, see the @ref{program_opencl}
23253 filter.
23254
23255 Example programs:
23256
23257 @itemize
23258 @item
23259 Generate a colour ramp by setting pixel values from the position of the pixel
23260 in the output image.  (Note that this will work with all pixel formats, but
23261 the generated output will not be the same.)
23262 @verbatim
23263 __kernel void ramp(__write_only image2d_t dst,
23264                    unsigned int index)
23265 {
23266     int2 loc = (int2)(get_global_id(0), get_global_id(1));
23267
23268     float4 val;
23269     val.xy = val.zw = convert_float2(loc) / convert_float2(get_image_dim(dst));
23270
23271     write_imagef(dst, loc, val);
23272 }
23273 @end verbatim
23274
23275 @item
23276 Generate a Sierpinski carpet pattern, panning by a single pixel each frame.
23277 @verbatim
23278 __kernel void sierpinski_carpet(__write_only image2d_t dst,
23279                                 unsigned int index)
23280 {
23281     int2 loc = (int2)(get_global_id(0), get_global_id(1));
23282
23283     float4 value = 0.0f;
23284     int x = loc.x + index;
23285     int y = loc.y + index;
23286     while (x > 0 || y > 0) {
23287         if (x % 3 == 1 && y % 3 == 1) {
23288             value = 1.0f;
23289             break;
23290         }
23291         x /= 3;
23292         y /= 3;
23293     }
23294
23295     write_imagef(dst, loc, value);
23296 }
23297 @end verbatim
23298
23299 @end itemize
23300
23301 @section sierpinski
23302
23303 Generate a Sierpinski carpet/triangle fractal, and randomly pan around.
23304
23305 This source accepts the following options:
23306
23307 @table @option
23308 @item size, s
23309 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
23310 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
23311
23312 @item rate, r
23313 Set frame rate, expressed as number of frames per second. Default
23314 value is "25".
23315
23316 @item seed
23317 Set seed which is used for random panning.
23318
23319 @item jump
23320 Set max jump for single pan destination. Allowed range is from 1 to 10000.
23321
23322 @item type
23323 Set fractal type, can be default @code{carpet} or @code{triangle}.
23324 @end table
23325
23326 @c man end VIDEO SOURCES
23327
23328 @chapter Video Sinks
23329 @c man begin VIDEO SINKS
23330
23331 Below is a description of the currently available video sinks.
23332
23333 @section buffersink
23334
23335 Buffer video frames, and make them available to the end of the filter
23336 graph.
23337
23338 This sink is mainly intended for programmatic use, in particular
23339 through the interface defined in @file{libavfilter/buffersink.h}
23340 or the options system.
23341
23342 It accepts a pointer to an AVBufferSinkContext structure, which
23343 defines the incoming buffers' formats, to be passed as the opaque
23344 parameter to @code{avfilter_init_filter} for initialization.
23345
23346 @section nullsink
23347
23348 Null video sink: do absolutely nothing with the input video. It is
23349 mainly useful as a template and for use in analysis / debugging
23350 tools.
23351
23352 @c man end VIDEO SINKS
23353
23354 @chapter Multimedia Filters
23355 @c man begin MULTIMEDIA FILTERS
23356
23357 Below is a description of the currently available multimedia filters.
23358
23359 @section abitscope
23360
23361 Convert input audio to a video output, displaying the audio bit scope.
23362
23363 The filter accepts the following options:
23364
23365 @table @option
23366 @item rate, r
23367 Set frame rate, expressed as number of frames per second. Default
23368 value is "25".
23369
23370 @item size, s
23371 Specify the video size for the output. For the syntax of this option, check the
23372 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23373 Default value is @code{1024x256}.
23374
23375 @item colors
23376 Specify list of colors separated by space or by '|' which will be used to
23377 draw channels. Unrecognized or missing colors will be replaced
23378 by white color.
23379 @end table
23380
23381 @section adrawgraph
23382 Draw a graph using input audio metadata.
23383
23384 See @ref{drawgraph}
23385
23386 @section agraphmonitor
23387
23388 See @ref{graphmonitor}.
23389
23390 @section ahistogram
23391
23392 Convert input audio to a video output, displaying the volume histogram.
23393
23394 The filter accepts the following options:
23395
23396 @table @option
23397 @item dmode
23398 Specify how histogram is calculated.
23399
23400 It accepts the following values:
23401 @table @samp
23402 @item single
23403 Use single histogram for all channels.
23404 @item separate
23405 Use separate histogram for each channel.
23406 @end table
23407 Default is @code{single}.
23408
23409 @item rate, r
23410 Set frame rate, expressed as number of frames per second. Default
23411 value is "25".
23412
23413 @item size, s
23414 Specify the video size for the output. For the syntax of this option, check the
23415 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23416 Default value is @code{hd720}.
23417
23418 @item scale
23419 Set display scale.
23420
23421 It accepts the following values:
23422 @table @samp
23423 @item log
23424 logarithmic
23425 @item sqrt
23426 square root
23427 @item cbrt
23428 cubic root
23429 @item lin
23430 linear
23431 @item rlog
23432 reverse logarithmic
23433 @end table
23434 Default is @code{log}.
23435
23436 @item ascale
23437 Set amplitude scale.
23438
23439 It accepts the following values:
23440 @table @samp
23441 @item log
23442 logarithmic
23443 @item lin
23444 linear
23445 @end table
23446 Default is @code{log}.
23447
23448 @item acount
23449 Set how much frames to accumulate in histogram.
23450 Default is 1. Setting this to -1 accumulates all frames.
23451
23452 @item rheight
23453 Set histogram ratio of window height.
23454
23455 @item slide
23456 Set sonogram sliding.
23457
23458 It accepts the following values:
23459 @table @samp
23460 @item replace
23461 replace old rows with new ones.
23462 @item scroll
23463 scroll from top to bottom.
23464 @end table
23465 Default is @code{replace}.
23466 @end table
23467
23468 @section aphasemeter
23469
23470 Measures phase of input audio, which is exported as metadata @code{lavfi.aphasemeter.phase},
23471 representing mean phase of current audio frame. A video output can also be produced and is
23472 enabled by default. The audio is passed through as first output.
23473
23474 Audio will be rematrixed to stereo if it has a different channel layout. Phase value is in
23475 range @code{[-1, 1]} where @code{-1} means left and right channels are completely out of phase
23476 and @code{1} means channels are in phase.
23477
23478 The filter accepts the following options, all related to its video output:
23479
23480 @table @option
23481 @item rate, r
23482 Set the output frame rate. Default value is @code{25}.
23483
23484 @item size, s
23485 Set the video size for the output. For the syntax of this option, check the
23486 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23487 Default value is @code{800x400}.
23488
23489 @item rc
23490 @item gc
23491 @item bc
23492 Specify the red, green, blue contrast. Default values are @code{2},
23493 @code{7} and @code{1}.
23494 Allowed range is @code{[0, 255]}.
23495
23496 @item mpc
23497 Set color which will be used for drawing median phase. If color is
23498 @code{none} which is default, no median phase value will be drawn.
23499
23500 @item video
23501 Enable video output. Default is enabled.
23502 @end table
23503
23504 @subsection phasing detection
23505
23506 The filter also detects out of phase and mono sequences in stereo streams.
23507 It logs the sequence start, end and duration when it lasts longer or as long as the minimum set.
23508
23509 The filter accepts the following options for this detection:
23510
23511 @table @option
23512 @item phasing
23513 Enable mono and out of phase detection. Default is disabled.
23514
23515 @item tolerance, t
23516 Set phase tolerance for mono detection, in amplitude ratio. Default is @code{0}.
23517 Allowed range is @code{[0, 1]}.
23518
23519 @item angle, a
23520 Set angle threshold for out of phase detection, in degree. Default is @code{170}.
23521 Allowed range is @code{[90, 180]}.
23522
23523 @item duration, d
23524 Set mono or out of phase duration until notification, expressed in seconds. Default is @code{2}.
23525 @end table
23526
23527 @subsection Examples
23528
23529 @itemize
23530 @item
23531 Complete example with @command{ffmpeg} to detect 1 second of mono with 0.001 phase tolerance:
23532 @example
23533 ffmpeg -i stereo.wav -af aphasemeter=video=0:phasing=1:duration=1:tolerance=0.001 -f null -
23534 @end example
23535 @end itemize
23536
23537 @section avectorscope
23538
23539 Convert input audio to a video output, representing the audio vector
23540 scope.
23541
23542 The filter is used to measure the difference between channels of stereo
23543 audio stream. A monaural signal, consisting of identical left and right
23544 signal, results in straight vertical line. Any stereo separation is visible
23545 as a deviation from this line, creating a Lissajous figure.
23546 If the straight (or deviation from it) but horizontal line appears this
23547 indicates that the left and right channels are out of phase.
23548
23549 The filter accepts the following options:
23550
23551 @table @option
23552 @item mode, m
23553 Set the vectorscope mode.
23554
23555 Available values are:
23556 @table @samp
23557 @item lissajous
23558 Lissajous rotated by 45 degrees.
23559
23560 @item lissajous_xy
23561 Same as above but not rotated.
23562
23563 @item polar
23564 Shape resembling half of circle.
23565 @end table
23566
23567 Default value is @samp{lissajous}.
23568
23569 @item size, s
23570 Set the video size for the output. For the syntax of this option, check the
23571 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23572 Default value is @code{400x400}.
23573
23574 @item rate, r
23575 Set the output frame rate. Default value is @code{25}.
23576
23577 @item rc
23578 @item gc
23579 @item bc
23580 @item ac
23581 Specify the red, green, blue and alpha contrast. Default values are @code{40},
23582 @code{160}, @code{80} and @code{255}.
23583 Allowed range is @code{[0, 255]}.
23584
23585 @item rf
23586 @item gf
23587 @item bf
23588 @item af
23589 Specify the red, green, blue and alpha fade. Default values are @code{15},
23590 @code{10}, @code{5} and @code{5}.
23591 Allowed range is @code{[0, 255]}.
23592
23593 @item zoom
23594 Set the zoom factor. Default value is @code{1}. Allowed range is @code{[0, 10]}.
23595 Values lower than @var{1} will auto adjust zoom factor to maximal possible value.
23596
23597 @item draw
23598 Set the vectorscope drawing mode.
23599
23600 Available values are:
23601 @table @samp
23602 @item dot
23603 Draw dot for each sample.
23604
23605 @item line
23606 Draw line between previous and current sample.
23607 @end table
23608
23609 Default value is @samp{dot}.
23610
23611 @item scale
23612 Specify amplitude scale of audio samples.
23613
23614 Available values are:
23615 @table @samp
23616 @item lin
23617 Linear.
23618
23619 @item sqrt
23620 Square root.
23621
23622 @item cbrt
23623 Cubic root.
23624
23625 @item log
23626 Logarithmic.
23627 @end table
23628
23629 @item swap
23630 Swap left channel axis with right channel axis.
23631
23632 @item mirror
23633 Mirror axis.
23634
23635 @table @samp
23636 @item none
23637 No mirror.
23638
23639 @item x
23640 Mirror only x axis.
23641
23642 @item y
23643 Mirror only y axis.
23644
23645 @item xy
23646 Mirror both axis.
23647 @end table
23648
23649 @end table
23650
23651 @subsection Examples
23652
23653 @itemize
23654 @item
23655 Complete example using @command{ffplay}:
23656 @example
23657 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
23658              [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
23659 @end example
23660 @end itemize
23661
23662 @section bench, abench
23663
23664 Benchmark part of a filtergraph.
23665
23666 The filter accepts the following options:
23667
23668 @table @option
23669 @item action
23670 Start or stop a timer.
23671
23672 Available values are:
23673 @table @samp
23674 @item start
23675 Get the current time, set it as frame metadata (using the key
23676 @code{lavfi.bench.start_time}), and forward the frame to the next filter.
23677
23678 @item stop
23679 Get the current time and fetch the @code{lavfi.bench.start_time} metadata from
23680 the input frame metadata to get the time difference. Time difference, average,
23681 maximum and minimum time (respectively @code{t}, @code{avg}, @code{max} and
23682 @code{min}) are then printed. The timestamps are expressed in seconds.
23683 @end table
23684 @end table
23685
23686 @subsection Examples
23687
23688 @itemize
23689 @item
23690 Benchmark @ref{selectivecolor} filter:
23691 @example
23692 bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
23693 @end example
23694 @end itemize
23695
23696 @section concat
23697
23698 Concatenate audio and video streams, joining them together one after the
23699 other.
23700
23701 The filter works on segments of synchronized video and audio streams. All
23702 segments must have the same number of streams of each type, and that will
23703 also be the number of streams at output.
23704
23705 The filter accepts the following options:
23706
23707 @table @option
23708
23709 @item n
23710 Set the number of segments. Default is 2.
23711
23712 @item v
23713 Set the number of output video streams, that is also the number of video
23714 streams in each segment. Default is 1.
23715
23716 @item a
23717 Set the number of output audio streams, that is also the number of audio
23718 streams in each segment. Default is 0.
23719
23720 @item unsafe
23721 Activate unsafe mode: do not fail if segments have a different format.
23722
23723 @end table
23724
23725 The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then
23726 @var{a} audio outputs.
23727
23728 There are @var{n}x(@var{v}+@var{a}) inputs: first the inputs for the first
23729 segment, in the same order as the outputs, then the inputs for the second
23730 segment, etc.
23731
23732 Related streams do not always have exactly the same duration, for various
23733 reasons including codec frame size or sloppy authoring. For that reason,
23734 related synchronized streams (e.g. a video and its audio track) should be
23735 concatenated at once. The concat filter will use the duration of the longest
23736 stream in each segment (except the last one), and if necessary pad shorter
23737 audio streams with silence.
23738
23739 For this filter to work correctly, all segments must start at timestamp 0.
23740
23741 All corresponding streams must have the same parameters in all segments; the
23742 filtering system will automatically select a common pixel format for video
23743 streams, and a common sample format, sample rate and channel layout for
23744 audio streams, but other settings, such as resolution, must be converted
23745 explicitly by the user.
23746
23747 Different frame rates are acceptable but will result in variable frame rate
23748 at output; be sure to configure the output file to handle it.
23749
23750 @subsection Examples
23751
23752 @itemize
23753 @item
23754 Concatenate an opening, an episode and an ending, all in bilingual version
23755 (video in stream 0, audio in streams 1 and 2):
23756 @example
23757 ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
23758   '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
23759    concat=n=3:v=1:a=2 [v] [a1] [a2]' \
23760   -map '[v]' -map '[a1]' -map '[a2]' output.mkv
23761 @end example
23762
23763 @item
23764 Concatenate two parts, handling audio and video separately, using the
23765 (a)movie sources, and adjusting the resolution:
23766 @example
23767 movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
23768 movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
23769 [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
23770 @end example
23771 Note that a desync will happen at the stitch if the audio and video streams
23772 do not have exactly the same duration in the first file.
23773
23774 @end itemize
23775
23776 @subsection Commands
23777
23778 This filter supports the following commands:
23779 @table @option
23780 @item next
23781 Close the current segment and step to the next one
23782 @end table
23783
23784 @anchor{ebur128}
23785 @section ebur128
23786
23787 EBU R128 scanner filter. This filter takes an audio stream and analyzes its loudness
23788 level. By default, it logs a message at a frequency of 10Hz with the
23789 Momentary loudness (identified by @code{M}), Short-term loudness (@code{S}),
23790 Integrated loudness (@code{I}) and Loudness Range (@code{LRA}).
23791
23792 The filter can only analyze streams which have a sampling rate of 48000 Hz and whose
23793 sample format is double-precision floating point. The input stream will be converted to
23794 this specification, if needed. Users may need to insert aformat and/or aresample filters
23795 after this filter to obtain the original parameters.
23796
23797 The filter also has a video output (see the @var{video} option) with a real
23798 time graph to observe the loudness evolution. The graphic contains the logged
23799 message mentioned above, so it is not printed anymore when this option is set,
23800 unless the verbose logging is set. The main graphing area contains the
23801 short-term loudness (3 seconds of analysis), and the gauge on the right is for
23802 the momentary loudness (400 milliseconds), but can optionally be configured
23803 to instead display short-term loudness (see @var{gauge}).
23804
23805 The green area marks a  +/- 1LU target range around the target loudness
23806 (-23LUFS by default, unless modified through @var{target}).
23807
23808 More information about the Loudness Recommendation EBU R128 on
23809 @url{http://tech.ebu.ch/loudness}.
23810
23811 The filter accepts the following options:
23812
23813 @table @option
23814
23815 @item video
23816 Activate the video output. The audio stream is passed unchanged whether this
23817 option is set or no. The video stream will be the first output stream if
23818 activated. Default is @code{0}.
23819
23820 @item size
23821 Set the video size. This option is for video only. For the syntax of this
23822 option, check the
23823 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23824 Default and minimum resolution is @code{640x480}.
23825
23826 @item meter
23827 Set the EBU scale meter. Default is @code{9}. Common values are @code{9} and
23828 @code{18}, respectively for EBU scale meter +9 and EBU scale meter +18. Any
23829 other integer value between this range is allowed.
23830
23831 @item metadata
23832 Set metadata injection. If set to @code{1}, the audio input will be segmented
23833 into 100ms output frames, each of them containing various loudness information
23834 in metadata.  All the metadata keys are prefixed with @code{lavfi.r128.}.
23835
23836 Default is @code{0}.
23837
23838 @item framelog
23839 Force the frame logging level.
23840
23841 Available values are:
23842 @table @samp
23843 @item info
23844 information logging level
23845 @item verbose
23846 verbose logging level
23847 @end table
23848
23849 By default, the logging level is set to @var{info}. If the @option{video} or
23850 the @option{metadata} options are set, it switches to @var{verbose}.
23851
23852 @item peak
23853 Set peak mode(s).
23854
23855 Available modes can be cumulated (the option is a @code{flag} type). Possible
23856 values are:
23857 @table @samp
23858 @item none
23859 Disable any peak mode (default).
23860 @item sample
23861 Enable sample-peak mode.
23862
23863 Simple peak mode looking for the higher sample value. It logs a message
23864 for sample-peak (identified by @code{SPK}).
23865 @item true
23866 Enable true-peak mode.
23867
23868 If enabled, the peak lookup is done on an over-sampled version of the input
23869 stream for better peak accuracy. It logs a message for true-peak.
23870 (identified by @code{TPK}) and true-peak per frame (identified by @code{FTPK}).
23871 This mode requires a build with @code{libswresample}.
23872 @end table
23873
23874 @item dualmono
23875 Treat mono input files as "dual mono". If a mono file is intended for playback
23876 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
23877 If set to @code{true}, this option will compensate for this effect.
23878 Multi-channel input files are not affected by this option.
23879
23880 @item panlaw
23881 Set a specific pan law to be used for the measurement of dual mono files.
23882 This parameter is optional, and has a default value of -3.01dB.
23883
23884 @item target
23885 Set a specific target level (in LUFS) used as relative zero in the visualization.
23886 This parameter is optional and has a default value of -23LUFS as specified
23887 by EBU R128. However, material published online may prefer a level of -16LUFS
23888 (e.g. for use with podcasts or video platforms).
23889
23890 @item gauge
23891 Set the value displayed by the gauge. Valid values are @code{momentary} and s
23892 @code{shortterm}. By default the momentary value will be used, but in certain
23893 scenarios it may be more useful to observe the short term value instead (e.g.
23894 live mixing).
23895
23896 @item scale
23897 Sets the display scale for the loudness. Valid parameters are @code{absolute}
23898 (in LUFS) or @code{relative} (LU) relative to the target. This only affects the
23899 video output, not the summary or continuous log output.
23900 @end table
23901
23902 @subsection Examples
23903
23904 @itemize
23905 @item
23906 Real-time graph using @command{ffplay}, with a EBU scale meter +18:
23907 @example
23908 ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
23909 @end example
23910
23911 @item
23912 Run an analysis with @command{ffmpeg}:
23913 @example
23914 ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
23915 @end example
23916 @end itemize
23917
23918 @section interleave, ainterleave
23919
23920 Temporally interleave frames from several inputs.
23921
23922 @code{interleave} works with video inputs, @code{ainterleave} with audio.
23923
23924 These filters read frames from several inputs and send the oldest
23925 queued frame to the output.
23926
23927 Input streams must have well defined, monotonically increasing frame
23928 timestamp values.
23929
23930 In order to submit one frame to output, these filters need to enqueue
23931 at least one frame for each input, so they cannot work in case one
23932 input is not yet terminated and will not receive incoming frames.
23933
23934 For example consider the case when one input is a @code{select} filter
23935 which always drops input frames. The @code{interleave} filter will keep
23936 reading from that input, but it will never be able to send new frames
23937 to output until the input sends an end-of-stream signal.
23938
23939 Also, depending on inputs synchronization, the filters will drop
23940 frames in case one input receives more frames than the other ones, and
23941 the queue is already filled.
23942
23943 These filters accept the following options:
23944
23945 @table @option
23946 @item nb_inputs, n
23947 Set the number of different inputs, it is 2 by default.
23948
23949 @item duration
23950 How to determine the end-of-stream.
23951
23952 @table @option
23953 @item longest
23954 The duration of the longest input. (default)
23955
23956 @item shortest
23957 The duration of the shortest input.
23958
23959 @item first
23960 The duration of the first input.
23961 @end table
23962
23963 @end table
23964
23965 @subsection Examples
23966
23967 @itemize
23968 @item
23969 Interleave frames belonging to different streams using @command{ffmpeg}:
23970 @example
23971 ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
23972 @end example
23973
23974 @item
23975 Add flickering blur effect:
23976 @example
23977 select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
23978 @end example
23979 @end itemize
23980
23981 @section metadata, ametadata
23982
23983 Manipulate frame metadata.
23984
23985 This filter accepts the following options:
23986
23987 @table @option
23988 @item mode
23989 Set mode of operation of the filter.
23990
23991 Can be one of the following:
23992
23993 @table @samp
23994 @item select
23995 If both @code{value} and @code{key} is set, select frames
23996 which have such metadata. If only @code{key} is set, select
23997 every frame that has such key in metadata.
23998
23999 @item add
24000 Add new metadata @code{key} and @code{value}. If key is already available
24001 do nothing.
24002
24003 @item modify
24004 Modify value of already present key.
24005
24006 @item delete
24007 If @code{value} is set, delete only keys that have such value.
24008 Otherwise, delete key. If @code{key} is not set, delete all metadata values in
24009 the frame.
24010
24011 @item print
24012 Print key and its value if metadata was found. If @code{key} is not set print all
24013 metadata values available in frame.
24014 @end table
24015
24016 @item key
24017 Set key used with all modes. Must be set for all modes except @code{print} and @code{delete}.
24018
24019 @item value
24020 Set metadata value which will be used. This option is mandatory for
24021 @code{modify} and @code{add} mode.
24022
24023 @item function
24024 Which function to use when comparing metadata value and @code{value}.
24025
24026 Can be one of following:
24027
24028 @table @samp
24029 @item same_str
24030 Values are interpreted as strings, returns true if metadata value is same as @code{value}.
24031
24032 @item starts_with
24033 Values are interpreted as strings, returns true if metadata value starts with
24034 the @code{value} option string.
24035
24036 @item less
24037 Values are interpreted as floats, returns true if metadata value is less than @code{value}.
24038
24039 @item equal
24040 Values are interpreted as floats, returns true if @code{value} is equal with metadata value.
24041
24042 @item greater
24043 Values are interpreted as floats, returns true if metadata value is greater than @code{value}.
24044
24045 @item expr
24046 Values are interpreted as floats, returns true if expression from option @code{expr}
24047 evaluates to true.
24048
24049 @item ends_with
24050 Values are interpreted as strings, returns true if metadata value ends with
24051 the @code{value} option string.
24052 @end table
24053
24054 @item expr
24055 Set expression which is used when @code{function} is set to @code{expr}.
24056 The expression is evaluated through the eval API and can contain the following
24057 constants:
24058
24059 @table @option
24060 @item VALUE1
24061 Float representation of @code{value} from metadata key.
24062
24063 @item VALUE2
24064 Float representation of @code{value} as supplied by user in @code{value} option.
24065 @end table
24066
24067 @item file
24068 If specified in @code{print} mode, output is written to the named file. Instead of
24069 plain filename any writable url can be specified. Filename ``-'' is a shorthand
24070 for standard output. If @code{file} option is not set, output is written to the log
24071 with AV_LOG_INFO loglevel.
24072
24073 @item direct
24074 Reduces buffering in print mode when output is written to a URL set using @var{file}.
24075
24076 @end table
24077
24078 @subsection Examples
24079
24080 @itemize
24081 @item
24082 Print all metadata values for frames with key @code{lavfi.signalstats.YDIF} with values
24083 between 0 and 1.
24084 @example
24085 signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
24086 @end example
24087 @item
24088 Print silencedetect output to file @file{metadata.txt}.
24089 @example
24090 silencedetect,ametadata=mode=print:file=metadata.txt
24091 @end example
24092 @item
24093 Direct all metadata to a pipe with file descriptor 4.
24094 @example
24095 metadata=mode=print:file='pipe\:4'
24096 @end example
24097 @end itemize
24098
24099 @section perms, aperms
24100
24101 Set read/write permissions for the output frames.
24102
24103 These filters are mainly aimed at developers to test direct path in the
24104 following filter in the filtergraph.
24105
24106 The filters accept the following options:
24107
24108 @table @option
24109 @item mode
24110 Select the permissions mode.
24111
24112 It accepts the following values:
24113 @table @samp
24114 @item none
24115 Do nothing. This is the default.
24116 @item ro
24117 Set all the output frames read-only.
24118 @item rw
24119 Set all the output frames directly writable.
24120 @item toggle
24121 Make the frame read-only if writable, and writable if read-only.
24122 @item random
24123 Set each output frame read-only or writable randomly.
24124 @end table
24125
24126 @item seed
24127 Set the seed for the @var{random} mode, must be an integer included between
24128 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
24129 @code{-1}, the filter will try to use a good random seed on a best effort
24130 basis.
24131 @end table
24132
24133 Note: in case of auto-inserted filter between the permission filter and the
24134 following one, the permission might not be received as expected in that
24135 following filter. Inserting a @ref{format} or @ref{aformat} filter before the
24136 perms/aperms filter can avoid this problem.
24137
24138 @section realtime, arealtime
24139
24140 Slow down filtering to match real time approximately.
24141
24142 These filters will pause the filtering for a variable amount of time to
24143 match the output rate with the input timestamps.
24144 They are similar to the @option{re} option to @code{ffmpeg}.
24145
24146 They accept the following options:
24147
24148 @table @option
24149 @item limit
24150 Time limit for the pauses. Any pause longer than that will be considered
24151 a timestamp discontinuity and reset the timer. Default is 2 seconds.
24152 @item speed
24153 Speed factor for processing. The value must be a float larger than zero.
24154 Values larger than 1.0 will result in faster than realtime processing,
24155 smaller will slow processing down. The @var{limit} is automatically adapted
24156 accordingly. Default is 1.0.
24157
24158 A processing speed faster than what is possible without these filters cannot
24159 be achieved.
24160 @end table
24161
24162 @anchor{select}
24163 @section select, aselect
24164
24165 Select frames to pass in output.
24166
24167 This filter accepts the following options:
24168
24169 @table @option
24170
24171 @item expr, e
24172 Set expression, which is evaluated for each input frame.
24173
24174 If the expression is evaluated to zero, the frame is discarded.
24175
24176 If the evaluation result is negative or NaN, the frame is sent to the
24177 first output; otherwise it is sent to the output with index
24178 @code{ceil(val)-1}, assuming that the input index starts from 0.
24179
24180 For example a value of @code{1.2} corresponds to the output with index
24181 @code{ceil(1.2)-1 = 2-1 = 1}, that is the second output.
24182
24183 @item outputs, n
24184 Set the number of outputs. The output to which to send the selected
24185 frame is based on the result of the evaluation. Default value is 1.
24186 @end table
24187
24188 The expression can contain the following constants:
24189
24190 @table @option
24191 @item n
24192 The (sequential) number of the filtered frame, starting from 0.
24193
24194 @item selected_n
24195 The (sequential) number of the selected frame, starting from 0.
24196
24197 @item prev_selected_n
24198 The sequential number of the last selected frame. It's NAN if undefined.
24199
24200 @item TB
24201 The timebase of the input timestamps.
24202
24203 @item pts
24204 The PTS (Presentation TimeStamp) of the filtered video frame,
24205 expressed in @var{TB} units. It's NAN if undefined.
24206
24207 @item t
24208 The PTS of the filtered video frame,
24209 expressed in seconds. It's NAN if undefined.
24210
24211 @item prev_pts
24212 The PTS of the previously filtered video frame. It's NAN if undefined.
24213
24214 @item prev_selected_pts
24215 The PTS of the last previously filtered video frame. It's NAN if undefined.
24216
24217 @item prev_selected_t
24218 The PTS of the last previously selected video frame, expressed in seconds. It's NAN if undefined.
24219
24220 @item start_pts
24221 The PTS of the first video frame in the video. It's NAN if undefined.
24222
24223 @item start_t
24224 The time of the first video frame in the video. It's NAN if undefined.
24225
24226 @item pict_type @emph{(video only)}
24227 The type of the filtered frame. It can assume one of the following
24228 values:
24229 @table @option
24230 @item I
24231 @item P
24232 @item B
24233 @item S
24234 @item SI
24235 @item SP
24236 @item BI
24237 @end table
24238
24239 @item interlace_type @emph{(video only)}
24240 The frame interlace type. It can assume one of the following values:
24241 @table @option
24242 @item PROGRESSIVE
24243 The frame is progressive (not interlaced).
24244 @item TOPFIRST
24245 The frame is top-field-first.
24246 @item BOTTOMFIRST
24247 The frame is bottom-field-first.
24248 @end table
24249
24250 @item consumed_sample_n @emph{(audio only)}
24251 the number of selected samples before the current frame
24252
24253 @item samples_n @emph{(audio only)}
24254 the number of samples in the current frame
24255
24256 @item sample_rate @emph{(audio only)}
24257 the input sample rate
24258
24259 @item key
24260 This is 1 if the filtered frame is a key-frame, 0 otherwise.
24261
24262 @item pos
24263 the position in the file of the filtered frame, -1 if the information
24264 is not available (e.g. for synthetic video)
24265
24266 @item scene @emph{(video only)}
24267 value between 0 and 1 to indicate a new scene; a low value reflects a low
24268 probability for the current frame to introduce a new scene, while a higher
24269 value means the current frame is more likely to be one (see the example below)
24270
24271 @item concatdec_select
24272 The concat demuxer can select only part of a concat input file by setting an
24273 inpoint and an outpoint, but the output packets may not be entirely contained
24274 in the selected interval. By using this variable, it is possible to skip frames
24275 generated by the concat demuxer which are not exactly contained in the selected
24276 interval.
24277
24278 This works by comparing the frame pts against the @var{lavf.concat.start_time}
24279 and the @var{lavf.concat.duration} packet metadata values which are also
24280 present in the decoded frames.
24281
24282 The @var{concatdec_select} variable is -1 if the frame pts is at least
24283 start_time and either the duration metadata is missing or the frame pts is less
24284 than start_time + duration, 0 otherwise, and NaN if the start_time metadata is
24285 missing.
24286
24287 That basically means that an input frame is selected if its pts is within the
24288 interval set by the concat demuxer.
24289
24290 @end table
24291
24292 The default value of the select expression is "1".
24293
24294 @subsection Examples
24295
24296 @itemize
24297 @item
24298 Select all frames in input:
24299 @example
24300 select
24301 @end example
24302
24303 The example above is the same as:
24304 @example
24305 select=1
24306 @end example
24307
24308 @item
24309 Skip all frames:
24310 @example
24311 select=0
24312 @end example
24313
24314 @item
24315 Select only I-frames:
24316 @example
24317 select='eq(pict_type\,I)'
24318 @end example
24319
24320 @item
24321 Select one frame every 100:
24322 @example
24323 select='not(mod(n\,100))'
24324 @end example
24325
24326 @item
24327 Select only frames contained in the 10-20 time interval:
24328 @example
24329 select=between(t\,10\,20)
24330 @end example
24331
24332 @item
24333 Select only I-frames contained in the 10-20 time interval:
24334 @example
24335 select=between(t\,10\,20)*eq(pict_type\,I)
24336 @end example
24337
24338 @item
24339 Select frames with a minimum distance of 10 seconds:
24340 @example
24341 select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
24342 @end example
24343
24344 @item
24345 Use aselect to select only audio frames with samples number > 100:
24346 @example
24347 aselect='gt(samples_n\,100)'
24348 @end example
24349
24350 @item
24351 Create a mosaic of the first scenes:
24352 @example
24353 ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
24354 @end example
24355
24356 Comparing @var{scene} against a value between 0.3 and 0.5 is generally a sane
24357 choice.
24358
24359 @item
24360 Send even and odd frames to separate outputs, and compose them:
24361 @example
24362 select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
24363 @end example
24364
24365 @item
24366 Select useful frames from an ffconcat file which is using inpoints and
24367 outpoints but where the source files are not intra frame only.
24368 @example
24369 ffmpeg -copyts -vsync 0 -segment_time_metadata 1 -i input.ffconcat -vf select=concatdec_select -af aselect=concatdec_select output.avi
24370 @end example
24371 @end itemize
24372
24373 @section sendcmd, asendcmd
24374
24375 Send commands to filters in the filtergraph.
24376
24377 These filters read commands to be sent to other filters in the
24378 filtergraph.
24379
24380 @code{sendcmd} must be inserted between two video filters,
24381 @code{asendcmd} must be inserted between two audio filters, but apart
24382 from that they act the same way.
24383
24384 The specification of commands can be provided in the filter arguments
24385 with the @var{commands} option, or in a file specified by the
24386 @var{filename} option.
24387
24388 These filters accept the following options:
24389 @table @option
24390 @item commands, c
24391 Set the commands to be read and sent to the other filters.
24392 @item filename, f
24393 Set the filename of the commands to be read and sent to the other
24394 filters.
24395 @end table
24396
24397 @subsection Commands syntax
24398
24399 A commands description consists of a sequence of interval
24400 specifications, comprising a list of commands to be executed when a
24401 particular event related to that interval occurs. The occurring event
24402 is typically the current frame time entering or leaving a given time
24403 interval.
24404
24405 An interval is specified by the following syntax:
24406 @example
24407 @var{START}[-@var{END}] @var{COMMANDS};
24408 @end example
24409
24410 The time interval is specified by the @var{START} and @var{END} times.
24411 @var{END} is optional and defaults to the maximum time.
24412
24413 The current frame time is considered within the specified interval if
24414 it is included in the interval [@var{START}, @var{END}), that is when
24415 the time is greater or equal to @var{START} and is lesser than
24416 @var{END}.
24417
24418 @var{COMMANDS} consists of a sequence of one or more command
24419 specifications, separated by ",", relating to that interval.  The
24420 syntax of a command specification is given by:
24421 @example
24422 [@var{FLAGS}] @var{TARGET} @var{COMMAND} @var{ARG}
24423 @end example
24424
24425 @var{FLAGS} is optional and specifies the type of events relating to
24426 the time interval which enable sending the specified command, and must
24427 be a non-null sequence of identifier flags separated by "+" or "|" and
24428 enclosed between "[" and "]".
24429
24430 The following flags are recognized:
24431 @table @option
24432 @item enter
24433 The command is sent when the current frame timestamp enters the
24434 specified interval. In other words, the command is sent when the
24435 previous frame timestamp was not in the given interval, and the
24436 current is.
24437
24438 @item leave
24439 The command is sent when the current frame timestamp leaves the
24440 specified interval. In other words, the command is sent when the
24441 previous frame timestamp was in the given interval, and the
24442 current is not.
24443
24444 @item expr
24445 The command @var{ARG} is interpreted as expression and result of
24446 expression is passed as @var{ARG}.
24447
24448 The expression is evaluated through the eval API and can contain the following
24449 constants:
24450
24451 @table @option
24452 @item POS
24453 Original position in the file of the frame, or undefined if undefined
24454 for the current frame.
24455
24456 @item PTS
24457 The presentation timestamp in input.
24458
24459 @item N
24460 The count of the input frame for video or audio, starting from 0.
24461
24462 @item T
24463 The time in seconds of the current frame.
24464
24465 @item TS
24466 The start time in seconds of the current command interval.
24467
24468 @item TE
24469 The end time in seconds of the current command interval.
24470
24471 @item TI
24472 The interpolated time of the current command interval, TI = (T - TS) / (TE - TS).
24473 @end table
24474
24475 @end table
24476
24477 If @var{FLAGS} is not specified, a default value of @code{[enter]} is
24478 assumed.
24479
24480 @var{TARGET} specifies the target of the command, usually the name of
24481 the filter class or a specific filter instance name.
24482
24483 @var{COMMAND} specifies the name of the command for the target filter.
24484
24485 @var{ARG} is optional and specifies the optional list of argument for
24486 the given @var{COMMAND}.
24487
24488 Between one interval specification and another, whitespaces, or
24489 sequences of characters starting with @code{#} until the end of line,
24490 are ignored and can be used to annotate comments.
24491
24492 A simplified BNF description of the commands specification syntax
24493 follows:
24494 @example
24495 @var{COMMAND_FLAG}  ::= "enter" | "leave"
24496 @var{COMMAND_FLAGS} ::= @var{COMMAND_FLAG} [(+|"|")@var{COMMAND_FLAG}]
24497 @var{COMMAND}       ::= ["[" @var{COMMAND_FLAGS} "]"] @var{TARGET} @var{COMMAND} [@var{ARG}]
24498 @var{COMMANDS}      ::= @var{COMMAND} [,@var{COMMANDS}]
24499 @var{INTERVAL}      ::= @var{START}[-@var{END}] @var{COMMANDS}
24500 @var{INTERVALS}     ::= @var{INTERVAL}[;@var{INTERVALS}]
24501 @end example
24502
24503 @subsection Examples
24504
24505 @itemize
24506 @item
24507 Specify audio tempo change at second 4:
24508 @example
24509 asendcmd=c='4.0 atempo tempo 1.5',atempo
24510 @end example
24511
24512 @item
24513 Target a specific filter instance:
24514 @example
24515 asendcmd=c='4.0 atempo@@my tempo 1.5',atempo@@my
24516 @end example
24517
24518 @item
24519 Specify a list of drawtext and hue commands in a file.
24520 @example
24521 # show text in the interval 5-10
24522 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
24523          [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
24524
24525 # desaturate the image in the interval 15-20
24526 15.0-20.0 [enter] hue s 0,
24527           [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
24528           [leave] hue s 1,
24529           [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
24530
24531 # apply an exponential saturation fade-out effect, starting from time 25
24532 25 [enter] hue s exp(25-t)
24533 @end example
24534
24535 A filtergraph allowing to read and process the above command list
24536 stored in a file @file{test.cmd}, can be specified with:
24537 @example
24538 sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
24539 @end example
24540 @end itemize
24541
24542 @anchor{setpts}
24543 @section setpts, asetpts
24544
24545 Change the PTS (presentation timestamp) of the input frames.
24546
24547 @code{setpts} works on video frames, @code{asetpts} on audio frames.
24548
24549 This filter accepts the following options:
24550
24551 @table @option
24552
24553 @item expr
24554 The expression which is evaluated for each frame to construct its timestamp.
24555
24556 @end table
24557
24558 The expression is evaluated through the eval API and can contain the following
24559 constants:
24560
24561 @table @option
24562 @item FRAME_RATE, FR
24563 frame rate, only defined for constant frame-rate video
24564
24565 @item PTS
24566 The presentation timestamp in input
24567
24568 @item N
24569 The count of the input frame for video or the number of consumed samples,
24570 not including the current frame for audio, starting from 0.
24571
24572 @item NB_CONSUMED_SAMPLES
24573 The number of consumed samples, not including the current frame (only
24574 audio)
24575
24576 @item NB_SAMPLES, S
24577 The number of samples in the current frame (only audio)
24578
24579 @item SAMPLE_RATE, SR
24580 The audio sample rate.
24581
24582 @item STARTPTS
24583 The PTS of the first frame.
24584
24585 @item STARTT
24586 the time in seconds of the first frame
24587
24588 @item INTERLACED
24589 State whether the current frame is interlaced.
24590
24591 @item T
24592 the time in seconds of the current frame
24593
24594 @item POS
24595 original position in the file of the frame, or undefined if undefined
24596 for the current frame
24597
24598 @item PREV_INPTS
24599 The previous input PTS.
24600
24601 @item PREV_INT
24602 previous input time in seconds
24603
24604 @item PREV_OUTPTS
24605 The previous output PTS.
24606
24607 @item PREV_OUTT
24608 previous output time in seconds
24609
24610 @item RTCTIME
24611 The wallclock (RTC) time in microseconds. This is deprecated, use time(0)
24612 instead.
24613
24614 @item RTCSTART
24615 The wallclock (RTC) time at the start of the movie in microseconds.
24616
24617 @item TB
24618 The timebase of the input timestamps.
24619
24620 @end table
24621
24622 @subsection Examples
24623
24624 @itemize
24625 @item
24626 Start counting PTS from zero
24627 @example
24628 setpts=PTS-STARTPTS
24629 @end example
24630
24631 @item
24632 Apply fast motion effect:
24633 @example
24634 setpts=0.5*PTS
24635 @end example
24636
24637 @item
24638 Apply slow motion effect:
24639 @example
24640 setpts=2.0*PTS
24641 @end example
24642
24643 @item
24644 Set fixed rate of 25 frames per second:
24645 @example
24646 setpts=N/(25*TB)
24647 @end example
24648
24649 @item
24650 Set fixed rate 25 fps with some jitter:
24651 @example
24652 setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
24653 @end example
24654
24655 @item
24656 Apply an offset of 10 seconds to the input PTS:
24657 @example
24658 setpts=PTS+10/TB
24659 @end example
24660
24661 @item
24662 Generate timestamps from a "live source" and rebase onto the current timebase:
24663 @example
24664 setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
24665 @end example
24666
24667 @item
24668 Generate timestamps by counting samples:
24669 @example
24670 asetpts=N/SR/TB
24671 @end example
24672
24673 @end itemize
24674
24675 @section setrange
24676
24677 Force color range for the output video frame.
24678
24679 The @code{setrange} filter marks the color range property for the
24680 output frames. It does not change the input frame, but only sets the
24681 corresponding property, which affects how the frame is treated by
24682 following filters.
24683
24684 The filter accepts the following options:
24685
24686 @table @option
24687
24688 @item range
24689 Available values are:
24690
24691 @table @samp
24692 @item auto
24693 Keep the same color range property.
24694
24695 @item unspecified, unknown
24696 Set the color range as unspecified.
24697
24698 @item limited, tv, mpeg
24699 Set the color range as limited.
24700
24701 @item full, pc, jpeg
24702 Set the color range as full.
24703 @end table
24704 @end table
24705
24706 @section settb, asettb
24707
24708 Set the timebase to use for the output frames timestamps.
24709 It is mainly useful for testing timebase configuration.
24710
24711 It accepts the following parameters:
24712
24713 @table @option
24714
24715 @item expr, tb
24716 The expression which is evaluated into the output timebase.
24717
24718 @end table
24719
24720 The value for @option{tb} is an arithmetic expression representing a
24721 rational. The expression can contain the constants "AVTB" (the default
24722 timebase), "intb" (the input timebase) and "sr" (the sample rate,
24723 audio only). Default value is "intb".
24724
24725 @subsection Examples
24726
24727 @itemize
24728 @item
24729 Set the timebase to 1/25:
24730 @example
24731 settb=expr=1/25
24732 @end example
24733
24734 @item
24735 Set the timebase to 1/10:
24736 @example
24737 settb=expr=0.1
24738 @end example
24739
24740 @item
24741 Set the timebase to 1001/1000:
24742 @example
24743 settb=1+0.001
24744 @end example
24745
24746 @item
24747 Set the timebase to 2*intb:
24748 @example
24749 settb=2*intb
24750 @end example
24751
24752 @item
24753 Set the default timebase value:
24754 @example
24755 settb=AVTB
24756 @end example
24757 @end itemize
24758
24759 @section showcqt
24760 Convert input audio to a video output representing frequency spectrum
24761 logarithmically using Brown-Puckette constant Q transform algorithm with
24762 direct frequency domain coefficient calculation (but the transform itself
24763 is not really constant Q, instead the Q factor is actually variable/clamped),
24764 with musical tone scale, from E0 to D#10.
24765
24766 The filter accepts the following options:
24767
24768 @table @option
24769 @item size, s
24770 Specify the video size for the output. It must be even. For the syntax of this option,
24771 check the @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24772 Default value is @code{1920x1080}.
24773
24774 @item fps, rate, r
24775 Set the output frame rate. Default value is @code{25}.
24776
24777 @item bar_h
24778 Set the bargraph height. It must be even. Default value is @code{-1} which
24779 computes the bargraph height automatically.
24780
24781 @item axis_h
24782 Set the axis height. It must be even. Default value is @code{-1} which computes
24783 the axis height automatically.
24784
24785 @item sono_h
24786 Set the sonogram height. It must be even. Default value is @code{-1} which
24787 computes the sonogram height automatically.
24788
24789 @item fullhd
24790 Set the fullhd resolution. This option is deprecated, use @var{size}, @var{s}
24791 instead. Default value is @code{1}.
24792
24793 @item sono_v, volume
24794 Specify the sonogram volume expression. It can contain variables:
24795 @table @option
24796 @item bar_v
24797 the @var{bar_v} evaluated expression
24798 @item frequency, freq, f
24799 the frequency where it is evaluated
24800 @item timeclamp, tc
24801 the value of @var{timeclamp} option
24802 @end table
24803 and functions:
24804 @table @option
24805 @item a_weighting(f)
24806 A-weighting of equal loudness
24807 @item b_weighting(f)
24808 B-weighting of equal loudness
24809 @item c_weighting(f)
24810 C-weighting of equal loudness.
24811 @end table
24812 Default value is @code{16}.
24813
24814 @item bar_v, volume2
24815 Specify the bargraph volume expression. It can contain variables:
24816 @table @option
24817 @item sono_v
24818 the @var{sono_v} evaluated expression
24819 @item frequency, freq, f
24820 the frequency where it is evaluated
24821 @item timeclamp, tc
24822 the value of @var{timeclamp} option
24823 @end table
24824 and functions:
24825 @table @option
24826 @item a_weighting(f)
24827 A-weighting of equal loudness
24828 @item b_weighting(f)
24829 B-weighting of equal loudness
24830 @item c_weighting(f)
24831 C-weighting of equal loudness.
24832 @end table
24833 Default value is @code{sono_v}.
24834
24835 @item sono_g, gamma
24836 Specify the sonogram gamma. Lower gamma makes the spectrum more contrast,
24837 higher gamma makes the spectrum having more range. Default value is @code{3}.
24838 Acceptable range is @code{[1, 7]}.
24839
24840 @item bar_g, gamma2
24841 Specify the bargraph gamma. Default value is @code{1}. Acceptable range is
24842 @code{[1, 7]}.
24843
24844 @item bar_t
24845 Specify the bargraph transparency level. Lower value makes the bargraph sharper.
24846 Default value is @code{1}. Acceptable range is @code{[0, 1]}.
24847
24848 @item timeclamp, tc
24849 Specify the transform timeclamp. At low frequency, there is trade-off between
24850 accuracy in time domain and frequency domain. If timeclamp is lower,
24851 event in time domain is represented more accurately (such as fast bass drum),
24852 otherwise event in frequency domain is represented more accurately
24853 (such as bass guitar). Acceptable range is @code{[0.002, 1]}. Default value is @code{0.17}.
24854
24855 @item attack
24856 Set attack time in seconds. The default is @code{0} (disabled). Otherwise, it
24857 limits future samples by applying asymmetric windowing in time domain, useful
24858 when low latency is required. Accepted range is @code{[0, 1]}.
24859
24860 @item basefreq
24861 Specify the transform base frequency. Default value is @code{20.01523126408007475},
24862 which is frequency 50 cents below E0. Acceptable range is @code{[10, 100000]}.
24863
24864 @item endfreq
24865 Specify the transform end frequency. Default value is @code{20495.59681441799654},
24866 which is frequency 50 cents above D#10. Acceptable range is @code{[10, 100000]}.
24867
24868 @item coeffclamp
24869 This option is deprecated and ignored.
24870
24871 @item tlength
24872 Specify the transform length in time domain. Use this option to control accuracy
24873 trade-off between time domain and frequency domain at every frequency sample.
24874 It can contain variables:
24875 @table @option
24876 @item frequency, freq, f
24877 the frequency where it is evaluated
24878 @item timeclamp, tc
24879 the value of @var{timeclamp} option.
24880 @end table
24881 Default value is @code{384*tc/(384+tc*f)}.
24882
24883 @item count
24884 Specify the transform count for every video frame. Default value is @code{6}.
24885 Acceptable range is @code{[1, 30]}.
24886
24887 @item fcount
24888 Specify the transform count for every single pixel. Default value is @code{0},
24889 which makes it computed automatically. Acceptable range is @code{[0, 10]}.
24890
24891 @item fontfile
24892 Specify font file for use with freetype to draw the axis. If not specified,
24893 use embedded font. Note that drawing with font file or embedded font is not
24894 implemented with custom @var{basefreq} and @var{endfreq}, use @var{axisfile}
24895 option instead.
24896
24897 @item font
24898 Specify fontconfig pattern. This has lower priority than @var{fontfile}. The
24899 @code{:} in the pattern may be replaced by @code{|} to avoid unnecessary
24900 escaping.
24901
24902 @item fontcolor
24903 Specify font color expression. This is arithmetic expression that should return
24904 integer value 0xRRGGBB. It can contain variables:
24905 @table @option
24906 @item frequency, freq, f
24907 the frequency where it is evaluated
24908 @item timeclamp, tc
24909 the value of @var{timeclamp} option
24910 @end table
24911 and functions:
24912 @table @option
24913 @item midi(f)
24914 midi number of frequency f, some midi numbers: E0(16), C1(24), C2(36), A4(69)
24915 @item r(x), g(x), b(x)
24916 red, green, and blue value of intensity x.
24917 @end table
24918 Default value is @code{st(0, (midi(f)-59.5)/12);
24919 st(1, if(between(ld(0),0,1), 0.5-0.5*cos(2*PI*ld(0)), 0));
24920 r(1-ld(1)) + b(ld(1))}.
24921
24922 @item axisfile
24923 Specify image file to draw the axis. This option override @var{fontfile} and
24924 @var{fontcolor} option.
24925
24926 @item axis, text
24927 Enable/disable drawing text to the axis. If it is set to @code{0}, drawing to
24928 the axis is disabled, ignoring @var{fontfile} and @var{axisfile} option.
24929 Default value is @code{1}.
24930
24931 @item csp
24932 Set colorspace. The accepted values are:
24933 @table @samp
24934 @item unspecified
24935 Unspecified (default)
24936
24937 @item bt709
24938 BT.709
24939
24940 @item fcc
24941 FCC
24942
24943 @item bt470bg
24944 BT.470BG or BT.601-6 625
24945
24946 @item smpte170m
24947 SMPTE-170M or BT.601-6 525
24948
24949 @item smpte240m
24950 SMPTE-240M
24951
24952 @item bt2020ncl
24953 BT.2020 with non-constant luminance
24954
24955 @end table
24956
24957 @item cscheme
24958 Set spectrogram color scheme. This is list of floating point values with format
24959 @code{left_r|left_g|left_b|right_r|right_g|right_b}.
24960 The default is @code{1|0.5|0|0|0.5|1}.
24961
24962 @end table
24963
24964 @subsection Examples
24965
24966 @itemize
24967 @item
24968 Playing audio while showing the spectrum:
24969 @example
24970 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
24971 @end example
24972
24973 @item
24974 Same as above, but with frame rate 30 fps:
24975 @example
24976 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
24977 @end example
24978
24979 @item
24980 Playing at 1280x720:
24981 @example
24982 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
24983 @end example
24984
24985 @item
24986 Disable sonogram display:
24987 @example
24988 sono_h=0
24989 @end example
24990
24991 @item
24992 A1 and its harmonics: A1, A2, (near)E3, A3:
24993 @example
24994 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),
24995                  asplit[a][out1]; [a] showcqt [out0]'
24996 @end example
24997
24998 @item
24999 Same as above, but with more accuracy in frequency domain:
25000 @example
25001 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),
25002                  asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]'
25003 @end example
25004
25005 @item
25006 Custom volume:
25007 @example
25008 bar_v=10:sono_v=bar_v*a_weighting(f)
25009 @end example
25010
25011 @item
25012 Custom gamma, now spectrum is linear to the amplitude.
25013 @example
25014 bar_g=2:sono_g=2
25015 @end example
25016
25017 @item
25018 Custom tlength equation:
25019 @example
25020 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)))'
25021 @end example
25022
25023 @item
25024 Custom fontcolor and fontfile, C-note is colored green, others are colored blue:
25025 @example
25026 fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
25027 @end example
25028
25029 @item
25030 Custom font using fontconfig:
25031 @example
25032 font='Courier New,Monospace,mono|bold'
25033 @end example
25034
25035 @item
25036 Custom frequency range with custom axis using image file:
25037 @example
25038 axisfile=myaxis.png:basefreq=40:endfreq=10000
25039 @end example
25040 @end itemize
25041
25042 @section showfreqs
25043
25044 Convert input audio to video output representing the audio power spectrum.
25045 Audio amplitude is on Y-axis while frequency is on X-axis.
25046
25047 The filter accepts the following options:
25048
25049 @table @option
25050 @item size, s
25051 Specify size of video. For the syntax of this option, check the
25052 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25053 Default is @code{1024x512}.
25054
25055 @item mode
25056 Set display mode.
25057 This set how each frequency bin will be represented.
25058
25059 It accepts the following values:
25060 @table @samp
25061 @item line
25062 @item bar
25063 @item dot
25064 @end table
25065 Default is @code{bar}.
25066
25067 @item ascale
25068 Set amplitude scale.
25069
25070 It accepts the following values:
25071 @table @samp
25072 @item lin
25073 Linear scale.
25074
25075 @item sqrt
25076 Square root scale.
25077
25078 @item cbrt
25079 Cubic root scale.
25080
25081 @item log
25082 Logarithmic scale.
25083 @end table
25084 Default is @code{log}.
25085
25086 @item fscale
25087 Set frequency scale.
25088
25089 It accepts the following values:
25090 @table @samp
25091 @item lin
25092 Linear scale.
25093
25094 @item log
25095 Logarithmic scale.
25096
25097 @item rlog
25098 Reverse logarithmic scale.
25099 @end table
25100 Default is @code{lin}.
25101
25102 @item win_size
25103 Set window size. Allowed range is from 16 to 65536.
25104
25105 Default is @code{2048}
25106
25107 @item win_func
25108 Set windowing function.
25109
25110 It accepts the following values:
25111 @table @samp
25112 @item rect
25113 @item bartlett
25114 @item hanning
25115 @item hamming
25116 @item blackman
25117 @item welch
25118 @item flattop
25119 @item bharris
25120 @item bnuttall
25121 @item bhann
25122 @item sine
25123 @item nuttall
25124 @item lanczos
25125 @item gauss
25126 @item tukey
25127 @item dolph
25128 @item cauchy
25129 @item parzen
25130 @item poisson
25131 @item bohman
25132 @end table
25133 Default is @code{hanning}.
25134
25135 @item overlap
25136 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
25137 which means optimal overlap for selected window function will be picked.
25138
25139 @item averaging
25140 Set time averaging. Setting this to 0 will display current maximal peaks.
25141 Default is @code{1}, which means time averaging is disabled.
25142
25143 @item colors
25144 Specify list of colors separated by space or by '|' which will be used to
25145 draw channel frequencies. Unrecognized or missing colors will be replaced
25146 by white color.
25147
25148 @item cmode
25149 Set channel display mode.
25150
25151 It accepts the following values:
25152 @table @samp
25153 @item combined
25154 @item separate
25155 @end table
25156 Default is @code{combined}.
25157
25158 @item minamp
25159 Set minimum amplitude used in @code{log} amplitude scaler.
25160
25161 @end table
25162
25163 @section showspatial
25164
25165 Convert stereo input audio to a video output, representing the spatial relationship
25166 between two channels.
25167
25168 The filter accepts the following options:
25169
25170 @table @option
25171 @item size, s
25172 Specify the video size for the output. For the syntax of this option, check the
25173 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25174 Default value is @code{512x512}.
25175
25176 @item win_size
25177 Set window size. Allowed range is from @var{1024} to @var{65536}. Default size is @var{4096}.
25178
25179 @item win_func
25180 Set window function.
25181
25182 It accepts the following values:
25183 @table @samp
25184 @item rect
25185 @item bartlett
25186 @item hann
25187 @item hanning
25188 @item hamming
25189 @item blackman
25190 @item welch
25191 @item flattop
25192 @item bharris
25193 @item bnuttall
25194 @item bhann
25195 @item sine
25196 @item nuttall
25197 @item lanczos
25198 @item gauss
25199 @item tukey
25200 @item dolph
25201 @item cauchy
25202 @item parzen
25203 @item poisson
25204 @item bohman
25205 @end table
25206
25207 Default value is @code{hann}.
25208
25209 @item overlap
25210 Set ratio of overlap window. Default value is @code{0.5}.
25211 When value is @code{1} overlap is set to recommended size for specific
25212 window function currently used.
25213 @end table
25214
25215 @anchor{showspectrum}
25216 @section showspectrum
25217
25218 Convert input audio to a video output, representing the audio frequency
25219 spectrum.
25220
25221 The filter accepts the following options:
25222
25223 @table @option
25224 @item size, s
25225 Specify the video size for the output. For the syntax of this option, check the
25226 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25227 Default value is @code{640x512}.
25228
25229 @item slide
25230 Specify how the spectrum should slide along the window.
25231
25232 It accepts the following values:
25233 @table @samp
25234 @item replace
25235 the samples start again on the left when they reach the right
25236 @item scroll
25237 the samples scroll from right to left
25238 @item fullframe
25239 frames are only produced when the samples reach the right
25240 @item rscroll
25241 the samples scroll from left to right
25242 @end table
25243
25244 Default value is @code{replace}.
25245
25246 @item mode
25247 Specify display mode.
25248
25249 It accepts the following values:
25250 @table @samp
25251 @item combined
25252 all channels are displayed in the same row
25253 @item separate
25254 all channels are displayed in separate rows
25255 @end table
25256
25257 Default value is @samp{combined}.
25258
25259 @item color
25260 Specify display color mode.
25261
25262 It accepts the following values:
25263 @table @samp
25264 @item channel
25265 each channel is displayed in a separate color
25266 @item intensity
25267 each channel is displayed using the same color scheme
25268 @item rainbow
25269 each channel is displayed using the rainbow color scheme
25270 @item moreland
25271 each channel is displayed using the moreland color scheme
25272 @item nebulae
25273 each channel is displayed using the nebulae color scheme
25274 @item fire
25275 each channel is displayed using the fire color scheme
25276 @item fiery
25277 each channel is displayed using the fiery color scheme
25278 @item fruit
25279 each channel is displayed using the fruit color scheme
25280 @item cool
25281 each channel is displayed using the cool color scheme
25282 @item magma
25283 each channel is displayed using the magma color scheme
25284 @item green
25285 each channel is displayed using the green color scheme
25286 @item viridis
25287 each channel is displayed using the viridis color scheme
25288 @item plasma
25289 each channel is displayed using the plasma color scheme
25290 @item cividis
25291 each channel is displayed using the cividis color scheme
25292 @item terrain
25293 each channel is displayed using the terrain color scheme
25294 @end table
25295
25296 Default value is @samp{channel}.
25297
25298 @item scale
25299 Specify scale used for calculating intensity color values.
25300
25301 It accepts the following values:
25302 @table @samp
25303 @item lin
25304 linear
25305 @item sqrt
25306 square root, default
25307 @item cbrt
25308 cubic root
25309 @item log
25310 logarithmic
25311 @item 4thrt
25312 4th root
25313 @item 5thrt
25314 5th root
25315 @end table
25316
25317 Default value is @samp{sqrt}.
25318
25319 @item fscale
25320 Specify frequency scale.
25321
25322 It accepts the following values:
25323 @table @samp
25324 @item lin
25325 linear
25326 @item log
25327 logarithmic
25328 @end table
25329
25330 Default value is @samp{lin}.
25331
25332 @item saturation
25333 Set saturation modifier for displayed colors. Negative values provide
25334 alternative color scheme. @code{0} is no saturation at all.
25335 Saturation must be in [-10.0, 10.0] range.
25336 Default value is @code{1}.
25337
25338 @item win_func
25339 Set window function.
25340
25341 It accepts the following values:
25342 @table @samp
25343 @item rect
25344 @item bartlett
25345 @item hann
25346 @item hanning
25347 @item hamming
25348 @item blackman
25349 @item welch
25350 @item flattop
25351 @item bharris
25352 @item bnuttall
25353 @item bhann
25354 @item sine
25355 @item nuttall
25356 @item lanczos
25357 @item gauss
25358 @item tukey
25359 @item dolph
25360 @item cauchy
25361 @item parzen
25362 @item poisson
25363 @item bohman
25364 @end table
25365
25366 Default value is @code{hann}.
25367
25368 @item orientation
25369 Set orientation of time vs frequency axis. Can be @code{vertical} or
25370 @code{horizontal}. Default is @code{vertical}.
25371
25372 @item overlap
25373 Set ratio of overlap window. Default value is @code{0}.
25374 When value is @code{1} overlap is set to recommended size for specific
25375 window function currently used.
25376
25377 @item gain
25378 Set scale gain for calculating intensity color values.
25379 Default value is @code{1}.
25380
25381 @item data
25382 Set which data to display. Can be @code{magnitude}, default or @code{phase}.
25383
25384 @item rotation
25385 Set color rotation, must be in [-1.0, 1.0] range.
25386 Default value is @code{0}.
25387
25388 @item start
25389 Set start frequency from which to display spectrogram. Default is @code{0}.
25390
25391 @item stop
25392 Set stop frequency to which to display spectrogram. Default is @code{0}.
25393
25394 @item fps
25395 Set upper frame rate limit. Default is @code{auto}, unlimited.
25396
25397 @item legend
25398 Draw time and frequency axes and legends. Default is disabled.
25399 @end table
25400
25401 The usage is very similar to the showwaves filter; see the examples in that
25402 section.
25403
25404 @subsection Examples
25405
25406 @itemize
25407 @item
25408 Large window with logarithmic color scaling:
25409 @example
25410 showspectrum=s=1280x480:scale=log
25411 @end example
25412
25413 @item
25414 Complete example for a colored and sliding spectrum per channel using @command{ffplay}:
25415 @example
25416 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
25417              [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
25418 @end example
25419 @end itemize
25420
25421 @section showspectrumpic
25422
25423 Convert input audio to a single video frame, representing the audio frequency
25424 spectrum.
25425
25426 The filter accepts the following options:
25427
25428 @table @option
25429 @item size, s
25430 Specify the video size for the output. For the syntax of this option, check the
25431 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25432 Default value is @code{4096x2048}.
25433
25434 @item mode
25435 Specify display mode.
25436
25437 It accepts the following values:
25438 @table @samp
25439 @item combined
25440 all channels are displayed in the same row
25441 @item separate
25442 all channels are displayed in separate rows
25443 @end table
25444 Default value is @samp{combined}.
25445
25446 @item color
25447 Specify display color mode.
25448
25449 It accepts the following values:
25450 @table @samp
25451 @item channel
25452 each channel is displayed in a separate color
25453 @item intensity
25454 each channel is displayed using the same color scheme
25455 @item rainbow
25456 each channel is displayed using the rainbow color scheme
25457 @item moreland
25458 each channel is displayed using the moreland color scheme
25459 @item nebulae
25460 each channel is displayed using the nebulae color scheme
25461 @item fire
25462 each channel is displayed using the fire color scheme
25463 @item fiery
25464 each channel is displayed using the fiery color scheme
25465 @item fruit
25466 each channel is displayed using the fruit color scheme
25467 @item cool
25468 each channel is displayed using the cool color scheme
25469 @item magma
25470 each channel is displayed using the magma color scheme
25471 @item green
25472 each channel is displayed using the green color scheme
25473 @item viridis
25474 each channel is displayed using the viridis color scheme
25475 @item plasma
25476 each channel is displayed using the plasma color scheme
25477 @item cividis
25478 each channel is displayed using the cividis color scheme
25479 @item terrain
25480 each channel is displayed using the terrain color scheme
25481 @end table
25482 Default value is @samp{intensity}.
25483
25484 @item scale
25485 Specify scale used for calculating intensity color values.
25486
25487 It accepts the following values:
25488 @table @samp
25489 @item lin
25490 linear
25491 @item sqrt
25492 square root, default
25493 @item cbrt
25494 cubic root
25495 @item log
25496 logarithmic
25497 @item 4thrt
25498 4th root
25499 @item 5thrt
25500 5th root
25501 @end table
25502 Default value is @samp{log}.
25503
25504 @item fscale
25505 Specify frequency scale.
25506
25507 It accepts the following values:
25508 @table @samp
25509 @item lin
25510 linear
25511 @item log
25512 logarithmic
25513 @end table
25514
25515 Default value is @samp{lin}.
25516
25517 @item saturation
25518 Set saturation modifier for displayed colors. Negative values provide
25519 alternative color scheme. @code{0} is no saturation at all.
25520 Saturation must be in [-10.0, 10.0] range.
25521 Default value is @code{1}.
25522
25523 @item win_func
25524 Set window function.
25525
25526 It accepts the following values:
25527 @table @samp
25528 @item rect
25529 @item bartlett
25530 @item hann
25531 @item hanning
25532 @item hamming
25533 @item blackman
25534 @item welch
25535 @item flattop
25536 @item bharris
25537 @item bnuttall
25538 @item bhann
25539 @item sine
25540 @item nuttall
25541 @item lanczos
25542 @item gauss
25543 @item tukey
25544 @item dolph
25545 @item cauchy
25546 @item parzen
25547 @item poisson
25548 @item bohman
25549 @end table
25550 Default value is @code{hann}.
25551
25552 @item orientation
25553 Set orientation of time vs frequency axis. Can be @code{vertical} or
25554 @code{horizontal}. Default is @code{vertical}.
25555
25556 @item gain
25557 Set scale gain for calculating intensity color values.
25558 Default value is @code{1}.
25559
25560 @item legend
25561 Draw time and frequency axes and legends. Default is enabled.
25562
25563 @item rotation
25564 Set color rotation, must be in [-1.0, 1.0] range.
25565 Default value is @code{0}.
25566
25567 @item start
25568 Set start frequency from which to display spectrogram. Default is @code{0}.
25569
25570 @item stop
25571 Set stop frequency to which to display spectrogram. Default is @code{0}.
25572 @end table
25573
25574 @subsection Examples
25575
25576 @itemize
25577 @item
25578 Extract an audio spectrogram of a whole audio track
25579 in a 1024x1024 picture using @command{ffmpeg}:
25580 @example
25581 ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
25582 @end example
25583 @end itemize
25584
25585 @section showvolume
25586
25587 Convert input audio volume to a video output.
25588
25589 The filter accepts the following options:
25590
25591 @table @option
25592 @item rate, r
25593 Set video rate.
25594
25595 @item b
25596 Set border width, allowed range is [0, 5]. Default is 1.
25597
25598 @item w
25599 Set channel width, allowed range is [80, 8192]. Default is 400.
25600
25601 @item h
25602 Set channel height, allowed range is [1, 900]. Default is 20.
25603
25604 @item f
25605 Set fade, allowed range is [0, 1]. Default is 0.95.
25606
25607 @item c
25608 Set volume color expression.
25609
25610 The expression can use the following variables:
25611
25612 @table @option
25613 @item VOLUME
25614 Current max volume of channel in dB.
25615
25616 @item PEAK
25617 Current peak.
25618
25619 @item CHANNEL
25620 Current channel number, starting from 0.
25621 @end table
25622
25623 @item t
25624 If set, displays channel names. Default is enabled.
25625
25626 @item v
25627 If set, displays volume values. Default is enabled.
25628
25629 @item o
25630 Set orientation, can be horizontal: @code{h} or vertical: @code{v},
25631 default is @code{h}.
25632
25633 @item s
25634 Set step size, allowed range is [0, 5]. Default is 0, which means
25635 step is disabled.
25636
25637 @item p
25638 Set background opacity, allowed range is [0, 1]. Default is 0.
25639
25640 @item m
25641 Set metering mode, can be peak: @code{p} or rms: @code{r},
25642 default is @code{p}.
25643
25644 @item ds
25645 Set display scale, can be linear: @code{lin} or log: @code{log},
25646 default is @code{lin}.
25647
25648 @item dm
25649 In second.
25650 If set to > 0., display a line for the max level
25651 in the previous seconds.
25652 default is disabled: @code{0.}
25653
25654 @item dmc
25655 The color of the max line. Use when @code{dm} option is set to > 0.
25656 default is: @code{orange}
25657 @end table
25658
25659 @section showwaves
25660
25661 Convert input audio to a video output, representing the samples waves.
25662
25663 The filter accepts the following options:
25664
25665 @table @option
25666 @item size, s
25667 Specify the video size for the output. For the syntax of this option, check the
25668 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25669 Default value is @code{600x240}.
25670
25671 @item mode
25672 Set display mode.
25673
25674 Available values are:
25675 @table @samp
25676 @item point
25677 Draw a point for each sample.
25678
25679 @item line
25680 Draw a vertical line for each sample.
25681
25682 @item p2p
25683 Draw a point for each sample and a line between them.
25684
25685 @item cline
25686 Draw a centered vertical line for each sample.
25687 @end table
25688
25689 Default value is @code{point}.
25690
25691 @item n
25692 Set the number of samples which are printed on the same column. A
25693 larger value will decrease the frame rate. Must be a positive
25694 integer. This option can be set only if the value for @var{rate}
25695 is not explicitly specified.
25696
25697 @item rate, r
25698 Set the (approximate) output frame rate. This is done by setting the
25699 option @var{n}. Default value is "25".
25700
25701 @item split_channels
25702 Set if channels should be drawn separately or overlap. Default value is 0.
25703
25704 @item colors
25705 Set colors separated by '|' which are going to be used for drawing of each channel.
25706
25707 @item scale
25708 Set amplitude scale.
25709
25710 Available values are:
25711 @table @samp
25712 @item lin
25713 Linear.
25714
25715 @item log
25716 Logarithmic.
25717
25718 @item sqrt
25719 Square root.
25720
25721 @item cbrt
25722 Cubic root.
25723 @end table
25724
25725 Default is linear.
25726
25727 @item draw
25728 Set the draw mode. This is mostly useful to set for high @var{n}.
25729
25730 Available values are:
25731 @table @samp
25732 @item scale
25733 Scale pixel values for each drawn sample.
25734
25735 @item full
25736 Draw every sample directly.
25737 @end table
25738
25739 Default value is @code{scale}.
25740 @end table
25741
25742 @subsection Examples
25743
25744 @itemize
25745 @item
25746 Output the input file audio and the corresponding video representation
25747 at the same time:
25748 @example
25749 amovie=a.mp3,asplit[out0],showwaves[out1]
25750 @end example
25751
25752 @item
25753 Create a synthetic signal and show it with showwaves, forcing a
25754 frame rate of 30 frames per second:
25755 @example
25756 aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
25757 @end example
25758 @end itemize
25759
25760 @section showwavespic
25761
25762 Convert input audio to a single video frame, representing the samples waves.
25763
25764 The filter accepts the following options:
25765
25766 @table @option
25767 @item size, s
25768 Specify the video size for the output. For the syntax of this option, check the
25769 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25770 Default value is @code{600x240}.
25771
25772 @item split_channels
25773 Set if channels should be drawn separately or overlap. Default value is 0.
25774
25775 @item colors
25776 Set colors separated by '|' which are going to be used for drawing of each channel.
25777
25778 @item scale
25779 Set amplitude scale.
25780
25781 Available values are:
25782 @table @samp
25783 @item lin
25784 Linear.
25785
25786 @item log
25787 Logarithmic.
25788
25789 @item sqrt
25790 Square root.
25791
25792 @item cbrt
25793 Cubic root.
25794 @end table
25795
25796 Default is linear.
25797
25798 @item draw
25799 Set the draw mode.
25800
25801 Available values are:
25802 @table @samp
25803 @item scale
25804 Scale pixel values for each drawn sample.
25805
25806 @item full
25807 Draw every sample directly.
25808 @end table
25809
25810 Default value is @code{scale}.
25811
25812 @item filter
25813 Set the filter mode.
25814
25815 Available values are:
25816 @table @samp
25817 @item average
25818 Use average samples values for each drawn sample.
25819
25820 @item peak
25821 Use peak samples values for each drawn sample.
25822 @end table
25823
25824 Default value is @code{average}.
25825 @end table
25826
25827 @subsection Examples
25828
25829 @itemize
25830 @item
25831 Extract a channel split representation of the wave form of a whole audio track
25832 in a 1024x800 picture using @command{ffmpeg}:
25833 @example
25834 ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
25835 @end example
25836 @end itemize
25837
25838 @section sidedata, asidedata
25839
25840 Delete frame side data, or select frames based on it.
25841
25842 This filter accepts the following options:
25843
25844 @table @option
25845 @item mode
25846 Set mode of operation of the filter.
25847
25848 Can be one of the following:
25849
25850 @table @samp
25851 @item select
25852 Select every frame with side data of @code{type}.
25853
25854 @item delete
25855 Delete side data of @code{type}. If @code{type} is not set, delete all side
25856 data in the frame.
25857
25858 @end table
25859
25860 @item type
25861 Set side data type used with all modes. Must be set for @code{select} mode. For
25862 the list of frame side data types, refer to the @code{AVFrameSideDataType} enum
25863 in @file{libavutil/frame.h}. For example, to choose
25864 @code{AV_FRAME_DATA_PANSCAN} side data, you must specify @code{PANSCAN}.
25865
25866 @end table
25867
25868 @section spectrumsynth
25869
25870 Synthesize audio from 2 input video spectrums, first input stream represents
25871 magnitude across time and second represents phase across time.
25872 The filter will transform from frequency domain as displayed in videos back
25873 to time domain as presented in audio output.
25874
25875 This filter is primarily created for reversing processed @ref{showspectrum}
25876 filter outputs, but can synthesize sound from other spectrograms too.
25877 But in such case results are going to be poor if the phase data is not
25878 available, because in such cases phase data need to be recreated, usually
25879 it's just recreated from random noise.
25880 For best results use gray only output (@code{channel} color mode in
25881 @ref{showspectrum} filter) and @code{log} scale for magnitude video and
25882 @code{lin} scale for phase video. To produce phase, for 2nd video, use
25883 @code{data} option. Inputs videos should generally use @code{fullframe}
25884 slide mode as that saves resources needed for decoding video.
25885
25886 The filter accepts the following options:
25887
25888 @table @option
25889 @item sample_rate
25890 Specify sample rate of output audio, the sample rate of audio from which
25891 spectrum was generated may differ.
25892
25893 @item channels
25894 Set number of channels represented in input video spectrums.
25895
25896 @item scale
25897 Set scale which was used when generating magnitude input spectrum.
25898 Can be @code{lin} or @code{log}. Default is @code{log}.
25899
25900 @item slide
25901 Set slide which was used when generating inputs spectrums.
25902 Can be @code{replace}, @code{scroll}, @code{fullframe} or @code{rscroll}.
25903 Default is @code{fullframe}.
25904
25905 @item win_func
25906 Set window function used for resynthesis.
25907
25908 @item overlap
25909 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
25910 which means optimal overlap for selected window function will be picked.
25911
25912 @item orientation
25913 Set orientation of input videos. Can be @code{vertical} or @code{horizontal}.
25914 Default is @code{vertical}.
25915 @end table
25916
25917 @subsection Examples
25918
25919 @itemize
25920 @item
25921 First create magnitude and phase videos from audio, assuming audio is stereo with 44100 sample rate,
25922 then resynthesize videos back to audio with spectrumsynth:
25923 @example
25924 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
25925 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
25926 ffmpeg -i magnitude.nut -i phase.nut -lavfi spectrumsynth=channels=2:sample_rate=44100:win_func=hann:overlap=0.875:slide=fullframe output.flac
25927 @end example
25928 @end itemize
25929
25930 @section split, asplit
25931
25932 Split input into several identical outputs.
25933
25934 @code{asplit} works with audio input, @code{split} with video.
25935
25936 The filter accepts a single parameter which specifies the number of outputs. If
25937 unspecified, it defaults to 2.
25938
25939 @subsection Examples
25940
25941 @itemize
25942 @item
25943 Create two separate outputs from the same input:
25944 @example
25945 [in] split [out0][out1]
25946 @end example
25947
25948 @item
25949 To create 3 or more outputs, you need to specify the number of
25950 outputs, like in:
25951 @example
25952 [in] asplit=3 [out0][out1][out2]
25953 @end example
25954
25955 @item
25956 Create two separate outputs from the same input, one cropped and
25957 one padded:
25958 @example
25959 [in] split [splitout1][splitout2];
25960 [splitout1] crop=100:100:0:0    [cropout];
25961 [splitout2] pad=200:200:100:100 [padout];
25962 @end example
25963
25964 @item
25965 Create 5 copies of the input audio with @command{ffmpeg}:
25966 @example
25967 ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
25968 @end example
25969 @end itemize
25970
25971 @section zmq, azmq
25972
25973 Receive commands sent through a libzmq client, and forward them to
25974 filters in the filtergraph.
25975
25976 @code{zmq} and @code{azmq} work as a pass-through filters. @code{zmq}
25977 must be inserted between two video filters, @code{azmq} between two
25978 audio filters. Both are capable to send messages to any filter type.
25979
25980 To enable these filters you need to install the libzmq library and
25981 headers and configure FFmpeg with @code{--enable-libzmq}.
25982
25983 For more information about libzmq see:
25984 @url{http://www.zeromq.org/}
25985
25986 The @code{zmq} and @code{azmq} filters work as a libzmq server, which
25987 receives messages sent through a network interface defined by the
25988 @option{bind_address} (or the abbreviation "@option{b}") option.
25989 Default value of this option is @file{tcp://localhost:5555}. You may
25990 want to alter this value to your needs, but do not forget to escape any
25991 ':' signs (see @ref{filtergraph escaping}).
25992
25993 The received message must be in the form:
25994 @example
25995 @var{TARGET} @var{COMMAND} [@var{ARG}]
25996 @end example
25997
25998 @var{TARGET} specifies the target of the command, usually the name of
25999 the filter class or a specific filter instance name. The default
26000 filter instance name uses the pattern @samp{Parsed_<filter_name>_<index>},
26001 but you can override this by using the @samp{filter_name@@id} syntax
26002 (see @ref{Filtergraph syntax}).
26003
26004 @var{COMMAND} specifies the name of the command for the target filter.
26005
26006 @var{ARG} is optional and specifies the optional argument list for the
26007 given @var{COMMAND}.
26008
26009 Upon reception, the message is processed and the corresponding command
26010 is injected into the filtergraph. Depending on the result, the filter
26011 will send a reply to the client, adopting the format:
26012 @example
26013 @var{ERROR_CODE} @var{ERROR_REASON}
26014 @var{MESSAGE}
26015 @end example
26016
26017 @var{MESSAGE} is optional.
26018
26019 @subsection Examples
26020
26021 Look at @file{tools/zmqsend} for an example of a zmq client which can
26022 be used to send commands processed by these filters.
26023
26024 Consider the following filtergraph generated by @command{ffplay}.
26025 In this example the last overlay filter has an instance name. All other
26026 filters will have default instance names.
26027
26028 @example
26029 ffplay -dumpgraph 1 -f lavfi "
26030 color=s=100x100:c=red  [l];
26031 color=s=100x100:c=blue [r];
26032 nullsrc=s=200x100, zmq [bg];
26033 [bg][l]   overlay     [bg+l];
26034 [bg+l][r] overlay@@my=x=100 "
26035 @end example
26036
26037 To change the color of the left side of the video, the following
26038 command can be used:
26039 @example
26040 echo Parsed_color_0 c yellow | tools/zmqsend
26041 @end example
26042
26043 To change the right side:
26044 @example
26045 echo Parsed_color_1 c pink | tools/zmqsend
26046 @end example
26047
26048 To change the position of the right side:
26049 @example
26050 echo overlay@@my x 150 | tools/zmqsend
26051 @end example
26052
26053
26054 @c man end MULTIMEDIA FILTERS
26055
26056 @chapter Multimedia Sources
26057 @c man begin MULTIMEDIA SOURCES
26058
26059 Below is a description of the currently available multimedia sources.
26060
26061 @section amovie
26062
26063 This is the same as @ref{movie} source, except it selects an audio
26064 stream by default.
26065
26066 @anchor{movie}
26067 @section movie
26068
26069 Read audio and/or video stream(s) from a movie container.
26070
26071 It accepts the following parameters:
26072
26073 @table @option
26074 @item filename
26075 The name of the resource to read (not necessarily a file; it can also be a
26076 device or a stream accessed through some protocol).
26077
26078 @item format_name, f
26079 Specifies the format assumed for the movie to read, and can be either
26080 the name of a container or an input device. If not specified, the
26081 format is guessed from @var{movie_name} or by probing.
26082
26083 @item seek_point, sp
26084 Specifies the seek point in seconds. The frames will be output
26085 starting from this seek point. The parameter is evaluated with
26086 @code{av_strtod}, so the numerical value may be suffixed by an IS
26087 postfix. The default value is "0".
26088
26089 @item streams, s
26090 Specifies the streams to read. Several streams can be specified,
26091 separated by "+". The source will then have as many outputs, in the
26092 same order. The syntax is explained in the @ref{Stream specifiers,,"Stream specifiers"
26093 section in the ffmpeg manual,ffmpeg}. Two special names, "dv" and "da" specify
26094 respectively the default (best suited) video and audio stream. Default
26095 is "dv", or "da" if the filter is called as "amovie".
26096
26097 @item stream_index, si
26098 Specifies the index of the video stream to read. If the value is -1,
26099 the most suitable video stream will be automatically selected. The default
26100 value is "-1". Deprecated. If the filter is called "amovie", it will select
26101 audio instead of video.
26102
26103 @item loop
26104 Specifies how many times to read the stream in sequence.
26105 If the value is 0, the stream will be looped infinitely.
26106 Default value is "1".
26107
26108 Note that when the movie is looped the source timestamps are not
26109 changed, so it will generate non monotonically increasing timestamps.
26110
26111 @item discontinuity
26112 Specifies the time difference between frames above which the point is
26113 considered a timestamp discontinuity which is removed by adjusting the later
26114 timestamps.
26115 @end table
26116
26117 It allows overlaying a second video on top of the main input of
26118 a filtergraph, as shown in this graph:
26119 @example
26120 input -----------> deltapts0 --> overlay --> output
26121                                     ^
26122                                     |
26123 movie --> scale--> deltapts1 -------+
26124 @end example
26125 @subsection Examples
26126
26127 @itemize
26128 @item
26129 Skip 3.2 seconds from the start of the AVI file in.avi, and overlay it
26130 on top of the input labelled "in":
26131 @example
26132 movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
26133 [in] setpts=PTS-STARTPTS [main];
26134 [main][over] overlay=16:16 [out]
26135 @end example
26136
26137 @item
26138 Read from a video4linux2 device, and overlay it on top of the input
26139 labelled "in":
26140 @example
26141 movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
26142 [in] setpts=PTS-STARTPTS [main];
26143 [main][over] overlay=16:16 [out]
26144 @end example
26145
26146 @item
26147 Read the first video stream and the audio stream with id 0x81 from
26148 dvd.vob; the video is connected to the pad named "video" and the audio is
26149 connected to the pad named "audio":
26150 @example
26151 movie=dvd.vob:s=v:0+#0x81 [video] [audio]
26152 @end example
26153 @end itemize
26154
26155 @subsection Commands
26156
26157 Both movie and amovie support the following commands:
26158 @table @option
26159 @item seek
26160 Perform seek using "av_seek_frame".
26161 The syntax is: seek @var{stream_index}|@var{timestamp}|@var{flags}
26162 @itemize
26163 @item
26164 @var{stream_index}: If stream_index is -1, a default
26165 stream is selected, and @var{timestamp} is automatically converted
26166 from AV_TIME_BASE units to the stream specific time_base.
26167 @item
26168 @var{timestamp}: Timestamp in AVStream.time_base units
26169 or, if no stream is specified, in AV_TIME_BASE units.
26170 @item
26171 @var{flags}: Flags which select direction and seeking mode.
26172 @end itemize
26173
26174 @item get_duration
26175 Get movie duration in AV_TIME_BASE units.
26176
26177 @end table
26178
26179 @c man end MULTIMEDIA SOURCES