]> git.sesse.net Git - ffmpeg/blob - doc/filters.texi
7c25bbaf975ecf221861a42d6848eb59d04356ec
[ffmpeg] / doc / filters.texi
1 @chapter Filtering Introduction
2 @c man begin FILTERING INTRODUCTION
3
4 Filtering in FFmpeg is enabled through the libavfilter library.
5
6 In libavfilter, a filter can have multiple inputs and multiple
7 outputs.
8 To illustrate the sorts of things that are possible, we consider the
9 following filtergraph.
10
11 @verbatim
12                 [main]
13 input --> split ---------------------> overlay --> output
14             |                             ^
15             |[tmp]                  [flip]|
16             +-----> crop --> vflip -------+
17 @end verbatim
18
19 This filtergraph splits the input stream in two streams, then sends one
20 stream through the crop filter and the vflip filter, before merging it
21 back with the other stream by overlaying it on top. You can use the
22 following command to achieve this:
23
24 @example
25 ffmpeg -i INPUT -vf "split [main][tmp]; [tmp] crop=iw:ih/2:0:0, vflip [flip]; [main][flip] overlay=0:H/2" OUTPUT
26 @end example
27
28 The result will be that the top half of the video is mirrored
29 onto the bottom half of the output video.
30
31 Filters in the same linear chain are separated by commas, and distinct
32 linear chains of filters are separated by semicolons. In our example,
33 @var{crop,vflip} are in one linear chain, @var{split} and
34 @var{overlay} are separately in another. The points where the linear
35 chains join are labelled by names enclosed in square brackets. In the
36 example, the split filter generates two outputs that are associated to
37 the labels @var{[main]} and @var{[tmp]}.
38
39 The stream sent to the second output of @var{split}, labelled as
40 @var{[tmp]}, is processed through the @var{crop} filter, which crops
41 away the lower half part of the video, and then vertically flipped. The
42 @var{overlay} filter takes in input the first unchanged output of the
43 split filter (which was labelled as @var{[main]}), and overlay on its
44 lower half the output generated by the @var{crop,vflip} filterchain.
45
46 Some filters take in input a list of parameters: they are specified
47 after the filter name and an equal sign, and are separated from each other
48 by a colon.
49
50 There exist so-called @var{source filters} that do not have an
51 audio/video input, and @var{sink filters} that will not have audio/video
52 output.
53
54 @c man end FILTERING INTRODUCTION
55
56 @chapter graph2dot
57 @c man begin GRAPH2DOT
58
59 The @file{graph2dot} program included in the FFmpeg @file{tools}
60 directory can be used to parse a filtergraph description and issue a
61 corresponding textual representation in the dot language.
62
63 Invoke the command:
64 @example
65 graph2dot -h
66 @end example
67
68 to see how to use @file{graph2dot}.
69
70 You can then pass the dot description to the @file{dot} program (from
71 the graphviz suite of programs) and obtain a graphical representation
72 of the filtergraph.
73
74 For example the sequence of commands:
75 @example
76 echo @var{GRAPH_DESCRIPTION} | \
77 tools/graph2dot -o graph.tmp && \
78 dot -Tpng graph.tmp -o graph.png && \
79 display graph.png
80 @end example
81
82 can be used to create and display an image representing the graph
83 described by the @var{GRAPH_DESCRIPTION} string. Note that this string must be
84 a complete self-contained graph, with its inputs and outputs explicitly defined.
85 For example if your command line is of the form:
86 @example
87 ffmpeg -i infile -vf scale=640:360 outfile
88 @end example
89 your @var{GRAPH_DESCRIPTION} string will need to be of the form:
90 @example
91 nullsrc,scale=640:360,nullsink
92 @end example
93 you may also need to set the @var{nullsrc} parameters and add a @var{format}
94 filter in order to simulate a specific input file.
95
96 @c man end GRAPH2DOT
97
98 @chapter Filtergraph description
99 @c man begin FILTERGRAPH DESCRIPTION
100
101 A filtergraph is a directed graph of connected filters. It can contain
102 cycles, and there can be multiple links between a pair of
103 filters. Each link has one input pad on one side connecting it to one
104 filter from which it takes its input, and one output pad on the other
105 side connecting it to one filter accepting its output.
106
107 Each filter in a filtergraph is an instance of a filter class
108 registered in the application, which defines the features and the
109 number of input and output pads of the filter.
110
111 A filter with no input pads is called a "source", and a filter with no
112 output pads is called a "sink".
113
114 @anchor{Filtergraph syntax}
115 @section Filtergraph syntax
116
117 A filtergraph has a textual representation, which is recognized by the
118 @option{-filter}/@option{-vf}/@option{-af} and
119 @option{-filter_complex} options in @command{ffmpeg} and
120 @option{-vf}/@option{-af} in @command{ffplay}, and by the
121 @code{avfilter_graph_parse_ptr()} function defined in
122 @file{libavfilter/avfilter.h}.
123
124 A filterchain consists of a sequence of connected filters, each one
125 connected to the previous one in the sequence. A filterchain is
126 represented by a list of ","-separated filter descriptions.
127
128 A filtergraph consists of a sequence of filterchains. A sequence of
129 filterchains is represented by a list of ";"-separated filterchain
130 descriptions.
131
132 A filter is represented by a string of the form:
133 [@var{in_link_1}]...[@var{in_link_N}]@var{filter_name}@@@var{id}=@var{arguments}[@var{out_link_1}]...[@var{out_link_M}]
134
135 @var{filter_name} is the name of the filter class of which the
136 described filter is an instance of, and has to be the name of one of
137 the filter classes registered in the program optionally followed by "@@@var{id}".
138 The name of the filter class is optionally followed by a string
139 "=@var{arguments}".
140
141 @var{arguments} is a string which contains the parameters used to
142 initialize the filter instance. It may have one of two forms:
143 @itemize
144
145 @item
146 A ':'-separated list of @var{key=value} pairs.
147
148 @item
149 A ':'-separated list of @var{value}. In this case, the keys are assumed to be
150 the option names in the order they are declared. E.g. the @code{fade} filter
151 declares three options in this order -- @option{type}, @option{start_frame} and
152 @option{nb_frames}. Then the parameter list @var{in:0:30} means that the value
153 @var{in} is assigned to the option @option{type}, @var{0} to
154 @option{start_frame} and @var{30} to @option{nb_frames}.
155
156 @item
157 A ':'-separated list of mixed direct @var{value} and long @var{key=value}
158 pairs. The direct @var{value} must precede the @var{key=value} pairs, and
159 follow the same constraints order of the previous point. The following
160 @var{key=value} pairs can be set in any preferred order.
161
162 @end itemize
163
164 If the option value itself is a list of items (e.g. the @code{format} filter
165 takes a list of pixel formats), the items in the list are usually separated by
166 @samp{|}.
167
168 The list of arguments can be quoted using the character @samp{'} as initial
169 and ending mark, and the character @samp{\} for escaping the characters
170 within the quoted text; otherwise the argument string is considered
171 terminated when the next special character (belonging to the set
172 @samp{[]=;,}) is encountered.
173
174 The name and arguments of the filter are optionally preceded and
175 followed by a list of link labels.
176 A link label allows one to name a link and associate it to a filter output
177 or input pad. The preceding labels @var{in_link_1}
178 ... @var{in_link_N}, are associated to the filter input pads,
179 the following labels @var{out_link_1} ... @var{out_link_M}, are
180 associated to the output pads.
181
182 When two link labels with the same name are found in the
183 filtergraph, a link between the corresponding input and output pad is
184 created.
185
186 If an output pad is not labelled, it is linked by default to the first
187 unlabelled input pad of the next filter in the filterchain.
188 For example in the filterchain
189 @example
190 nullsrc, split[L1], [L2]overlay, nullsink
191 @end example
192 the split filter instance has two output pads, and the overlay filter
193 instance two input pads. The first output pad of split is labelled
194 "L1", the first input pad of overlay is labelled "L2", and the second
195 output pad of split is linked to the second input pad of overlay,
196 which are both unlabelled.
197
198 In a filter description, if the input label of the first filter is not
199 specified, "in" is assumed; if the output label of the last filter is not
200 specified, "out" is assumed.
201
202 In a complete filterchain all the unlabelled filter input and output
203 pads must be connected. A filtergraph is considered valid if all the
204 filter input and output pads of all the filterchains are connected.
205
206 Libavfilter will automatically insert @ref{scale} filters where format
207 conversion is required. It is possible to specify swscale flags
208 for those automatically inserted scalers by prepending
209 @code{sws_flags=@var{flags};}
210 to the filtergraph description.
211
212 Here is a BNF description of the filtergraph syntax:
213 @example
214 @var{NAME}             ::= sequence of alphanumeric characters and '_'
215 @var{FILTER_NAME}      ::= @var{NAME}["@@"@var{NAME}]
216 @var{LINKLABEL}        ::= "[" @var{NAME} "]"
217 @var{LINKLABELS}       ::= @var{LINKLABEL} [@var{LINKLABELS}]
218 @var{FILTER_ARGUMENTS} ::= sequence of chars (possibly quoted)
219 @var{FILTER}           ::= [@var{LINKLABELS}] @var{FILTER_NAME} ["=" @var{FILTER_ARGUMENTS}] [@var{LINKLABELS}]
220 @var{FILTERCHAIN}      ::= @var{FILTER} [,@var{FILTERCHAIN}]
221 @var{FILTERGRAPH}      ::= [sws_flags=@var{flags};] @var{FILTERCHAIN} [;@var{FILTERGRAPH}]
222 @end example
223
224 @anchor{filtergraph escaping}
225 @section Notes on filtergraph escaping
226
227 Filtergraph description composition entails several levels of
228 escaping. See @ref{quoting_and_escaping,,the "Quoting and escaping"
229 section in the ffmpeg-utils(1) manual,ffmpeg-utils} for more
230 information about the employed escaping procedure.
231
232 A first level escaping affects the content of each filter option
233 value, which may contain the special character @code{:} used to
234 separate values, or one of the escaping characters @code{\'}.
235
236 A second level escaping affects the whole filter description, which
237 may contain the escaping characters @code{\'} or the special
238 characters @code{[],;} used by the filtergraph description.
239
240 Finally, when you specify a filtergraph on a shell commandline, you
241 need to perform a third level escaping for the shell special
242 characters contained within it.
243
244 For example, consider the following string to be embedded in
245 the @ref{drawtext} filter description @option{text} value:
246 @example
247 this is a 'string': may contain one, or more, special characters
248 @end example
249
250 This string contains the @code{'} special escaping character, and the
251 @code{:} special character, so it needs to be escaped in this way:
252 @example
253 text=this is a \'string\'\: may contain one, or more, special characters
254 @end example
255
256 A second level of escaping is required when embedding the filter
257 description in a filtergraph description, in order to escape all the
258 filtergraph special characters. Thus the example above becomes:
259 @example
260 drawtext=text=this is a \\\'string\\\'\\: may contain one\, or more\, special characters
261 @end example
262 (note that in addition to the @code{\'} escaping special characters,
263 also @code{,} needs to be escaped).
264
265 Finally an additional level of escaping is needed when writing the
266 filtergraph description in a shell command, which depends on the
267 escaping rules of the adopted shell. For example, assuming that
268 @code{\} is special and needs to be escaped with another @code{\}, the
269 previous string will finally result in:
270 @example
271 -vf "drawtext=text=this is a \\\\\\'string\\\\\\'\\\\: may contain one\\, or more\\, special characters"
272 @end example
273
274 @chapter Timeline editing
275
276 Some filters support a generic @option{enable} option. For the filters
277 supporting timeline editing, this option can be set to an expression which is
278 evaluated before sending a frame to the filter. If the evaluation is non-zero,
279 the filter will be enabled, otherwise the frame will be sent unchanged to the
280 next filter in the filtergraph.
281
282 The expression accepts the following values:
283 @table @samp
284 @item t
285 timestamp expressed in seconds, NAN if the input timestamp is unknown
286
287 @item n
288 sequential number of the input frame, starting from 0
289
290 @item pos
291 the position in the file of the input frame, NAN if unknown
292
293 @item w
294 @item h
295 width and height of the input frame if video
296 @end table
297
298 Additionally, these filters support an @option{enable} command that can be used
299 to re-define the expression.
300
301 Like any other filtering option, the @option{enable} option follows the same
302 rules.
303
304 For example, to enable a blur filter (@ref{smartblur}) from 10 seconds to 3
305 minutes, and a @ref{curves} filter starting at 3 seconds:
306 @example
307 smartblur = enable='between(t,10,3*60)',
308 curves    = enable='gte(t,3)' : preset=cross_process
309 @end example
310
311 See @code{ffmpeg -filters} to view which filters have timeline support.
312
313 @c man end FILTERGRAPH DESCRIPTION
314
315 @anchor{commands}
316 @chapter Changing options at runtime with a command
317
318 Some options can be changed during the operation of the filter using
319 a command. These options are marked 'T' on the output of
320 @command{ffmpeg} @option{-h filter=<name of filter>}.
321 The name of the command is the name of the option and the argument is
322 the new value.
323
324 @anchor{framesync}
325 @chapter Options for filters with several inputs (framesync)
326 @c man begin OPTIONS FOR FILTERS WITH SEVERAL INPUTS
327
328 Some filters with several inputs support a common set of options.
329 These options can only be set by name, not with the short notation.
330
331 @table @option
332 @item eof_action
333 The action to take when EOF is encountered on the secondary input; it accepts
334 one of the following values:
335
336 @table @option
337 @item repeat
338 Repeat the last frame (the default).
339 @item endall
340 End both streams.
341 @item pass
342 Pass the main input through.
343 @end table
344
345 @item shortest
346 If set to 1, force the output to terminate when the shortest input
347 terminates. Default value is 0.
348
349 @item repeatlast
350 If set to 1, force the filter to extend the last frame of secondary streams
351 until the end of the primary stream. A value of 0 disables this behavior.
352 Default value is 1.
353 @end table
354
355 @c man end OPTIONS FOR FILTERS WITH SEVERAL INPUTS
356
357 @chapter Audio Filters
358 @c man begin AUDIO FILTERS
359
360 When you configure your FFmpeg build, you can disable any of the
361 existing filters using @code{--disable-filters}.
362 The configure output will show the audio filters included in your
363 build.
364
365 Below is a description of the currently available audio filters.
366
367 @section acompressor
368
369 A compressor is mainly used to reduce the dynamic range of a signal.
370 Especially modern music is mostly compressed at a high ratio to
371 improve the overall loudness. It's done to get the highest attention
372 of a listener, "fatten" the sound and bring more "power" to the track.
373 If a signal is compressed too much it may sound dull or "dead"
374 afterwards or it may start to "pump" (which could be a powerful effect
375 but can also destroy a track completely).
376 The right compression is the key to reach a professional sound and is
377 the high art of mixing and mastering. Because of its complex settings
378 it may take a long time to get the right feeling for this kind of effect.
379
380 Compression is done by detecting the volume above a chosen level
381 @code{threshold} and dividing it by the factor set with @code{ratio}.
382 So if you set the threshold to -12dB and your signal reaches -6dB a ratio
383 of 2:1 will result in a signal at -9dB. Because an exact manipulation of
384 the signal would cause distortion of the waveform the reduction can be
385 levelled over the time. This is done by setting "Attack" and "Release".
386 @code{attack} determines how long the signal has to rise above the threshold
387 before any reduction will occur and @code{release} sets the time the signal
388 has to fall below the threshold to reduce the reduction again. Shorter signals
389 than the chosen attack time will be left untouched.
390 The overall reduction of the signal can be made up afterwards with the
391 @code{makeup} setting. So compressing the peaks of a signal about 6dB and
392 raising the makeup to this level results in a signal twice as loud than the
393 source. To gain a softer entry in the compression the @code{knee} flattens the
394 hard edge at the threshold in the range of the chosen decibels.
395
396 The filter accepts the following options:
397
398 @table @option
399 @item level_in
400 Set input gain. Default is 1. Range is between 0.015625 and 64.
401
402 @item mode
403 Set mode of compressor operation. Can be @code{upward} or @code{downward}.
404 Default is @code{downward}.
405
406 @item threshold
407 If a signal of stream rises above this level it will affect the gain
408 reduction.
409 By default it is 0.125. Range is between 0.00097563 and 1.
410
411 @item ratio
412 Set a ratio by which the signal is reduced. 1:2 means that if the level
413 rose 4dB above the threshold, it will be only 2dB above after the reduction.
414 Default is 2. Range is between 1 and 20.
415
416 @item attack
417 Amount of milliseconds the signal has to rise above the threshold before gain
418 reduction starts. Default is 20. Range is between 0.01 and 2000.
419
420 @item release
421 Amount of milliseconds the signal has to fall below the threshold before
422 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
423
424 @item makeup
425 Set the amount by how much signal will be amplified after processing.
426 Default is 1. Range is from 1 to 64.
427
428 @item knee
429 Curve the sharp knee around the threshold to enter gain reduction more softly.
430 Default is 2.82843. Range is between 1 and 8.
431
432 @item link
433 Choose if the @code{average} level between all channels of input stream
434 or the louder(@code{maximum}) channel of input stream affects the
435 reduction. Default is @code{average}.
436
437 @item detection
438 Should the exact signal be taken in case of @code{peak} or an RMS one in case
439 of @code{rms}. Default is @code{rms} which is mostly smoother.
440
441 @item mix
442 How much to use compressed signal in output. Default is 1.
443 Range is between 0 and 1.
444 @end table
445
446 @subsection Commands
447
448 This filter supports the all above options as @ref{commands}.
449
450 @section acontrast
451 Simple audio dynamic range compression/expansion filter.
452
453 The filter accepts the following options:
454
455 @table @option
456 @item contrast
457 Set contrast. Default is 33. Allowed range is between 0 and 100.
458 @end table
459
460 @section acopy
461
462 Copy the input audio source unchanged to the output. This is mainly useful for
463 testing purposes.
464
465 @section acrossfade
466
467 Apply cross fade from one input audio stream to another input audio stream.
468 The cross fade is applied for specified duration near the end of first stream.
469
470 The filter accepts the following options:
471
472 @table @option
473 @item nb_samples, ns
474 Specify the number of samples for which the cross fade effect has to last.
475 At the end of the cross fade effect the first input audio will be completely
476 silent. Default is 44100.
477
478 @item duration, d
479 Specify the duration of the cross fade effect. See
480 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
481 for the accepted syntax.
482 By default the duration is determined by @var{nb_samples}.
483 If set this option is used instead of @var{nb_samples}.
484
485 @item overlap, o
486 Should first stream end overlap with second stream start. Default is enabled.
487
488 @item curve1
489 Set curve for cross fade transition for first stream.
490
491 @item curve2
492 Set curve for cross fade transition for second stream.
493
494 For description of available curve types see @ref{afade} filter description.
495 @end table
496
497 @subsection Examples
498
499 @itemize
500 @item
501 Cross fade from one input to another:
502 @example
503 ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:c1=exp:c2=exp output.flac
504 @end example
505
506 @item
507 Cross fade from one input to another but without overlapping:
508 @example
509 ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:o=0:c1=exp:c2=exp output.flac
510 @end example
511 @end itemize
512
513 @section acrossover
514 Split audio stream into several bands.
515
516 This filter splits audio stream into two or more frequency ranges.
517 Summing all streams back will give flat output.
518
519 The filter accepts the following options:
520
521 @table @option
522 @item split
523 Set split frequencies. Those must be positive and increasing.
524
525 @item order
526 Set filter order, can be @var{2nd}, @var{4th} or @var{8th}.
527 Default is @var{4th}.
528 @end table
529
530 @section acrusher
531
532 Reduce audio bit resolution.
533
534 This filter is bit crusher with enhanced functionality. A bit crusher
535 is used to audibly reduce number of bits an audio signal is sampled
536 with. This doesn't change the bit depth at all, it just produces the
537 effect. Material reduced in bit depth sounds more harsh and "digital".
538 This filter is able to even round to continuous values instead of discrete
539 bit depths.
540 Additionally it has a D/C offset which results in different crushing of
541 the lower and the upper half of the signal.
542 An Anti-Aliasing setting is able to produce "softer" crushing sounds.
543
544 Another feature of this filter is the logarithmic mode.
545 This setting switches from linear distances between bits to logarithmic ones.
546 The result is a much more "natural" sounding crusher which doesn't gate low
547 signals for example. The human ear has a logarithmic perception,
548 so this kind of crushing is much more pleasant.
549 Logarithmic crushing is also able to get anti-aliased.
550
551 The filter accepts the following options:
552
553 @table @option
554 @item level_in
555 Set level in.
556
557 @item level_out
558 Set level out.
559
560 @item bits
561 Set bit reduction.
562
563 @item mix
564 Set mixing amount.
565
566 @item mode
567 Can be linear: @code{lin} or logarithmic: @code{log}.
568
569 @item dc
570 Set DC.
571
572 @item aa
573 Set anti-aliasing.
574
575 @item samples
576 Set sample reduction.
577
578 @item lfo
579 Enable LFO. By default disabled.
580
581 @item lforange
582 Set LFO range.
583
584 @item lforate
585 Set LFO rate.
586 @end table
587
588 @section acue
589
590 Delay audio filtering until a given wallclock timestamp. See the @ref{cue}
591 filter.
592
593 @section adeclick
594 Remove impulsive noise from input audio.
595
596 Samples detected as impulsive noise are replaced by interpolated samples using
597 autoregressive modelling.
598
599 @table @option
600 @item w
601 Set window size, in milliseconds. Allowed range is from @code{10} to
602 @code{100}. Default value is @code{55} milliseconds.
603 This sets size of window which will be processed at once.
604
605 @item o
606 Set window overlap, in percentage of window size. Allowed range is from
607 @code{50} to @code{95}. Default value is @code{75} percent.
608 Setting this to a very high value increases impulsive noise removal but makes
609 whole process much slower.
610
611 @item a
612 Set autoregression order, in percentage of window size. Allowed range is from
613 @code{0} to @code{25}. Default value is @code{2} percent. This option also
614 controls quality of interpolated samples using neighbour good samples.
615
616 @item t
617 Set threshold value. Allowed range is from @code{1} to @code{100}.
618 Default value is @code{2}.
619 This controls the strength of impulsive noise which is going to be removed.
620 The lower value, the more samples will be detected as impulsive noise.
621
622 @item b
623 Set burst fusion, in percentage of window size. Allowed range is @code{0} to
624 @code{10}. Default value is @code{2}.
625 If any two samples detected as noise are spaced less than this value then any
626 sample between those two samples will be also detected as noise.
627
628 @item m
629 Set overlap method.
630
631 It accepts the following values:
632 @table @option
633 @item a
634 Select overlap-add method. Even not interpolated samples are slightly
635 changed with this method.
636
637 @item s
638 Select overlap-save method. Not interpolated samples remain unchanged.
639 @end table
640
641 Default value is @code{a}.
642 @end table
643
644 @section adeclip
645 Remove clipped samples from input audio.
646
647 Samples detected as clipped are replaced by interpolated samples using
648 autoregressive modelling.
649
650 @table @option
651 @item w
652 Set window size, in milliseconds. Allowed range is from @code{10} to @code{100}.
653 Default value is @code{55} milliseconds.
654 This sets size of window which will be processed at once.
655
656 @item o
657 Set window overlap, in percentage of window size. Allowed range is from @code{50}
658 to @code{95}. Default value is @code{75} percent.
659
660 @item a
661 Set autoregression order, in percentage of window size. Allowed range is from
662 @code{0} to @code{25}. Default value is @code{8} percent. This option also controls
663 quality of interpolated samples using neighbour good samples.
664
665 @item t
666 Set threshold value. Allowed range is from @code{1} to @code{100}.
667 Default value is @code{10}. Higher values make clip detection less aggressive.
668
669 @item n
670 Set size of histogram used to detect clips. Allowed range is from @code{100} to @code{9999}.
671 Default value is @code{1000}. Higher values make clip detection less aggressive.
672
673 @item m
674 Set overlap method.
675
676 It accepts the following values:
677 @table @option
678 @item a
679 Select overlap-add method. Even not interpolated samples are slightly changed
680 with this method.
681
682 @item s
683 Select overlap-save method. Not interpolated samples remain unchanged.
684 @end table
685
686 Default value is @code{a}.
687 @end table
688
689 @section adelay
690
691 Delay one or more audio channels.
692
693 Samples in delayed channel are filled with silence.
694
695 The filter accepts the following option:
696
697 @table @option
698 @item delays
699 Set list of delays in milliseconds for each channel separated by '|'.
700 Unused delays will be silently ignored. If number of given delays is
701 smaller than number of channels all remaining channels will not be delayed.
702 If you want to delay exact number of samples, append 'S' to number.
703 If you want instead to delay in seconds, append 's' to number.
704
705 @item all
706 Use last set delay for all remaining channels. By default is disabled.
707 This option if enabled changes how option @code{delays} is interpreted.
708 @end table
709
710 @subsection Examples
711
712 @itemize
713 @item
714 Delay first channel by 1.5 seconds, the third channel by 0.5 seconds and leave
715 the second channel (and any other channels that may be present) unchanged.
716 @example
717 adelay=1500|0|500
718 @end example
719
720 @item
721 Delay second channel by 500 samples, the third channel by 700 samples and leave
722 the first channel (and any other channels that may be present) unchanged.
723 @example
724 adelay=0|500S|700S
725 @end example
726
727 @item
728 Delay all channels by same number of samples:
729 @example
730 adelay=delays=64S:all=1
731 @end example
732 @end itemize
733
734 @section aderivative, aintegral
735
736 Compute derivative/integral of audio stream.
737
738 Applying both filters one after another produces original audio.
739
740 @section aecho
741
742 Apply echoing to the input audio.
743
744 Echoes are reflected sound and can occur naturally amongst mountains
745 (and sometimes large buildings) when talking or shouting; digital echo
746 effects emulate this behaviour and are often used to help fill out the
747 sound of a single instrument or vocal. The time difference between the
748 original signal and the reflection is the @code{delay}, and the
749 loudness of the reflected signal is the @code{decay}.
750 Multiple echoes can have different delays and decays.
751
752 A description of the accepted parameters follows.
753
754 @table @option
755 @item in_gain
756 Set input gain of reflected signal. Default is @code{0.6}.
757
758 @item out_gain
759 Set output gain of reflected signal. Default is @code{0.3}.
760
761 @item delays
762 Set list of time intervals in milliseconds between original signal and reflections
763 separated by '|'. Allowed range for each @code{delay} is @code{(0 - 90000.0]}.
764 Default is @code{1000}.
765
766 @item decays
767 Set list of loudness of reflected signals separated by '|'.
768 Allowed range for each @code{decay} is @code{(0 - 1.0]}.
769 Default is @code{0.5}.
770 @end table
771
772 @subsection Examples
773
774 @itemize
775 @item
776 Make it sound as if there are twice as many instruments as are actually playing:
777 @example
778 aecho=0.8:0.88:60:0.4
779 @end example
780
781 @item
782 If delay is very short, then it sounds like a (metallic) robot playing music:
783 @example
784 aecho=0.8:0.88:6:0.4
785 @end example
786
787 @item
788 A longer delay will sound like an open air concert in the mountains:
789 @example
790 aecho=0.8:0.9:1000:0.3
791 @end example
792
793 @item
794 Same as above but with one more mountain:
795 @example
796 aecho=0.8:0.9:1000|1800:0.3|0.25
797 @end example
798 @end itemize
799
800 @section aemphasis
801 Audio emphasis filter creates or restores material directly taken from LPs or
802 emphased CDs with different filter curves. E.g. to store music on vinyl the
803 signal has to be altered by a filter first to even out the disadvantages of
804 this recording medium.
805 Once the material is played back the inverse filter has to be applied to
806 restore the distortion of the frequency response.
807
808 The filter accepts the following options:
809
810 @table @option
811 @item level_in
812 Set input gain.
813
814 @item level_out
815 Set output gain.
816
817 @item mode
818 Set filter mode. For restoring material use @code{reproduction} mode, otherwise
819 use @code{production} mode. Default is @code{reproduction} mode.
820
821 @item type
822 Set filter type. Selects medium. Can be one of the following:
823
824 @table @option
825 @item col
826 select Columbia.
827 @item emi
828 select EMI.
829 @item bsi
830 select BSI (78RPM).
831 @item riaa
832 select RIAA.
833 @item cd
834 select Compact Disc (CD).
835 @item 50fm
836 select 50µs (FM).
837 @item 75fm
838 select 75µs (FM).
839 @item 50kf
840 select 50µs (FM-KF).
841 @item 75kf
842 select 75µs (FM-KF).
843 @end table
844 @end table
845
846 @section aeval
847
848 Modify an audio signal according to the specified expressions.
849
850 This filter accepts one or more expressions (one for each channel),
851 which are evaluated and used to modify a corresponding audio signal.
852
853 It accepts the following parameters:
854
855 @table @option
856 @item exprs
857 Set the '|'-separated expressions list for each separate channel. If
858 the number of input channels is greater than the number of
859 expressions, the last specified expression is used for the remaining
860 output channels.
861
862 @item channel_layout, c
863 Set output channel layout. If not specified, the channel layout is
864 specified by the number of expressions. If set to @samp{same}, it will
865 use by default the same input channel layout.
866 @end table
867
868 Each expression in @var{exprs} can contain the following constants and functions:
869
870 @table @option
871 @item ch
872 channel number of the current expression
873
874 @item n
875 number of the evaluated sample, starting from 0
876
877 @item s
878 sample rate
879
880 @item t
881 time of the evaluated sample expressed in seconds
882
883 @item nb_in_channels
884 @item nb_out_channels
885 input and output number of channels
886
887 @item val(CH)
888 the value of input channel with number @var{CH}
889 @end table
890
891 Note: this filter is slow. For faster processing you should use a
892 dedicated filter.
893
894 @subsection Examples
895
896 @itemize
897 @item
898 Half volume:
899 @example
900 aeval=val(ch)/2:c=same
901 @end example
902
903 @item
904 Invert phase of the second channel:
905 @example
906 aeval=val(0)|-val(1)
907 @end example
908 @end itemize
909
910 @anchor{afade}
911 @section afade
912
913 Apply fade-in/out effect to input audio.
914
915 A description of the accepted parameters follows.
916
917 @table @option
918 @item type, t
919 Specify the effect type, can be either @code{in} for fade-in, or
920 @code{out} for a fade-out effect. Default is @code{in}.
921
922 @item start_sample, ss
923 Specify the number of the start sample for starting to apply the fade
924 effect. Default is 0.
925
926 @item nb_samples, ns
927 Specify the number of samples for which the fade effect has to last. At
928 the end of the fade-in effect the output audio will have the same
929 volume as the input audio, at the end of the fade-out transition
930 the output audio will be silence. Default is 44100.
931
932 @item start_time, st
933 Specify the start time of the fade effect. Default is 0.
934 The value must be specified as a time duration; see
935 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
936 for the accepted syntax.
937 If set this option is used instead of @var{start_sample}.
938
939 @item duration, d
940 Specify the duration of the fade effect. See
941 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
942 for the accepted syntax.
943 At the end of the fade-in effect the output audio will have the same
944 volume as the input audio, at the end of the fade-out transition
945 the output audio will be silence.
946 By default the duration is determined by @var{nb_samples}.
947 If set this option is used instead of @var{nb_samples}.
948
949 @item curve
950 Set curve for fade transition.
951
952 It accepts the following values:
953 @table @option
954 @item tri
955 select triangular, linear slope (default)
956 @item qsin
957 select quarter of sine wave
958 @item hsin
959 select half of sine wave
960 @item esin
961 select exponential sine wave
962 @item log
963 select logarithmic
964 @item ipar
965 select inverted parabola
966 @item qua
967 select quadratic
968 @item cub
969 select cubic
970 @item squ
971 select square root
972 @item cbr
973 select cubic root
974 @item par
975 select parabola
976 @item exp
977 select exponential
978 @item iqsin
979 select inverted quarter of sine wave
980 @item ihsin
981 select inverted half of sine wave
982 @item dese
983 select double-exponential seat
984 @item desi
985 select double-exponential sigmoid
986 @item losi
987 select logistic sigmoid
988 @item nofade
989 no fade applied
990 @end table
991 @end table
992
993 @subsection Examples
994
995 @itemize
996 @item
997 Fade in first 15 seconds of audio:
998 @example
999 afade=t=in:ss=0:d=15
1000 @end example
1001
1002 @item
1003 Fade out last 25 seconds of a 900 seconds audio:
1004 @example
1005 afade=t=out:st=875:d=25
1006 @end example
1007 @end itemize
1008
1009 @section afftdn
1010 Denoise audio samples with FFT.
1011
1012 A description of the accepted parameters follows.
1013
1014 @table @option
1015 @item nr
1016 Set the noise reduction in dB, allowed range is 0.01 to 97.
1017 Default value is 12 dB.
1018
1019 @item nf
1020 Set the noise floor in dB, allowed range is -80 to -20.
1021 Default value is -50 dB.
1022
1023 @item nt
1024 Set the noise type.
1025
1026 It accepts the following values:
1027 @table @option
1028 @item w
1029 Select white noise.
1030
1031 @item v
1032 Select vinyl noise.
1033
1034 @item s
1035 Select shellac noise.
1036
1037 @item c
1038 Select custom noise, defined in @code{bn} option.
1039
1040 Default value is white noise.
1041 @end table
1042
1043 @item bn
1044 Set custom band noise for every one of 15 bands.
1045 Bands are separated by ' ' or '|'.
1046
1047 @item rf
1048 Set the residual floor in dB, allowed range is -80 to -20.
1049 Default value is -38 dB.
1050
1051 @item tn
1052 Enable noise tracking. By default is disabled.
1053 With this enabled, noise floor is automatically adjusted.
1054
1055 @item tr
1056 Enable residual tracking. By default is disabled.
1057
1058 @item om
1059 Set the output mode.
1060
1061 It accepts the following values:
1062 @table @option
1063 @item i
1064 Pass input unchanged.
1065
1066 @item o
1067 Pass noise filtered out.
1068
1069 @item n
1070 Pass only noise.
1071
1072 Default value is @var{o}.
1073 @end table
1074 @end table
1075
1076 @subsection Commands
1077
1078 This filter supports the following commands:
1079 @table @option
1080 @item sample_noise, sn
1081 Start or stop measuring noise profile.
1082 Syntax for the command is : "start" or "stop" string.
1083 After measuring noise profile is stopped it will be
1084 automatically applied in filtering.
1085
1086 @item noise_reduction, nr
1087 Change noise reduction. Argument is single float number.
1088 Syntax for the command is : "@var{noise_reduction}"
1089
1090 @item noise_floor, nf
1091 Change noise floor. Argument is single float number.
1092 Syntax for the command is : "@var{noise_floor}"
1093
1094 @item output_mode, om
1095 Change output mode operation.
1096 Syntax for the command is : "i", "o" or "n" string.
1097 @end table
1098
1099 @section afftfilt
1100 Apply arbitrary expressions to samples in frequency domain.
1101
1102 @table @option
1103 @item real
1104 Set frequency domain real expression for each separate channel separated
1105 by '|'. Default is "re".
1106 If the number of input channels is greater than the number of
1107 expressions, the last specified expression is used for the remaining
1108 output channels.
1109
1110 @item imag
1111 Set frequency domain imaginary expression for each separate channel
1112 separated by '|'. Default is "im".
1113
1114 Each expression in @var{real} and @var{imag} can contain the following
1115 constants and functions:
1116
1117 @table @option
1118 @item sr
1119 sample rate
1120
1121 @item b
1122 current frequency bin number
1123
1124 @item nb
1125 number of available bins
1126
1127 @item ch
1128 channel number of the current expression
1129
1130 @item chs
1131 number of channels
1132
1133 @item pts
1134 current frame pts
1135
1136 @item re
1137 current real part of frequency bin of current channel
1138
1139 @item im
1140 current imaginary part of frequency bin of current channel
1141
1142 @item real(b, ch)
1143 Return the value of real part of frequency bin at location (@var{bin},@var{channel})
1144
1145 @item imag(b, ch)
1146 Return the value of imaginary part of frequency bin at location (@var{bin},@var{channel})
1147 @end table
1148
1149 @item win_size
1150 Set window size. Allowed range is from 16 to 131072.
1151 Default is @code{4096}
1152
1153 @item win_func
1154 Set window function. Default is @code{hann}.
1155
1156 @item overlap
1157 Set window overlap. If set to 1, the recommended overlap for selected
1158 window function will be picked. Default is @code{0.75}.
1159 @end table
1160
1161 @subsection Examples
1162
1163 @itemize
1164 @item
1165 Leave almost only low frequencies in audio:
1166 @example
1167 afftfilt="'real=re * (1-clip((b/nb)*b,0,1))':imag='im * (1-clip((b/nb)*b,0,1))'"
1168 @end example
1169
1170 @item
1171 Apply robotize effect:
1172 @example
1173 afftfilt="real='hypot(re,im)*sin(0)':imag='hypot(re,im)*cos(0)':win_size=512:overlap=0.75"
1174 @end example
1175
1176 @item
1177 Apply whisper effect:
1178 @example
1179 afftfilt="real='hypot(re,im)*cos((random(0)*2-1)*2*3.14)':imag='hypot(re,im)*sin((random(1)*2-1)*2*3.14)':win_size=128:overlap=0.8"
1180 @end example
1181 @end itemize
1182
1183 @anchor{afir}
1184 @section afir
1185
1186 Apply an arbitrary Finite Impulse Response filter.
1187
1188 This filter is designed for applying long FIR filters,
1189 up to 60 seconds long.
1190
1191 It can be used as component for digital crossover filters,
1192 room equalization, cross talk cancellation, wavefield synthesis,
1193 auralization, ambiophonics, ambisonics and spatialization.
1194
1195 This filter uses the streams higher than first one as FIR coefficients.
1196 If the non-first stream holds a single channel, it will be used
1197 for all input channels in the first stream, otherwise
1198 the number of channels in the non-first stream must be same as
1199 the number of channels in the first stream.
1200
1201 It accepts the following parameters:
1202
1203 @table @option
1204 @item dry
1205 Set dry gain. This sets input gain.
1206
1207 @item wet
1208 Set wet gain. This sets final output gain.
1209
1210 @item length
1211 Set Impulse Response filter length. Default is 1, which means whole IR is processed.
1212
1213 @item gtype
1214 Enable applying gain measured from power of IR.
1215
1216 Set which approach to use for auto gain measurement.
1217
1218 @table @option
1219 @item none
1220 Do not apply any gain.
1221
1222 @item peak
1223 select peak gain, very conservative approach. This is default value.
1224
1225 @item dc
1226 select DC gain, limited application.
1227
1228 @item gn
1229 select gain to noise approach, this is most popular one.
1230 @end table
1231
1232 @item irgain
1233 Set gain to be applied to IR coefficients before filtering.
1234 Allowed range is 0 to 1. This gain is applied after any gain applied with @var{gtype} option.
1235
1236 @item irfmt
1237 Set format of IR stream. Can be @code{mono} or @code{input}.
1238 Default is @code{input}.
1239
1240 @item maxir
1241 Set max allowed Impulse Response filter duration in seconds. Default is 30 seconds.
1242 Allowed range is 0.1 to 60 seconds.
1243
1244 @item response
1245 Show IR frequency response, magnitude(magenta), phase(green) and group delay(yellow) in additional video stream.
1246 By default it is disabled.
1247
1248 @item channel
1249 Set for which IR channel to display frequency response. By default is first channel
1250 displayed. This option is used only when @var{response} is enabled.
1251
1252 @item size
1253 Set video stream size. This option is used only when @var{response} is enabled.
1254
1255 @item rate
1256 Set video stream frame rate. This option is used only when @var{response} is enabled.
1257
1258 @item minp
1259 Set minimal partition size used for convolution. Default is @var{8192}.
1260 Allowed range is from @var{1} to @var{32768}.
1261 Lower values decreases latency at cost of higher CPU usage.
1262
1263 @item maxp
1264 Set maximal partition size used for convolution. Default is @var{8192}.
1265 Allowed range is from @var{8} to @var{32768}.
1266 Lower values may increase CPU usage.
1267
1268 @item nbirs
1269 Set number of input impulse responses streams which will be switchable at runtime.
1270 Allowed range is from @var{1} to @var{32}. Default is @var{1}.
1271
1272 @item ir
1273 Set IR stream which will be used for convolution, starting from @var{0}, should always be
1274 lower than supplied value by @code{nbirs} option. Default is @var{0}.
1275 This option can be changed at runtime via @ref{commands}.
1276 @end table
1277
1278 @subsection Examples
1279
1280 @itemize
1281 @item
1282 Apply reverb to stream using mono IR file as second input, complete command using ffmpeg:
1283 @example
1284 ffmpeg -i input.wav -i middle_tunnel_1way_mono.wav -lavfi afir output.wav
1285 @end example
1286 @end itemize
1287
1288 @anchor{aformat}
1289 @section aformat
1290
1291 Set output format constraints for the input audio. The framework will
1292 negotiate the most appropriate format to minimize conversions.
1293
1294 It accepts the following parameters:
1295 @table @option
1296
1297 @item sample_fmts, f
1298 A '|'-separated list of requested sample formats.
1299
1300 @item sample_rates, r
1301 A '|'-separated list of requested sample rates.
1302
1303 @item channel_layouts, cl
1304 A '|'-separated list of requested channel layouts.
1305
1306 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1307 for the required syntax.
1308 @end table
1309
1310 If a parameter is omitted, all values are allowed.
1311
1312 Force the output to either unsigned 8-bit or signed 16-bit stereo
1313 @example
1314 aformat=sample_fmts=u8|s16:channel_layouts=stereo
1315 @end example
1316
1317 @section agate
1318
1319 A gate is mainly used to reduce lower parts of a signal. This kind of signal
1320 processing reduces disturbing noise between useful signals.
1321
1322 Gating is done by detecting the volume below a chosen level @var{threshold}
1323 and dividing it by the factor set with @var{ratio}. The bottom of the noise
1324 floor is set via @var{range}. Because an exact manipulation of the signal
1325 would cause distortion of the waveform the reduction can be levelled over
1326 time. This is done by setting @var{attack} and @var{release}.
1327
1328 @var{attack} determines how long the signal has to fall below the threshold
1329 before any reduction will occur and @var{release} sets the time the signal
1330 has to rise above the threshold to reduce the reduction again.
1331 Shorter signals than the chosen attack time will be left untouched.
1332
1333 @table @option
1334 @item level_in
1335 Set input level before filtering.
1336 Default is 1. Allowed range is from 0.015625 to 64.
1337
1338 @item mode
1339 Set the mode of operation. Can be @code{upward} or @code{downward}.
1340 Default is @code{downward}. If set to @code{upward} mode, higher parts of signal
1341 will be amplified, expanding dynamic range in upward direction.
1342 Otherwise, in case of @code{downward} lower parts of signal will be reduced.
1343
1344 @item range
1345 Set the level of gain reduction when the signal is below the threshold.
1346 Default is 0.06125. Allowed range is from 0 to 1.
1347 Setting this to 0 disables reduction and then filter behaves like expander.
1348
1349 @item threshold
1350 If a signal rises above this level the gain reduction is released.
1351 Default is 0.125. Allowed range is from 0 to 1.
1352
1353 @item ratio
1354 Set a ratio by which the signal is reduced.
1355 Default is 2. Allowed range is from 1 to 9000.
1356
1357 @item attack
1358 Amount of milliseconds the signal has to rise above the threshold before gain
1359 reduction stops.
1360 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
1361
1362 @item release
1363 Amount of milliseconds the signal has to fall below the threshold before the
1364 reduction is increased again. Default is 250 milliseconds.
1365 Allowed range is from 0.01 to 9000.
1366
1367 @item makeup
1368 Set amount of amplification of signal after processing.
1369 Default is 1. Allowed range is from 1 to 64.
1370
1371 @item knee
1372 Curve the sharp knee around the threshold to enter gain reduction more softly.
1373 Default is 2.828427125. Allowed range is from 1 to 8.
1374
1375 @item detection
1376 Choose if exact signal should be taken for detection or an RMS like one.
1377 Default is @code{rms}. Can be @code{peak} or @code{rms}.
1378
1379 @item link
1380 Choose if the average level between all channels or the louder channel affects
1381 the reduction.
1382 Default is @code{average}. Can be @code{average} or @code{maximum}.
1383 @end table
1384
1385 @section aiir
1386
1387 Apply an arbitrary Infinite Impulse Response filter.
1388
1389 It accepts the following parameters:
1390
1391 @table @option
1392 @item z
1393 Set numerator/zeros coefficients.
1394
1395 @item p
1396 Set denominator/poles coefficients.
1397
1398 @item k
1399 Set channels gains.
1400
1401 @item dry_gain
1402 Set input gain.
1403
1404 @item wet_gain
1405 Set output gain.
1406
1407 @item f
1408 Set coefficients format.
1409
1410 @table @samp
1411 @item tf
1412 transfer function
1413 @item zp
1414 Z-plane zeros/poles, cartesian (default)
1415 @item pr
1416 Z-plane zeros/poles, polar radians
1417 @item pd
1418 Z-plane zeros/poles, polar degrees
1419 @end table
1420
1421 @item r
1422 Set kind of processing.
1423 Can be @code{d} - direct or @code{s} - serial cascading. Default is @code{s}.
1424
1425 @item e
1426 Set filtering precision.
1427
1428 @table @samp
1429 @item dbl
1430 double-precision floating-point (default)
1431 @item flt
1432 single-precision floating-point
1433 @item i32
1434 32-bit integers
1435 @item i16
1436 16-bit integers
1437 @end table
1438
1439 @item mix
1440 How much to use filtered signal in output. Default is 1.
1441 Range is between 0 and 1.
1442
1443 @item response
1444 Show IR frequency response, magnitude(magenta), phase(green) and group delay(yellow) in additional video stream.
1445 By default it is disabled.
1446
1447 @item channel
1448 Set for which IR channel to display frequency response. By default is first channel
1449 displayed. This option is used only when @var{response} is enabled.
1450
1451 @item size
1452 Set video stream size. This option is used only when @var{response} is enabled.
1453 @end table
1454
1455 Coefficients in @code{tf} format are separated by spaces and are in ascending
1456 order.
1457
1458 Coefficients in @code{zp} format are separated by spaces and order of coefficients
1459 doesn't matter. Coefficients in @code{zp} format are complex numbers with @var{i}
1460 imaginary unit.
1461
1462 Different coefficients and gains can be provided for every channel, in such case
1463 use '|' to separate coefficients or gains. Last provided coefficients will be
1464 used for all remaining channels.
1465
1466 @subsection Examples
1467
1468 @itemize
1469 @item
1470 Apply 2 pole elliptic notch at around 5000Hz for 48000 Hz sample rate:
1471 @example
1472 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
1473 @end example
1474
1475 @item
1476 Same as above but in @code{zp} format:
1477 @example
1478 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
1479 @end example
1480 @end itemize
1481
1482 @section alimiter
1483
1484 The limiter prevents an input signal from rising over a desired threshold.
1485 This limiter uses lookahead technology to prevent your signal from distorting.
1486 It means that there is a small delay after the signal is processed. Keep in mind
1487 that the delay it produces is the attack time you set.
1488
1489 The filter accepts the following options:
1490
1491 @table @option
1492 @item level_in
1493 Set input gain. Default is 1.
1494
1495 @item level_out
1496 Set output gain. Default is 1.
1497
1498 @item limit
1499 Don't let signals above this level pass the limiter. Default is 1.
1500
1501 @item attack
1502 The limiter will reach its attenuation level in this amount of time in
1503 milliseconds. Default is 5 milliseconds.
1504
1505 @item release
1506 Come back from limiting to attenuation 1.0 in this amount of milliseconds.
1507 Default is 50 milliseconds.
1508
1509 @item asc
1510 When gain reduction is always needed ASC takes care of releasing to an
1511 average reduction level rather than reaching a reduction of 0 in the release
1512 time.
1513
1514 @item asc_level
1515 Select how much the release time is affected by ASC, 0 means nearly no changes
1516 in release time while 1 produces higher release times.
1517
1518 @item level
1519 Auto level output signal. Default is enabled.
1520 This normalizes audio back to 0dB if enabled.
1521 @end table
1522
1523 Depending on picked setting it is recommended to upsample input 2x or 4x times
1524 with @ref{aresample} before applying this filter.
1525
1526 @section allpass
1527
1528 Apply a two-pole all-pass filter with central frequency (in Hz)
1529 @var{frequency}, and filter-width @var{width}.
1530 An all-pass filter changes the audio's frequency to phase relationship
1531 without changing its frequency to amplitude relationship.
1532
1533 The filter accepts the following options:
1534
1535 @table @option
1536 @item frequency, f
1537 Set frequency in Hz.
1538
1539 @item width_type, t
1540 Set method to specify band-width of filter.
1541 @table @option
1542 @item h
1543 Hz
1544 @item q
1545 Q-Factor
1546 @item o
1547 octave
1548 @item s
1549 slope
1550 @item k
1551 kHz
1552 @end table
1553
1554 @item width, w
1555 Specify the band-width of a filter in width_type units.
1556
1557 @item mix, m
1558 How much to use filtered signal in output. Default is 1.
1559 Range is between 0 and 1.
1560
1561 @item channels, c
1562 Specify which channels to filter, by default all available are filtered.
1563
1564 @item normalize, n
1565 Normalize biquad coefficients, by default is disabled.
1566 Enabling it will normalize magnitude response at DC to 0dB.
1567 @end table
1568
1569 @subsection Commands
1570
1571 This filter supports the following commands:
1572 @table @option
1573 @item frequency, f
1574 Change allpass frequency.
1575 Syntax for the command is : "@var{frequency}"
1576
1577 @item width_type, t
1578 Change allpass width_type.
1579 Syntax for the command is : "@var{width_type}"
1580
1581 @item width, w
1582 Change allpass width.
1583 Syntax for the command is : "@var{width}"
1584
1585 @item mix, m
1586 Change allpass mix.
1587 Syntax for the command is : "@var{mix}"
1588 @end table
1589
1590 @section aloop
1591
1592 Loop audio samples.
1593
1594 The filter accepts the following options:
1595
1596 @table @option
1597 @item loop
1598 Set the number of loops. Setting this value to -1 will result in infinite loops.
1599 Default is 0.
1600
1601 @item size
1602 Set maximal number of samples. Default is 0.
1603
1604 @item start
1605 Set first sample of loop. Default is 0.
1606 @end table
1607
1608 @anchor{amerge}
1609 @section amerge
1610
1611 Merge two or more audio streams into a single multi-channel stream.
1612
1613 The filter accepts the following options:
1614
1615 @table @option
1616
1617 @item inputs
1618 Set the number of inputs. Default is 2.
1619
1620 @end table
1621
1622 If the channel layouts of the inputs are disjoint, and therefore compatible,
1623 the channel layout of the output will be set accordingly and the channels
1624 will be reordered as necessary. If the channel layouts of the inputs are not
1625 disjoint, the output will have all the channels of the first input then all
1626 the channels of the second input, in that order, and the channel layout of
1627 the output will be the default value corresponding to the total number of
1628 channels.
1629
1630 For example, if the first input is in 2.1 (FL+FR+LF) and the second input
1631 is FC+BL+BR, then the output will be in 5.1, with the channels in the
1632 following order: a1, a2, b1, a3, b2, b3 (a1 is the first channel of the
1633 first input, b1 is the first channel of the second input).
1634
1635 On the other hand, if both input are in stereo, the output channels will be
1636 in the default order: a1, a2, b1, b2, and the channel layout will be
1637 arbitrarily set to 4.0, which may or may not be the expected value.
1638
1639 All inputs must have the same sample rate, and format.
1640
1641 If inputs do not have the same duration, the output will stop with the
1642 shortest.
1643
1644 @subsection Examples
1645
1646 @itemize
1647 @item
1648 Merge two mono files into a stereo stream:
1649 @example
1650 amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
1651 @end example
1652
1653 @item
1654 Multiple merges assuming 1 video stream and 6 audio streams in @file{input.mkv}:
1655 @example
1656 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
1657 @end example
1658 @end itemize
1659
1660 @section amix
1661
1662 Mixes multiple audio inputs into a single output.
1663
1664 Note that this filter only supports float samples (the @var{amerge}
1665 and @var{pan} audio filters support many formats). If the @var{amix}
1666 input has integer samples then @ref{aresample} will be automatically
1667 inserted to perform the conversion to float samples.
1668
1669 For example
1670 @example
1671 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
1672 @end example
1673 will mix 3 input audio streams to a single output with the same duration as the
1674 first input and a dropout transition time of 3 seconds.
1675
1676 It accepts the following parameters:
1677 @table @option
1678
1679 @item inputs
1680 The number of inputs. If unspecified, it defaults to 2.
1681
1682 @item duration
1683 How to determine the end-of-stream.
1684 @table @option
1685
1686 @item longest
1687 The duration of the longest input. (default)
1688
1689 @item shortest
1690 The duration of the shortest input.
1691
1692 @item first
1693 The duration of the first input.
1694
1695 @end table
1696
1697 @item dropout_transition
1698 The transition time, in seconds, for volume renormalization when an input
1699 stream ends. The default value is 2 seconds.
1700
1701 @item weights
1702 Specify weight of each input audio stream as sequence.
1703 Each weight is separated by space. By default all inputs have same weight.
1704 @end table
1705
1706 @section amultiply
1707
1708 Multiply first audio stream with second audio stream and store result
1709 in output audio stream. Multiplication is done by multiplying each
1710 sample from first stream with sample at same position from second stream.
1711
1712 With this element-wise multiplication one can create amplitude fades and
1713 amplitude modulations.
1714
1715 @section anequalizer
1716
1717 High-order parametric multiband equalizer for each channel.
1718
1719 It accepts the following parameters:
1720 @table @option
1721 @item params
1722
1723 This option string is in format:
1724 "c@var{chn} f=@var{cf} w=@var{w} g=@var{g} t=@var{f} | ..."
1725 Each equalizer band is separated by '|'.
1726
1727 @table @option
1728 @item chn
1729 Set channel number to which equalization will be applied.
1730 If input doesn't have that channel the entry is ignored.
1731
1732 @item f
1733 Set central frequency for band.
1734 If input doesn't have that frequency the entry is ignored.
1735
1736 @item w
1737 Set band width in hertz.
1738
1739 @item g
1740 Set band gain in dB.
1741
1742 @item t
1743 Set filter type for band, optional, can be:
1744
1745 @table @samp
1746 @item 0
1747 Butterworth, this is default.
1748
1749 @item 1
1750 Chebyshev type 1.
1751
1752 @item 2
1753 Chebyshev type 2.
1754 @end table
1755 @end table
1756
1757 @item curves
1758 With this option activated frequency response of anequalizer is displayed
1759 in video stream.
1760
1761 @item size
1762 Set video stream size. Only useful if curves option is activated.
1763
1764 @item mgain
1765 Set max gain that will be displayed. Only useful if curves option is activated.
1766 Setting this to a reasonable value makes it possible to display gain which is derived from
1767 neighbour bands which are too close to each other and thus produce higher gain
1768 when both are activated.
1769
1770 @item fscale
1771 Set frequency scale used to draw frequency response in video output.
1772 Can be linear or logarithmic. Default is logarithmic.
1773
1774 @item colors
1775 Set color for each channel curve which is going to be displayed in video stream.
1776 This is list of color names separated by space or by '|'.
1777 Unrecognised or missing colors will be replaced by white color.
1778 @end table
1779
1780 @subsection Examples
1781
1782 @itemize
1783 @item
1784 Lower gain by 10 of central frequency 200Hz and width 100 Hz
1785 for first 2 channels using Chebyshev type 1 filter:
1786 @example
1787 anequalizer=c0 f=200 w=100 g=-10 t=1|c1 f=200 w=100 g=-10 t=1
1788 @end example
1789 @end itemize
1790
1791 @subsection Commands
1792
1793 This filter supports the following commands:
1794 @table @option
1795 @item change
1796 Alter existing filter parameters.
1797 Syntax for the commands is : "@var{fN}|f=@var{freq}|w=@var{width}|g=@var{gain}"
1798
1799 @var{fN} is existing filter number, starting from 0, if no such filter is available
1800 error is returned.
1801 @var{freq} set new frequency parameter.
1802 @var{width} set new width parameter in herz.
1803 @var{gain} set new gain parameter in dB.
1804
1805 Full filter invocation with asendcmd may look like this:
1806 asendcmd=c='4.0 anequalizer change 0|f=200|w=50|g=1',anequalizer=...
1807 @end table
1808
1809 @section anlmdn
1810
1811 Reduce broadband noise in audio samples using Non-Local Means algorithm.
1812
1813 Each sample is adjusted by looking for other samples with similar contexts. This
1814 context similarity is defined by comparing their surrounding patches of size
1815 @option{p}. Patches are searched in an area of @option{r} around the sample.
1816
1817 The filter accepts the following options:
1818
1819 @table @option
1820 @item s
1821 Set denoising strength. Allowed range is from 0.00001 to 10. Default value is 0.00001.
1822
1823 @item p
1824 Set patch radius duration. Allowed range is from 1 to 100 milliseconds.
1825 Default value is 2 milliseconds.
1826
1827 @item r
1828 Set research radius duration. Allowed range is from 2 to 300 milliseconds.
1829 Default value is 6 milliseconds.
1830
1831 @item o
1832 Set the output mode.
1833
1834 It accepts the following values:
1835 @table @option
1836 @item i
1837 Pass input unchanged.
1838
1839 @item o
1840 Pass noise filtered out.
1841
1842 @item n
1843 Pass only noise.
1844
1845 Default value is @var{o}.
1846 @end table
1847
1848 @item m
1849 Set smooth factor. Default value is @var{11}. Allowed range is from @var{1} to @var{15}.
1850 @end table
1851
1852 @subsection Commands
1853
1854 This filter supports the following commands:
1855 @table @option
1856 @item s
1857 Change denoise strength. Argument is single float number.
1858 Syntax for the command is : "@var{s}"
1859
1860 @item o
1861 Change output mode.
1862 Syntax for the command is : "i", "o" or "n" string.
1863 @end table
1864
1865 @section anlms
1866 Apply Normalized Least-Mean-Squares algorithm to the first audio stream using the second audio stream.
1867
1868 This adaptive filter is used to mimic a desired filter by finding the filter coefficients that
1869 relate to producing the least mean square of the error signal (difference between the desired,
1870 2nd input audio stream and the actual signal, the 1st input audio stream).
1871
1872 A description of the accepted options follows.
1873
1874 @table @option
1875 @item order
1876 Set filter order.
1877
1878 @item mu
1879 Set filter mu.
1880
1881 @item eps
1882 Set the filter eps.
1883
1884 @item leakage
1885 Set the filter leakage.
1886
1887 @item out_mode
1888 It accepts the following values:
1889 @table @option
1890 @item i
1891 Pass the 1st input.
1892
1893 @item d
1894 Pass the 2nd input.
1895
1896 @item o
1897 Pass filtered samples.
1898
1899 @item n
1900 Pass difference between desired and filtered samples.
1901
1902 Default value is @var{o}.
1903 @end table
1904 @end table
1905
1906 @subsection Examples
1907
1908 @itemize
1909 @item
1910 One of many usages of this filter is noise reduction, input audio is filtered
1911 with same samples that are delayed by fixed amount, one such example for stereo audio is:
1912 @example
1913 asplit[a][b],[a]adelay=32S|32S[a],[b][a]anlms=order=128:leakage=0.0005:mu=.5:out_mode=o
1914 @end example
1915 @end itemize
1916
1917 @subsection Commands
1918
1919 This filter supports the same commands as options, excluding option @code{order}.
1920
1921 @section anull
1922
1923 Pass the audio source unchanged to the output.
1924
1925 @section apad
1926
1927 Pad the end of an audio stream with silence.
1928
1929 This can be used together with @command{ffmpeg} @option{-shortest} to
1930 extend audio streams to the same length as the video stream.
1931
1932 A description of the accepted options follows.
1933
1934 @table @option
1935 @item packet_size
1936 Set silence packet size. Default value is 4096.
1937
1938 @item pad_len
1939 Set the number of samples of silence to add to the end. After the
1940 value is reached, the stream is terminated. This option is mutually
1941 exclusive with @option{whole_len}.
1942
1943 @item whole_len
1944 Set the minimum total number of samples in the output audio stream. If
1945 the value is longer than the input audio length, silence is added to
1946 the end, until the value is reached. This option is mutually exclusive
1947 with @option{pad_len}.
1948
1949 @item pad_dur
1950 Specify the duration of samples of silence to add. See
1951 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1952 for the accepted syntax. Used only if set to non-zero value.
1953
1954 @item whole_dur
1955 Specify the minimum total duration in the output audio stream. See
1956 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1957 for the accepted syntax. Used only if set to non-zero value. If the value is longer than
1958 the input audio length, silence is added to the end, until the value is reached.
1959 This option is mutually exclusive with @option{pad_dur}
1960 @end table
1961
1962 If neither the @option{pad_len} nor the @option{whole_len} nor @option{pad_dur}
1963 nor @option{whole_dur} option is set, the filter will add silence to the end of
1964 the input stream indefinitely.
1965
1966 @subsection Examples
1967
1968 @itemize
1969 @item
1970 Add 1024 samples of silence to the end of the input:
1971 @example
1972 apad=pad_len=1024
1973 @end example
1974
1975 @item
1976 Make sure the audio output will contain at least 10000 samples, pad
1977 the input with silence if required:
1978 @example
1979 apad=whole_len=10000
1980 @end example
1981
1982 @item
1983 Use @command{ffmpeg} to pad the audio input with silence, so that the
1984 video stream will always result the shortest and will be converted
1985 until the end in the output file when using the @option{shortest}
1986 option:
1987 @example
1988 ffmpeg -i VIDEO -i AUDIO -filter_complex "[1:0]apad" -shortest OUTPUT
1989 @end example
1990 @end itemize
1991
1992 @section aphaser
1993 Add a phasing effect to the input audio.
1994
1995 A phaser filter creates series of peaks and troughs in the frequency spectrum.
1996 The position of the peaks and troughs are modulated so that they vary over time, creating a sweeping effect.
1997
1998 A description of the accepted parameters follows.
1999
2000 @table @option
2001 @item in_gain
2002 Set input gain. Default is 0.4.
2003
2004 @item out_gain
2005 Set output gain. Default is 0.74
2006
2007 @item delay
2008 Set delay in milliseconds. Default is 3.0.
2009
2010 @item decay
2011 Set decay. Default is 0.4.
2012
2013 @item speed
2014 Set modulation speed in Hz. Default is 0.5.
2015
2016 @item type
2017 Set modulation type. Default is triangular.
2018
2019 It accepts the following values:
2020 @table @samp
2021 @item triangular, t
2022 @item sinusoidal, s
2023 @end table
2024 @end table
2025
2026 @section apulsator
2027
2028 Audio pulsator is something between an autopanner and a tremolo.
2029 But it can produce funny stereo effects as well. Pulsator changes the volume
2030 of the left and right channel based on a LFO (low frequency oscillator) with
2031 different waveforms and shifted phases.
2032 This filter have the ability to define an offset between left and right
2033 channel. An offset of 0 means that both LFO shapes match each other.
2034 The left and right channel are altered equally - a conventional tremolo.
2035 An offset of 50% means that the shape of the right channel is exactly shifted
2036 in phase (or moved backwards about half of the frequency) - pulsator acts as
2037 an autopanner. At 1 both curves match again. Every setting in between moves the
2038 phase shift gapless between all stages and produces some "bypassing" sounds with
2039 sine and triangle waveforms. The more you set the offset near 1 (starting from
2040 the 0.5) the faster the signal passes from the left to the right speaker.
2041
2042 The filter accepts the following options:
2043
2044 @table @option
2045 @item level_in
2046 Set input gain. By default it is 1. Range is [0.015625 - 64].
2047
2048 @item level_out
2049 Set output gain. By default it is 1. Range is [0.015625 - 64].
2050
2051 @item mode
2052 Set waveform shape the LFO will use. Can be one of: sine, triangle, square,
2053 sawup or sawdown. Default is sine.
2054
2055 @item amount
2056 Set modulation. Define how much of original signal is affected by the LFO.
2057
2058 @item offset_l
2059 Set left channel offset. Default is 0. Allowed range is [0 - 1].
2060
2061 @item offset_r
2062 Set right channel offset. Default is 0.5. Allowed range is [0 - 1].
2063
2064 @item width
2065 Set pulse width. Default is 1. Allowed range is [0 - 2].
2066
2067 @item timing
2068 Set possible timing mode. Can be one of: bpm, ms or hz. Default is hz.
2069
2070 @item bpm
2071 Set bpm. Default is 120. Allowed range is [30 - 300]. Only used if timing
2072 is set to bpm.
2073
2074 @item ms
2075 Set ms. Default is 500. Allowed range is [10 - 2000]. Only used if timing
2076 is set to ms.
2077
2078 @item hz
2079 Set frequency in Hz. Default is 2. Allowed range is [0.01 - 100]. Only used
2080 if timing is set to hz.
2081 @end table
2082
2083 @anchor{aresample}
2084 @section aresample
2085
2086 Resample the input audio to the specified parameters, using the
2087 libswresample library. If none are specified then the filter will
2088 automatically convert between its input and output.
2089
2090 This filter is also able to stretch/squeeze the audio data to make it match
2091 the timestamps or to inject silence / cut out audio to make it match the
2092 timestamps, do a combination of both or do neither.
2093
2094 The filter accepts the syntax
2095 [@var{sample_rate}:]@var{resampler_options}, where @var{sample_rate}
2096 expresses a sample rate and @var{resampler_options} is a list of
2097 @var{key}=@var{value} pairs, separated by ":". See the
2098 @ref{Resampler Options,,"Resampler Options" section in the
2099 ffmpeg-resampler(1) manual,ffmpeg-resampler}
2100 for the complete list of supported options.
2101
2102 @subsection Examples
2103
2104 @itemize
2105 @item
2106 Resample the input audio to 44100Hz:
2107 @example
2108 aresample=44100
2109 @end example
2110
2111 @item
2112 Stretch/squeeze samples to the given timestamps, with a maximum of 1000
2113 samples per second compensation:
2114 @example
2115 aresample=async=1000
2116 @end example
2117 @end itemize
2118
2119 @section areverse
2120
2121 Reverse an audio clip.
2122
2123 Warning: This filter requires memory to buffer the entire clip, so trimming
2124 is suggested.
2125
2126 @subsection Examples
2127
2128 @itemize
2129 @item
2130 Take the first 5 seconds of a clip, and reverse it.
2131 @example
2132 atrim=end=5,areverse
2133 @end example
2134 @end itemize
2135
2136 @section arnndn
2137
2138 Reduce noise from speech using Recurrent Neural Networks.
2139
2140 This filter accepts the following options:
2141
2142 @table @option
2143 @item model, m
2144 Set train model file to load. This option is always required.
2145 @end table
2146
2147 @section asetnsamples
2148
2149 Set the number of samples per each output audio frame.
2150
2151 The last output packet may contain a different number of samples, as
2152 the filter will flush all the remaining samples when the input audio
2153 signals its end.
2154
2155 The filter accepts the following options:
2156
2157 @table @option
2158
2159 @item nb_out_samples, n
2160 Set the number of frames per each output audio frame. The number is
2161 intended as the number of samples @emph{per each channel}.
2162 Default value is 1024.
2163
2164 @item pad, p
2165 If set to 1, the filter will pad the last audio frame with zeroes, so
2166 that the last frame will contain the same number of samples as the
2167 previous ones. Default value is 1.
2168 @end table
2169
2170 For example, to set the number of per-frame samples to 1234 and
2171 disable padding for the last frame, use:
2172 @example
2173 asetnsamples=n=1234:p=0
2174 @end example
2175
2176 @section asetrate
2177
2178 Set the sample rate without altering the PCM data.
2179 This will result in a change of speed and pitch.
2180
2181 The filter accepts the following options:
2182
2183 @table @option
2184 @item sample_rate, r
2185 Set the output sample rate. Default is 44100 Hz.
2186 @end table
2187
2188 @section ashowinfo
2189
2190 Show a line containing various information for each input audio frame.
2191 The input audio is not modified.
2192
2193 The shown line contains a sequence of key/value pairs of the form
2194 @var{key}:@var{value}.
2195
2196 The following values are shown in the output:
2197
2198 @table @option
2199 @item n
2200 The (sequential) number of the input frame, starting from 0.
2201
2202 @item pts
2203 The presentation timestamp of the input frame, in time base units; the time base
2204 depends on the filter input pad, and is usually 1/@var{sample_rate}.
2205
2206 @item pts_time
2207 The presentation timestamp of the input frame in seconds.
2208
2209 @item pos
2210 position of the frame in the input stream, -1 if this information in
2211 unavailable and/or meaningless (for example in case of synthetic audio)
2212
2213 @item fmt
2214 The sample format.
2215
2216 @item chlayout
2217 The channel layout.
2218
2219 @item rate
2220 The sample rate for the audio frame.
2221
2222 @item nb_samples
2223 The number of samples (per channel) in the frame.
2224
2225 @item checksum
2226 The Adler-32 checksum (printed in hexadecimal) of the audio data. For planar
2227 audio, the data is treated as if all the planes were concatenated.
2228
2229 @item plane_checksums
2230 A list of Adler-32 checksums for each data plane.
2231 @end table
2232
2233 @section asoftclip
2234 Apply audio soft clipping.
2235
2236 Soft clipping is a type of distortion effect where the amplitude of a signal is saturated
2237 along a smooth curve, rather than the abrupt shape of hard-clipping.
2238
2239 This filter accepts the following options:
2240
2241 @table @option
2242 @item type
2243 Set type of soft-clipping.
2244
2245 It accepts the following values:
2246 @table @option
2247 @item tanh
2248 @item atan
2249 @item cubic
2250 @item exp
2251 @item alg
2252 @item quintic
2253 @item sin
2254 @end table
2255
2256 @item param
2257 Set additional parameter which controls sigmoid function.
2258 @end table
2259
2260 @subsection Commands
2261
2262 This filter supports the all above options as @ref{commands}.
2263
2264 @section asr
2265 Automatic Speech Recognition
2266
2267 This filter uses PocketSphinx for speech recognition. To enable
2268 compilation of this filter, you need to configure FFmpeg with
2269 @code{--enable-pocketsphinx}.
2270
2271 It accepts the following options:
2272
2273 @table @option
2274 @item rate
2275 Set sampling rate of input audio. Defaults is @code{16000}.
2276 This need to match speech models, otherwise one will get poor results.
2277
2278 @item hmm
2279 Set dictionary containing acoustic model files.
2280
2281 @item dict
2282 Set pronunciation dictionary.
2283
2284 @item lm
2285 Set language model file.
2286
2287 @item lmctl
2288 Set language model set.
2289
2290 @item lmname
2291 Set which language model to use.
2292
2293 @item logfn
2294 Set output for log messages.
2295 @end table
2296
2297 The filter exports recognized speech as the frame metadata @code{lavfi.asr.text}.
2298
2299 @anchor{astats}
2300 @section astats
2301
2302 Display time domain statistical information about the audio channels.
2303 Statistics are calculated and displayed for each audio channel and,
2304 where applicable, an overall figure is also given.
2305
2306 It accepts the following option:
2307 @table @option
2308 @item length
2309 Short window length in seconds, used for peak and trough RMS measurement.
2310 Default is @code{0.05} (50 milliseconds). Allowed range is @code{[0.01 - 10]}.
2311
2312 @item metadata
2313
2314 Set metadata injection. All the metadata keys are prefixed with @code{lavfi.astats.X},
2315 where @code{X} is channel number starting from 1 or string @code{Overall}. Default is
2316 disabled.
2317
2318 Available keys for each channel are:
2319 DC_offset
2320 Min_level
2321 Max_level
2322 Min_difference
2323 Max_difference
2324 Mean_difference
2325 RMS_difference
2326 Peak_level
2327 RMS_peak
2328 RMS_trough
2329 Crest_factor
2330 Flat_factor
2331 Peak_count
2332 Bit_depth
2333 Dynamic_range
2334 Zero_crossings
2335 Zero_crossings_rate
2336 Number_of_NaNs
2337 Number_of_Infs
2338 Number_of_denormals
2339
2340 and for Overall:
2341 DC_offset
2342 Min_level
2343 Max_level
2344 Min_difference
2345 Max_difference
2346 Mean_difference
2347 RMS_difference
2348 Peak_level
2349 RMS_level
2350 RMS_peak
2351 RMS_trough
2352 Flat_factor
2353 Peak_count
2354 Bit_depth
2355 Number_of_samples
2356 Number_of_NaNs
2357 Number_of_Infs
2358 Number_of_denormals
2359
2360 For example full key look like this @code{lavfi.astats.1.DC_offset} or
2361 this @code{lavfi.astats.Overall.Peak_count}.
2362
2363 For description what each key means read below.
2364
2365 @item reset
2366 Set number of frame after which stats are going to be recalculated.
2367 Default is disabled.
2368
2369 @item measure_perchannel
2370 Select the entries which need to be measured per channel. The metadata keys can
2371 be used as flags, default is @option{all} which measures everything.
2372 @option{none} disables all per channel measurement.
2373
2374 @item measure_overall
2375 Select the entries which need to be measured overall. The metadata keys can
2376 be used as flags, default is @option{all} which measures everything.
2377 @option{none} disables all overall measurement.
2378
2379 @end table
2380
2381 A description of each shown parameter follows:
2382
2383 @table @option
2384 @item DC offset
2385 Mean amplitude displacement from zero.
2386
2387 @item Min level
2388 Minimal sample level.
2389
2390 @item Max level
2391 Maximal sample level.
2392
2393 @item Min difference
2394 Minimal difference between two consecutive samples.
2395
2396 @item Max difference
2397 Maximal difference between two consecutive samples.
2398
2399 @item Mean difference
2400 Mean difference between two consecutive samples.
2401 The average of each difference between two consecutive samples.
2402
2403 @item RMS difference
2404 Root Mean Square difference between two consecutive samples.
2405
2406 @item Peak level dB
2407 @item RMS level dB
2408 Standard peak and RMS level measured in dBFS.
2409
2410 @item RMS peak dB
2411 @item RMS trough dB
2412 Peak and trough values for RMS level measured over a short window.
2413
2414 @item Crest factor
2415 Standard ratio of peak to RMS level (note: not in dB).
2416
2417 @item Flat factor
2418 Flatness (i.e. consecutive samples with the same value) of the signal at its peak levels
2419 (i.e. either @var{Min level} or @var{Max level}).
2420
2421 @item Peak count
2422 Number of occasions (not the number of samples) that the signal attained either
2423 @var{Min level} or @var{Max level}.
2424
2425 @item Bit depth
2426 Overall bit depth of audio. Number of bits used for each sample.
2427
2428 @item Dynamic range
2429 Measured dynamic range of audio in dB.
2430
2431 @item Zero crossings
2432 Number of points where the waveform crosses the zero level axis.
2433
2434 @item Zero crossings rate
2435 Rate of Zero crossings and number of audio samples.
2436 @end table
2437
2438 @section atempo
2439
2440 Adjust audio tempo.
2441
2442 The filter accepts exactly one parameter, the audio tempo. If not
2443 specified then the filter will assume nominal 1.0 tempo. Tempo must
2444 be in the [0.5, 100.0] range.
2445
2446 Note that tempo greater than 2 will skip some samples rather than
2447 blend them in.  If for any reason this is a concern it is always
2448 possible to daisy-chain several instances of atempo to achieve the
2449 desired product tempo.
2450
2451 @subsection Examples
2452
2453 @itemize
2454 @item
2455 Slow down audio to 80% tempo:
2456 @example
2457 atempo=0.8
2458 @end example
2459
2460 @item
2461 To speed up audio to 300% tempo:
2462 @example
2463 atempo=3
2464 @end example
2465
2466 @item
2467 To speed up audio to 300% tempo by daisy-chaining two atempo instances:
2468 @example
2469 atempo=sqrt(3),atempo=sqrt(3)
2470 @end example
2471 @end itemize
2472
2473 @subsection Commands
2474
2475 This filter supports the following commands:
2476 @table @option
2477 @item tempo
2478 Change filter tempo scale factor.
2479 Syntax for the command is : "@var{tempo}"
2480 @end table
2481
2482 @section atrim
2483
2484 Trim the input so that the output contains one continuous subpart of the input.
2485
2486 It accepts the following parameters:
2487 @table @option
2488 @item start
2489 Timestamp (in seconds) of the start of the section to keep. I.e. the audio
2490 sample with the timestamp @var{start} will be the first sample in the output.
2491
2492 @item end
2493 Specify time of the first audio sample that will be dropped, i.e. the
2494 audio sample immediately preceding the one with the timestamp @var{end} will be
2495 the last sample in the output.
2496
2497 @item start_pts
2498 Same as @var{start}, except this option sets the start timestamp in samples
2499 instead of seconds.
2500
2501 @item end_pts
2502 Same as @var{end}, except this option sets the end timestamp in samples instead
2503 of seconds.
2504
2505 @item duration
2506 The maximum duration of the output in seconds.
2507
2508 @item start_sample
2509 The number of the first sample that should be output.
2510
2511 @item end_sample
2512 The number of the first sample that should be dropped.
2513 @end table
2514
2515 @option{start}, @option{end}, and @option{duration} are expressed as time
2516 duration specifications; see
2517 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}.
2518
2519 Note that the first two sets of the start/end options and the @option{duration}
2520 option look at the frame timestamp, while the _sample options simply count the
2521 samples that pass through the filter. So start/end_pts and start/end_sample will
2522 give different results when the timestamps are wrong, inexact or do not start at
2523 zero. Also note that this filter does not modify the timestamps. If you wish
2524 to have the output timestamps start at zero, insert the asetpts filter after the
2525 atrim filter.
2526
2527 If multiple start or end options are set, this filter tries to be greedy and
2528 keep all samples that match at least one of the specified constraints. To keep
2529 only the part that matches all the constraints at once, chain multiple atrim
2530 filters.
2531
2532 The defaults are such that all the input is kept. So it is possible to set e.g.
2533 just the end values to keep everything before the specified time.
2534
2535 Examples:
2536 @itemize
2537 @item
2538 Drop everything except the second minute of input:
2539 @example
2540 ffmpeg -i INPUT -af atrim=60:120
2541 @end example
2542
2543 @item
2544 Keep only the first 1000 samples:
2545 @example
2546 ffmpeg -i INPUT -af atrim=end_sample=1000
2547 @end example
2548
2549 @end itemize
2550
2551 @section axcorrelate
2552 Calculate normalized cross-correlation between two input audio streams.
2553
2554 Resulted samples are always between -1 and 1 inclusive.
2555 If result is 1 it means two input samples are highly correlated in that selected segment.
2556 Result 0 means they are not correlated at all.
2557 If result is -1 it means two input samples are out of phase, which means they cancel each
2558 other.
2559
2560 The filter accepts the following options:
2561
2562 @table @option
2563 @item size
2564 Set size of segment over which cross-correlation is calculated.
2565 Default is 256. Allowed range is from 2 to 131072.
2566
2567 @item algo
2568 Set algorithm for cross-correlation. Can be @code{slow} or @code{fast}.
2569 Default is @code{slow}. Fast algorithm assumes mean values over any given segment
2570 are always zero and thus need much less calculations to make.
2571 This is generally not true, but is valid for typical audio streams.
2572 @end table
2573
2574 @subsection Examples
2575
2576 @itemize
2577 @item
2578 Calculate correlation between channels in stereo audio stream:
2579 @example
2580 ffmpeg -i stereo.wav -af channelsplit,axcorrelate=size=1024:algo=fast correlation.wav
2581 @end example
2582 @end itemize
2583
2584 @section bandpass
2585
2586 Apply a two-pole Butterworth band-pass filter with central
2587 frequency @var{frequency}, and (3dB-point) band-width width.
2588 The @var{csg} option selects a constant skirt gain (peak gain = Q)
2589 instead of the default: constant 0dB peak gain.
2590 The filter roll off at 6dB per octave (20dB per decade).
2591
2592 The filter accepts the following options:
2593
2594 @table @option
2595 @item frequency, f
2596 Set the filter's central frequency. Default is @code{3000}.
2597
2598 @item csg
2599 Constant skirt gain if set to 1. Defaults to 0.
2600
2601 @item width_type, t
2602 Set method to specify band-width of filter.
2603 @table @option
2604 @item h
2605 Hz
2606 @item q
2607 Q-Factor
2608 @item o
2609 octave
2610 @item s
2611 slope
2612 @item k
2613 kHz
2614 @end table
2615
2616 @item width, w
2617 Specify the band-width of a filter in width_type units.
2618
2619 @item mix, m
2620 How much to use filtered signal in output. Default is 1.
2621 Range is between 0 and 1.
2622
2623 @item channels, c
2624 Specify which channels to filter, by default all available are filtered.
2625
2626 @item normalize, n
2627 Normalize biquad coefficients, by default is disabled.
2628 Enabling it will normalize magnitude response at DC to 0dB.
2629 @end table
2630
2631 @subsection Commands
2632
2633 This filter supports the following commands:
2634 @table @option
2635 @item frequency, f
2636 Change bandpass frequency.
2637 Syntax for the command is : "@var{frequency}"
2638
2639 @item width_type, t
2640 Change bandpass width_type.
2641 Syntax for the command is : "@var{width_type}"
2642
2643 @item width, w
2644 Change bandpass width.
2645 Syntax for the command is : "@var{width}"
2646
2647 @item mix, m
2648 Change bandpass mix.
2649 Syntax for the command is : "@var{mix}"
2650 @end table
2651
2652 @section bandreject
2653
2654 Apply a two-pole Butterworth band-reject filter with central
2655 frequency @var{frequency}, and (3dB-point) band-width @var{width}.
2656 The filter roll off at 6dB per octave (20dB per decade).
2657
2658 The filter accepts the following options:
2659
2660 @table @option
2661 @item frequency, f
2662 Set the filter's central frequency. Default is @code{3000}.
2663
2664 @item width_type, t
2665 Set method to specify band-width of filter.
2666 @table @option
2667 @item h
2668 Hz
2669 @item q
2670 Q-Factor
2671 @item o
2672 octave
2673 @item s
2674 slope
2675 @item k
2676 kHz
2677 @end table
2678
2679 @item width, w
2680 Specify the band-width of a filter in width_type units.
2681
2682 @item mix, m
2683 How much to use filtered signal in output. Default is 1.
2684 Range is between 0 and 1.
2685
2686 @item channels, c
2687 Specify which channels to filter, by default all available are filtered.
2688
2689 @item normalize, n
2690 Normalize biquad coefficients, by default is disabled.
2691 Enabling it will normalize magnitude response at DC to 0dB.
2692 @end table
2693
2694 @subsection Commands
2695
2696 This filter supports the following commands:
2697 @table @option
2698 @item frequency, f
2699 Change bandreject frequency.
2700 Syntax for the command is : "@var{frequency}"
2701
2702 @item width_type, t
2703 Change bandreject width_type.
2704 Syntax for the command is : "@var{width_type}"
2705
2706 @item width, w
2707 Change bandreject width.
2708 Syntax for the command is : "@var{width}"
2709
2710 @item mix, m
2711 Change bandreject mix.
2712 Syntax for the command is : "@var{mix}"
2713 @end table
2714
2715 @section bass, lowshelf
2716
2717 Boost or cut the bass (lower) frequencies of the audio using a two-pole
2718 shelving filter with a response similar to that of a standard
2719 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
2720
2721 The filter accepts the following options:
2722
2723 @table @option
2724 @item gain, g
2725 Give the gain at 0 Hz. Its useful range is about -20
2726 (for a large cut) to +20 (for a large boost).
2727 Beware of clipping when using a positive gain.
2728
2729 @item frequency, f
2730 Set the filter's central frequency and so can be used
2731 to extend or reduce the frequency range to be boosted or cut.
2732 The default value is @code{100} Hz.
2733
2734 @item width_type, t
2735 Set method to specify band-width of filter.
2736 @table @option
2737 @item h
2738 Hz
2739 @item q
2740 Q-Factor
2741 @item o
2742 octave
2743 @item s
2744 slope
2745 @item k
2746 kHz
2747 @end table
2748
2749 @item width, w
2750 Determine how steep is the filter's shelf transition.
2751
2752 @item mix, m
2753 How much to use filtered signal in output. Default is 1.
2754 Range is between 0 and 1.
2755
2756 @item channels, c
2757 Specify which channels to filter, by default all available are filtered.
2758
2759 @item normalize, n
2760 Normalize biquad coefficients, by default is disabled.
2761 Enabling it will normalize magnitude response at DC to 0dB.
2762 @end table
2763
2764 @subsection Commands
2765
2766 This filter supports the following commands:
2767 @table @option
2768 @item frequency, f
2769 Change bass frequency.
2770 Syntax for the command is : "@var{frequency}"
2771
2772 @item width_type, t
2773 Change bass width_type.
2774 Syntax for the command is : "@var{width_type}"
2775
2776 @item width, w
2777 Change bass width.
2778 Syntax for the command is : "@var{width}"
2779
2780 @item gain, g
2781 Change bass gain.
2782 Syntax for the command is : "@var{gain}"
2783
2784 @item mix, m
2785 Change bass mix.
2786 Syntax for the command is : "@var{mix}"
2787 @end table
2788
2789 @section biquad
2790
2791 Apply a biquad IIR filter with the given coefficients.
2792 Where @var{b0}, @var{b1}, @var{b2} and @var{a0}, @var{a1}, @var{a2}
2793 are the numerator and denominator coefficients respectively.
2794 and @var{channels}, @var{c} specify which channels to filter, by default all
2795 available are filtered.
2796
2797 @subsection Commands
2798
2799 This filter supports the following commands:
2800 @table @option
2801 @item a0
2802 @item a1
2803 @item a2
2804 @item b0
2805 @item b1
2806 @item b2
2807 Change biquad parameter.
2808 Syntax for the command is : "@var{value}"
2809
2810 @item mix, m
2811 How much to use filtered signal in output. Default is 1.
2812 Range is between 0 and 1.
2813
2814 @item channels, c
2815 Specify which channels to filter, by default all available are filtered.
2816
2817 @item normalize, n
2818 Normalize biquad coefficients, by default is disabled.
2819 Enabling it will normalize magnitude response at DC to 0dB.
2820 @end table
2821
2822 @section bs2b
2823 Bauer stereo to binaural transformation, which improves headphone listening of
2824 stereo audio records.
2825
2826 To enable compilation of this filter you need to configure FFmpeg with
2827 @code{--enable-libbs2b}.
2828
2829 It accepts the following parameters:
2830 @table @option
2831
2832 @item profile
2833 Pre-defined crossfeed level.
2834 @table @option
2835
2836 @item default
2837 Default level (fcut=700, feed=50).
2838
2839 @item cmoy
2840 Chu Moy circuit (fcut=700, feed=60).
2841
2842 @item jmeier
2843 Jan Meier circuit (fcut=650, feed=95).
2844
2845 @end table
2846
2847 @item fcut
2848 Cut frequency (in Hz).
2849
2850 @item feed
2851 Feed level (in Hz).
2852
2853 @end table
2854
2855 @section channelmap
2856
2857 Remap input channels to new locations.
2858
2859 It accepts the following parameters:
2860 @table @option
2861 @item map
2862 Map channels from input to output. The argument is a '|'-separated list of
2863 mappings, each in the @code{@var{in_channel}-@var{out_channel}} or
2864 @var{in_channel} form. @var{in_channel} can be either the name of the input
2865 channel (e.g. FL for front left) or its index in the input channel layout.
2866 @var{out_channel} is the name of the output channel or its index in the output
2867 channel layout. If @var{out_channel} is not given then it is implicitly an
2868 index, starting with zero and increasing by one for each mapping.
2869
2870 @item channel_layout
2871 The channel layout of the output stream.
2872 @end table
2873
2874 If no mapping is present, the filter will implicitly map input channels to
2875 output channels, preserving indices.
2876
2877 @subsection Examples
2878
2879 @itemize
2880 @item
2881 For example, assuming a 5.1+downmix input MOV file,
2882 @example
2883 ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
2884 @end example
2885 will create an output WAV file tagged as stereo from the downmix channels of
2886 the input.
2887
2888 @item
2889 To fix a 5.1 WAV improperly encoded in AAC's native channel order
2890 @example
2891 ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
2892 @end example
2893 @end itemize
2894
2895 @section channelsplit
2896
2897 Split each channel from an input audio stream into a separate output stream.
2898
2899 It accepts the following parameters:
2900 @table @option
2901 @item channel_layout
2902 The channel layout of the input stream. The default is "stereo".
2903 @item channels
2904 A channel layout describing the channels to be extracted as separate output streams
2905 or "all" to extract each input channel as a separate stream. The default is "all".
2906
2907 Choosing channels not present in channel layout in the input will result in an error.
2908 @end table
2909
2910 @subsection Examples
2911
2912 @itemize
2913 @item
2914 For example, assuming a stereo input MP3 file,
2915 @example
2916 ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
2917 @end example
2918 will create an output Matroska file with two audio streams, one containing only
2919 the left channel and the other the right channel.
2920
2921 @item
2922 Split a 5.1 WAV file into per-channel files:
2923 @example
2924 ffmpeg -i in.wav -filter_complex
2925 'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
2926 -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
2927 front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
2928 side_right.wav
2929 @end example
2930
2931 @item
2932 Extract only LFE from a 5.1 WAV file:
2933 @example
2934 ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1:channels=LFE[LFE]'
2935 -map '[LFE]' lfe.wav
2936 @end example
2937 @end itemize
2938
2939 @section chorus
2940 Add a chorus effect to the audio.
2941
2942 Can make a single vocal sound like a chorus, but can also be applied to instrumentation.
2943
2944 Chorus resembles an echo effect with a short delay, but whereas with echo the delay is
2945 constant, with chorus, it is varied using using sinusoidal or triangular modulation.
2946 The modulation depth defines the range the modulated delay is played before or after
2947 the delay. Hence the delayed sound will sound slower or faster, that is the delayed
2948 sound tuned around the original one, like in a chorus where some vocals are slightly
2949 off key.
2950
2951 It accepts the following parameters:
2952 @table @option
2953 @item in_gain
2954 Set input gain. Default is 0.4.
2955
2956 @item out_gain
2957 Set output gain. Default is 0.4.
2958
2959 @item delays
2960 Set delays. A typical delay is around 40ms to 60ms.
2961
2962 @item decays
2963 Set decays.
2964
2965 @item speeds
2966 Set speeds.
2967
2968 @item depths
2969 Set depths.
2970 @end table
2971
2972 @subsection Examples
2973
2974 @itemize
2975 @item
2976 A single delay:
2977 @example
2978 chorus=0.7:0.9:55:0.4:0.25:2
2979 @end example
2980
2981 @item
2982 Two delays:
2983 @example
2984 chorus=0.6:0.9:50|60:0.4|0.32:0.25|0.4:2|1.3
2985 @end example
2986
2987 @item
2988 Fuller sounding chorus with three delays:
2989 @example
2990 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
2991 @end example
2992 @end itemize
2993
2994 @section compand
2995 Compress or expand the audio's dynamic range.
2996
2997 It accepts the following parameters:
2998
2999 @table @option
3000
3001 @item attacks
3002 @item decays
3003 A list of times in seconds for each channel over which the instantaneous level
3004 of the input signal is averaged to determine its volume. @var{attacks} refers to
3005 increase of volume and @var{decays} refers to decrease of volume. For most
3006 situations, the attack time (response to the audio getting louder) should be
3007 shorter than the decay time, because the human ear is more sensitive to sudden
3008 loud audio than sudden soft audio. A typical value for attack is 0.3 seconds and
3009 a typical value for decay is 0.8 seconds.
3010 If specified number of attacks & decays is lower than number of channels, the last
3011 set attack/decay will be used for all remaining channels.
3012
3013 @item points
3014 A list of points for the transfer function, specified in dB relative to the
3015 maximum possible signal amplitude. Each key points list must be defined using
3016 the following syntax: @code{x0/y0|x1/y1|x2/y2|....} or
3017 @code{x0/y0 x1/y1 x2/y2 ....}
3018
3019 The input values must be in strictly increasing order but the transfer function
3020 does not have to be monotonically rising. The point @code{0/0} is assumed but
3021 may be overridden (by @code{0/out-dBn}). Typical values for the transfer
3022 function are @code{-70/-70|-60/-20|1/0}.
3023
3024 @item soft-knee
3025 Set the curve radius in dB for all joints. It defaults to 0.01.
3026
3027 @item gain
3028 Set the additional gain in dB to be applied at all points on the transfer
3029 function. This allows for easy adjustment of the overall gain.
3030 It defaults to 0.
3031
3032 @item volume
3033 Set an initial volume, in dB, to be assumed for each channel when filtering
3034 starts. This permits the user to supply a nominal level initially, so that, for
3035 example, a very large gain is not applied to initial signal levels before the
3036 companding has begun to operate. A typical value for audio which is initially
3037 quiet is -90 dB. It defaults to 0.
3038
3039 @item delay
3040 Set a delay, in seconds. The input audio is analyzed immediately, but audio is
3041 delayed before being fed to the volume adjuster. Specifying a delay
3042 approximately equal to the attack/decay times allows the filter to effectively
3043 operate in predictive rather than reactive mode. It defaults to 0.
3044
3045 @end table
3046
3047 @subsection Examples
3048
3049 @itemize
3050 @item
3051 Make music with both quiet and loud passages suitable for listening to in a
3052 noisy environment:
3053 @example
3054 compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
3055 @end example
3056
3057 Another example for audio with whisper and explosion parts:
3058 @example
3059 compand=0|0:1|1:-90/-900|-70/-70|-30/-9|0/-3:6:0:0:0
3060 @end example
3061
3062 @item
3063 A noise gate for when the noise is at a lower level than the signal:
3064 @example
3065 compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1
3066 @end example
3067
3068 @item
3069 Here is another noise gate, this time for when the noise is at a higher level
3070 than the signal (making it, in some ways, similar to squelch):
3071 @example
3072 compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1
3073 @end example
3074
3075 @item
3076 2:1 compression starting at -6dB:
3077 @example
3078 compand=points=-80/-80|-6/-6|0/-3.8|20/3.5
3079 @end example
3080
3081 @item
3082 2:1 compression starting at -9dB:
3083 @example
3084 compand=points=-80/-80|-9/-9|0/-5.3|20/2.9
3085 @end example
3086
3087 @item
3088 2:1 compression starting at -12dB:
3089 @example
3090 compand=points=-80/-80|-12/-12|0/-6.8|20/1.9
3091 @end example
3092
3093 @item
3094 2:1 compression starting at -18dB:
3095 @example
3096 compand=points=-80/-80|-18/-18|0/-9.8|20/0.7
3097 @end example
3098
3099 @item
3100 3:1 compression starting at -15dB:
3101 @example
3102 compand=points=-80/-80|-15/-15|0/-10.8|20/-5.2
3103 @end example
3104
3105 @item
3106 Compressor/Gate:
3107 @example
3108 compand=points=-80/-105|-62/-80|-15.4/-15.4|0/-12|20/-7.6
3109 @end example
3110
3111 @item
3112 Expander:
3113 @example
3114 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
3115 @end example
3116
3117 @item
3118 Hard limiter at -6dB:
3119 @example
3120 compand=attacks=0:points=-80/-80|-6/-6|20/-6
3121 @end example
3122
3123 @item
3124 Hard limiter at -12dB:
3125 @example
3126 compand=attacks=0:points=-80/-80|-12/-12|20/-12
3127 @end example
3128
3129 @item
3130 Hard noise gate at -35 dB:
3131 @example
3132 compand=attacks=0:points=-80/-115|-35.1/-80|-35/-35|20/20
3133 @end example
3134
3135 @item
3136 Soft limiter:
3137 @example
3138 compand=attacks=0:points=-80/-80|-12.4/-12.4|-6/-8|0/-6.8|20/-2.8
3139 @end example
3140 @end itemize
3141
3142 @section compensationdelay
3143
3144 Compensation Delay Line is a metric based delay to compensate differing
3145 positions of microphones or speakers.
3146
3147 For example, you have recorded guitar with two microphones placed in
3148 different locations. Because the front of sound wave has fixed speed in
3149 normal conditions, the phasing of microphones can vary and depends on
3150 their location and interposition. The best sound mix can be achieved when
3151 these microphones are in phase (synchronized). Note that a distance of
3152 ~30 cm between microphones makes one microphone capture the signal in
3153 antiphase to the other microphone. That makes the final mix sound moody.
3154 This filter helps to solve phasing problems by adding different delays
3155 to each microphone track and make them synchronized.
3156
3157 The best result can be reached when you take one track as base and
3158 synchronize other tracks one by one with it.
3159 Remember that synchronization/delay tolerance depends on sample rate, too.
3160 Higher sample rates will give more tolerance.
3161
3162 The filter accepts the following parameters:
3163
3164 @table @option
3165 @item mm
3166 Set millimeters distance. This is compensation distance for fine tuning.
3167 Default is 0.
3168
3169 @item cm
3170 Set cm distance. This is compensation distance for tightening distance setup.
3171 Default is 0.
3172
3173 @item m
3174 Set meters distance. This is compensation distance for hard distance setup.
3175 Default is 0.
3176
3177 @item dry
3178 Set dry amount. Amount of unprocessed (dry) signal.
3179 Default is 0.
3180
3181 @item wet
3182 Set wet amount. Amount of processed (wet) signal.
3183 Default is 1.
3184
3185 @item temp
3186 Set temperature in degrees Celsius. This is the temperature of the environment.
3187 Default is 20.
3188 @end table
3189
3190 @section crossfeed
3191 Apply headphone crossfeed filter.
3192
3193 Crossfeed is the process of blending the left and right channels of stereo
3194 audio recording.
3195 It is mainly used to reduce extreme stereo separation of low frequencies.
3196
3197 The intent is to produce more speaker like sound to the listener.
3198
3199 The filter accepts the following options:
3200
3201 @table @option
3202 @item strength
3203 Set strength of crossfeed. Default is 0.2. Allowed range is from 0 to 1.
3204 This sets gain of low shelf filter for side part of stereo image.
3205 Default is -6dB. Max allowed is -30db when strength is set to 1.
3206
3207 @item range
3208 Set soundstage wideness. Default is 0.5. Allowed range is from 0 to 1.
3209 This sets cut off frequency of low shelf filter. Default is cut off near
3210 1550 Hz. With range set to 1 cut off frequency is set to 2100 Hz.
3211
3212 @item level_in
3213 Set input gain. Default is 0.9.
3214
3215 @item level_out
3216 Set output gain. Default is 1.
3217 @end table
3218
3219 @section crystalizer
3220 Simple algorithm to expand audio dynamic range.
3221
3222 The filter accepts the following options:
3223
3224 @table @option
3225 @item i
3226 Sets the intensity of effect (default: 2.0). Must be in range between 0.0
3227 (unchanged sound) to 10.0 (maximum effect).
3228
3229 @item c
3230 Enable clipping. By default is enabled.
3231 @end table
3232
3233 @subsection Commands
3234
3235 This filter supports the all above options as @ref{commands}.
3236
3237 @section dcshift
3238 Apply a DC shift to the audio.
3239
3240 This can be useful to remove a DC offset (caused perhaps by a hardware problem
3241 in the recording chain) from the audio. The effect of a DC offset is reduced
3242 headroom and hence volume. The @ref{astats} filter can be used to determine if
3243 a signal has a DC offset.
3244
3245 @table @option
3246 @item shift
3247 Set the DC shift, allowed range is [-1, 1]. It indicates the amount to shift
3248 the audio.
3249
3250 @item limitergain
3251 Optional. It should have a value much less than 1 (e.g. 0.05 or 0.02) and is
3252 used to prevent clipping.
3253 @end table
3254
3255 @section deesser
3256
3257 Apply de-essing to the audio samples.
3258
3259 @table @option
3260 @item i
3261 Set intensity for triggering de-essing. Allowed range is from 0 to 1.
3262 Default is 0.
3263
3264 @item m
3265 Set amount of ducking on treble part of sound. Allowed range is from 0 to 1.
3266 Default is 0.5.
3267
3268 @item f
3269 How much of original frequency content to keep when de-essing. Allowed range is from 0 to 1.
3270 Default is 0.5.
3271
3272 @item s
3273 Set the output mode.
3274
3275 It accepts the following values:
3276 @table @option
3277 @item i
3278 Pass input unchanged.
3279
3280 @item o
3281 Pass ess filtered out.
3282
3283 @item e
3284 Pass only ess.
3285
3286 Default value is @var{o}.
3287 @end table
3288
3289 @end table
3290
3291 @section drmeter
3292 Measure audio dynamic range.
3293
3294 DR values of 14 and higher is found in very dynamic material. DR of 8 to 13
3295 is found in transition material. And anything less that 8 have very poor dynamics
3296 and is very compressed.
3297
3298 The filter accepts the following options:
3299
3300 @table @option
3301 @item length
3302 Set window length in seconds used to split audio into segments of equal length.
3303 Default is 3 seconds.
3304 @end table
3305
3306 @section dynaudnorm
3307 Dynamic Audio Normalizer.
3308
3309 This filter applies a certain amount of gain to the input audio in order
3310 to bring its peak magnitude to a target level (e.g. 0 dBFS). However, in
3311 contrast to more "simple" normalization algorithms, the Dynamic Audio
3312 Normalizer *dynamically* re-adjusts the gain factor to the input audio.
3313 This allows for applying extra gain to the "quiet" sections of the audio
3314 while avoiding distortions or clipping the "loud" sections. In other words:
3315 The Dynamic Audio Normalizer will "even out" the volume of quiet and loud
3316 sections, in the sense that the volume of each section is brought to the
3317 same target level. Note, however, that the Dynamic Audio Normalizer achieves
3318 this goal *without* applying "dynamic range compressing". It will retain 100%
3319 of the dynamic range *within* each section of the audio file.
3320
3321 @table @option
3322 @item framelen, f
3323 Set the frame length in milliseconds. In range from 10 to 8000 milliseconds.
3324 Default is 500 milliseconds.
3325 The Dynamic Audio Normalizer processes the input audio in small chunks,
3326 referred to as frames. This is required, because a peak magnitude has no
3327 meaning for just a single sample value. Instead, we need to determine the
3328 peak magnitude for a contiguous sequence of sample values. While a "standard"
3329 normalizer would simply use the peak magnitude of the complete file, the
3330 Dynamic Audio Normalizer determines the peak magnitude individually for each
3331 frame. The length of a frame is specified in milliseconds. By default, the
3332 Dynamic Audio Normalizer uses a frame length of 500 milliseconds, which has
3333 been found to give good results with most files.
3334 Note that the exact frame length, in number of samples, will be determined
3335 automatically, based on the sampling rate of the individual input audio file.
3336
3337 @item gausssize, g
3338 Set the Gaussian filter window size. In range from 3 to 301, must be odd
3339 number. Default is 31.
3340 Probably the most important parameter of the Dynamic Audio Normalizer is the
3341 @code{window size} of the Gaussian smoothing filter. The filter's window size
3342 is specified in frames, centered around the current frame. For the sake of
3343 simplicity, this must be an odd number. Consequently, the default value of 31
3344 takes into account the current frame, as well as the 15 preceding frames and
3345 the 15 subsequent frames. Using a larger window results in a stronger
3346 smoothing effect and thus in less gain variation, i.e. slower gain
3347 adaptation. Conversely, using a smaller window results in a weaker smoothing
3348 effect and thus in more gain variation, i.e. faster gain adaptation.
3349 In other words, the more you increase this value, the more the Dynamic Audio
3350 Normalizer will behave like a "traditional" normalization filter. On the
3351 contrary, the more you decrease this value, the more the Dynamic Audio
3352 Normalizer will behave like a dynamic range compressor.
3353
3354 @item peak, p
3355 Set the target peak value. This specifies the highest permissible magnitude
3356 level for the normalized audio input. This filter will try to approach the
3357 target peak magnitude as closely as possible, but at the same time it also
3358 makes sure that the normalized signal will never exceed the peak magnitude.
3359 A frame's maximum local gain factor is imposed directly by the target peak
3360 magnitude. The default value is 0.95 and thus leaves a headroom of 5%*.
3361 It is not recommended to go above this value.
3362
3363 @item maxgain, m
3364 Set the maximum gain factor. In range from 1.0 to 100.0. Default is 10.0.
3365 The Dynamic Audio Normalizer determines the maximum possible (local) gain
3366 factor for each input frame, i.e. the maximum gain factor that does not
3367 result in clipping or distortion. The maximum gain factor is determined by
3368 the frame's highest magnitude sample. However, the Dynamic Audio Normalizer
3369 additionally bounds the frame's maximum gain factor by a predetermined
3370 (global) maximum gain factor. This is done in order to avoid excessive gain
3371 factors in "silent" or almost silent frames. By default, the maximum gain
3372 factor is 10.0, For most inputs the default value should be sufficient and
3373 it usually is not recommended to increase this value. Though, for input
3374 with an extremely low overall volume level, it may be necessary to allow even
3375 higher gain factors. Note, however, that the Dynamic Audio Normalizer does
3376 not simply apply a "hard" threshold (i.e. cut off values above the threshold).
3377 Instead, a "sigmoid" threshold function will be applied. This way, the
3378 gain factors will smoothly approach the threshold value, but never exceed that
3379 value.
3380
3381 @item targetrms, r
3382 Set the target RMS. In range from 0.0 to 1.0. Default is 0.0 - disabled.
3383 By default, the Dynamic Audio Normalizer performs "peak" normalization.
3384 This means that the maximum local gain factor for each frame is defined
3385 (only) by the frame's highest magnitude sample. This way, the samples can
3386 be amplified as much as possible without exceeding the maximum signal
3387 level, i.e. without clipping. Optionally, however, the Dynamic Audio
3388 Normalizer can also take into account the frame's root mean square,
3389 abbreviated RMS. In electrical engineering, the RMS is commonly used to
3390 determine the power of a time-varying signal. It is therefore considered
3391 that the RMS is a better approximation of the "perceived loudness" than
3392 just looking at the signal's peak magnitude. Consequently, by adjusting all
3393 frames to a constant RMS value, a uniform "perceived loudness" can be
3394 established. If a target RMS value has been specified, a frame's local gain
3395 factor is defined as the factor that would result in exactly that RMS value.
3396 Note, however, that the maximum local gain factor is still restricted by the
3397 frame's highest magnitude sample, in order to prevent clipping.
3398
3399 @item coupling, n
3400 Enable channels coupling. By default is enabled.
3401 By default, the Dynamic Audio Normalizer will amplify all channels by the same
3402 amount. This means the same gain factor will be applied to all channels, i.e.
3403 the maximum possible gain factor is determined by the "loudest" channel.
3404 However, in some recordings, it may happen that the volume of the different
3405 channels is uneven, e.g. one channel may be "quieter" than the other one(s).
3406 In this case, this option can be used to disable the channel coupling. This way,
3407 the gain factor will be determined independently for each channel, depending
3408 only on the individual channel's highest magnitude sample. This allows for
3409 harmonizing the volume of the different channels.
3410
3411 @item correctdc, c
3412 Enable DC bias correction. By default is disabled.
3413 An audio signal (in the time domain) is a sequence of sample values.
3414 In the Dynamic Audio Normalizer these sample values are represented in the
3415 -1.0 to 1.0 range, regardless of the original input format. Normally, the
3416 audio signal, or "waveform", should be centered around the zero point.
3417 That means if we calculate the mean value of all samples in a file, or in a
3418 single frame, then the result should be 0.0 or at least very close to that
3419 value. If, however, there is a significant deviation of the mean value from
3420 0.0, in either positive or negative direction, this is referred to as a
3421 DC bias or DC offset. Since a DC bias is clearly undesirable, the Dynamic
3422 Audio Normalizer provides optional DC bias correction.
3423 With DC bias correction enabled, the Dynamic Audio Normalizer will determine
3424 the mean value, or "DC correction" offset, of each input frame and subtract
3425 that value from all of the frame's sample values which ensures those samples
3426 are centered around 0.0 again. Also, in order to avoid "gaps" at the frame
3427 boundaries, the DC correction offset values will be interpolated smoothly
3428 between neighbouring frames.
3429
3430 @item altboundary, b
3431 Enable alternative boundary mode. By default is disabled.
3432 The Dynamic Audio Normalizer takes into account a certain neighbourhood
3433 around each frame. This includes the preceding frames as well as the
3434 subsequent frames. However, for the "boundary" frames, located at the very
3435 beginning and at the very end of the audio file, not all neighbouring
3436 frames are available. In particular, for the first few frames in the audio
3437 file, the preceding frames are not known. And, similarly, for the last few
3438 frames in the audio file, the subsequent frames are not known. Thus, the
3439 question arises which gain factors should be assumed for the missing frames
3440 in the "boundary" region. The Dynamic Audio Normalizer implements two modes
3441 to deal with this situation. The default boundary mode assumes a gain factor
3442 of exactly 1.0 for the missing frames, resulting in a smooth "fade in" and
3443 "fade out" at the beginning and at the end of the input, respectively.
3444
3445 @item compress, s
3446 Set the compress factor. In range from 0.0 to 30.0. Default is 0.0.
3447 By default, the Dynamic Audio Normalizer does not apply "traditional"
3448 compression. This means that signal peaks will not be pruned and thus the
3449 full dynamic range will be retained within each local neighbourhood. However,
3450 in some cases it may be desirable to combine the Dynamic Audio Normalizer's
3451 normalization algorithm with a more "traditional" compression.
3452 For this purpose, the Dynamic Audio Normalizer provides an optional compression
3453 (thresholding) function. If (and only if) the compression feature is enabled,
3454 all input frames will be processed by a soft knee thresholding function prior
3455 to the actual normalization process. Put simply, the thresholding function is
3456 going to prune all samples whose magnitude exceeds a certain threshold value.
3457 However, the Dynamic Audio Normalizer does not simply apply a fixed threshold
3458 value. Instead, the threshold value will be adjusted for each individual
3459 frame.
3460 In general, smaller parameters result in stronger compression, and vice versa.
3461 Values below 3.0 are not recommended, because audible distortion may appear.
3462
3463 @item threshold, t
3464 Set the target threshold value. This specifies the lowest permissible
3465 magnitude level for the audio input which will be normalized.
3466 If input frame volume is above this value frame will be normalized.
3467 Otherwise frame may not be normalized at all. The default value is set
3468 to 0, which means all input frames will be normalized.
3469 This option is mostly useful if digital noise is not wanted to be amplified.
3470 @end table
3471
3472 @subsection Commands
3473
3474 This filter supports the all above options as @ref{commands}.
3475
3476 @section earwax
3477
3478 Make audio easier to listen to on headphones.
3479
3480 This filter adds `cues' to 44.1kHz stereo (i.e. audio CD format) audio
3481 so that when listened to on headphones the stereo image is moved from
3482 inside your head (standard for headphones) to outside and in front of
3483 the listener (standard for speakers).
3484
3485 Ported from SoX.
3486
3487 @section equalizer
3488
3489 Apply a two-pole peaking equalisation (EQ) filter. With this
3490 filter, the signal-level at and around a selected frequency can
3491 be increased or decreased, whilst (unlike bandpass and bandreject
3492 filters) that at all other frequencies is unchanged.
3493
3494 In order to produce complex equalisation curves, this filter can
3495 be given several times, each with a different central frequency.
3496
3497 The filter accepts the following options:
3498
3499 @table @option
3500 @item frequency, f
3501 Set the filter's central frequency in Hz.
3502
3503 @item width_type, t
3504 Set method to specify band-width of filter.
3505 @table @option
3506 @item h
3507 Hz
3508 @item q
3509 Q-Factor
3510 @item o
3511 octave
3512 @item s
3513 slope
3514 @item k
3515 kHz
3516 @end table
3517
3518 @item width, w
3519 Specify the band-width of a filter in width_type units.
3520
3521 @item gain, g
3522 Set the required gain or attenuation in dB.
3523 Beware of clipping when using a positive gain.
3524
3525 @item mix, m
3526 How much to use filtered signal in output. Default is 1.
3527 Range is between 0 and 1.
3528
3529 @item channels, c
3530 Specify which channels to filter, by default all available are filtered.
3531
3532 @item normalize, n
3533 Normalize biquad coefficients, by default is disabled.
3534 Enabling it will normalize magnitude response at DC to 0dB.
3535 @end table
3536
3537 @subsection Examples
3538 @itemize
3539 @item
3540 Attenuate 10 dB at 1000 Hz, with a bandwidth of 200 Hz:
3541 @example
3542 equalizer=f=1000:t=h:width=200:g=-10
3543 @end example
3544
3545 @item
3546 Apply 2 dB gain at 1000 Hz with Q 1 and attenuate 5 dB at 100 Hz with Q 2:
3547 @example
3548 equalizer=f=1000:t=q:w=1:g=2,equalizer=f=100:t=q:w=2:g=-5
3549 @end example
3550 @end itemize
3551
3552 @subsection Commands
3553
3554 This filter supports the following commands:
3555 @table @option
3556 @item frequency, f
3557 Change equalizer frequency.
3558 Syntax for the command is : "@var{frequency}"
3559
3560 @item width_type, t
3561 Change equalizer width_type.
3562 Syntax for the command is : "@var{width_type}"
3563
3564 @item width, w
3565 Change equalizer width.
3566 Syntax for the command is : "@var{width}"
3567
3568 @item gain, g
3569 Change equalizer gain.
3570 Syntax for the command is : "@var{gain}"
3571
3572 @item mix, m
3573 Change equalizer mix.
3574 Syntax for the command is : "@var{mix}"
3575 @end table
3576
3577 @section extrastereo
3578
3579 Linearly increases the difference between left and right channels which
3580 adds some sort of "live" effect to playback.
3581
3582 The filter accepts the following options:
3583
3584 @table @option
3585 @item m
3586 Sets the difference coefficient (default: 2.5). 0.0 means mono sound
3587 (average of both channels), with 1.0 sound will be unchanged, with
3588 -1.0 left and right channels will be swapped.
3589
3590 @item c
3591 Enable clipping. By default is enabled.
3592 @end table
3593
3594 @subsection Commands
3595
3596 This filter supports the all above options as @ref{commands}.
3597
3598 @section firequalizer
3599 Apply FIR Equalization using arbitrary frequency response.
3600
3601 The filter accepts the following option:
3602
3603 @table @option
3604 @item gain
3605 Set gain curve equation (in dB). The expression can contain variables:
3606 @table @option
3607 @item f
3608 the evaluated frequency
3609 @item sr
3610 sample rate
3611 @item ch
3612 channel number, set to 0 when multichannels evaluation is disabled
3613 @item chid
3614 channel id, see libavutil/channel_layout.h, set to the first channel id when
3615 multichannels evaluation is disabled
3616 @item chs
3617 number of channels
3618 @item chlayout
3619 channel_layout, see libavutil/channel_layout.h
3620
3621 @end table
3622 and functions:
3623 @table @option
3624 @item gain_interpolate(f)
3625 interpolate gain on frequency f based on gain_entry
3626 @item cubic_interpolate(f)
3627 same as gain_interpolate, but smoother
3628 @end table
3629 This option is also available as command. Default is @code{gain_interpolate(f)}.
3630
3631 @item gain_entry
3632 Set gain entry for gain_interpolate function. The expression can
3633 contain functions:
3634 @table @option
3635 @item entry(f, g)
3636 store gain entry at frequency f with value g
3637 @end table
3638 This option is also available as command.
3639
3640 @item delay
3641 Set filter delay in seconds. Higher value means more accurate.
3642 Default is @code{0.01}.
3643
3644 @item accuracy
3645 Set filter accuracy in Hz. Lower value means more accurate.
3646 Default is @code{5}.
3647
3648 @item wfunc
3649 Set window function. Acceptable values are:
3650 @table @option
3651 @item rectangular
3652 rectangular window, useful when gain curve is already smooth
3653 @item hann
3654 hann window (default)
3655 @item hamming
3656 hamming window
3657 @item blackman
3658 blackman window
3659 @item nuttall3
3660 3-terms continuous 1st derivative nuttall window
3661 @item mnuttall3
3662 minimum 3-terms discontinuous nuttall window
3663 @item nuttall
3664 4-terms continuous 1st derivative nuttall window
3665 @item bnuttall
3666 minimum 4-terms discontinuous nuttall (blackman-nuttall) window
3667 @item bharris
3668 blackman-harris window
3669 @item tukey
3670 tukey window
3671 @end table
3672
3673 @item fixed
3674 If enabled, use fixed number of audio samples. This improves speed when
3675 filtering with large delay. Default is disabled.
3676
3677 @item multi
3678 Enable multichannels evaluation on gain. Default is disabled.
3679
3680 @item zero_phase
3681 Enable zero phase mode by subtracting timestamp to compensate delay.
3682 Default is disabled.
3683
3684 @item scale
3685 Set scale used by gain. Acceptable values are:
3686 @table @option
3687 @item linlin
3688 linear frequency, linear gain
3689 @item linlog
3690 linear frequency, logarithmic (in dB) gain (default)
3691 @item loglin
3692 logarithmic (in octave scale where 20 Hz is 0) frequency, linear gain
3693 @item loglog
3694 logarithmic frequency, logarithmic gain
3695 @end table
3696
3697 @item dumpfile
3698 Set file for dumping, suitable for gnuplot.
3699
3700 @item dumpscale
3701 Set scale for dumpfile. Acceptable values are same with scale option.
3702 Default is linlog.
3703
3704 @item fft2
3705 Enable 2-channel convolution using complex FFT. This improves speed significantly.
3706 Default is disabled.
3707
3708 @item min_phase
3709 Enable minimum phase impulse response. Default is disabled.
3710 @end table
3711
3712 @subsection Examples
3713 @itemize
3714 @item
3715 lowpass at 1000 Hz:
3716 @example
3717 firequalizer=gain='if(lt(f,1000), 0, -INF)'
3718 @end example
3719 @item
3720 lowpass at 1000 Hz with gain_entry:
3721 @example
3722 firequalizer=gain_entry='entry(1000,0); entry(1001, -INF)'
3723 @end example
3724 @item
3725 custom equalization:
3726 @example
3727 firequalizer=gain_entry='entry(100,0); entry(400, -4); entry(1000, -6); entry(2000, 0)'
3728 @end example
3729 @item
3730 higher delay with zero phase to compensate delay:
3731 @example
3732 firequalizer=delay=0.1:fixed=on:zero_phase=on
3733 @end example
3734 @item
3735 lowpass on left channel, highpass on right channel:
3736 @example
3737 firequalizer=gain='if(eq(chid,1), gain_interpolate(f), if(eq(chid,2), gain_interpolate(1e6+f), 0))'
3738 :gain_entry='entry(1000, 0); entry(1001,-INF); entry(1e6+1000,0)':multi=on
3739 @end example
3740 @end itemize
3741
3742 @section flanger
3743 Apply a flanging effect to the audio.
3744
3745 The filter accepts the following options:
3746
3747 @table @option
3748 @item delay
3749 Set base delay in milliseconds. Range from 0 to 30. Default value is 0.
3750
3751 @item depth
3752 Set added sweep delay in milliseconds. Range from 0 to 10. Default value is 2.
3753
3754 @item regen
3755 Set percentage regeneration (delayed signal feedback). Range from -95 to 95.
3756 Default value is 0.
3757
3758 @item width
3759 Set percentage of delayed signal mixed with original. Range from 0 to 100.
3760 Default value is 71.
3761
3762 @item speed
3763 Set sweeps per second (Hz). Range from 0.1 to 10. Default value is 0.5.
3764
3765 @item shape
3766 Set swept wave shape, can be @var{triangular} or @var{sinusoidal}.
3767 Default value is @var{sinusoidal}.
3768
3769 @item phase
3770 Set swept wave percentage-shift for multi channel. Range from 0 to 100.
3771 Default value is 25.
3772
3773 @item interp
3774 Set delay-line interpolation, @var{linear} or @var{quadratic}.
3775 Default is @var{linear}.
3776 @end table
3777
3778 @section haas
3779 Apply Haas effect to audio.
3780
3781 Note that this makes most sense to apply on mono signals.
3782 With this filter applied to mono signals it give some directionality and
3783 stretches its stereo image.
3784
3785 The filter accepts the following options:
3786
3787 @table @option
3788 @item level_in
3789 Set input level. By default is @var{1}, or 0dB
3790
3791 @item level_out
3792 Set output level. By default is @var{1}, or 0dB.
3793
3794 @item side_gain
3795 Set gain applied to side part of signal. By default is @var{1}.
3796
3797 @item middle_source
3798 Set kind of middle source. Can be one of the following:
3799
3800 @table @samp
3801 @item left
3802 Pick left channel.
3803
3804 @item right
3805 Pick right channel.
3806
3807 @item mid
3808 Pick middle part signal of stereo image.
3809
3810 @item side
3811 Pick side part signal of stereo image.
3812 @end table
3813
3814 @item middle_phase
3815 Change middle phase. By default is disabled.
3816
3817 @item left_delay
3818 Set left channel delay. By default is @var{2.05} milliseconds.
3819
3820 @item left_balance
3821 Set left channel balance. By default is @var{-1}.
3822
3823 @item left_gain
3824 Set left channel gain. By default is @var{1}.
3825
3826 @item left_phase
3827 Change left phase. By default is disabled.
3828
3829 @item right_delay
3830 Set right channel delay. By defaults is @var{2.12} milliseconds.
3831
3832 @item right_balance
3833 Set right channel balance. By default is @var{1}.
3834
3835 @item right_gain
3836 Set right channel gain. By default is @var{1}.
3837
3838 @item right_phase
3839 Change right phase. By default is enabled.
3840 @end table
3841
3842 @section hdcd
3843
3844 Decodes High Definition Compatible Digital (HDCD) data. A 16-bit PCM stream with
3845 embedded HDCD codes is expanded into a 20-bit PCM stream.
3846
3847 The filter supports the Peak Extend and Low-level Gain Adjustment features
3848 of HDCD, and detects the Transient Filter flag.
3849
3850 @example
3851 ffmpeg -i HDCD16.flac -af hdcd OUT24.flac
3852 @end example
3853
3854 When using the filter with wav, note the default encoding for wav is 16-bit,
3855 so the resulting 20-bit stream will be truncated back to 16-bit. Use something
3856 like @command{-acodec pcm_s24le} after the filter to get 24-bit PCM output.
3857 @example
3858 ffmpeg -i HDCD16.wav -af hdcd OUT16.wav
3859 ffmpeg -i HDCD16.wav -af hdcd -c:a pcm_s24le OUT24.wav
3860 @end example
3861
3862 The filter accepts the following options:
3863
3864 @table @option
3865 @item disable_autoconvert
3866 Disable any automatic format conversion or resampling in the filter graph.
3867
3868 @item process_stereo
3869 Process the stereo channels together. If target_gain does not match between
3870 channels, consider it invalid and use the last valid target_gain.
3871
3872 @item cdt_ms
3873 Set the code detect timer period in ms.
3874
3875 @item force_pe
3876 Always extend peaks above -3dBFS even if PE isn't signaled.
3877
3878 @item analyze_mode
3879 Replace audio with a solid tone and adjust the amplitude to signal some
3880 specific aspect of the decoding process. The output file can be loaded in
3881 an audio editor alongside the original to aid analysis.
3882
3883 @code{analyze_mode=pe:force_pe=true} can be used to see all samples above the PE level.
3884
3885 Modes are:
3886 @table @samp
3887 @item 0, off
3888 Disabled
3889 @item 1, lle
3890 Gain adjustment level at each sample
3891 @item 2, pe
3892 Samples where peak extend occurs
3893 @item 3, cdt
3894 Samples where the code detect timer is active
3895 @item 4, tgm
3896 Samples where the target gain does not match between channels
3897 @end table
3898 @end table
3899
3900 @section headphone
3901
3902 Apply head-related transfer functions (HRTFs) to create virtual
3903 loudspeakers around the user for binaural listening via headphones.
3904 The HRIRs are provided via additional streams, for each channel
3905 one stereo input stream is needed.
3906
3907 The filter accepts the following options:
3908
3909 @table @option
3910 @item map
3911 Set mapping of input streams for convolution.
3912 The argument is a '|'-separated list of channel names in order as they
3913 are given as additional stream inputs for filter.
3914 This also specify number of input streams. Number of input streams
3915 must be not less than number of channels in first stream plus one.
3916
3917 @item gain
3918 Set gain applied to audio. Value is in dB. Default is 0.
3919
3920 @item type
3921 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
3922 processing audio in time domain which is slow.
3923 @var{freq} is processing audio in frequency domain which is fast.
3924 Default is @var{freq}.
3925
3926 @item lfe
3927 Set custom gain for LFE channels. Value is in dB. Default is 0.
3928
3929 @item size
3930 Set size of frame in number of samples which will be processed at once.
3931 Default value is @var{1024}. Allowed range is from 1024 to 96000.
3932
3933 @item hrir
3934 Set format of hrir stream.
3935 Default value is @var{stereo}. Alternative value is @var{multich}.
3936 If value is set to @var{stereo}, number of additional streams should
3937 be greater or equal to number of input channels in first input stream.
3938 Also each additional stream should have stereo number of channels.
3939 If value is set to @var{multich}, number of additional streams should
3940 be exactly one. Also number of input channels of additional stream
3941 should be equal or greater than twice number of channels of first input
3942 stream.
3943 @end table
3944
3945 @subsection Examples
3946
3947 @itemize
3948 @item
3949 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
3950 each amovie filter use stereo file with IR coefficients as input.
3951 The files give coefficients for each position of virtual loudspeaker:
3952 @example
3953 ffmpeg -i input.wav
3954 -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"
3955 output.wav
3956 @end example
3957
3958 @item
3959 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
3960 but now in @var{multich} @var{hrir} format.
3961 @example
3962 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"
3963 output.wav
3964 @end example
3965 @end itemize
3966
3967 @section highpass
3968
3969 Apply a high-pass filter with 3dB point frequency.
3970 The filter can be either single-pole, or double-pole (the default).
3971 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
3972
3973 The filter accepts the following options:
3974
3975 @table @option
3976 @item frequency, f
3977 Set frequency in Hz. Default is 3000.
3978
3979 @item poles, p
3980 Set number of poles. Default is 2.
3981
3982 @item width_type, t
3983 Set method to specify band-width of filter.
3984 @table @option
3985 @item h
3986 Hz
3987 @item q
3988 Q-Factor
3989 @item o
3990 octave
3991 @item s
3992 slope
3993 @item k
3994 kHz
3995 @end table
3996
3997 @item width, w
3998 Specify the band-width of a filter in width_type units.
3999 Applies only to double-pole filter.
4000 The default is 0.707q and gives a Butterworth response.
4001
4002 @item mix, m
4003 How much to use filtered signal in output. Default is 1.
4004 Range is between 0 and 1.
4005
4006 @item channels, c
4007 Specify which channels to filter, by default all available are filtered.
4008
4009 @item normalize, n
4010 Normalize biquad coefficients, by default is disabled.
4011 Enabling it will normalize magnitude response at DC to 0dB.
4012 @end table
4013
4014 @subsection Commands
4015
4016 This filter supports the following commands:
4017 @table @option
4018 @item frequency, f
4019 Change highpass frequency.
4020 Syntax for the command is : "@var{frequency}"
4021
4022 @item width_type, t
4023 Change highpass width_type.
4024 Syntax for the command is : "@var{width_type}"
4025
4026 @item width, w
4027 Change highpass width.
4028 Syntax for the command is : "@var{width}"
4029
4030 @item mix, m
4031 Change highpass mix.
4032 Syntax for the command is : "@var{mix}"
4033 @end table
4034
4035 @section join
4036
4037 Join multiple input streams into one multi-channel stream.
4038
4039 It accepts the following parameters:
4040 @table @option
4041
4042 @item inputs
4043 The number of input streams. It defaults to 2.
4044
4045 @item channel_layout
4046 The desired output channel layout. It defaults to stereo.
4047
4048 @item map
4049 Map channels from inputs to output. The argument is a '|'-separated list of
4050 mappings, each in the @code{@var{input_idx}.@var{in_channel}-@var{out_channel}}
4051 form. @var{input_idx} is the 0-based index of the input stream. @var{in_channel}
4052 can be either the name of the input channel (e.g. FL for front left) or its
4053 index in the specified input stream. @var{out_channel} is the name of the output
4054 channel.
4055 @end table
4056
4057 The filter will attempt to guess the mappings when they are not specified
4058 explicitly. It does so by first trying to find an unused matching input channel
4059 and if that fails it picks the first unused input channel.
4060
4061 Join 3 inputs (with properly set channel layouts):
4062 @example
4063 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
4064 @end example
4065
4066 Build a 5.1 output from 6 single-channel streams:
4067 @example
4068 ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
4069 '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'
4070 out
4071 @end example
4072
4073 @section ladspa
4074
4075 Load a LADSPA (Linux Audio Developer's Simple Plugin API) plugin.
4076
4077 To enable compilation of this filter you need to configure FFmpeg with
4078 @code{--enable-ladspa}.
4079
4080 @table @option
4081 @item file, f
4082 Specifies the name of LADSPA plugin library to load. If the environment
4083 variable @env{LADSPA_PATH} is defined, the LADSPA plugin is searched in
4084 each one of the directories specified by the colon separated list in
4085 @env{LADSPA_PATH}, otherwise in the standard LADSPA paths, which are in
4086 this order: @file{HOME/.ladspa/lib/}, @file{/usr/local/lib/ladspa/},
4087 @file{/usr/lib/ladspa/}.
4088
4089 @item plugin, p
4090 Specifies the plugin within the library. Some libraries contain only
4091 one plugin, but others contain many of them. If this is not set filter
4092 will list all available plugins within the specified library.
4093
4094 @item controls, c
4095 Set the '|' separated list of controls which are zero or more floating point
4096 values that determine the behavior of the loaded plugin (for example delay,
4097 threshold or gain).
4098 Controls need to be defined using the following syntax:
4099 c0=@var{value0}|c1=@var{value1}|c2=@var{value2}|..., where
4100 @var{valuei} is the value set on the @var{i}-th control.
4101 Alternatively they can be also defined using the following syntax:
4102 @var{value0}|@var{value1}|@var{value2}|..., where
4103 @var{valuei} is the value set on the @var{i}-th control.
4104 If @option{controls} is set to @code{help}, all available controls and
4105 their valid ranges are printed.
4106
4107 @item sample_rate, s
4108 Specify the sample rate, default to 44100. Only used if plugin have
4109 zero inputs.
4110
4111 @item nb_samples, n
4112 Set the number of samples per channel per each output frame, default
4113 is 1024. Only used if plugin have zero inputs.
4114
4115 @item duration, d
4116 Set the minimum duration of the sourced audio. See
4117 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4118 for the accepted syntax.
4119 Note that the resulting duration may be greater than the specified duration,
4120 as the generated audio is always cut at the end of a complete frame.
4121 If not specified, or the expressed duration is negative, the audio is
4122 supposed to be generated forever.
4123 Only used if plugin have zero inputs.
4124
4125 @end table
4126
4127 @subsection Examples
4128
4129 @itemize
4130 @item
4131 List all available plugins within amp (LADSPA example plugin) library:
4132 @example
4133 ladspa=file=amp
4134 @end example
4135
4136 @item
4137 List all available controls and their valid ranges for @code{vcf_notch}
4138 plugin from @code{VCF} library:
4139 @example
4140 ladspa=f=vcf:p=vcf_notch:c=help
4141 @end example
4142
4143 @item
4144 Simulate low quality audio equipment using @code{Computer Music Toolkit} (CMT)
4145 plugin library:
4146 @example
4147 ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
4148 @end example
4149
4150 @item
4151 Add reverberation to the audio using TAP-plugins
4152 (Tom's Audio Processing plugins):
4153 @example
4154 ladspa=file=tap_reverb:tap_reverb
4155 @end example
4156
4157 @item
4158 Generate white noise, with 0.2 amplitude:
4159 @example
4160 ladspa=file=cmt:noise_source_white:c=c0=.2
4161 @end example
4162
4163 @item
4164 Generate 20 bpm clicks using plugin @code{C* Click - Metronome} from the
4165 @code{C* Audio Plugin Suite} (CAPS) library:
4166 @example
4167 ladspa=file=caps:Click:c=c1=20'
4168 @end example
4169
4170 @item
4171 Apply @code{C* Eq10X2 - Stereo 10-band equaliser} effect:
4172 @example
4173 ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
4174 @end example
4175
4176 @item
4177 Increase volume by 20dB using fast lookahead limiter from Steve Harris
4178 @code{SWH Plugins} collection:
4179 @example
4180 ladspa=fast_lookahead_limiter_1913:fastLookaheadLimiter:20|0|2
4181 @end example
4182
4183 @item
4184 Attenuate low frequencies using Multiband EQ from Steve Harris
4185 @code{SWH Plugins} collection:
4186 @example
4187 ladspa=mbeq_1197:mbeq:-24|-24|-24|0|0|0|0|0|0|0|0|0|0|0|0
4188 @end example
4189
4190 @item
4191 Reduce stereo image using @code{Narrower} from the @code{C* Audio Plugin Suite}
4192 (CAPS) library:
4193 @example
4194 ladspa=caps:Narrower
4195 @end example
4196
4197 @item
4198 Another white noise, now using @code{C* Audio Plugin Suite} (CAPS) library:
4199 @example
4200 ladspa=caps:White:.2
4201 @end example
4202
4203 @item
4204 Some fractal noise, using @code{C* Audio Plugin Suite} (CAPS) library:
4205 @example
4206 ladspa=caps:Fractal:c=c1=1
4207 @end example
4208
4209 @item
4210 Dynamic volume normalization using @code{VLevel} plugin:
4211 @example
4212 ladspa=vlevel-ladspa:vlevel_mono
4213 @end example
4214 @end itemize
4215
4216 @subsection Commands
4217
4218 This filter supports the following commands:
4219 @table @option
4220 @item cN
4221 Modify the @var{N}-th control value.
4222
4223 If the specified value is not valid, it is ignored and prior one is kept.
4224 @end table
4225
4226 @section loudnorm
4227
4228 EBU R128 loudness normalization. Includes both dynamic and linear normalization modes.
4229 Support for both single pass (livestreams, files) and double pass (files) modes.
4230 This algorithm can target IL, LRA, and maximum true peak. In dynamic mode, to accurately
4231 detect true peaks, the audio stream will be upsampled to 192 kHz.
4232 Use the @code{-ar} option or @code{aresample} filter to explicitly set an output sample rate.
4233
4234 The filter accepts the following options:
4235
4236 @table @option
4237 @item I, i
4238 Set integrated loudness target.
4239 Range is -70.0 - -5.0. Default value is -24.0.
4240
4241 @item LRA, lra
4242 Set loudness range target.
4243 Range is 1.0 - 20.0. Default value is 7.0.
4244
4245 @item TP, tp
4246 Set maximum true peak.
4247 Range is -9.0 - +0.0. Default value is -2.0.
4248
4249 @item measured_I, measured_i
4250 Measured IL of input file.
4251 Range is -99.0 - +0.0.
4252
4253 @item measured_LRA, measured_lra
4254 Measured LRA of input file.
4255 Range is  0.0 - 99.0.
4256
4257 @item measured_TP, measured_tp
4258 Measured true peak of input file.
4259 Range is  -99.0 - +99.0.
4260
4261 @item measured_thresh
4262 Measured threshold of input file.
4263 Range is -99.0 - +0.0.
4264
4265 @item offset
4266 Set offset gain. Gain is applied before the true-peak limiter.
4267 Range is  -99.0 - +99.0. Default is +0.0.
4268
4269 @item linear
4270 Normalize by linearly scaling the source audio.
4271 @code{measured_I}, @code{measured_LRA}, @code{measured_TP},
4272 and @code{measured_thresh} must all be specified. Target LRA shouldn't
4273 be lower than source LRA and the change in integrated loudness shouldn't
4274 result in a true peak which exceeds the target TP. If any of these
4275 conditions aren't met, normalization mode will revert to @var{dynamic}.
4276 Options are @code{true} or @code{false}. Default is @code{true}.
4277
4278 @item dual_mono
4279 Treat mono input files as "dual-mono". If a mono file is intended for playback
4280 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
4281 If set to @code{true}, this option will compensate for this effect.
4282 Multi-channel input files are not affected by this option.
4283 Options are true or false. Default is false.
4284
4285 @item print_format
4286 Set print format for stats. Options are summary, json, or none.
4287 Default value is none.
4288 @end table
4289
4290 @section lowpass
4291
4292 Apply a low-pass filter with 3dB point frequency.
4293 The filter can be either single-pole or double-pole (the default).
4294 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
4295
4296 The filter accepts the following options:
4297
4298 @table @option
4299 @item frequency, f
4300 Set frequency in Hz. Default is 500.
4301
4302 @item poles, p
4303 Set number of poles. Default is 2.
4304
4305 @item width_type, t
4306 Set method to specify band-width of filter.
4307 @table @option
4308 @item h
4309 Hz
4310 @item q
4311 Q-Factor
4312 @item o
4313 octave
4314 @item s
4315 slope
4316 @item k
4317 kHz
4318 @end table
4319
4320 @item width, w
4321 Specify the band-width of a filter in width_type units.
4322 Applies only to double-pole filter.
4323 The default is 0.707q and gives a Butterworth response.
4324
4325 @item mix, m
4326 How much to use filtered signal in output. Default is 1.
4327 Range is between 0 and 1.
4328
4329 @item channels, c
4330 Specify which channels to filter, by default all available are filtered.
4331
4332 @item normalize, n
4333 Normalize biquad coefficients, by default is disabled.
4334 Enabling it will normalize magnitude response at DC to 0dB.
4335 @end table
4336
4337 @subsection Examples
4338 @itemize
4339 @item
4340 Lowpass only LFE channel, it LFE is not present it does nothing:
4341 @example
4342 lowpass=c=LFE
4343 @end example
4344 @end itemize
4345
4346 @subsection Commands
4347
4348 This filter supports the following commands:
4349 @table @option
4350 @item frequency, f
4351 Change lowpass frequency.
4352 Syntax for the command is : "@var{frequency}"
4353
4354 @item width_type, t
4355 Change lowpass width_type.
4356 Syntax for the command is : "@var{width_type}"
4357
4358 @item width, w
4359 Change lowpass width.
4360 Syntax for the command is : "@var{width}"
4361
4362 @item mix, m
4363 Change lowpass mix.
4364 Syntax for the command is : "@var{mix}"
4365 @end table
4366
4367 @section lv2
4368
4369 Load a LV2 (LADSPA Version 2) plugin.
4370
4371 To enable compilation of this filter you need to configure FFmpeg with
4372 @code{--enable-lv2}.
4373
4374 @table @option
4375 @item plugin, p
4376 Specifies the plugin URI. You may need to escape ':'.
4377
4378 @item controls, c
4379 Set the '|' separated list of controls which are zero or more floating point
4380 values that determine the behavior of the loaded plugin (for example delay,
4381 threshold or gain).
4382 If @option{controls} is set to @code{help}, all available controls and
4383 their valid ranges are printed.
4384
4385 @item sample_rate, s
4386 Specify the sample rate, default to 44100. Only used if plugin have
4387 zero inputs.
4388
4389 @item nb_samples, n
4390 Set the number of samples per channel per each output frame, default
4391 is 1024. Only used if plugin have zero inputs.
4392
4393 @item duration, d
4394 Set the minimum duration of the sourced audio. See
4395 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4396 for the accepted syntax.
4397 Note that the resulting duration may be greater than the specified duration,
4398 as the generated audio is always cut at the end of a complete frame.
4399 If not specified, or the expressed duration is negative, the audio is
4400 supposed to be generated forever.
4401 Only used if plugin have zero inputs.
4402 @end table
4403
4404 @subsection Examples
4405
4406 @itemize
4407 @item
4408 Apply bass enhancer plugin from Calf:
4409 @example
4410 lv2=p=http\\\\://calf.sourceforge.net/plugins/BassEnhancer:c=amount=2
4411 @end example
4412
4413 @item
4414 Apply vinyl plugin from Calf:
4415 @example
4416 lv2=p=http\\\\://calf.sourceforge.net/plugins/Vinyl:c=drone=0.2|aging=0.5
4417 @end example
4418
4419 @item
4420 Apply bit crusher plugin from ArtyFX:
4421 @example
4422 lv2=p=http\\\\://www.openavproductions.com/artyfx#bitta:c=crush=0.3
4423 @end example
4424 @end itemize
4425
4426 @section mcompand
4427 Multiband Compress or expand the audio's dynamic range.
4428
4429 The input audio is divided into bands using 4th order Linkwitz-Riley IIRs.
4430 This is akin to the crossover of a loudspeaker, and results in flat frequency
4431 response when absent compander action.
4432
4433 It accepts the following parameters:
4434
4435 @table @option
4436 @item args
4437 This option syntax is:
4438 attack,decay,[attack,decay..] soft-knee points crossover_frequency [delay [initial_volume [gain]]] | attack,decay ...
4439 For explanation of each item refer to compand filter documentation.
4440 @end table
4441
4442 @anchor{pan}
4443 @section pan
4444
4445 Mix channels with specific gain levels. The filter accepts the output
4446 channel layout followed by a set of channels definitions.
4447
4448 This filter is also designed to efficiently remap the channels of an audio
4449 stream.
4450
4451 The filter accepts parameters of the form:
4452 "@var{l}|@var{outdef}|@var{outdef}|..."
4453
4454 @table @option
4455 @item l
4456 output channel layout or number of channels
4457
4458 @item outdef
4459 output channel specification, of the form:
4460 "@var{out_name}=[@var{gain}*]@var{in_name}[(+-)[@var{gain}*]@var{in_name}...]"
4461
4462 @item out_name
4463 output channel to define, either a channel name (FL, FR, etc.) or a channel
4464 number (c0, c1, etc.)
4465
4466 @item gain
4467 multiplicative coefficient for the channel, 1 leaving the volume unchanged
4468
4469 @item in_name
4470 input channel to use, see out_name for details; it is not possible to mix
4471 named and numbered input channels
4472 @end table
4473
4474 If the `=' in a channel specification is replaced by `<', then the gains for
4475 that specification will be renormalized so that the total is 1, thus
4476 avoiding clipping noise.
4477
4478 @subsection Mixing examples
4479
4480 For example, if you want to down-mix from stereo to mono, but with a bigger
4481 factor for the left channel:
4482 @example
4483 pan=1c|c0=0.9*c0+0.1*c1
4484 @end example
4485
4486 A customized down-mix to stereo that works automatically for 3-, 4-, 5- and
4487 7-channels surround:
4488 @example
4489 pan=stereo| FL < FL + 0.5*FC + 0.6*BL + 0.6*SL | FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
4490 @end example
4491
4492 Note that @command{ffmpeg} integrates a default down-mix (and up-mix) system
4493 that should be preferred (see "-ac" option) unless you have very specific
4494 needs.
4495
4496 @subsection Remapping examples
4497
4498 The channel remapping will be effective if, and only if:
4499
4500 @itemize
4501 @item gain coefficients are zeroes or ones,
4502 @item only one input per channel output,
4503 @end itemize
4504
4505 If all these conditions are satisfied, the filter will notify the user ("Pure
4506 channel mapping detected"), and use an optimized and lossless method to do the
4507 remapping.
4508
4509 For example, if you have a 5.1 source and want a stereo audio stream by
4510 dropping the extra channels:
4511 @example
4512 pan="stereo| c0=FL | c1=FR"
4513 @end example
4514
4515 Given the same source, you can also switch front left and front right channels
4516 and keep the input channel layout:
4517 @example
4518 pan="5.1| c0=c1 | c1=c0 | c2=c2 | c3=c3 | c4=c4 | c5=c5"
4519 @end example
4520
4521 If the input is a stereo audio stream, you can mute the front left channel (and
4522 still keep the stereo channel layout) with:
4523 @example
4524 pan="stereo|c1=c1"
4525 @end example
4526
4527 Still with a stereo audio stream input, you can copy the right channel in both
4528 front left and right:
4529 @example
4530 pan="stereo| c0=FR | c1=FR"
4531 @end example
4532
4533 @section replaygain
4534
4535 ReplayGain scanner filter. This filter takes an audio stream as an input and
4536 outputs it unchanged.
4537 At end of filtering it displays @code{track_gain} and @code{track_peak}.
4538
4539 @section resample
4540
4541 Convert the audio sample format, sample rate and channel layout. It is
4542 not meant to be used directly.
4543
4544 @section rubberband
4545 Apply time-stretching and pitch-shifting with librubberband.
4546
4547 To enable compilation of this filter, you need to configure FFmpeg with
4548 @code{--enable-librubberband}.
4549
4550 The filter accepts the following options:
4551
4552 @table @option
4553 @item tempo
4554 Set tempo scale factor.
4555
4556 @item pitch
4557 Set pitch scale factor.
4558
4559 @item transients
4560 Set transients detector.
4561 Possible values are:
4562 @table @var
4563 @item crisp
4564 @item mixed
4565 @item smooth
4566 @end table
4567
4568 @item detector
4569 Set detector.
4570 Possible values are:
4571 @table @var
4572 @item compound
4573 @item percussive
4574 @item soft
4575 @end table
4576
4577 @item phase
4578 Set phase.
4579 Possible values are:
4580 @table @var
4581 @item laminar
4582 @item independent
4583 @end table
4584
4585 @item window
4586 Set processing window size.
4587 Possible values are:
4588 @table @var
4589 @item standard
4590 @item short
4591 @item long
4592 @end table
4593
4594 @item smoothing
4595 Set smoothing.
4596 Possible values are:
4597 @table @var
4598 @item off
4599 @item on
4600 @end table
4601
4602 @item formant
4603 Enable formant preservation when shift pitching.
4604 Possible values are:
4605 @table @var
4606 @item shifted
4607 @item preserved
4608 @end table
4609
4610 @item pitchq
4611 Set pitch quality.
4612 Possible values are:
4613 @table @var
4614 @item quality
4615 @item speed
4616 @item consistency
4617 @end table
4618
4619 @item channels
4620 Set channels.
4621 Possible values are:
4622 @table @var
4623 @item apart
4624 @item together
4625 @end table
4626 @end table
4627
4628 @subsection Commands
4629
4630 This filter supports the following commands:
4631 @table @option
4632 @item tempo
4633 Change filter tempo scale factor.
4634 Syntax for the command is : "@var{tempo}"
4635
4636 @item pitch
4637 Change filter pitch scale factor.
4638 Syntax for the command is : "@var{pitch}"
4639 @end table
4640
4641 @section sidechaincompress
4642
4643 This filter acts like normal compressor but has the ability to compress
4644 detected signal using second input signal.
4645 It needs two input streams and returns one output stream.
4646 First input stream will be processed depending on second stream signal.
4647 The filtered signal then can be filtered with other filters in later stages of
4648 processing. See @ref{pan} and @ref{amerge} filter.
4649
4650 The filter accepts the following options:
4651
4652 @table @option
4653 @item level_in
4654 Set input gain. Default is 1. Range is between 0.015625 and 64.
4655
4656 @item mode
4657 Set mode of compressor operation. Can be @code{upward} or @code{downward}.
4658 Default is @code{downward}.
4659
4660 @item threshold
4661 If a signal of second stream raises above this level it will affect the gain
4662 reduction of first stream.
4663 By default is 0.125. Range is between 0.00097563 and 1.
4664
4665 @item ratio
4666 Set a ratio about which the signal is reduced. 1:2 means that if the level
4667 raised 4dB above the threshold, it will be only 2dB above after the reduction.
4668 Default is 2. Range is between 1 and 20.
4669
4670 @item attack
4671 Amount of milliseconds the signal has to rise above the threshold before gain
4672 reduction starts. Default is 20. Range is between 0.01 and 2000.
4673
4674 @item release
4675 Amount of milliseconds the signal has to fall below the threshold before
4676 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
4677
4678 @item makeup
4679 Set the amount by how much signal will be amplified after processing.
4680 Default is 1. Range is from 1 to 64.
4681
4682 @item knee
4683 Curve the sharp knee around the threshold to enter gain reduction more softly.
4684 Default is 2.82843. Range is between 1 and 8.
4685
4686 @item link
4687 Choose if the @code{average} level between all channels of side-chain stream
4688 or the louder(@code{maximum}) channel of side-chain stream affects the
4689 reduction. Default is @code{average}.
4690
4691 @item detection
4692 Should the exact signal be taken in case of @code{peak} or an RMS one in case
4693 of @code{rms}. Default is @code{rms} which is mainly smoother.
4694
4695 @item level_sc
4696 Set sidechain gain. Default is 1. Range is between 0.015625 and 64.
4697
4698 @item mix
4699 How much to use compressed signal in output. Default is 1.
4700 Range is between 0 and 1.
4701 @end table
4702
4703 @subsection Commands
4704
4705 This filter supports the all above options as @ref{commands}.
4706
4707 @subsection Examples
4708
4709 @itemize
4710 @item
4711 Full ffmpeg example taking 2 audio inputs, 1st input to be compressed
4712 depending on the signal of 2nd input and later compressed signal to be
4713 merged with 2nd input:
4714 @example
4715 ffmpeg -i main.flac -i sidechain.flac -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress[compr];[compr][mix]amerge"
4716 @end example
4717 @end itemize
4718
4719 @section sidechaingate
4720
4721 A sidechain gate acts like a normal (wideband) gate but has the ability to
4722 filter the detected signal before sending it to the gain reduction stage.
4723 Normally a gate uses the full range signal to detect a level above the
4724 threshold.
4725 For example: If you cut all lower frequencies from your sidechain signal
4726 the gate will decrease the volume of your track only if not enough highs
4727 appear. With this technique you are able to reduce the resonation of a
4728 natural drum or remove "rumbling" of muted strokes from a heavily distorted
4729 guitar.
4730 It needs two input streams and returns one output stream.
4731 First input stream will be processed depending on second stream signal.
4732
4733 The filter accepts the following options:
4734
4735 @table @option
4736 @item level_in
4737 Set input level before filtering.
4738 Default is 1. Allowed range is from 0.015625 to 64.
4739
4740 @item mode
4741 Set the mode of operation. Can be @code{upward} or @code{downward}.
4742 Default is @code{downward}. If set to @code{upward} mode, higher parts of signal
4743 will be amplified, expanding dynamic range in upward direction.
4744 Otherwise, in case of @code{downward} lower parts of signal will be reduced.
4745
4746 @item range
4747 Set the level of gain reduction when the signal is below the threshold.
4748 Default is 0.06125. Allowed range is from 0 to 1.
4749 Setting this to 0 disables reduction and then filter behaves like expander.
4750
4751 @item threshold
4752 If a signal rises above this level the gain reduction is released.
4753 Default is 0.125. Allowed range is from 0 to 1.
4754
4755 @item ratio
4756 Set a ratio about which the signal is reduced.
4757 Default is 2. Allowed range is from 1 to 9000.
4758
4759 @item attack
4760 Amount of milliseconds the signal has to rise above the threshold before gain
4761 reduction stops.
4762 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
4763
4764 @item release
4765 Amount of milliseconds the signal has to fall below the threshold before the
4766 reduction is increased again. Default is 250 milliseconds.
4767 Allowed range is from 0.01 to 9000.
4768
4769 @item makeup
4770 Set amount of amplification of signal after processing.
4771 Default is 1. Allowed range is from 1 to 64.
4772
4773 @item knee
4774 Curve the sharp knee around the threshold to enter gain reduction more softly.
4775 Default is 2.828427125. Allowed range is from 1 to 8.
4776
4777 @item detection
4778 Choose if exact signal should be taken for detection or an RMS like one.
4779 Default is rms. Can be peak or rms.
4780
4781 @item link
4782 Choose if the average level between all channels or the louder channel affects
4783 the reduction.
4784 Default is average. Can be average or maximum.
4785
4786 @item level_sc
4787 Set sidechain gain. Default is 1. Range is from 0.015625 to 64.
4788 @end table
4789
4790 @section silencedetect
4791
4792 Detect silence in an audio stream.
4793
4794 This filter logs a message when it detects that the input audio volume is less
4795 or equal to a noise tolerance value for a duration greater or equal to the
4796 minimum detected noise duration.
4797
4798 The printed times and duration are expressed in seconds. The
4799 @code{lavfi.silence_start} or @code{lavfi.silence_start.X} metadata key
4800 is set on the first frame whose timestamp equals or exceeds the detection
4801 duration and it contains the timestamp of the first frame of the silence.
4802
4803 The @code{lavfi.silence_duration} or @code{lavfi.silence_duration.X}
4804 and @code{lavfi.silence_end} or @code{lavfi.silence_end.X} metadata
4805 keys are set on the first frame after the silence. If @option{mono} is
4806 enabled, and each channel is evaluated separately, the @code{.X}
4807 suffixed keys are used, and @code{X} corresponds to the channel number.
4808
4809 The filter accepts the following options:
4810
4811 @table @option
4812 @item noise, n
4813 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
4814 specified value) or amplitude ratio. Default is -60dB, or 0.001.
4815
4816 @item duration, d
4817 Set silence duration until notification (default is 2 seconds). See
4818 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4819 for the accepted syntax.
4820
4821 @item mono, m
4822 Process each channel separately, instead of combined. By default is disabled.
4823 @end table
4824
4825 @subsection Examples
4826
4827 @itemize
4828 @item
4829 Detect 5 seconds of silence with -50dB noise tolerance:
4830 @example
4831 silencedetect=n=-50dB:d=5
4832 @end example
4833
4834 @item
4835 Complete example with @command{ffmpeg} to detect silence with 0.0001 noise
4836 tolerance in @file{silence.mp3}:
4837 @example
4838 ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
4839 @end example
4840 @end itemize
4841
4842 @section silenceremove
4843
4844 Remove silence from the beginning, middle or end of the audio.
4845
4846 The filter accepts the following options:
4847
4848 @table @option
4849 @item start_periods
4850 This value is used to indicate if audio should be trimmed at beginning of
4851 the audio. A value of zero indicates no silence should be trimmed from the
4852 beginning. When specifying a non-zero value, it trims audio up until it
4853 finds non-silence. Normally, when trimming silence from beginning of audio
4854 the @var{start_periods} will be @code{1} but it can be increased to higher
4855 values to trim all audio up to specific count of non-silence periods.
4856 Default value is @code{0}.
4857
4858 @item start_duration
4859 Specify the amount of time that non-silence must be detected before it stops
4860 trimming audio. By increasing the duration, bursts of noises can be treated
4861 as silence and trimmed off. Default value is @code{0}.
4862
4863 @item start_threshold
4864 This indicates what sample value should be treated as silence. For digital
4865 audio, a value of @code{0} may be fine but for audio recorded from analog,
4866 you may wish to increase the value to account for background noise.
4867 Can be specified in dB (in case "dB" is appended to the specified value)
4868 or amplitude ratio. Default value is @code{0}.
4869
4870 @item start_silence
4871 Specify max duration of silence at beginning that will be kept after
4872 trimming. Default is 0, which is equal to trimming all samples detected
4873 as silence.
4874
4875 @item start_mode
4876 Specify mode of detection of silence end in start of multi-channel audio.
4877 Can be @var{any} or @var{all}. Default is @var{any}.
4878 With @var{any}, any sample that is detected as non-silence will cause
4879 stopped trimming of silence.
4880 With @var{all}, only if all channels are detected as non-silence will cause
4881 stopped trimming of silence.
4882
4883 @item stop_periods
4884 Set the count for trimming silence from the end of audio.
4885 To remove silence from the middle of a file, specify a @var{stop_periods}
4886 that is negative. This value is then treated as a positive value and is
4887 used to indicate the effect should restart processing as specified by
4888 @var{start_periods}, making it suitable for removing periods of silence
4889 in the middle of the audio.
4890 Default value is @code{0}.
4891
4892 @item stop_duration
4893 Specify a duration of silence that must exist before audio is not copied any
4894 more. By specifying a higher duration, silence that is wanted can be left in
4895 the audio.
4896 Default value is @code{0}.
4897
4898 @item stop_threshold
4899 This is the same as @option{start_threshold} but for trimming silence from
4900 the end of audio.
4901 Can be specified in dB (in case "dB" is appended to the specified value)
4902 or amplitude ratio. Default value is @code{0}.
4903
4904 @item stop_silence
4905 Specify max duration of silence at end that will be kept after
4906 trimming. Default is 0, which is equal to trimming all samples detected
4907 as silence.
4908
4909 @item stop_mode
4910 Specify mode of detection of silence start in end of multi-channel audio.
4911 Can be @var{any} or @var{all}. Default is @var{any}.
4912 With @var{any}, any sample that is detected as non-silence will cause
4913 stopped trimming of silence.
4914 With @var{all}, only if all channels are detected as non-silence will cause
4915 stopped trimming of silence.
4916
4917 @item detection
4918 Set how is silence detected. Can be @code{rms} or @code{peak}. Second is faster
4919 and works better with digital silence which is exactly 0.
4920 Default value is @code{rms}.
4921
4922 @item window
4923 Set duration in number of seconds used to calculate size of window in number
4924 of samples for detecting silence.
4925 Default value is @code{0.02}. Allowed range is from @code{0} to @code{10}.
4926 @end table
4927
4928 @subsection Examples
4929
4930 @itemize
4931 @item
4932 The following example shows how this filter can be used to start a recording
4933 that does not contain the delay at the start which usually occurs between
4934 pressing the record button and the start of the performance:
4935 @example
4936 silenceremove=start_periods=1:start_duration=5:start_threshold=0.02
4937 @end example
4938
4939 @item
4940 Trim all silence encountered from beginning to end where there is more than 1
4941 second of silence in audio:
4942 @example
4943 silenceremove=stop_periods=-1:stop_duration=1:stop_threshold=-90dB
4944 @end example
4945
4946 @item
4947 Trim all digital silence samples, using peak detection, from beginning to end
4948 where there is more than 0 samples of digital silence in audio and digital
4949 silence is detected in all channels at same positions in stream:
4950 @example
4951 silenceremove=window=0:detection=peak:stop_mode=all:start_mode=all:stop_periods=-1:stop_threshold=0
4952 @end example
4953 @end itemize
4954
4955 @section sofalizer
4956
4957 SOFAlizer uses head-related transfer functions (HRTFs) to create virtual
4958 loudspeakers around the user for binaural listening via headphones (audio
4959 formats up to 9 channels supported).
4960 The HRTFs are stored in SOFA files (see @url{http://www.sofacoustics.org/} for a database).
4961 SOFAlizer is developed at the Acoustics Research Institute (ARI) of the
4962 Austrian Academy of Sciences.
4963
4964 To enable compilation of this filter you need to configure FFmpeg with
4965 @code{--enable-libmysofa}.
4966
4967 The filter accepts the following options:
4968
4969 @table @option
4970 @item sofa
4971 Set the SOFA file used for rendering.
4972
4973 @item gain
4974 Set gain applied to audio. Value is in dB. Default is 0.
4975
4976 @item rotation
4977 Set rotation of virtual loudspeakers in deg. Default is 0.
4978
4979 @item elevation
4980 Set elevation of virtual speakers in deg. Default is 0.
4981
4982 @item radius
4983 Set distance in meters between loudspeakers and the listener with near-field
4984 HRTFs. Default is 1.
4985
4986 @item type
4987 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
4988 processing audio in time domain which is slow.
4989 @var{freq} is processing audio in frequency domain which is fast.
4990 Default is @var{freq}.
4991
4992 @item speakers
4993 Set custom positions of virtual loudspeakers. Syntax for this option is:
4994 <CH> <AZIM> <ELEV>[|<CH> <AZIM> <ELEV>|...].
4995 Each virtual loudspeaker is described with short channel name following with
4996 azimuth and elevation in degrees.
4997 Each virtual loudspeaker description is separated by '|'.
4998 For example to override front left and front right channel positions use:
4999 'speakers=FL 45 15|FR 345 15'.
5000 Descriptions with unrecognised channel names are ignored.
5001
5002 @item lfegain
5003 Set custom gain for LFE channels. Value is in dB. Default is 0.
5004
5005 @item framesize
5006 Set custom frame size in number of samples. Default is 1024.
5007 Allowed range is from 1024 to 96000. Only used if option @samp{type}
5008 is set to @var{freq}.
5009
5010 @item normalize
5011 Should all IRs be normalized upon importing SOFA file.
5012 By default is enabled.
5013
5014 @item interpolate
5015 Should nearest IRs be interpolated with neighbor IRs if exact position
5016 does not match. By default is disabled.
5017
5018 @item minphase
5019 Minphase all IRs upon loading of SOFA file. By default is disabled.
5020
5021 @item anglestep
5022 Set neighbor search angle step. Only used if option @var{interpolate} is enabled.
5023
5024 @item radstep
5025 Set neighbor search radius step. Only used if option @var{interpolate} is enabled.
5026 @end table
5027
5028 @subsection Examples
5029
5030 @itemize
5031 @item
5032 Using ClubFritz6 sofa file:
5033 @example
5034 sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=1
5035 @end example
5036
5037 @item
5038 Using ClubFritz12 sofa file and bigger radius with small rotation:
5039 @example
5040 sofalizer=sofa=/path/to/ClubFritz12.sofa:type=freq:radius=2:rotation=5
5041 @end example
5042
5043 @item
5044 Similar as above but with custom speaker positions for front left, front right, back left and back right
5045 and also with custom gain:
5046 @example
5047 "sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=2:speakers=FL 45|FR 315|BL 135|BR 225:gain=28"
5048 @end example
5049 @end itemize
5050
5051 @section stereotools
5052
5053 This filter has some handy utilities to manage stereo signals, for converting
5054 M/S stereo recordings to L/R signal while having control over the parameters
5055 or spreading the stereo image of master track.
5056
5057 The filter accepts the following options:
5058
5059 @table @option
5060 @item level_in
5061 Set input level before filtering for both channels. Defaults is 1.
5062 Allowed range is from 0.015625 to 64.
5063
5064 @item level_out
5065 Set output level after filtering for both channels. Defaults is 1.
5066 Allowed range is from 0.015625 to 64.
5067
5068 @item balance_in
5069 Set input balance between both channels. Default is 0.
5070 Allowed range is from -1 to 1.
5071
5072 @item balance_out
5073 Set output balance between both channels. Default is 0.
5074 Allowed range is from -1 to 1.
5075
5076 @item softclip
5077 Enable softclipping. Results in analog distortion instead of harsh digital 0dB
5078 clipping. Disabled by default.
5079
5080 @item mutel
5081 Mute the left channel. Disabled by default.
5082
5083 @item muter
5084 Mute the right channel. Disabled by default.
5085
5086 @item phasel
5087 Change the phase of the left channel. Disabled by default.
5088
5089 @item phaser
5090 Change the phase of the right channel. Disabled by default.
5091
5092 @item mode
5093 Set stereo mode. Available values are:
5094
5095 @table @samp
5096 @item lr>lr
5097 Left/Right to Left/Right, this is default.
5098
5099 @item lr>ms
5100 Left/Right to Mid/Side.
5101
5102 @item ms>lr
5103 Mid/Side to Left/Right.
5104
5105 @item lr>ll
5106 Left/Right to Left/Left.
5107
5108 @item lr>rr
5109 Left/Right to Right/Right.
5110
5111 @item lr>l+r
5112 Left/Right to Left + Right.
5113
5114 @item lr>rl
5115 Left/Right to Right/Left.
5116
5117 @item ms>ll
5118 Mid/Side to Left/Left.
5119
5120 @item ms>rr
5121 Mid/Side to Right/Right.
5122 @end table
5123
5124 @item slev
5125 Set level of side signal. Default is 1.
5126 Allowed range is from 0.015625 to 64.
5127
5128 @item sbal
5129 Set balance of side signal. Default is 0.
5130 Allowed range is from -1 to 1.
5131
5132 @item mlev
5133 Set level of the middle signal. Default is 1.
5134 Allowed range is from 0.015625 to 64.
5135
5136 @item mpan
5137 Set middle signal pan. Default is 0. Allowed range is from -1 to 1.
5138
5139 @item base
5140 Set stereo base between mono and inversed channels. Default is 0.
5141 Allowed range is from -1 to 1.
5142
5143 @item delay
5144 Set delay in milliseconds how much to delay left from right channel and
5145 vice versa. Default is 0. Allowed range is from -20 to 20.
5146
5147 @item sclevel
5148 Set S/C level. Default is 1. Allowed range is from 1 to 100.
5149
5150 @item phase
5151 Set the stereo phase in degrees. Default is 0. Allowed range is from 0 to 360.
5152
5153 @item bmode_in, bmode_out
5154 Set balance mode for balance_in/balance_out option.
5155
5156 Can be one of the following:
5157
5158 @table @samp
5159 @item balance
5160 Classic balance mode. Attenuate one channel at time.
5161 Gain is raised up to 1.
5162
5163 @item amplitude
5164 Similar as classic mode above but gain is raised up to 2.
5165
5166 @item power
5167 Equal power distribution, from -6dB to +6dB range.
5168 @end table
5169 @end table
5170
5171 @subsection Examples
5172
5173 @itemize
5174 @item
5175 Apply karaoke like effect:
5176 @example
5177 stereotools=mlev=0.015625
5178 @end example
5179
5180 @item
5181 Convert M/S signal to L/R:
5182 @example
5183 "stereotools=mode=ms>lr"
5184 @end example
5185 @end itemize
5186
5187 @section stereowiden
5188
5189 This filter enhance the stereo effect by suppressing signal common to both
5190 channels and by delaying the signal of left into right and vice versa,
5191 thereby widening the stereo effect.
5192
5193 The filter accepts the following options:
5194
5195 @table @option
5196 @item delay
5197 Time in milliseconds of the delay of left signal into right and vice versa.
5198 Default is 20 milliseconds.
5199
5200 @item feedback
5201 Amount of gain in delayed signal into right and vice versa. Gives a delay
5202 effect of left signal in right output and vice versa which gives widening
5203 effect. Default is 0.3.
5204
5205 @item crossfeed
5206 Cross feed of left into right with inverted phase. This helps in suppressing
5207 the mono. If the value is 1 it will cancel all the signal common to both
5208 channels. Default is 0.3.
5209
5210 @item drymix
5211 Set level of input signal of original channel. Default is 0.8.
5212 @end table
5213
5214 @subsection Commands
5215
5216 This filter supports the all above options except @code{delay} as @ref{commands}.
5217
5218 @section superequalizer
5219 Apply 18 band equalizer.
5220
5221 The filter accepts the following options:
5222 @table @option
5223 @item 1b
5224 Set 65Hz band gain.
5225 @item 2b
5226 Set 92Hz band gain.
5227 @item 3b
5228 Set 131Hz band gain.
5229 @item 4b
5230 Set 185Hz band gain.
5231 @item 5b
5232 Set 262Hz band gain.
5233 @item 6b
5234 Set 370Hz band gain.
5235 @item 7b
5236 Set 523Hz band gain.
5237 @item 8b
5238 Set 740Hz band gain.
5239 @item 9b
5240 Set 1047Hz band gain.
5241 @item 10b
5242 Set 1480Hz band gain.
5243 @item 11b
5244 Set 2093Hz band gain.
5245 @item 12b
5246 Set 2960Hz band gain.
5247 @item 13b
5248 Set 4186Hz band gain.
5249 @item 14b
5250 Set 5920Hz band gain.
5251 @item 15b
5252 Set 8372Hz band gain.
5253 @item 16b
5254 Set 11840Hz band gain.
5255 @item 17b
5256 Set 16744Hz band gain.
5257 @item 18b
5258 Set 20000Hz band gain.
5259 @end table
5260
5261 @section surround
5262 Apply audio surround upmix filter.
5263
5264 This filter allows to produce multichannel output from audio stream.
5265
5266 The filter accepts the following options:
5267
5268 @table @option
5269 @item chl_out
5270 Set output channel layout. By default, this is @var{5.1}.
5271
5272 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5273 for the required syntax.
5274
5275 @item chl_in
5276 Set input channel layout. By default, this is @var{stereo}.
5277
5278 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5279 for the required syntax.
5280
5281 @item level_in
5282 Set input volume level. By default, this is @var{1}.
5283
5284 @item level_out
5285 Set output volume level. By default, this is @var{1}.
5286
5287 @item lfe
5288 Enable LFE channel output if output channel layout has it. By default, this is enabled.
5289
5290 @item lfe_low
5291 Set LFE low cut off frequency. By default, this is @var{128} Hz.
5292
5293 @item lfe_high
5294 Set LFE high cut off frequency. By default, this is @var{256} Hz.
5295
5296 @item lfe_mode
5297 Set LFE mode, can be @var{add} or @var{sub}. Default is @var{add}.
5298 In @var{add} mode, LFE channel is created from input audio and added to output.
5299 In @var{sub} mode, LFE channel is created from input audio and added to output but
5300 also all non-LFE output channels are subtracted with output LFE channel.
5301
5302 @item angle
5303 Set angle of stereo surround transform, Allowed range is from @var{0} to @var{360}.
5304 Default is @var{90}.
5305
5306 @item fc_in
5307 Set front center input volume. By default, this is @var{1}.
5308
5309 @item fc_out
5310 Set front center output volume. By default, this is @var{1}.
5311
5312 @item fl_in
5313 Set front left input volume. By default, this is @var{1}.
5314
5315 @item fl_out
5316 Set front left output volume. By default, this is @var{1}.
5317
5318 @item fr_in
5319 Set front right input volume. By default, this is @var{1}.
5320
5321 @item fr_out
5322 Set front right output volume. By default, this is @var{1}.
5323
5324 @item sl_in
5325 Set side left input volume. By default, this is @var{1}.
5326
5327 @item sl_out
5328 Set side left output volume. By default, this is @var{1}.
5329
5330 @item sr_in
5331 Set side right input volume. By default, this is @var{1}.
5332
5333 @item sr_out
5334 Set side right output volume. By default, this is @var{1}.
5335
5336 @item bl_in
5337 Set back left input volume. By default, this is @var{1}.
5338
5339 @item bl_out
5340 Set back left output volume. By default, this is @var{1}.
5341
5342 @item br_in
5343 Set back right input volume. By default, this is @var{1}.
5344
5345 @item br_out
5346 Set back right output volume. By default, this is @var{1}.
5347
5348 @item bc_in
5349 Set back center input volume. By default, this is @var{1}.
5350
5351 @item bc_out
5352 Set back center output volume. By default, this is @var{1}.
5353
5354 @item lfe_in
5355 Set LFE input volume. By default, this is @var{1}.
5356
5357 @item lfe_out
5358 Set LFE output volume. By default, this is @var{1}.
5359
5360 @item allx
5361 Set spread usage of stereo image across X axis for all channels.
5362
5363 @item ally
5364 Set spread usage of stereo image across Y axis for all channels.
5365
5366 @item fcx, flx, frx, blx, brx, slx, srx, bcx
5367 Set spread usage of stereo image across X axis for each channel.
5368
5369 @item fcy, fly, fry, bly, bry, sly, sry, bcy
5370 Set spread usage of stereo image across Y axis for each channel.
5371
5372 @item win_size
5373 Set window size. Allowed range is from @var{1024} to @var{65536}. Default size is @var{4096}.
5374
5375 @item win_func
5376 Set window function.
5377
5378 It accepts the following values:
5379 @table @samp
5380 @item rect
5381 @item bartlett
5382 @item hann, hanning
5383 @item hamming
5384 @item blackman
5385 @item welch
5386 @item flattop
5387 @item bharris
5388 @item bnuttall
5389 @item bhann
5390 @item sine
5391 @item nuttall
5392 @item lanczos
5393 @item gauss
5394 @item tukey
5395 @item dolph
5396 @item cauchy
5397 @item parzen
5398 @item poisson
5399 @item bohman
5400 @end table
5401 Default is @code{hann}.
5402
5403 @item overlap
5404 Set window overlap. If set to 1, the recommended overlap for selected
5405 window function will be picked. Default is @code{0.5}.
5406 @end table
5407
5408 @section treble, highshelf
5409
5410 Boost or cut treble (upper) frequencies of the audio using a two-pole
5411 shelving filter with a response similar to that of a standard
5412 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
5413
5414 The filter accepts the following options:
5415
5416 @table @option
5417 @item gain, g
5418 Give the gain at whichever is the lower of ~22 kHz and the
5419 Nyquist frequency. Its useful range is about -20 (for a large cut)
5420 to +20 (for a large boost). Beware of clipping when using a positive gain.
5421
5422 @item frequency, f
5423 Set the filter's central frequency and so can be used
5424 to extend or reduce the frequency range to be boosted or cut.
5425 The default value is @code{3000} Hz.
5426
5427 @item width_type, t
5428 Set method to specify band-width of filter.
5429 @table @option
5430 @item h
5431 Hz
5432 @item q
5433 Q-Factor
5434 @item o
5435 octave
5436 @item s
5437 slope
5438 @item k
5439 kHz
5440 @end table
5441
5442 @item width, w
5443 Determine how steep is the filter's shelf transition.
5444
5445 @item mix, m
5446 How much to use filtered signal in output. Default is 1.
5447 Range is between 0 and 1.
5448
5449 @item channels, c
5450 Specify which channels to filter, by default all available are filtered.
5451
5452 @item normalize, n
5453 Normalize biquad coefficients, by default is disabled.
5454 Enabling it will normalize magnitude response at DC to 0dB.
5455 @end table
5456
5457 @subsection Commands
5458
5459 This filter supports the following commands:
5460 @table @option
5461 @item frequency, f
5462 Change treble frequency.
5463 Syntax for the command is : "@var{frequency}"
5464
5465 @item width_type, t
5466 Change treble width_type.
5467 Syntax for the command is : "@var{width_type}"
5468
5469 @item width, w
5470 Change treble width.
5471 Syntax for the command is : "@var{width}"
5472
5473 @item gain, g
5474 Change treble gain.
5475 Syntax for the command is : "@var{gain}"
5476
5477 @item mix, m
5478 Change treble mix.
5479 Syntax for the command is : "@var{mix}"
5480 @end table
5481
5482 @section tremolo
5483
5484 Sinusoidal amplitude modulation.
5485
5486 The filter accepts the following options:
5487
5488 @table @option
5489 @item f
5490 Modulation frequency in Hertz. Modulation frequencies in the subharmonic range
5491 (20 Hz or lower) will result in a tremolo effect.
5492 This filter may also be used as a ring modulator by specifying
5493 a modulation frequency higher than 20 Hz.
5494 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
5495
5496 @item d
5497 Depth of modulation as a percentage. Range is 0.0 - 1.0.
5498 Default value is 0.5.
5499 @end table
5500
5501 @section vibrato
5502
5503 Sinusoidal phase modulation.
5504
5505 The filter accepts the following options:
5506
5507 @table @option
5508 @item f
5509 Modulation frequency in Hertz.
5510 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
5511
5512 @item d
5513 Depth of modulation as a percentage. Range is 0.0 - 1.0.
5514 Default value is 0.5.
5515 @end table
5516
5517 @section volume
5518
5519 Adjust the input audio volume.
5520
5521 It accepts the following parameters:
5522 @table @option
5523
5524 @item volume
5525 Set audio volume expression.
5526
5527 Output values are clipped to the maximum value.
5528
5529 The output audio volume is given by the relation:
5530 @example
5531 @var{output_volume} = @var{volume} * @var{input_volume}
5532 @end example
5533
5534 The default value for @var{volume} is "1.0".
5535
5536 @item precision
5537 This parameter represents the mathematical precision.
5538
5539 It determines which input sample formats will be allowed, which affects the
5540 precision of the volume scaling.
5541
5542 @table @option
5543 @item fixed
5544 8-bit fixed-point; this limits input sample format to U8, S16, and S32.
5545 @item float
5546 32-bit floating-point; this limits input sample format to FLT. (default)
5547 @item double
5548 64-bit floating-point; this limits input sample format to DBL.
5549 @end table
5550
5551 @item replaygain
5552 Choose the behaviour on encountering ReplayGain side data in input frames.
5553
5554 @table @option
5555 @item drop
5556 Remove ReplayGain side data, ignoring its contents (the default).
5557
5558 @item ignore
5559 Ignore ReplayGain side data, but leave it in the frame.
5560
5561 @item track
5562 Prefer the track gain, if present.
5563
5564 @item album
5565 Prefer the album gain, if present.
5566 @end table
5567
5568 @item replaygain_preamp
5569 Pre-amplification gain in dB to apply to the selected replaygain gain.
5570
5571 Default value for @var{replaygain_preamp} is 0.0.
5572
5573 @item replaygain_noclip
5574 Prevent clipping by limiting the gain applied.
5575
5576 Default value for @var{replaygain_noclip} is 1.
5577
5578 @item eval
5579 Set when the volume expression is evaluated.
5580
5581 It accepts the following values:
5582 @table @samp
5583 @item once
5584 only evaluate expression once during the filter initialization, or
5585 when the @samp{volume} command is sent
5586
5587 @item frame
5588 evaluate expression for each incoming frame
5589 @end table
5590
5591 Default value is @samp{once}.
5592 @end table
5593
5594 The volume expression can contain the following parameters.
5595
5596 @table @option
5597 @item n
5598 frame number (starting at zero)
5599 @item nb_channels
5600 number of channels
5601 @item nb_consumed_samples
5602 number of samples consumed by the filter
5603 @item nb_samples
5604 number of samples in the current frame
5605 @item pos
5606 original frame position in the file
5607 @item pts
5608 frame PTS
5609 @item sample_rate
5610 sample rate
5611 @item startpts
5612 PTS at start of stream
5613 @item startt
5614 time at start of stream
5615 @item t
5616 frame time
5617 @item tb
5618 timestamp timebase
5619 @item volume
5620 last set volume value
5621 @end table
5622
5623 Note that when @option{eval} is set to @samp{once} only the
5624 @var{sample_rate} and @var{tb} variables are available, all other
5625 variables will evaluate to NAN.
5626
5627 @subsection Commands
5628
5629 This filter supports the following commands:
5630 @table @option
5631 @item volume
5632 Modify the volume expression.
5633 The command accepts the same syntax of the corresponding option.
5634
5635 If the specified expression is not valid, it is kept at its current
5636 value.
5637 @end table
5638
5639 @subsection Examples
5640
5641 @itemize
5642 @item
5643 Halve the input audio volume:
5644 @example
5645 volume=volume=0.5
5646 volume=volume=1/2
5647 volume=volume=-6.0206dB
5648 @end example
5649
5650 In all the above example the named key for @option{volume} can be
5651 omitted, for example like in:
5652 @example
5653 volume=0.5
5654 @end example
5655
5656 @item
5657 Increase input audio power by 6 decibels using fixed-point precision:
5658 @example
5659 volume=volume=6dB:precision=fixed
5660 @end example
5661
5662 @item
5663 Fade volume after time 10 with an annihilation period of 5 seconds:
5664 @example
5665 volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
5666 @end example
5667 @end itemize
5668
5669 @section volumedetect
5670
5671 Detect the volume of the input video.
5672
5673 The filter has no parameters. The input is not modified. Statistics about
5674 the volume will be printed in the log when the input stream end is reached.
5675
5676 In particular it will show the mean volume (root mean square), maximum
5677 volume (on a per-sample basis), and the beginning of a histogram of the
5678 registered volume values (from the maximum value to a cumulated 1/1000 of
5679 the samples).
5680
5681 All volumes are in decibels relative to the maximum PCM value.
5682
5683 @subsection Examples
5684
5685 Here is an excerpt of the output:
5686 @example
5687 [Parsed_volumedetect_0 @ 0xa23120] mean_volume: -27 dB
5688 [Parsed_volumedetect_0 @ 0xa23120] max_volume: -4 dB
5689 [Parsed_volumedetect_0 @ 0xa23120] histogram_4db: 6
5690 [Parsed_volumedetect_0 @ 0xa23120] histogram_5db: 62
5691 [Parsed_volumedetect_0 @ 0xa23120] histogram_6db: 286
5692 [Parsed_volumedetect_0 @ 0xa23120] histogram_7db: 1042
5693 [Parsed_volumedetect_0 @ 0xa23120] histogram_8db: 2551
5694 [Parsed_volumedetect_0 @ 0xa23120] histogram_9db: 4609
5695 [Parsed_volumedetect_0 @ 0xa23120] histogram_10db: 8409
5696 @end example
5697
5698 It means that:
5699 @itemize
5700 @item
5701 The mean square energy is approximately -27 dB, or 10^-2.7.
5702 @item
5703 The largest sample is at -4 dB, or more precisely between -4 dB and -5 dB.
5704 @item
5705 There are 6 samples at -4 dB, 62 at -5 dB, 286 at -6 dB, etc.
5706 @end itemize
5707
5708 In other words, raising the volume by +4 dB does not cause any clipping,
5709 raising it by +5 dB causes clipping for 6 samples, etc.
5710
5711 @c man end AUDIO FILTERS
5712
5713 @chapter Audio Sources
5714 @c man begin AUDIO SOURCES
5715
5716 Below is a description of the currently available audio sources.
5717
5718 @section abuffer
5719
5720 Buffer audio frames, and make them available to the filter chain.
5721
5722 This source is mainly intended for a programmatic use, in particular
5723 through the interface defined in @file{libavfilter/asrc_abuffer.h}.
5724
5725 It accepts the following parameters:
5726 @table @option
5727
5728 @item time_base
5729 The timebase which will be used for timestamps of submitted frames. It must be
5730 either a floating-point number or in @var{numerator}/@var{denominator} form.
5731
5732 @item sample_rate
5733 The sample rate of the incoming audio buffers.
5734
5735 @item sample_fmt
5736 The sample format of the incoming audio buffers.
5737 Either a sample format name or its corresponding integer representation from
5738 the enum AVSampleFormat in @file{libavutil/samplefmt.h}
5739
5740 @item channel_layout
5741 The channel layout of the incoming audio buffers.
5742 Either a channel layout name from channel_layout_map in
5743 @file{libavutil/channel_layout.c} or its corresponding integer representation
5744 from the AV_CH_LAYOUT_* macros in @file{libavutil/channel_layout.h}
5745
5746 @item channels
5747 The number of channels of the incoming audio buffers.
5748 If both @var{channels} and @var{channel_layout} are specified, then they
5749 must be consistent.
5750
5751 @end table
5752
5753 @subsection Examples
5754
5755 @example
5756 abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
5757 @end example
5758
5759 will instruct the source to accept planar 16bit signed stereo at 44100Hz.
5760 Since the sample format with name "s16p" corresponds to the number
5761 6 and the "stereo" channel layout corresponds to the value 0x3, this is
5762 equivalent to:
5763 @example
5764 abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
5765 @end example
5766
5767 @section aevalsrc
5768
5769 Generate an audio signal specified by an expression.
5770
5771 This source accepts in input one or more expressions (one for each
5772 channel), which are evaluated and used to generate a corresponding
5773 audio signal.
5774
5775 This source accepts the following options:
5776
5777 @table @option
5778 @item exprs
5779 Set the '|'-separated expressions list for each separate channel. In case the
5780 @option{channel_layout} option is not specified, the selected channel layout
5781 depends on the number of provided expressions. Otherwise the last
5782 specified expression is applied to the remaining output channels.
5783
5784 @item channel_layout, c
5785 Set the channel layout. The number of channels in the specified layout
5786 must be equal to the number of specified expressions.
5787
5788 @item duration, d
5789 Set the minimum duration of the sourced audio. See
5790 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5791 for the accepted syntax.
5792 Note that the resulting duration may be greater than the specified
5793 duration, as the generated audio is always cut at the end of a
5794 complete frame.
5795
5796 If not specified, or the expressed duration is negative, the audio is
5797 supposed to be generated forever.
5798
5799 @item nb_samples, n
5800 Set the number of samples per channel per each output frame,
5801 default to 1024.
5802
5803 @item sample_rate, s
5804 Specify the sample rate, default to 44100.
5805 @end table
5806
5807 Each expression in @var{exprs} can contain the following constants:
5808
5809 @table @option
5810 @item n
5811 number of the evaluated sample, starting from 0
5812
5813 @item t
5814 time of the evaluated sample expressed in seconds, starting from 0
5815
5816 @item s
5817 sample rate
5818
5819 @end table
5820
5821 @subsection Examples
5822
5823 @itemize
5824 @item
5825 Generate silence:
5826 @example
5827 aevalsrc=0
5828 @end example
5829
5830 @item
5831 Generate a sin signal with frequency of 440 Hz, set sample rate to
5832 8000 Hz:
5833 @example
5834 aevalsrc="sin(440*2*PI*t):s=8000"
5835 @end example
5836
5837 @item
5838 Generate a two channels signal, specify the channel layout (Front
5839 Center + Back Center) explicitly:
5840 @example
5841 aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
5842 @end example
5843
5844 @item
5845 Generate white noise:
5846 @example
5847 aevalsrc="-2+random(0)"
5848 @end example
5849
5850 @item
5851 Generate an amplitude modulated signal:
5852 @example
5853 aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
5854 @end example
5855
5856 @item
5857 Generate 2.5 Hz binaural beats on a 360 Hz carrier:
5858 @example
5859 aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
5860 @end example
5861
5862 @end itemize
5863
5864 @section afirsrc
5865
5866 Generate a FIR coefficients using frequency sampling method.
5867
5868 The resulting stream can be used with @ref{afir} filter for filtering the audio signal.
5869
5870 The filter accepts the following options:
5871
5872 @table @option
5873 @item taps, t
5874 Set number of filter coefficents in output audio stream.
5875 Default value is 1025.
5876
5877 @item frequency, f
5878 Set frequency points from where magnitude and phase are set.
5879 This must be in non decreasing order, and first element must be 0, while last element
5880 must be 1. Elements are separated by white spaces.
5881
5882 @item magnitude, m
5883 Set magnitude value for every frequency point set by @option{frequency}.
5884 Number of values must be same as number of frequency points.
5885 Values are separated by white spaces.
5886
5887 @item phase, p
5888 Set phase value for every frequency point set by @option{frequency}.
5889 Number of values must be same as number of frequency points.
5890 Values are separated by white spaces.
5891
5892 @item sample_rate, r
5893 Set sample rate, default is 44100.
5894
5895 @item nb_samples, n
5896 Set number of samples per each frame. Default is 1024.
5897
5898 @item win_func, w
5899 Set window function. Default is blackman.
5900 @end table
5901
5902 @section anullsrc
5903
5904 The null audio source, return unprocessed audio frames. It is mainly useful
5905 as a template and to be employed in analysis / debugging tools, or as
5906 the source for filters which ignore the input data (for example the sox
5907 synth filter).
5908
5909 This source accepts the following options:
5910
5911 @table @option
5912
5913 @item channel_layout, cl
5914
5915 Specifies the channel layout, and can be either an integer or a string
5916 representing a channel layout. The default value of @var{channel_layout}
5917 is "stereo".
5918
5919 Check the channel_layout_map definition in
5920 @file{libavutil/channel_layout.c} for the mapping between strings and
5921 channel layout values.
5922
5923 @item sample_rate, r
5924 Specifies the sample rate, and defaults to 44100.
5925
5926 @item nb_samples, n
5927 Set the number of samples per requested frames.
5928
5929 @end table
5930
5931 @subsection Examples
5932
5933 @itemize
5934 @item
5935 Set the sample rate to 48000 Hz and the channel layout to AV_CH_LAYOUT_MONO.
5936 @example
5937 anullsrc=r=48000:cl=4
5938 @end example
5939
5940 @item
5941 Do the same operation with a more obvious syntax:
5942 @example
5943 anullsrc=r=48000:cl=mono
5944 @end example
5945 @end itemize
5946
5947 All the parameters need to be explicitly defined.
5948
5949 @section flite
5950
5951 Synthesize a voice utterance using the libflite library.
5952
5953 To enable compilation of this filter you need to configure FFmpeg with
5954 @code{--enable-libflite}.
5955
5956 Note that versions of the flite library prior to 2.0 are not thread-safe.
5957
5958 The filter accepts the following options:
5959
5960 @table @option
5961
5962 @item list_voices
5963 If set to 1, list the names of the available voices and exit
5964 immediately. Default value is 0.
5965
5966 @item nb_samples, n
5967 Set the maximum number of samples per frame. Default value is 512.
5968
5969 @item textfile
5970 Set the filename containing the text to speak.
5971
5972 @item text
5973 Set the text to speak.
5974
5975 @item voice, v
5976 Set the voice to use for the speech synthesis. Default value is
5977 @code{kal}. See also the @var{list_voices} option.
5978 @end table
5979
5980 @subsection Examples
5981
5982 @itemize
5983 @item
5984 Read from file @file{speech.txt}, and synthesize the text using the
5985 standard flite voice:
5986 @example
5987 flite=textfile=speech.txt
5988 @end example
5989
5990 @item
5991 Read the specified text selecting the @code{slt} voice:
5992 @example
5993 flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
5994 @end example
5995
5996 @item
5997 Input text to ffmpeg:
5998 @example
5999 ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
6000 @end example
6001
6002 @item
6003 Make @file{ffplay} speak the specified text, using @code{flite} and
6004 the @code{lavfi} device:
6005 @example
6006 ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
6007 @end example
6008 @end itemize
6009
6010 For more information about libflite, check:
6011 @url{http://www.festvox.org/flite/}
6012
6013 @section anoisesrc
6014
6015 Generate a noise audio signal.
6016
6017 The filter accepts the following options:
6018
6019 @table @option
6020 @item sample_rate, r
6021 Specify the sample rate. Default value is 48000 Hz.
6022
6023 @item amplitude, a
6024 Specify the amplitude (0.0 - 1.0) of the generated audio stream. Default value
6025 is 1.0.
6026
6027 @item duration, d
6028 Specify the duration of the generated audio stream. Not specifying this option
6029 results in noise with an infinite length.
6030
6031 @item color, colour, c
6032 Specify the color of noise. Available noise colors are white, pink, brown,
6033 blue, violet and velvet. Default color is white.
6034
6035 @item seed, s
6036 Specify a value used to seed the PRNG.
6037
6038 @item nb_samples, n
6039 Set the number of samples per each output frame, default is 1024.
6040 @end table
6041
6042 @subsection Examples
6043
6044 @itemize
6045
6046 @item
6047 Generate 60 seconds of pink noise, with a 44.1 kHz sampling rate and an amplitude of 0.5:
6048 @example
6049 anoisesrc=d=60:c=pink:r=44100:a=0.5
6050 @end example
6051 @end itemize
6052
6053 @section hilbert
6054
6055 Generate odd-tap Hilbert transform FIR coefficients.
6056
6057 The resulting stream can be used with @ref{afir} filter for phase-shifting
6058 the signal by 90 degrees.
6059
6060 This is used in many matrix coding schemes and for analytic signal generation.
6061 The process is often written as a multiplication by i (or j), the imaginary unit.
6062
6063 The filter accepts the following options:
6064
6065 @table @option
6066
6067 @item sample_rate, s
6068 Set sample rate, default is 44100.
6069
6070 @item taps, t
6071 Set length of FIR filter, default is 22051.
6072
6073 @item nb_samples, n
6074 Set number of samples per each frame.
6075
6076 @item win_func, w
6077 Set window function to be used when generating FIR coefficients.
6078 @end table
6079
6080 @section sinc
6081
6082 Generate a sinc kaiser-windowed low-pass, high-pass, band-pass, or band-reject FIR coefficients.
6083
6084 The resulting stream can be used with @ref{afir} filter for filtering the audio signal.
6085
6086 The filter accepts the following options:
6087
6088 @table @option
6089 @item sample_rate, r
6090 Set sample rate, default is 44100.
6091
6092 @item nb_samples, n
6093 Set number of samples per each frame. Default is 1024.
6094
6095 @item hp
6096 Set high-pass frequency. Default is 0.
6097
6098 @item lp
6099 Set low-pass frequency. Default is 0.
6100 If high-pass frequency is lower than low-pass frequency and low-pass frequency
6101 is higher than 0 then filter will create band-pass filter coefficients,
6102 otherwise band-reject filter coefficients.
6103
6104 @item phase
6105 Set filter phase response. Default is 50. Allowed range is from 0 to 100.
6106
6107 @item beta
6108 Set Kaiser window beta.
6109
6110 @item att
6111 Set stop-band attenuation. Default is 120dB, allowed range is from 40 to 180 dB.
6112
6113 @item round
6114 Enable rounding, by default is disabled.
6115
6116 @item hptaps
6117 Set number of taps for high-pass filter.
6118
6119 @item lptaps
6120 Set number of taps for low-pass filter.
6121 @end table
6122
6123 @section sine
6124
6125 Generate an audio signal made of a sine wave with amplitude 1/8.
6126
6127 The audio signal is bit-exact.
6128
6129 The filter accepts the following options:
6130
6131 @table @option
6132
6133 @item frequency, f
6134 Set the carrier frequency. Default is 440 Hz.
6135
6136 @item beep_factor, b
6137 Enable a periodic beep every second with frequency @var{beep_factor} times
6138 the carrier frequency. Default is 0, meaning the beep is disabled.
6139
6140 @item sample_rate, r
6141 Specify the sample rate, default is 44100.
6142
6143 @item duration, d
6144 Specify the duration of the generated audio stream.
6145
6146 @item samples_per_frame
6147 Set the number of samples per output frame.
6148
6149 The expression can contain the following constants:
6150
6151 @table @option
6152 @item n
6153 The (sequential) number of the output audio frame, starting from 0.
6154
6155 @item pts
6156 The PTS (Presentation TimeStamp) of the output audio frame,
6157 expressed in @var{TB} units.
6158
6159 @item t
6160 The PTS of the output audio frame, expressed in seconds.
6161
6162 @item TB
6163 The timebase of the output audio frames.
6164 @end table
6165
6166 Default is @code{1024}.
6167 @end table
6168
6169 @subsection Examples
6170
6171 @itemize
6172
6173 @item
6174 Generate a simple 440 Hz sine wave:
6175 @example
6176 sine
6177 @end example
6178
6179 @item
6180 Generate a 220 Hz sine wave with a 880 Hz beep each second, for 5 seconds:
6181 @example
6182 sine=220:4:d=5
6183 sine=f=220:b=4:d=5
6184 sine=frequency=220:beep_factor=4:duration=5
6185 @end example
6186
6187 @item
6188 Generate a 1 kHz sine wave following @code{1602,1601,1602,1601,1602} NTSC
6189 pattern:
6190 @example
6191 sine=1000:samples_per_frame='st(0,mod(n,5)); 1602-not(not(eq(ld(0),1)+eq(ld(0),3)))'
6192 @end example
6193 @end itemize
6194
6195 @c man end AUDIO SOURCES
6196
6197 @chapter Audio Sinks
6198 @c man begin AUDIO SINKS
6199
6200 Below is a description of the currently available audio sinks.
6201
6202 @section abuffersink
6203
6204 Buffer audio frames, and make them available to the end of filter chain.
6205
6206 This sink is mainly intended for programmatic use, in particular
6207 through the interface defined in @file{libavfilter/buffersink.h}
6208 or the options system.
6209
6210 It accepts a pointer to an AVABufferSinkContext structure, which
6211 defines the incoming buffers' formats, to be passed as the opaque
6212 parameter to @code{avfilter_init_filter} for initialization.
6213 @section anullsink
6214
6215 Null audio sink; do absolutely nothing with the input audio. It is
6216 mainly useful as a template and for use in analysis / debugging
6217 tools.
6218
6219 @c man end AUDIO SINKS
6220
6221 @chapter Video Filters
6222 @c man begin VIDEO FILTERS
6223
6224 When you configure your FFmpeg build, you can disable any of the
6225 existing filters using @code{--disable-filters}.
6226 The configure output will show the video filters included in your
6227 build.
6228
6229 Below is a description of the currently available video filters.
6230
6231 @section addroi
6232
6233 Mark a region of interest in a video frame.
6234
6235 The frame data is passed through unchanged, but metadata is attached
6236 to the frame indicating regions of interest which can affect the
6237 behaviour of later encoding.  Multiple regions can be marked by
6238 applying the filter multiple times.
6239
6240 @table @option
6241 @item x
6242 Region distance in pixels from the left edge of the frame.
6243 @item y
6244 Region distance in pixels from the top edge of the frame.
6245 @item w
6246 Region width in pixels.
6247 @item h
6248 Region height in pixels.
6249
6250 The parameters @var{x}, @var{y}, @var{w} and @var{h} are expressions,
6251 and may contain the following variables:
6252 @table @option
6253 @item iw
6254 Width of the input frame.
6255 @item ih
6256 Height of the input frame.
6257 @end table
6258
6259 @item qoffset
6260 Quantisation offset to apply within the region.
6261
6262 This must be a real value in the range -1 to +1.  A value of zero
6263 indicates no quality change.  A negative value asks for better quality
6264 (less quantisation), while a positive value asks for worse quality
6265 (greater quantisation).
6266
6267 The range is calibrated so that the extreme values indicate the
6268 largest possible offset - if the rest of the frame is encoded with the
6269 worst possible quality, an offset of -1 indicates that this region
6270 should be encoded with the best possible quality anyway.  Intermediate
6271 values are then interpolated in some codec-dependent way.
6272
6273 For example, in 10-bit H.264 the quantisation parameter varies between
6274 -12 and 51.  A typical qoffset value of -1/10 therefore indicates that
6275 this region should be encoded with a QP around one-tenth of the full
6276 range better than the rest of the frame.  So, if most of the frame
6277 were to be encoded with a QP of around 30, this region would get a QP
6278 of around 24 (an offset of approximately -1/10 * (51 - -12) = -6.3).
6279 An extreme value of -1 would indicate that this region should be
6280 encoded with the best possible quality regardless of the treatment of
6281 the rest of the frame - that is, should be encoded at a QP of -12.
6282 @item clear
6283 If set to true, remove any existing regions of interest marked on the
6284 frame before adding the new one.
6285 @end table
6286
6287 @subsection Examples
6288
6289 @itemize
6290 @item
6291 Mark the centre quarter of the frame as interesting.
6292 @example
6293 addroi=iw/4:ih/4:iw/2:ih/2:-1/10
6294 @end example
6295 @item
6296 Mark the 100-pixel-wide region on the left edge of the frame as very
6297 uninteresting (to be encoded at much lower quality than the rest of
6298 the frame).
6299 @example
6300 addroi=0:0:100:ih:+1/5
6301 @end example
6302 @end itemize
6303
6304 @section alphaextract
6305
6306 Extract the alpha component from the input as a grayscale video. This
6307 is especially useful with the @var{alphamerge} filter.
6308
6309 @section alphamerge
6310
6311 Add or replace the alpha component of the primary input with the
6312 grayscale value of a second input. This is intended for use with
6313 @var{alphaextract} to allow the transmission or storage of frame
6314 sequences that have alpha in a format that doesn't support an alpha
6315 channel.
6316
6317 For example, to reconstruct full frames from a normal YUV-encoded video
6318 and a separate video created with @var{alphaextract}, you might use:
6319 @example
6320 movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
6321 @end example
6322
6323 Since this filter is designed for reconstruction, it operates on frame
6324 sequences without considering timestamps, and terminates when either
6325 input reaches end of stream. This will cause problems if your encoding
6326 pipeline drops frames. If you're trying to apply an image as an
6327 overlay to a video stream, consider the @var{overlay} filter instead.
6328
6329 @section amplify
6330
6331 Amplify differences between current pixel and pixels of adjacent frames in
6332 same pixel location.
6333
6334 This filter accepts the following options:
6335
6336 @table @option
6337 @item radius
6338 Set frame radius. Default is 2. Allowed range is from 1 to 63.
6339 For example radius of 3 will instruct filter to calculate average of 7 frames.
6340
6341 @item factor
6342 Set factor to amplify difference. Default is 2. Allowed range is from 0 to 65535.
6343
6344 @item threshold
6345 Set threshold for difference amplification. Any difference greater or equal to
6346 this value will not alter source pixel. Default is 10.
6347 Allowed range is from 0 to 65535.
6348
6349 @item tolerance
6350 Set tolerance for difference amplification. Any difference lower to
6351 this value will not alter source pixel. Default is 0.
6352 Allowed range is from 0 to 65535.
6353
6354 @item low
6355 Set lower limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
6356 This option controls maximum possible value that will decrease source pixel value.
6357
6358 @item high
6359 Set high limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
6360 This option controls maximum possible value that will increase source pixel value.
6361
6362 @item planes
6363 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
6364 @end table
6365
6366 @subsection Commands
6367
6368 This filter supports the following @ref{commands} that corresponds to option of same name:
6369 @table @option
6370 @item factor
6371 @item threshold
6372 @item tolerance
6373 @item low
6374 @item high
6375 @item planes
6376 @end table
6377
6378 @section ass
6379
6380 Same as the @ref{subtitles} filter, except that it doesn't require libavcodec
6381 and libavformat to work. On the other hand, it is limited to ASS (Advanced
6382 Substation Alpha) subtitles files.
6383
6384 This filter accepts the following option in addition to the common options from
6385 the @ref{subtitles} filter:
6386
6387 @table @option
6388 @item shaping
6389 Set the shaping engine
6390
6391 Available values are:
6392 @table @samp
6393 @item auto
6394 The default libass shaping engine, which is the best available.
6395 @item simple
6396 Fast, font-agnostic shaper that can do only substitutions
6397 @item complex
6398 Slower shaper using OpenType for substitutions and positioning
6399 @end table
6400
6401 The default is @code{auto}.
6402 @end table
6403
6404 @section atadenoise
6405 Apply an Adaptive Temporal Averaging Denoiser to the video input.
6406
6407 The filter accepts the following options:
6408
6409 @table @option
6410 @item 0a
6411 Set threshold A for 1st plane. Default is 0.02.
6412 Valid range is 0 to 0.3.
6413
6414 @item 0b
6415 Set threshold B for 1st plane. Default is 0.04.
6416 Valid range is 0 to 5.
6417
6418 @item 1a
6419 Set threshold A for 2nd plane. Default is 0.02.
6420 Valid range is 0 to 0.3.
6421
6422 @item 1b
6423 Set threshold B for 2nd plane. Default is 0.04.
6424 Valid range is 0 to 5.
6425
6426 @item 2a
6427 Set threshold A for 3rd plane. Default is 0.02.
6428 Valid range is 0 to 0.3.
6429
6430 @item 2b
6431 Set threshold B for 3rd plane. Default is 0.04.
6432 Valid range is 0 to 5.
6433
6434 Threshold A is designed to react on abrupt changes in the input signal and
6435 threshold B is designed to react on continuous changes in the input signal.
6436
6437 @item s
6438 Set number of frames filter will use for averaging. Default is 9. Must be odd
6439 number in range [5, 129].
6440
6441 @item p
6442 Set what planes of frame filter will use for averaging. Default is all.
6443
6444 @item a
6445 Set what variant of algorithm filter will use for averaging. Default is @code{p} parallel.
6446 Alternatively can be set to @code{s} serial.
6447
6448 Parallel can be faster then serial, while other way around is never true.
6449 Parallel will abort early on first change being greater then thresholds, while serial
6450 will continue processing other side of frames if they are equal or bellow thresholds.
6451 @end table
6452
6453 @subsection Commands
6454 This filter supports same @ref{commands} as options except option @code{s}.
6455 The command accepts the same syntax of the corresponding option.
6456
6457 @section avgblur
6458
6459 Apply average blur filter.
6460
6461 The filter accepts the following options:
6462
6463 @table @option
6464 @item sizeX
6465 Set horizontal radius size.
6466
6467 @item planes
6468 Set which planes to filter. By default all planes are filtered.
6469
6470 @item sizeY
6471 Set vertical radius size, if zero it will be same as @code{sizeX}.
6472 Default is @code{0}.
6473 @end table
6474
6475 @subsection Commands
6476 This filter supports same commands as options.
6477 The command accepts the same syntax of the corresponding option.
6478
6479 If the specified expression is not valid, it is kept at its current
6480 value.
6481
6482 @section bbox
6483
6484 Compute the bounding box for the non-black pixels in the input frame
6485 luminance plane.
6486
6487 This filter computes the bounding box containing all the pixels with a
6488 luminance value greater than the minimum allowed value.
6489 The parameters describing the bounding box are printed on the filter
6490 log.
6491
6492 The filter accepts the following option:
6493
6494 @table @option
6495 @item min_val
6496 Set the minimal luminance value. Default is @code{16}.
6497 @end table
6498
6499 @section bilateral
6500 Apply bilateral filter, spatial smoothing while preserving edges.
6501
6502 The filter accepts the following options:
6503 @table @option
6504 @item sigmaS
6505 Set sigma of gaussian function to calculate spatial weight.
6506 Allowed range is 0 to 10. Default is 0.1.
6507
6508 @item sigmaR
6509 Set sigma of gaussian function to calculate range weight.
6510 Allowed range is 0 to 1. Default is 0.1.
6511
6512 @item planes
6513 Set planes to filter. Default is first only.
6514 @end table
6515
6516 @section bitplanenoise
6517
6518 Show and measure bit plane noise.
6519
6520 The filter accepts the following options:
6521
6522 @table @option
6523 @item bitplane
6524 Set which plane to analyze. Default is @code{1}.
6525
6526 @item filter
6527 Filter out noisy pixels from @code{bitplane} set above.
6528 Default is disabled.
6529 @end table
6530
6531 @section blackdetect
6532
6533 Detect video intervals that are (almost) completely black. Can be
6534 useful to detect chapter transitions, commercials, or invalid
6535 recordings. Output lines contains the time for the start, end and
6536 duration of the detected black interval expressed in seconds.
6537
6538 In order to display the output lines, you need to set the loglevel at
6539 least to the AV_LOG_INFO value.
6540
6541 The filter accepts the following options:
6542
6543 @table @option
6544 @item black_min_duration, d
6545 Set the minimum detected black duration expressed in seconds. It must
6546 be a non-negative floating point number.
6547
6548 Default value is 2.0.
6549
6550 @item picture_black_ratio_th, pic_th
6551 Set the threshold for considering a picture "black".
6552 Express the minimum value for the ratio:
6553 @example
6554 @var{nb_black_pixels} / @var{nb_pixels}
6555 @end example
6556
6557 for which a picture is considered black.
6558 Default value is 0.98.
6559
6560 @item pixel_black_th, pix_th
6561 Set the threshold for considering a pixel "black".
6562
6563 The threshold expresses the maximum pixel luminance value for which a
6564 pixel is considered "black". The provided value is scaled according to
6565 the following equation:
6566 @example
6567 @var{absolute_threshold} = @var{luminance_minimum_value} + @var{pixel_black_th} * @var{luminance_range_size}
6568 @end example
6569
6570 @var{luminance_range_size} and @var{luminance_minimum_value} depend on
6571 the input video format, the range is [0-255] for YUV full-range
6572 formats and [16-235] for YUV non full-range formats.
6573
6574 Default value is 0.10.
6575 @end table
6576
6577 The following example sets the maximum pixel threshold to the minimum
6578 value, and detects only black intervals of 2 or more seconds:
6579 @example
6580 blackdetect=d=2:pix_th=0.00
6581 @end example
6582
6583 @section blackframe
6584
6585 Detect frames that are (almost) completely black. Can be useful to
6586 detect chapter transitions or commercials. Output lines consist of
6587 the frame number of the detected frame, the percentage of blackness,
6588 the position in the file if known or -1 and the timestamp in seconds.
6589
6590 In order to display the output lines, you need to set the loglevel at
6591 least to the AV_LOG_INFO value.
6592
6593 This filter exports frame metadata @code{lavfi.blackframe.pblack}.
6594 The value represents the percentage of pixels in the picture that
6595 are below the threshold value.
6596
6597 It accepts the following parameters:
6598
6599 @table @option
6600
6601 @item amount
6602 The percentage of the pixels that have to be below the threshold; it defaults to
6603 @code{98}.
6604
6605 @item threshold, thresh
6606 The threshold below which a pixel value is considered black; it defaults to
6607 @code{32}.
6608
6609 @end table
6610
6611 @section blend, tblend
6612
6613 Blend two video frames into each other.
6614
6615 The @code{blend} filter takes two input streams and outputs one
6616 stream, the first input is the "top" layer and second input is
6617 "bottom" layer.  By default, the output terminates when the longest input terminates.
6618
6619 The @code{tblend} (time blend) filter takes two consecutive frames
6620 from one single stream, and outputs the result obtained by blending
6621 the new frame on top of the old frame.
6622
6623 A description of the accepted options follows.
6624
6625 @table @option
6626 @item c0_mode
6627 @item c1_mode
6628 @item c2_mode
6629 @item c3_mode
6630 @item all_mode
6631 Set blend mode for specific pixel component or all pixel components in case
6632 of @var{all_mode}. Default value is @code{normal}.
6633
6634 Available values for component modes are:
6635 @table @samp
6636 @item addition
6637 @item grainmerge
6638 @item and
6639 @item average
6640 @item burn
6641 @item darken
6642 @item difference
6643 @item grainextract
6644 @item divide
6645 @item dodge
6646 @item freeze
6647 @item exclusion
6648 @item extremity
6649 @item glow
6650 @item hardlight
6651 @item hardmix
6652 @item heat
6653 @item lighten
6654 @item linearlight
6655 @item multiply
6656 @item multiply128
6657 @item negation
6658 @item normal
6659 @item or
6660 @item overlay
6661 @item phoenix
6662 @item pinlight
6663 @item reflect
6664 @item screen
6665 @item softlight
6666 @item subtract
6667 @item vividlight
6668 @item xor
6669 @end table
6670
6671 @item c0_opacity
6672 @item c1_opacity
6673 @item c2_opacity
6674 @item c3_opacity
6675 @item all_opacity
6676 Set blend opacity for specific pixel component or all pixel components in case
6677 of @var{all_opacity}. Only used in combination with pixel component blend modes.
6678
6679 @item c0_expr
6680 @item c1_expr
6681 @item c2_expr
6682 @item c3_expr
6683 @item all_expr
6684 Set blend expression for specific pixel component or all pixel components in case
6685 of @var{all_expr}. Note that related mode options will be ignored if those are set.
6686
6687 The expressions can use the following variables:
6688
6689 @table @option
6690 @item N
6691 The sequential number of the filtered frame, starting from @code{0}.
6692
6693 @item X
6694 @item Y
6695 the coordinates of the current sample
6696
6697 @item W
6698 @item H
6699 the width and height of currently filtered plane
6700
6701 @item SW
6702 @item SH
6703 Width and height scale for the plane being filtered. It is the
6704 ratio between the dimensions of the current plane to the luma plane,
6705 e.g. for a @code{yuv420p} frame, the values are @code{1,1} for
6706 the luma plane and @code{0.5,0.5} for the chroma planes.
6707
6708 @item T
6709 Time of the current frame, expressed in seconds.
6710
6711 @item TOP, A
6712 Value of pixel component at current location for first video frame (top layer).
6713
6714 @item BOTTOM, B
6715 Value of pixel component at current location for second video frame (bottom layer).
6716 @end table
6717 @end table
6718
6719 The @code{blend} filter also supports the @ref{framesync} options.
6720
6721 @subsection Examples
6722
6723 @itemize
6724 @item
6725 Apply transition from bottom layer to top layer in first 10 seconds:
6726 @example
6727 blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
6728 @end example
6729
6730 @item
6731 Apply linear horizontal transition from top layer to bottom layer:
6732 @example
6733 blend=all_expr='A*(X/W)+B*(1-X/W)'
6734 @end example
6735
6736 @item
6737 Apply 1x1 checkerboard effect:
6738 @example
6739 blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
6740 @end example
6741
6742 @item
6743 Apply uncover left effect:
6744 @example
6745 blend=all_expr='if(gte(N*SW+X,W),A,B)'
6746 @end example
6747
6748 @item
6749 Apply uncover down effect:
6750 @example
6751 blend=all_expr='if(gte(Y-N*SH,0),A,B)'
6752 @end example
6753
6754 @item
6755 Apply uncover up-left effect:
6756 @example
6757 blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
6758 @end example
6759
6760 @item
6761 Split diagonally video and shows top and bottom layer on each side:
6762 @example
6763 blend=all_expr='if(gt(X,Y*(W/H)),A,B)'
6764 @end example
6765
6766 @item
6767 Display differences between the current and the previous frame:
6768 @example
6769 tblend=all_mode=grainextract
6770 @end example
6771 @end itemize
6772
6773 @section bm3d
6774
6775 Denoise frames using Block-Matching 3D algorithm.
6776
6777 The filter accepts the following options.
6778
6779 @table @option
6780 @item sigma
6781 Set denoising strength. Default value is 1.
6782 Allowed range is from 0 to 999.9.
6783 The denoising algorithm is very sensitive to sigma, so adjust it
6784 according to the source.
6785
6786 @item block
6787 Set local patch size. This sets dimensions in 2D.
6788
6789 @item bstep
6790 Set sliding step for processing blocks. Default value is 4.
6791 Allowed range is from 1 to 64.
6792 Smaller values allows processing more reference blocks and is slower.
6793
6794 @item group
6795 Set maximal number of similar blocks for 3rd dimension. Default value is 1.
6796 When set to 1, no block matching is done. Larger values allows more blocks
6797 in single group.
6798 Allowed range is from 1 to 256.
6799
6800 @item range
6801 Set radius for search block matching. Default is 9.
6802 Allowed range is from 1 to INT32_MAX.
6803
6804 @item mstep
6805 Set step between two search locations for block matching. Default is 1.
6806 Allowed range is from 1 to 64. Smaller is slower.
6807
6808 @item thmse
6809 Set threshold of mean square error for block matching. Valid range is 0 to
6810 INT32_MAX.
6811
6812 @item hdthr
6813 Set thresholding parameter for hard thresholding in 3D transformed domain.
6814 Larger values results in stronger hard-thresholding filtering in frequency
6815 domain.
6816
6817 @item estim
6818 Set filtering estimation mode. Can be @code{basic} or @code{final}.
6819 Default is @code{basic}.
6820
6821 @item ref
6822 If enabled, filter will use 2nd stream for block matching.
6823 Default is disabled for @code{basic} value of @var{estim} option,
6824 and always enabled if value of @var{estim} is @code{final}.
6825
6826 @item planes
6827 Set planes to filter. Default is all available except alpha.
6828 @end table
6829
6830 @subsection Examples
6831
6832 @itemize
6833 @item
6834 Basic filtering with bm3d:
6835 @example
6836 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic
6837 @end example
6838
6839 @item
6840 Same as above, but filtering only luma:
6841 @example
6842 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic:planes=1
6843 @end example
6844
6845 @item
6846 Same as above, but with both estimation modes:
6847 @example
6848 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
6849 @end example
6850
6851 @item
6852 Same as above, but prefilter with @ref{nlmeans} filter instead:
6853 @example
6854 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
6855 @end example
6856 @end itemize
6857
6858 @section boxblur
6859
6860 Apply a boxblur algorithm to the input video.
6861
6862 It accepts the following parameters:
6863
6864 @table @option
6865
6866 @item luma_radius, lr
6867 @item luma_power, lp
6868 @item chroma_radius, cr
6869 @item chroma_power, cp
6870 @item alpha_radius, ar
6871 @item alpha_power, ap
6872
6873 @end table
6874
6875 A description of the accepted options follows.
6876
6877 @table @option
6878 @item luma_radius, lr
6879 @item chroma_radius, cr
6880 @item alpha_radius, ar
6881 Set an expression for the box radius in pixels used for blurring the
6882 corresponding input plane.
6883
6884 The radius value must be a non-negative number, and must not be
6885 greater than the value of the expression @code{min(w,h)/2} for the
6886 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
6887 planes.
6888
6889 Default value for @option{luma_radius} is "2". If not specified,
6890 @option{chroma_radius} and @option{alpha_radius} default to the
6891 corresponding value set for @option{luma_radius}.
6892
6893 The expressions can contain the following constants:
6894 @table @option
6895 @item w
6896 @item h
6897 The input width and height in pixels.
6898
6899 @item cw
6900 @item ch
6901 The input chroma image width and height in pixels.
6902
6903 @item hsub
6904 @item vsub
6905 The horizontal and vertical chroma subsample values. For example, for the
6906 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
6907 @end table
6908
6909 @item luma_power, lp
6910 @item chroma_power, cp
6911 @item alpha_power, ap
6912 Specify how many times the boxblur filter is applied to the
6913 corresponding plane.
6914
6915 Default value for @option{luma_power} is 2. If not specified,
6916 @option{chroma_power} and @option{alpha_power} default to the
6917 corresponding value set for @option{luma_power}.
6918
6919 A value of 0 will disable the effect.
6920 @end table
6921
6922 @subsection Examples
6923
6924 @itemize
6925 @item
6926 Apply a boxblur filter with the luma, chroma, and alpha radii
6927 set to 2:
6928 @example
6929 boxblur=luma_radius=2:luma_power=1
6930 boxblur=2:1
6931 @end example
6932
6933 @item
6934 Set the luma radius to 2, and alpha and chroma radius to 0:
6935 @example
6936 boxblur=2:1:cr=0:ar=0
6937 @end example
6938
6939 @item
6940 Set the luma and chroma radii to a fraction of the video dimension:
6941 @example
6942 boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
6943 @end example
6944 @end itemize
6945
6946 @section bwdif
6947
6948 Deinterlace the input video ("bwdif" stands for "Bob Weaver
6949 Deinterlacing Filter").
6950
6951 Motion adaptive deinterlacing based on yadif with the use of w3fdif and cubic
6952 interpolation algorithms.
6953 It accepts the following parameters:
6954
6955 @table @option
6956 @item mode
6957 The interlacing mode to adopt. It accepts one of the following values:
6958
6959 @table @option
6960 @item 0, send_frame
6961 Output one frame for each frame.
6962 @item 1, send_field
6963 Output one frame for each field.
6964 @end table
6965
6966 The default value is @code{send_field}.
6967
6968 @item parity
6969 The picture field parity assumed for the input interlaced video. It accepts one
6970 of the following values:
6971
6972 @table @option
6973 @item 0, tff
6974 Assume the top field is first.
6975 @item 1, bff
6976 Assume the bottom field is first.
6977 @item -1, auto
6978 Enable automatic detection of field parity.
6979 @end table
6980
6981 The default value is @code{auto}.
6982 If the interlacing is unknown or the decoder does not export this information,
6983 top field first will be assumed.
6984
6985 @item deint
6986 Specify which frames to deinterlace. Accepts one of the following
6987 values:
6988
6989 @table @option
6990 @item 0, all
6991 Deinterlace all frames.
6992 @item 1, interlaced
6993 Only deinterlace frames marked as interlaced.
6994 @end table
6995
6996 The default value is @code{all}.
6997 @end table
6998
6999 @section chromahold
7000 Remove all color information for all colors except for certain one.
7001
7002 The filter accepts the following options:
7003
7004 @table @option
7005 @item color
7006 The color which will not be replaced with neutral chroma.
7007
7008 @item similarity
7009 Similarity percentage with the above color.
7010 0.01 matches only the exact key color, while 1.0 matches everything.
7011
7012 @item blend
7013 Blend percentage.
7014 0.0 makes pixels either fully gray, or not gray at all.
7015 Higher values result in more preserved color.
7016
7017 @item yuv
7018 Signals that the color passed is already in YUV instead of RGB.
7019
7020 Literal colors like "green" or "red" don't make sense with this enabled anymore.
7021 This can be used to pass exact YUV values as hexadecimal numbers.
7022 @end table
7023
7024 @subsection Commands
7025 This filter supports same @ref{commands} as options.
7026 The command accepts the same syntax of the corresponding option.
7027
7028 If the specified expression is not valid, it is kept at its current
7029 value.
7030
7031 @section chromakey
7032 YUV colorspace color/chroma keying.
7033
7034 The filter accepts the following options:
7035
7036 @table @option
7037 @item color
7038 The color which will be replaced with transparency.
7039
7040 @item similarity
7041 Similarity percentage with the key color.
7042
7043 0.01 matches only the exact key color, while 1.0 matches everything.
7044
7045 @item blend
7046 Blend percentage.
7047
7048 0.0 makes pixels either fully transparent, or not transparent at all.
7049
7050 Higher values result in semi-transparent pixels, with a higher transparency
7051 the more similar the pixels color is to the key color.
7052
7053 @item yuv
7054 Signals that the color passed is already in YUV instead of RGB.
7055
7056 Literal colors like "green" or "red" don't make sense with this enabled anymore.
7057 This can be used to pass exact YUV values as hexadecimal numbers.
7058 @end table
7059
7060 @subsection Commands
7061 This filter supports same @ref{commands} as options.
7062 The command accepts the same syntax of the corresponding option.
7063
7064 If the specified expression is not valid, it is kept at its current
7065 value.
7066
7067 @subsection Examples
7068
7069 @itemize
7070 @item
7071 Make every green pixel in the input image transparent:
7072 @example
7073 ffmpeg -i input.png -vf chromakey=green out.png
7074 @end example
7075
7076 @item
7077 Overlay a greenscreen-video on top of a static black background.
7078 @example
7079 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
7080 @end example
7081 @end itemize
7082
7083 @section chromashift
7084 Shift chroma pixels horizontally and/or vertically.
7085
7086 The filter accepts the following options:
7087 @table @option
7088 @item cbh
7089 Set amount to shift chroma-blue horizontally.
7090 @item cbv
7091 Set amount to shift chroma-blue vertically.
7092 @item crh
7093 Set amount to shift chroma-red horizontally.
7094 @item crv
7095 Set amount to shift chroma-red vertically.
7096 @item edge
7097 Set edge mode, can be @var{smear}, default, or @var{warp}.
7098 @end table
7099
7100 @subsection Commands
7101
7102 This filter supports the all above options as @ref{commands}.
7103
7104 @section ciescope
7105
7106 Display CIE color diagram with pixels overlaid onto it.
7107
7108 The filter accepts the following options:
7109
7110 @table @option
7111 @item system
7112 Set color system.
7113
7114 @table @samp
7115 @item ntsc, 470m
7116 @item ebu, 470bg
7117 @item smpte
7118 @item 240m
7119 @item apple
7120 @item widergb
7121 @item cie1931
7122 @item rec709, hdtv
7123 @item uhdtv, rec2020
7124 @item dcip3
7125 @end table
7126
7127 @item cie
7128 Set CIE system.
7129
7130 @table @samp
7131 @item xyy
7132 @item ucs
7133 @item luv
7134 @end table
7135
7136 @item gamuts
7137 Set what gamuts to draw.
7138
7139 See @code{system} option for available values.
7140
7141 @item size, s
7142 Set ciescope size, by default set to 512.
7143
7144 @item intensity, i
7145 Set intensity used to map input pixel values to CIE diagram.
7146
7147 @item contrast
7148 Set contrast used to draw tongue colors that are out of active color system gamut.
7149
7150 @item corrgamma
7151 Correct gamma displayed on scope, by default enabled.
7152
7153 @item showwhite
7154 Show white point on CIE diagram, by default disabled.
7155
7156 @item gamma
7157 Set input gamma. Used only with XYZ input color space.
7158 @end table
7159
7160 @section codecview
7161
7162 Visualize information exported by some codecs.
7163
7164 Some codecs can export information through frames using side-data or other
7165 means. For example, some MPEG based codecs export motion vectors through the
7166 @var{export_mvs} flag in the codec @option{flags2} option.
7167
7168 The filter accepts the following option:
7169
7170 @table @option
7171 @item mv
7172 Set motion vectors to visualize.
7173
7174 Available flags for @var{mv} are:
7175
7176 @table @samp
7177 @item pf
7178 forward predicted MVs of P-frames
7179 @item bf
7180 forward predicted MVs of B-frames
7181 @item bb
7182 backward predicted MVs of B-frames
7183 @end table
7184
7185 @item qp
7186 Display quantization parameters using the chroma planes.
7187
7188 @item mv_type, mvt
7189 Set motion vectors type to visualize. Includes MVs from all frames unless specified by @var{frame_type} option.
7190
7191 Available flags for @var{mv_type} are:
7192
7193 @table @samp
7194 @item fp
7195 forward predicted MVs
7196 @item bp
7197 backward predicted MVs
7198 @end table
7199
7200 @item frame_type, ft
7201 Set frame type to visualize motion vectors of.
7202
7203 Available flags for @var{frame_type} are:
7204
7205 @table @samp
7206 @item if
7207 intra-coded frames (I-frames)
7208 @item pf
7209 predicted frames (P-frames)
7210 @item bf
7211 bi-directionally predicted frames (B-frames)
7212 @end table
7213 @end table
7214
7215 @subsection Examples
7216
7217 @itemize
7218 @item
7219 Visualize forward predicted MVs of all frames using @command{ffplay}:
7220 @example
7221 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp
7222 @end example
7223
7224 @item
7225 Visualize multi-directionals MVs of P and B-Frames using @command{ffplay}:
7226 @example
7227 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
7228 @end example
7229 @end itemize
7230
7231 @section colorbalance
7232 Modify intensity of primary colors (red, green and blue) of input frames.
7233
7234 The filter allows an input frame to be adjusted in the shadows, midtones or highlights
7235 regions for the red-cyan, green-magenta or blue-yellow balance.
7236
7237 A positive adjustment value shifts the balance towards the primary color, a negative
7238 value towards the complementary color.
7239
7240 The filter accepts the following options:
7241
7242 @table @option
7243 @item rs
7244 @item gs
7245 @item bs
7246 Adjust red, green and blue shadows (darkest pixels).
7247
7248 @item rm
7249 @item gm
7250 @item bm
7251 Adjust red, green and blue midtones (medium pixels).
7252
7253 @item rh
7254 @item gh
7255 @item bh
7256 Adjust red, green and blue highlights (brightest pixels).
7257
7258 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
7259
7260 @item pl
7261 Preserve lightness when changing color balance. Default is disabled.
7262 @end table
7263
7264 @subsection Examples
7265
7266 @itemize
7267 @item
7268 Add red color cast to shadows:
7269 @example
7270 colorbalance=rs=.3
7271 @end example
7272 @end itemize
7273
7274 @subsection Commands
7275
7276 This filter supports the all above options as @ref{commands}.
7277
7278 @section colorchannelmixer
7279
7280 Adjust video input frames by re-mixing color channels.
7281
7282 This filter modifies a color channel by adding the values associated to
7283 the other channels of the same pixels. For example if the value to
7284 modify is red, the output value will be:
7285 @example
7286 @var{red}=@var{red}*@var{rr} + @var{blue}*@var{rb} + @var{green}*@var{rg} + @var{alpha}*@var{ra}
7287 @end example
7288
7289 The filter accepts the following options:
7290
7291 @table @option
7292 @item rr
7293 @item rg
7294 @item rb
7295 @item ra
7296 Adjust contribution of input red, green, blue and alpha channels for output red channel.
7297 Default is @code{1} for @var{rr}, and @code{0} for @var{rg}, @var{rb} and @var{ra}.
7298
7299 @item gr
7300 @item gg
7301 @item gb
7302 @item ga
7303 Adjust contribution of input red, green, blue and alpha channels for output green channel.
7304 Default is @code{1} for @var{gg}, and @code{0} for @var{gr}, @var{gb} and @var{ga}.
7305
7306 @item br
7307 @item bg
7308 @item bb
7309 @item ba
7310 Adjust contribution of input red, green, blue and alpha channels for output blue channel.
7311 Default is @code{1} for @var{bb}, and @code{0} for @var{br}, @var{bg} and @var{ba}.
7312
7313 @item ar
7314 @item ag
7315 @item ab
7316 @item aa
7317 Adjust contribution of input red, green, blue and alpha channels for output alpha channel.
7318 Default is @code{1} for @var{aa}, and @code{0} for @var{ar}, @var{ag} and @var{ab}.
7319
7320 Allowed ranges for options are @code{[-2.0, 2.0]}.
7321 @end table
7322
7323 @subsection Examples
7324
7325 @itemize
7326 @item
7327 Convert source to grayscale:
7328 @example
7329 colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
7330 @end example
7331 @item
7332 Simulate sepia tones:
7333 @example
7334 colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
7335 @end example
7336 @end itemize
7337
7338 @subsection Commands
7339
7340 This filter supports the all above options as @ref{commands}.
7341
7342 @section colorkey
7343 RGB colorspace color keying.
7344
7345 The filter accepts the following options:
7346
7347 @table @option
7348 @item color
7349 The color which will be replaced with transparency.
7350
7351 @item similarity
7352 Similarity percentage with the key color.
7353
7354 0.01 matches only the exact key color, while 1.0 matches everything.
7355
7356 @item blend
7357 Blend percentage.
7358
7359 0.0 makes pixels either fully transparent, or not transparent at all.
7360
7361 Higher values result in semi-transparent pixels, with a higher transparency
7362 the more similar the pixels color is to the key color.
7363 @end table
7364
7365 @subsection Examples
7366
7367 @itemize
7368 @item
7369 Make every green pixel in the input image transparent:
7370 @example
7371 ffmpeg -i input.png -vf colorkey=green out.png
7372 @end example
7373
7374 @item
7375 Overlay a greenscreen-video on top of a static background image.
7376 @example
7377 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
7378 @end example
7379 @end itemize
7380
7381 @subsection Commands
7382 This filter supports same @ref{commands} as options.
7383 The command accepts the same syntax of the corresponding option.
7384
7385 If the specified expression is not valid, it is kept at its current
7386 value.
7387
7388 @section colorhold
7389 Remove all color information for all RGB colors except for certain one.
7390
7391 The filter accepts the following options:
7392
7393 @table @option
7394 @item color
7395 The color which will not be replaced with neutral gray.
7396
7397 @item similarity
7398 Similarity percentage with the above color.
7399 0.01 matches only the exact key color, while 1.0 matches everything.
7400
7401 @item blend
7402 Blend percentage. 0.0 makes pixels fully gray.
7403 Higher values result in more preserved color.
7404 @end table
7405
7406 @subsection Commands
7407 This filter supports same @ref{commands} as options.
7408 The command accepts the same syntax of the corresponding option.
7409
7410 If the specified expression is not valid, it is kept at its current
7411 value.
7412
7413 @section colorlevels
7414
7415 Adjust video input frames using levels.
7416
7417 The filter accepts the following options:
7418
7419 @table @option
7420 @item rimin
7421 @item gimin
7422 @item bimin
7423 @item aimin
7424 Adjust red, green, blue and alpha input black point.
7425 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
7426
7427 @item rimax
7428 @item gimax
7429 @item bimax
7430 @item aimax
7431 Adjust red, green, blue and alpha input white point.
7432 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{1}.
7433
7434 Input levels are used to lighten highlights (bright tones), darken shadows
7435 (dark tones), change the balance of bright and dark tones.
7436
7437 @item romin
7438 @item gomin
7439 @item bomin
7440 @item aomin
7441 Adjust red, green, blue and alpha output black point.
7442 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{0}.
7443
7444 @item romax
7445 @item gomax
7446 @item bomax
7447 @item aomax
7448 Adjust red, green, blue and alpha output white point.
7449 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{1}.
7450
7451 Output levels allows manual selection of a constrained output level range.
7452 @end table
7453
7454 @subsection Examples
7455
7456 @itemize
7457 @item
7458 Make video output darker:
7459 @example
7460 colorlevels=rimin=0.058:gimin=0.058:bimin=0.058
7461 @end example
7462
7463 @item
7464 Increase contrast:
7465 @example
7466 colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96
7467 @end example
7468
7469 @item
7470 Make video output lighter:
7471 @example
7472 colorlevels=rimax=0.902:gimax=0.902:bimax=0.902
7473 @end example
7474
7475 @item
7476 Increase brightness:
7477 @example
7478 colorlevels=romin=0.5:gomin=0.5:bomin=0.5
7479 @end example
7480 @end itemize
7481
7482 @subsection Commands
7483
7484 This filter supports the all above options as @ref{commands}.
7485
7486 @section colormatrix
7487
7488 Convert color matrix.
7489
7490 The filter accepts the following options:
7491
7492 @table @option
7493 @item src
7494 @item dst
7495 Specify the source and destination color matrix. Both values must be
7496 specified.
7497
7498 The accepted values are:
7499 @table @samp
7500 @item bt709
7501 BT.709
7502
7503 @item fcc
7504 FCC
7505
7506 @item bt601
7507 BT.601
7508
7509 @item bt470
7510 BT.470
7511
7512 @item bt470bg
7513 BT.470BG
7514
7515 @item smpte170m
7516 SMPTE-170M
7517
7518 @item smpte240m
7519 SMPTE-240M
7520
7521 @item bt2020
7522 BT.2020
7523 @end table
7524 @end table
7525
7526 For example to convert from BT.601 to SMPTE-240M, use the command:
7527 @example
7528 colormatrix=bt601:smpte240m
7529 @end example
7530
7531 @section colorspace
7532
7533 Convert colorspace, transfer characteristics or color primaries.
7534 Input video needs to have an even size.
7535
7536 The filter accepts the following options:
7537
7538 @table @option
7539 @anchor{all}
7540 @item all
7541 Specify all color properties at once.
7542
7543 The accepted values are:
7544 @table @samp
7545 @item bt470m
7546 BT.470M
7547
7548 @item bt470bg
7549 BT.470BG
7550
7551 @item bt601-6-525
7552 BT.601-6 525
7553
7554 @item bt601-6-625
7555 BT.601-6 625
7556
7557 @item bt709
7558 BT.709
7559
7560 @item smpte170m
7561 SMPTE-170M
7562
7563 @item smpte240m
7564 SMPTE-240M
7565
7566 @item bt2020
7567 BT.2020
7568
7569 @end table
7570
7571 @anchor{space}
7572 @item space
7573 Specify output colorspace.
7574
7575 The accepted values are:
7576 @table @samp
7577 @item bt709
7578 BT.709
7579
7580 @item fcc
7581 FCC
7582
7583 @item bt470bg
7584 BT.470BG or BT.601-6 625
7585
7586 @item smpte170m
7587 SMPTE-170M or BT.601-6 525
7588
7589 @item smpte240m
7590 SMPTE-240M
7591
7592 @item ycgco
7593 YCgCo
7594
7595 @item bt2020ncl
7596 BT.2020 with non-constant luminance
7597
7598 @end table
7599
7600 @anchor{trc}
7601 @item trc
7602 Specify output transfer characteristics.
7603
7604 The accepted values are:
7605 @table @samp
7606 @item bt709
7607 BT.709
7608
7609 @item bt470m
7610 BT.470M
7611
7612 @item bt470bg
7613 BT.470BG
7614
7615 @item gamma22
7616 Constant gamma of 2.2
7617
7618 @item gamma28
7619 Constant gamma of 2.8
7620
7621 @item smpte170m
7622 SMPTE-170M, BT.601-6 625 or BT.601-6 525
7623
7624 @item smpte240m
7625 SMPTE-240M
7626
7627 @item srgb
7628 SRGB
7629
7630 @item iec61966-2-1
7631 iec61966-2-1
7632
7633 @item iec61966-2-4
7634 iec61966-2-4
7635
7636 @item xvycc
7637 xvycc
7638
7639 @item bt2020-10
7640 BT.2020 for 10-bits content
7641
7642 @item bt2020-12
7643 BT.2020 for 12-bits content
7644
7645 @end table
7646
7647 @anchor{primaries}
7648 @item primaries
7649 Specify output color primaries.
7650
7651 The accepted values are:
7652 @table @samp
7653 @item bt709
7654 BT.709
7655
7656 @item bt470m
7657 BT.470M
7658
7659 @item bt470bg
7660 BT.470BG or BT.601-6 625
7661
7662 @item smpte170m
7663 SMPTE-170M or BT.601-6 525
7664
7665 @item smpte240m
7666 SMPTE-240M
7667
7668 @item film
7669 film
7670
7671 @item smpte431
7672 SMPTE-431
7673
7674 @item smpte432
7675 SMPTE-432
7676
7677 @item bt2020
7678 BT.2020
7679
7680 @item jedec-p22
7681 JEDEC P22 phosphors
7682
7683 @end table
7684
7685 @anchor{range}
7686 @item range
7687 Specify output color range.
7688
7689 The accepted values are:
7690 @table @samp
7691 @item tv
7692 TV (restricted) range
7693
7694 @item mpeg
7695 MPEG (restricted) range
7696
7697 @item pc
7698 PC (full) range
7699
7700 @item jpeg
7701 JPEG (full) range
7702
7703 @end table
7704
7705 @item format
7706 Specify output color format.
7707
7708 The accepted values are:
7709 @table @samp
7710 @item yuv420p
7711 YUV 4:2:0 planar 8-bits
7712
7713 @item yuv420p10
7714 YUV 4:2:0 planar 10-bits
7715
7716 @item yuv420p12
7717 YUV 4:2:0 planar 12-bits
7718
7719 @item yuv422p
7720 YUV 4:2:2 planar 8-bits
7721
7722 @item yuv422p10
7723 YUV 4:2:2 planar 10-bits
7724
7725 @item yuv422p12
7726 YUV 4:2:2 planar 12-bits
7727
7728 @item yuv444p
7729 YUV 4:4:4 planar 8-bits
7730
7731 @item yuv444p10
7732 YUV 4:4:4 planar 10-bits
7733
7734 @item yuv444p12
7735 YUV 4:4:4 planar 12-bits
7736
7737 @end table
7738
7739 @item fast
7740 Do a fast conversion, which skips gamma/primary correction. This will take
7741 significantly less CPU, but will be mathematically incorrect. To get output
7742 compatible with that produced by the colormatrix filter, use fast=1.
7743
7744 @item dither
7745 Specify dithering mode.
7746
7747 The accepted values are:
7748 @table @samp
7749 @item none
7750 No dithering
7751
7752 @item fsb
7753 Floyd-Steinberg dithering
7754 @end table
7755
7756 @item wpadapt
7757 Whitepoint adaptation mode.
7758
7759 The accepted values are:
7760 @table @samp
7761 @item bradford
7762 Bradford whitepoint adaptation
7763
7764 @item vonkries
7765 von Kries whitepoint adaptation
7766
7767 @item identity
7768 identity whitepoint adaptation (i.e. no whitepoint adaptation)
7769 @end table
7770
7771 @item iall
7772 Override all input properties at once. Same accepted values as @ref{all}.
7773
7774 @item ispace
7775 Override input colorspace. Same accepted values as @ref{space}.
7776
7777 @item iprimaries
7778 Override input color primaries. Same accepted values as @ref{primaries}.
7779
7780 @item itrc
7781 Override input transfer characteristics. Same accepted values as @ref{trc}.
7782
7783 @item irange
7784 Override input color range. Same accepted values as @ref{range}.
7785
7786 @end table
7787
7788 The filter converts the transfer characteristics, color space and color
7789 primaries to the specified user values. The output value, if not specified,
7790 is set to a default value based on the "all" property. If that property is
7791 also not specified, the filter will log an error. The output color range and
7792 format default to the same value as the input color range and format. The
7793 input transfer characteristics, color space, color primaries and color range
7794 should be set on the input data. If any of these are missing, the filter will
7795 log an error and no conversion will take place.
7796
7797 For example to convert the input to SMPTE-240M, use the command:
7798 @example
7799 colorspace=smpte240m
7800 @end example
7801
7802 @section convolution
7803
7804 Apply convolution of 3x3, 5x5, 7x7 or horizontal/vertical up to 49 elements.
7805
7806 The filter accepts the following options:
7807
7808 @table @option
7809 @item 0m
7810 @item 1m
7811 @item 2m
7812 @item 3m
7813 Set matrix for each plane.
7814 Matrix is sequence of 9, 25 or 49 signed integers in @var{square} mode,
7815 and from 1 to 49 odd number of signed integers in @var{row} mode.
7816
7817 @item 0rdiv
7818 @item 1rdiv
7819 @item 2rdiv
7820 @item 3rdiv
7821 Set multiplier for calculated value for each plane.
7822 If unset or 0, it will be sum of all matrix elements.
7823
7824 @item 0bias
7825 @item 1bias
7826 @item 2bias
7827 @item 3bias
7828 Set bias for each plane. This value is added to the result of the multiplication.
7829 Useful for making the overall image brighter or darker. Default is 0.0.
7830
7831 @item 0mode
7832 @item 1mode
7833 @item 2mode
7834 @item 3mode
7835 Set matrix mode for each plane. Can be @var{square}, @var{row} or @var{column}.
7836 Default is @var{square}.
7837 @end table
7838
7839 @subsection Examples
7840
7841 @itemize
7842 @item
7843 Apply sharpen:
7844 @example
7845 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"
7846 @end example
7847
7848 @item
7849 Apply blur:
7850 @example
7851 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"
7852 @end example
7853
7854 @item
7855 Apply edge enhance:
7856 @example
7857 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"
7858 @end example
7859
7860 @item
7861 Apply edge detect:
7862 @example
7863 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"
7864 @end example
7865
7866 @item
7867 Apply laplacian edge detector which includes diagonals:
7868 @example
7869 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"
7870 @end example
7871
7872 @item
7873 Apply emboss:
7874 @example
7875 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"
7876 @end example
7877 @end itemize
7878
7879 @section convolve
7880
7881 Apply 2D convolution of video stream in frequency domain using second stream
7882 as impulse.
7883
7884 The filter accepts the following options:
7885
7886 @table @option
7887 @item planes
7888 Set which planes to process.
7889
7890 @item impulse
7891 Set which impulse video frames will be processed, can be @var{first}
7892 or @var{all}. Default is @var{all}.
7893 @end table
7894
7895 The @code{convolve} filter also supports the @ref{framesync} options.
7896
7897 @section copy
7898
7899 Copy the input video source unchanged to the output. This is mainly useful for
7900 testing purposes.
7901
7902 @anchor{coreimage}
7903 @section coreimage
7904 Video filtering on GPU using Apple's CoreImage API on OSX.
7905
7906 Hardware acceleration is based on an OpenGL context. Usually, this means it is
7907 processed by video hardware. However, software-based OpenGL implementations
7908 exist which means there is no guarantee for hardware processing. It depends on
7909 the respective OSX.
7910
7911 There are many filters and image generators provided by Apple that come with a
7912 large variety of options. The filter has to be referenced by its name along
7913 with its options.
7914
7915 The coreimage filter accepts the following options:
7916 @table @option
7917 @item list_filters
7918 List all available filters and generators along with all their respective
7919 options as well as possible minimum and maximum values along with the default
7920 values.
7921 @example
7922 list_filters=true
7923 @end example
7924
7925 @item filter
7926 Specify all filters by their respective name and options.
7927 Use @var{list_filters} to determine all valid filter names and options.
7928 Numerical options are specified by a float value and are automatically clamped
7929 to their respective value range.  Vector and color options have to be specified
7930 by a list of space separated float values. Character escaping has to be done.
7931 A special option name @code{default} is available to use default options for a
7932 filter.
7933
7934 It is required to specify either @code{default} or at least one of the filter options.
7935 All omitted options are used with their default values.
7936 The syntax of the filter string is as follows:
7937 @example
7938 filter=<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...][#<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...]][#...]
7939 @end example
7940
7941 @item output_rect
7942 Specify a rectangle where the output of the filter chain is copied into the
7943 input image. It is given by a list of space separated float values:
7944 @example
7945 output_rect=x\ y\ width\ height
7946 @end example
7947 If not given, the output rectangle equals the dimensions of the input image.
7948 The output rectangle is automatically cropped at the borders of the input
7949 image. Negative values are valid for each component.
7950 @example
7951 output_rect=25\ 25\ 100\ 100
7952 @end example
7953 @end table
7954
7955 Several filters can be chained for successive processing without GPU-HOST
7956 transfers allowing for fast processing of complex filter chains.
7957 Currently, only filters with zero (generators) or exactly one (filters) input
7958 image and one output image are supported. Also, transition filters are not yet
7959 usable as intended.
7960
7961 Some filters generate output images with additional padding depending on the
7962 respective filter kernel. The padding is automatically removed to ensure the
7963 filter output has the same size as the input image.
7964
7965 For image generators, the size of the output image is determined by the
7966 previous output image of the filter chain or the input image of the whole
7967 filterchain, respectively. The generators do not use the pixel information of
7968 this image to generate their output. However, the generated output is
7969 blended onto this image, resulting in partial or complete coverage of the
7970 output image.
7971
7972 The @ref{coreimagesrc} video source can be used for generating input images
7973 which are directly fed into the filter chain. By using it, providing input
7974 images by another video source or an input video is not required.
7975
7976 @subsection Examples
7977
7978 @itemize
7979
7980 @item
7981 List all filters available:
7982 @example
7983 coreimage=list_filters=true
7984 @end example
7985
7986 @item
7987 Use the CIBoxBlur filter with default options to blur an image:
7988 @example
7989 coreimage=filter=CIBoxBlur@@default
7990 @end example
7991
7992 @item
7993 Use a filter chain with CISepiaTone at default values and CIVignetteEffect with
7994 its center at 100x100 and a radius of 50 pixels:
7995 @example
7996 coreimage=filter=CIBoxBlur@@default#CIVignetteEffect@@inputCenter=100\ 100@@inputRadius=50
7997 @end example
7998
7999 @item
8000 Use nullsrc and CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
8001 given as complete and escaped command-line for Apple's standard bash shell:
8002 @example
8003 ffmpeg -f lavfi -i nullsrc=s=100x100,coreimage=filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
8004 @end example
8005 @end itemize
8006
8007 @section cover_rect
8008
8009 Cover a rectangular object
8010
8011 It accepts the following options:
8012
8013 @table @option
8014 @item cover
8015 Filepath of the optional cover image, needs to be in yuv420.
8016
8017 @item mode
8018 Set covering mode.
8019
8020 It accepts the following values:
8021 @table @samp
8022 @item cover
8023 cover it by the supplied image
8024 @item blur
8025 cover it by interpolating the surrounding pixels
8026 @end table
8027
8028 Default value is @var{blur}.
8029 @end table
8030
8031 @subsection Examples
8032
8033 @itemize
8034 @item
8035 Cover a rectangular object by the supplied image of a given video using @command{ffmpeg}:
8036 @example
8037 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
8038 @end example
8039 @end itemize
8040
8041 @section crop
8042
8043 Crop the input video to given dimensions.
8044
8045 It accepts the following parameters:
8046
8047 @table @option
8048 @item w, out_w
8049 The width of the output video. It defaults to @code{iw}.
8050 This expression is evaluated only once during the filter
8051 configuration, or when the @samp{w} or @samp{out_w} command is sent.
8052
8053 @item h, out_h
8054 The height of the output video. It defaults to @code{ih}.
8055 This expression is evaluated only once during the filter
8056 configuration, or when the @samp{h} or @samp{out_h} command is sent.
8057
8058 @item x
8059 The horizontal position, in the input video, of the left edge of the output
8060 video. It defaults to @code{(in_w-out_w)/2}.
8061 This expression is evaluated per-frame.
8062
8063 @item y
8064 The vertical position, in the input video, of the top edge of the output video.
8065 It defaults to @code{(in_h-out_h)/2}.
8066 This expression is evaluated per-frame.
8067
8068 @item keep_aspect
8069 If set to 1 will force the output display aspect ratio
8070 to be the same of the input, by changing the output sample aspect
8071 ratio. It defaults to 0.
8072
8073 @item exact
8074 Enable exact cropping. If enabled, subsampled videos will be cropped at exact
8075 width/height/x/y as specified and will not be rounded to nearest smaller value.
8076 It defaults to 0.
8077 @end table
8078
8079 The @var{out_w}, @var{out_h}, @var{x}, @var{y} parameters are
8080 expressions containing the following constants:
8081
8082 @table @option
8083 @item x
8084 @item y
8085 The computed values for @var{x} and @var{y}. They are evaluated for
8086 each new frame.
8087
8088 @item in_w
8089 @item in_h
8090 The input width and height.
8091
8092 @item iw
8093 @item ih
8094 These are the same as @var{in_w} and @var{in_h}.
8095
8096 @item out_w
8097 @item out_h
8098 The output (cropped) width and height.
8099
8100 @item ow
8101 @item oh
8102 These are the same as @var{out_w} and @var{out_h}.
8103
8104 @item a
8105 same as @var{iw} / @var{ih}
8106
8107 @item sar
8108 input sample aspect ratio
8109
8110 @item dar
8111 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
8112
8113 @item hsub
8114 @item vsub
8115 horizontal and vertical chroma subsample values. For example for the
8116 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
8117
8118 @item n
8119 The number of the input frame, starting from 0.
8120
8121 @item pos
8122 the position in the file of the input frame, NAN if unknown
8123
8124 @item t
8125 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
8126
8127 @end table
8128
8129 The expression for @var{out_w} may depend on the value of @var{out_h},
8130 and the expression for @var{out_h} may depend on @var{out_w}, but they
8131 cannot depend on @var{x} and @var{y}, as @var{x} and @var{y} are
8132 evaluated after @var{out_w} and @var{out_h}.
8133
8134 The @var{x} and @var{y} parameters specify the expressions for the
8135 position of the top-left corner of the output (non-cropped) area. They
8136 are evaluated for each frame. If the evaluated value is not valid, it
8137 is approximated to the nearest valid value.
8138
8139 The expression for @var{x} may depend on @var{y}, and the expression
8140 for @var{y} may depend on @var{x}.
8141
8142 @subsection Examples
8143
8144 @itemize
8145 @item
8146 Crop area with size 100x100 at position (12,34).
8147 @example
8148 crop=100:100:12:34
8149 @end example
8150
8151 Using named options, the example above becomes:
8152 @example
8153 crop=w=100:h=100:x=12:y=34
8154 @end example
8155
8156 @item
8157 Crop the central input area with size 100x100:
8158 @example
8159 crop=100:100
8160 @end example
8161
8162 @item
8163 Crop the central input area with size 2/3 of the input video:
8164 @example
8165 crop=2/3*in_w:2/3*in_h
8166 @end example
8167
8168 @item
8169 Crop the input video central square:
8170 @example
8171 crop=out_w=in_h
8172 crop=in_h
8173 @end example
8174
8175 @item
8176 Delimit the rectangle with the top-left corner placed at position
8177 100:100 and the right-bottom corner corresponding to the right-bottom
8178 corner of the input image.
8179 @example
8180 crop=in_w-100:in_h-100:100:100
8181 @end example
8182
8183 @item
8184 Crop 10 pixels from the left and right borders, and 20 pixels from
8185 the top and bottom borders
8186 @example
8187 crop=in_w-2*10:in_h-2*20
8188 @end example
8189
8190 @item
8191 Keep only the bottom right quarter of the input image:
8192 @example
8193 crop=in_w/2:in_h/2:in_w/2:in_h/2
8194 @end example
8195
8196 @item
8197 Crop height for getting Greek harmony:
8198 @example
8199 crop=in_w:1/PHI*in_w
8200 @end example
8201
8202 @item
8203 Apply trembling effect:
8204 @example
8205 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)
8206 @end example
8207
8208 @item
8209 Apply erratic camera effect depending on timestamp:
8210 @example
8211 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)"
8212 @end example
8213
8214 @item
8215 Set x depending on the value of y:
8216 @example
8217 crop=in_w/2:in_h/2:y:10+10*sin(n/10)
8218 @end example
8219 @end itemize
8220
8221 @subsection Commands
8222
8223 This filter supports the following commands:
8224 @table @option
8225 @item w, out_w
8226 @item h, out_h
8227 @item x
8228 @item y
8229 Set width/height of the output video and the horizontal/vertical position
8230 in the input video.
8231 The command accepts the same syntax of the corresponding option.
8232
8233 If the specified expression is not valid, it is kept at its current
8234 value.
8235 @end table
8236
8237 @section cropdetect
8238
8239 Auto-detect the crop size.
8240
8241 It calculates the necessary cropping parameters and prints the
8242 recommended parameters via the logging system. The detected dimensions
8243 correspond to the non-black area of the input video.
8244
8245 It accepts the following parameters:
8246
8247 @table @option
8248
8249 @item limit
8250 Set higher black value threshold, which can be optionally specified
8251 from nothing (0) to everything (255 for 8-bit based formats). An intensity
8252 value greater to the set value is considered non-black. It defaults to 24.
8253 You can also specify a value between 0.0 and 1.0 which will be scaled depending
8254 on the bitdepth of the pixel format.
8255
8256 @item round
8257 The value which the width/height should be divisible by. It defaults to
8258 16. The offset is automatically adjusted to center the video. Use 2 to
8259 get only even dimensions (needed for 4:2:2 video). 16 is best when
8260 encoding to most video codecs.
8261
8262 @item reset_count, reset
8263 Set the counter that determines after how many frames cropdetect will
8264 reset the previously detected largest video area and start over to
8265 detect the current optimal crop area. Default value is 0.
8266
8267 This can be useful when channel logos distort the video area. 0
8268 indicates 'never reset', and returns the largest area encountered during
8269 playback.
8270 @end table
8271
8272 @anchor{cue}
8273 @section cue
8274
8275 Delay video filtering until a given wallclock timestamp. The filter first
8276 passes on @option{preroll} amount of frames, then it buffers at most
8277 @option{buffer} amount of frames and waits for the cue. After reaching the cue
8278 it forwards the buffered frames and also any subsequent frames coming in its
8279 input.
8280
8281 The filter can be used synchronize the output of multiple ffmpeg processes for
8282 realtime output devices like decklink. By putting the delay in the filtering
8283 chain and pre-buffering frames the process can pass on data to output almost
8284 immediately after the target wallclock timestamp is reached.
8285
8286 Perfect frame accuracy cannot be guaranteed, but the result is good enough for
8287 some use cases.
8288
8289 @table @option
8290
8291 @item cue
8292 The cue timestamp expressed in a UNIX timestamp in microseconds. Default is 0.
8293
8294 @item preroll
8295 The duration of content to pass on as preroll expressed in seconds. Default is 0.
8296
8297 @item buffer
8298 The maximum duration of content to buffer before waiting for the cue expressed
8299 in seconds. Default is 0.
8300
8301 @end table
8302
8303 @anchor{curves}
8304 @section curves
8305
8306 Apply color adjustments using curves.
8307
8308 This filter is similar to the Adobe Photoshop and GIMP curves tools. Each
8309 component (red, green and blue) has its values defined by @var{N} key points
8310 tied from each other using a smooth curve. The x-axis represents the pixel
8311 values from the input frame, and the y-axis the new pixel values to be set for
8312 the output frame.
8313
8314 By default, a component curve is defined by the two points @var{(0;0)} and
8315 @var{(1;1)}. This creates a straight line where each original pixel value is
8316 "adjusted" to its own value, which means no change to the image.
8317
8318 The filter allows you to redefine these two points and add some more. A new
8319 curve (using a natural cubic spline interpolation) will be define to pass
8320 smoothly through all these new coordinates. The new defined points needs to be
8321 strictly increasing over the x-axis, and their @var{x} and @var{y} values must
8322 be in the @var{[0;1]} interval.  If the computed curves happened to go outside
8323 the vector spaces, the values will be clipped accordingly.
8324
8325 The filter accepts the following options:
8326
8327 @table @option
8328 @item preset
8329 Select one of the available color presets. This option can be used in addition
8330 to the @option{r}, @option{g}, @option{b} parameters; in this case, the later
8331 options takes priority on the preset values.
8332 Available presets are:
8333 @table @samp
8334 @item none
8335 @item color_negative
8336 @item cross_process
8337 @item darker
8338 @item increase_contrast
8339 @item lighter
8340 @item linear_contrast
8341 @item medium_contrast
8342 @item negative
8343 @item strong_contrast
8344 @item vintage
8345 @end table
8346 Default is @code{none}.
8347 @item master, m
8348 Set the master key points. These points will define a second pass mapping. It
8349 is sometimes called a "luminance" or "value" mapping. It can be used with
8350 @option{r}, @option{g}, @option{b} or @option{all} since it acts like a
8351 post-processing LUT.
8352 @item red, r
8353 Set the key points for the red component.
8354 @item green, g
8355 Set the key points for the green component.
8356 @item blue, b
8357 Set the key points for the blue component.
8358 @item all
8359 Set the key points for all components (not including master).
8360 Can be used in addition to the other key points component
8361 options. In this case, the unset component(s) will fallback on this
8362 @option{all} setting.
8363 @item psfile
8364 Specify a Photoshop curves file (@code{.acv}) to import the settings from.
8365 @item plot
8366 Save Gnuplot script of the curves in specified file.
8367 @end table
8368
8369 To avoid some filtergraph syntax conflicts, each key points list need to be
8370 defined using the following syntax: @code{x0/y0 x1/y1 x2/y2 ...}.
8371
8372 @subsection Examples
8373
8374 @itemize
8375 @item
8376 Increase slightly the middle level of blue:
8377 @example
8378 curves=blue='0/0 0.5/0.58 1/1'
8379 @end example
8380
8381 @item
8382 Vintage effect:
8383 @example
8384 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'
8385 @end example
8386 Here we obtain the following coordinates for each components:
8387 @table @var
8388 @item red
8389 @code{(0;0.11) (0.42;0.51) (1;0.95)}
8390 @item green
8391 @code{(0;0) (0.50;0.48) (1;1)}
8392 @item blue
8393 @code{(0;0.22) (0.49;0.44) (1;0.80)}
8394 @end table
8395
8396 @item
8397 The previous example can also be achieved with the associated built-in preset:
8398 @example
8399 curves=preset=vintage
8400 @end example
8401
8402 @item
8403 Or simply:
8404 @example
8405 curves=vintage
8406 @end example
8407
8408 @item
8409 Use a Photoshop preset and redefine the points of the green component:
8410 @example
8411 curves=psfile='MyCurvesPresets/purple.acv':green='0/0 0.45/0.53 1/1'
8412 @end example
8413
8414 @item
8415 Check out the curves of the @code{cross_process} profile using @command{ffmpeg}
8416 and @command{gnuplot}:
8417 @example
8418 ffmpeg -f lavfi -i color -vf curves=cross_process:plot=/tmp/curves.plt -frames:v 1 -f null -
8419 gnuplot -p /tmp/curves.plt
8420 @end example
8421 @end itemize
8422
8423 @section datascope
8424
8425 Video data analysis filter.
8426
8427 This filter shows hexadecimal pixel values of part of video.
8428
8429 The filter accepts the following options:
8430
8431 @table @option
8432 @item size, s
8433 Set output video size.
8434
8435 @item x
8436 Set x offset from where to pick pixels.
8437
8438 @item y
8439 Set y offset from where to pick pixels.
8440
8441 @item mode
8442 Set scope mode, can be one of the following:
8443 @table @samp
8444 @item mono
8445 Draw hexadecimal pixel values with white color on black background.
8446
8447 @item color
8448 Draw hexadecimal pixel values with input video pixel color on black
8449 background.
8450
8451 @item color2
8452 Draw hexadecimal pixel values on color background picked from input video,
8453 the text color is picked in such way so its always visible.
8454 @end table
8455
8456 @item axis
8457 Draw rows and columns numbers on left and top of video.
8458
8459 @item opacity
8460 Set background opacity.
8461
8462 @item format
8463 Set display number format. Can be @code{hex}, or @code{dec}. Default is @code{hex}.
8464 @end table
8465
8466 @section dctdnoiz
8467
8468 Denoise frames using 2D DCT (frequency domain filtering).
8469
8470 This filter is not designed for real time.
8471
8472 The filter accepts the following options:
8473
8474 @table @option
8475 @item sigma, s
8476 Set the noise sigma constant.
8477
8478 This @var{sigma} defines a hard threshold of @code{3 * sigma}; every DCT
8479 coefficient (absolute value) below this threshold with be dropped.
8480
8481 If you need a more advanced filtering, see @option{expr}.
8482
8483 Default is @code{0}.
8484
8485 @item overlap
8486 Set number overlapping pixels for each block. Since the filter can be slow, you
8487 may want to reduce this value, at the cost of a less effective filter and the
8488 risk of various artefacts.
8489
8490 If the overlapping value doesn't permit processing the whole input width or
8491 height, a warning will be displayed and according borders won't be denoised.
8492
8493 Default value is @var{blocksize}-1, which is the best possible setting.
8494
8495 @item expr, e
8496 Set the coefficient factor expression.
8497
8498 For each coefficient of a DCT block, this expression will be evaluated as a
8499 multiplier value for the coefficient.
8500
8501 If this is option is set, the @option{sigma} option will be ignored.
8502
8503 The absolute value of the coefficient can be accessed through the @var{c}
8504 variable.
8505
8506 @item n
8507 Set the @var{blocksize} using the number of bits. @code{1<<@var{n}} defines the
8508 @var{blocksize}, which is the width and height of the processed blocks.
8509
8510 The default value is @var{3} (8x8) and can be raised to @var{4} for a
8511 @var{blocksize} of 16x16. Note that changing this setting has huge consequences
8512 on the speed processing. Also, a larger block size does not necessarily means a
8513 better de-noising.
8514 @end table
8515
8516 @subsection Examples
8517
8518 Apply a denoise with a @option{sigma} of @code{4.5}:
8519 @example
8520 dctdnoiz=4.5
8521 @end example
8522
8523 The same operation can be achieved using the expression system:
8524 @example
8525 dctdnoiz=e='gte(c, 4.5*3)'
8526 @end example
8527
8528 Violent denoise using a block size of @code{16x16}:
8529 @example
8530 dctdnoiz=15:n=4
8531 @end example
8532
8533 @section deband
8534
8535 Remove banding artifacts from input video.
8536 It works by replacing banded pixels with average value of referenced pixels.
8537
8538 The filter accepts the following options:
8539
8540 @table @option
8541 @item 1thr
8542 @item 2thr
8543 @item 3thr
8544 @item 4thr
8545 Set banding detection threshold for each plane. Default is 0.02.
8546 Valid range is 0.00003 to 0.5.
8547 If difference between current pixel and reference pixel is less than threshold,
8548 it will be considered as banded.
8549
8550 @item range, r
8551 Banding detection range in pixels. Default is 16. If positive, random number
8552 in range 0 to set value will be used. If negative, exact absolute value
8553 will be used.
8554 The range defines square of four pixels around current pixel.
8555
8556 @item direction, d
8557 Set direction in radians from which four pixel will be compared. If positive,
8558 random direction from 0 to set direction will be picked. If negative, exact of
8559 absolute value will be picked. For example direction 0, -PI or -2*PI radians
8560 will pick only pixels on same row and -PI/2 will pick only pixels on same
8561 column.
8562
8563 @item blur, b
8564 If enabled, current pixel is compared with average value of all four
8565 surrounding pixels. The default is enabled. If disabled current pixel is
8566 compared with all four surrounding pixels. The pixel is considered banded
8567 if only all four differences with surrounding pixels are less than threshold.
8568
8569 @item coupling, c
8570 If enabled, current pixel is changed if and only if all pixel components are banded,
8571 e.g. banding detection threshold is triggered for all color components.
8572 The default is disabled.
8573 @end table
8574
8575 @section deblock
8576
8577 Remove blocking artifacts from input video.
8578
8579 The filter accepts the following options:
8580
8581 @table @option
8582 @item filter
8583 Set filter type, can be @var{weak} or @var{strong}. Default is @var{strong}.
8584 This controls what kind of deblocking is applied.
8585
8586 @item block
8587 Set size of block, allowed range is from 4 to 512. Default is @var{8}.
8588
8589 @item alpha
8590 @item beta
8591 @item gamma
8592 @item delta
8593 Set blocking detection thresholds. Allowed range is 0 to 1.
8594 Defaults are: @var{0.098} for @var{alpha} and @var{0.05} for the rest.
8595 Using higher threshold gives more deblocking strength.
8596 Setting @var{alpha} controls threshold detection at exact edge of block.
8597 Remaining options controls threshold detection near the edge. Each one for
8598 below/above or left/right. Setting any of those to @var{0} disables
8599 deblocking.
8600
8601 @item planes
8602 Set planes to filter. Default is to filter all available planes.
8603 @end table
8604
8605 @subsection Examples
8606
8607 @itemize
8608 @item
8609 Deblock using weak filter and block size of 4 pixels.
8610 @example
8611 deblock=filter=weak:block=4
8612 @end example
8613
8614 @item
8615 Deblock using strong filter, block size of 4 pixels and custom thresholds for
8616 deblocking more edges.
8617 @example
8618 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05
8619 @end example
8620
8621 @item
8622 Similar as above, but filter only first plane.
8623 @example
8624 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=1
8625 @end example
8626
8627 @item
8628 Similar as above, but filter only second and third plane.
8629 @example
8630 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=6
8631 @end example
8632 @end itemize
8633
8634 @anchor{decimate}
8635 @section decimate
8636
8637 Drop duplicated frames at regular intervals.
8638
8639 The filter accepts the following options:
8640
8641 @table @option
8642 @item cycle
8643 Set the number of frames from which one will be dropped. Setting this to
8644 @var{N} means one frame in every batch of @var{N} frames will be dropped.
8645 Default is @code{5}.
8646
8647 @item dupthresh
8648 Set the threshold for duplicate detection. If the difference metric for a frame
8649 is less than or equal to this value, then it is declared as duplicate. Default
8650 is @code{1.1}
8651
8652 @item scthresh
8653 Set scene change threshold. Default is @code{15}.
8654
8655 @item blockx
8656 @item blocky
8657 Set the size of the x and y-axis blocks used during metric calculations.
8658 Larger blocks give better noise suppression, but also give worse detection of
8659 small movements. Must be a power of two. Default is @code{32}.
8660
8661 @item ppsrc
8662 Mark main input as a pre-processed input and activate clean source input
8663 stream. This allows the input to be pre-processed with various filters to help
8664 the metrics calculation while keeping the frame selection lossless. When set to
8665 @code{1}, the first stream is for the pre-processed input, and the second
8666 stream is the clean source from where the kept frames are chosen. Default is
8667 @code{0}.
8668
8669 @item chroma
8670 Set whether or not chroma is considered in the metric calculations. Default is
8671 @code{1}.
8672 @end table
8673
8674 @section deconvolve
8675
8676 Apply 2D deconvolution of video stream in frequency domain using second stream
8677 as impulse.
8678
8679 The filter accepts the following options:
8680
8681 @table @option
8682 @item planes
8683 Set which planes to process.
8684
8685 @item impulse
8686 Set which impulse video frames will be processed, can be @var{first}
8687 or @var{all}. Default is @var{all}.
8688
8689 @item noise
8690 Set noise when doing divisions. Default is @var{0.0000001}. Useful when width
8691 and height are not same and not power of 2 or if stream prior to convolving
8692 had noise.
8693 @end table
8694
8695 The @code{deconvolve} filter also supports the @ref{framesync} options.
8696
8697 @section dedot
8698
8699 Reduce cross-luminance (dot-crawl) and cross-color (rainbows) from video.
8700
8701 It accepts the following options:
8702
8703 @table @option
8704 @item m
8705 Set mode of operation. Can be combination of @var{dotcrawl} for cross-luminance reduction and/or
8706 @var{rainbows} for cross-color reduction.
8707
8708 @item lt
8709 Set spatial luma threshold. Lower values increases reduction of cross-luminance.
8710
8711 @item tl
8712 Set tolerance for temporal luma. Higher values increases reduction of cross-luminance.
8713
8714 @item tc
8715 Set tolerance for chroma temporal variation. Higher values increases reduction of cross-color.
8716
8717 @item ct
8718 Set temporal chroma threshold. Lower values increases reduction of cross-color.
8719 @end table
8720
8721 @section deflate
8722
8723 Apply deflate effect to the video.
8724
8725 This filter replaces the pixel by the local(3x3) average by taking into account
8726 only values lower than the pixel.
8727
8728 It accepts the following options:
8729
8730 @table @option
8731 @item threshold0
8732 @item threshold1
8733 @item threshold2
8734 @item threshold3
8735 Limit the maximum change for each plane, default is 65535.
8736 If 0, plane will remain unchanged.
8737 @end table
8738
8739 @subsection Commands
8740
8741 This filter supports the all above options as @ref{commands}.
8742
8743 @section deflicker
8744
8745 Remove temporal frame luminance variations.
8746
8747 It accepts the following options:
8748
8749 @table @option
8750 @item size, s
8751 Set moving-average filter size in frames. Default is 5. Allowed range is 2 - 129.
8752
8753 @item mode, m
8754 Set averaging mode to smooth temporal luminance variations.
8755
8756 Available values are:
8757 @table @samp
8758 @item am
8759 Arithmetic mean
8760
8761 @item gm
8762 Geometric mean
8763
8764 @item hm
8765 Harmonic mean
8766
8767 @item qm
8768 Quadratic mean
8769
8770 @item cm
8771 Cubic mean
8772
8773 @item pm
8774 Power mean
8775
8776 @item median
8777 Median
8778 @end table
8779
8780 @item bypass
8781 Do not actually modify frame. Useful when one only wants metadata.
8782 @end table
8783
8784 @section dejudder
8785
8786 Remove judder produced by partially interlaced telecined content.
8787
8788 Judder can be introduced, for instance, by @ref{pullup} filter. If the original
8789 source was partially telecined content then the output of @code{pullup,dejudder}
8790 will have a variable frame rate. May change the recorded frame rate of the
8791 container. Aside from that change, this filter will not affect constant frame
8792 rate video.
8793
8794 The option available in this filter is:
8795 @table @option
8796
8797 @item cycle
8798 Specify the length of the window over which the judder repeats.
8799
8800 Accepts any integer greater than 1. Useful values are:
8801 @table @samp
8802
8803 @item 4
8804 If the original was telecined from 24 to 30 fps (Film to NTSC).
8805
8806 @item 5
8807 If the original was telecined from 25 to 30 fps (PAL to NTSC).
8808
8809 @item 20
8810 If a mixture of the two.
8811 @end table
8812
8813 The default is @samp{4}.
8814 @end table
8815
8816 @section delogo
8817
8818 Suppress a TV station logo by a simple interpolation of the surrounding
8819 pixels. Just set a rectangle covering the logo and watch it disappear
8820 (and sometimes something even uglier appear - your mileage may vary).
8821
8822 It accepts the following parameters:
8823 @table @option
8824
8825 @item x
8826 @item y
8827 Specify the top left corner coordinates of the logo. They must be
8828 specified.
8829
8830 @item w
8831 @item h
8832 Specify the width and height of the logo to clear. They must be
8833 specified.
8834
8835 @item band, t
8836 Specify the thickness of the fuzzy edge of the rectangle (added to
8837 @var{w} and @var{h}). The default value is 1. This option is
8838 deprecated, setting higher values should no longer be necessary and
8839 is not recommended.
8840
8841 @item show
8842 When set to 1, a green rectangle is drawn on the screen to simplify
8843 finding the right @var{x}, @var{y}, @var{w}, and @var{h} parameters.
8844 The default value is 0.
8845
8846 The rectangle is drawn on the outermost pixels which will be (partly)
8847 replaced with interpolated values. The values of the next pixels
8848 immediately outside this rectangle in each direction will be used to
8849 compute the interpolated pixel values inside the rectangle.
8850
8851 @end table
8852
8853 @subsection Examples
8854
8855 @itemize
8856 @item
8857 Set a rectangle covering the area with top left corner coordinates 0,0
8858 and size 100x77, and a band of size 10:
8859 @example
8860 delogo=x=0:y=0:w=100:h=77:band=10
8861 @end example
8862
8863 @end itemize
8864
8865 @section derain
8866
8867 Remove the rain in the input image/video by applying the derain methods based on
8868 convolutional neural networks. Supported models:
8869
8870 @itemize
8871 @item
8872 Recurrent Squeeze-and-Excitation Context Aggregation Net (RESCAN).
8873 See @url{http://openaccess.thecvf.com/content_ECCV_2018/papers/Xia_Li_Recurrent_Squeeze-and-Excitation_Context_ECCV_2018_paper.pdf}.
8874 @end itemize
8875
8876 Training as well as model generation scripts are provided in
8877 the repository at @url{https://github.com/XueweiMeng/derain_filter.git}.
8878
8879 Native model files (.model) can be generated from TensorFlow model
8880 files (.pb) by using tools/python/convert.py
8881
8882 The filter accepts the following options:
8883
8884 @table @option
8885 @item filter_type
8886 Specify which filter to use. This option accepts the following values:
8887
8888 @table @samp
8889 @item derain
8890 Derain filter. To conduct derain filter, you need to use a derain model.
8891
8892 @item dehaze
8893 Dehaze filter. To conduct dehaze filter, you need to use a dehaze model.
8894 @end table
8895 Default value is @samp{derain}.
8896
8897 @item dnn_backend
8898 Specify which DNN backend to use for model loading and execution. This option accepts
8899 the following values:
8900
8901 @table @samp
8902 @item native
8903 Native implementation of DNN loading and execution.
8904
8905 @item tensorflow
8906 TensorFlow backend. To enable this backend you
8907 need to install the TensorFlow for C library (see
8908 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
8909 @code{--enable-libtensorflow}
8910 @end table
8911 Default value is @samp{native}.
8912
8913 @item model
8914 Set path to model file specifying network architecture and its parameters.
8915 Note that different backends use different file formats. TensorFlow and native
8916 backend can load files for only its format.
8917 @end table
8918
8919 @section deshake
8920
8921 Attempt to fix small changes in horizontal and/or vertical shift. This
8922 filter helps remove camera shake from hand-holding a camera, bumping a
8923 tripod, moving on a vehicle, etc.
8924
8925 The filter accepts the following options:
8926
8927 @table @option
8928
8929 @item x
8930 @item y
8931 @item w
8932 @item h
8933 Specify a rectangular area where to limit the search for motion
8934 vectors.
8935 If desired the search for motion vectors can be limited to a
8936 rectangular area of the frame defined by its top left corner, width
8937 and height. These parameters have the same meaning as the drawbox
8938 filter which can be used to visualise the position of the bounding
8939 box.
8940
8941 This is useful when simultaneous movement of subjects within the frame
8942 might be confused for camera motion by the motion vector search.
8943
8944 If any or all of @var{x}, @var{y}, @var{w} and @var{h} are set to -1
8945 then the full frame is used. This allows later options to be set
8946 without specifying the bounding box for the motion vector search.
8947
8948 Default - search the whole frame.
8949
8950 @item rx
8951 @item ry
8952 Specify the maximum extent of movement in x and y directions in the
8953 range 0-64 pixels. Default 16.
8954
8955 @item edge
8956 Specify how to generate pixels to fill blanks at the edge of the
8957 frame. Available values are:
8958 @table @samp
8959 @item blank, 0
8960 Fill zeroes at blank locations
8961 @item original, 1
8962 Original image at blank locations
8963 @item clamp, 2
8964 Extruded edge value at blank locations
8965 @item mirror, 3
8966 Mirrored edge at blank locations
8967 @end table
8968 Default value is @samp{mirror}.
8969
8970 @item blocksize
8971 Specify the blocksize to use for motion search. Range 4-128 pixels,
8972 default 8.
8973
8974 @item contrast
8975 Specify the contrast threshold for blocks. Only blocks with more than
8976 the specified contrast (difference between darkest and lightest
8977 pixels) will be considered. Range 1-255, default 125.
8978
8979 @item search
8980 Specify the search strategy. Available values are:
8981 @table @samp
8982 @item exhaustive, 0
8983 Set exhaustive search
8984 @item less, 1
8985 Set less exhaustive search.
8986 @end table
8987 Default value is @samp{exhaustive}.
8988
8989 @item filename
8990 If set then a detailed log of the motion search is written to the
8991 specified file.
8992
8993 @end table
8994
8995 @section despill
8996
8997 Remove unwanted contamination of foreground colors, caused by reflected color of
8998 greenscreen or bluescreen.
8999
9000 This filter accepts the following options:
9001
9002 @table @option
9003 @item type
9004 Set what type of despill to use.
9005
9006 @item mix
9007 Set how spillmap will be generated.
9008
9009 @item expand
9010 Set how much to get rid of still remaining spill.
9011
9012 @item red
9013 Controls amount of red in spill area.
9014
9015 @item green
9016 Controls amount of green in spill area.
9017 Should be -1 for greenscreen.
9018
9019 @item blue
9020 Controls amount of blue in spill area.
9021 Should be -1 for bluescreen.
9022
9023 @item brightness
9024 Controls brightness of spill area, preserving colors.
9025
9026 @item alpha
9027 Modify alpha from generated spillmap.
9028 @end table
9029
9030 @section detelecine
9031
9032 Apply an exact inverse of the telecine operation. It requires a predefined
9033 pattern specified using the pattern option which must be the same as that passed
9034 to the telecine filter.
9035
9036 This filter accepts the following options:
9037
9038 @table @option
9039 @item first_field
9040 @table @samp
9041 @item top, t
9042 top field first
9043 @item bottom, b
9044 bottom field first
9045 The default value is @code{top}.
9046 @end table
9047
9048 @item pattern
9049 A string of numbers representing the pulldown pattern you wish to apply.
9050 The default value is @code{23}.
9051
9052 @item start_frame
9053 A number representing position of the first frame with respect to the telecine
9054 pattern. This is to be used if the stream is cut. The default value is @code{0}.
9055 @end table
9056
9057 @section dilation
9058
9059 Apply dilation effect to the video.
9060
9061 This filter replaces the pixel by the local(3x3) maximum.
9062
9063 It accepts the following options:
9064
9065 @table @option
9066 @item threshold0
9067 @item threshold1
9068 @item threshold2
9069 @item threshold3
9070 Limit the maximum change for each plane, default is 65535.
9071 If 0, plane will remain unchanged.
9072
9073 @item coordinates
9074 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
9075 pixels are used.
9076
9077 Flags to local 3x3 coordinates maps like this:
9078
9079     1 2 3
9080     4   5
9081     6 7 8
9082 @end table
9083
9084 @subsection Commands
9085
9086 This filter supports the all above options as @ref{commands}.
9087
9088 @section displace
9089
9090 Displace pixels as indicated by second and third input stream.
9091
9092 It takes three input streams and outputs one stream, the first input is the
9093 source, and second and third input are displacement maps.
9094
9095 The second input specifies how much to displace pixels along the
9096 x-axis, while the third input specifies how much to displace pixels
9097 along the y-axis.
9098 If one of displacement map streams terminates, last frame from that
9099 displacement map will be used.
9100
9101 Note that once generated, displacements maps can be reused over and over again.
9102
9103 A description of the accepted options follows.
9104
9105 @table @option
9106 @item edge
9107 Set displace behavior for pixels that are out of range.
9108
9109 Available values are:
9110 @table @samp
9111 @item blank
9112 Missing pixels are replaced by black pixels.
9113
9114 @item smear
9115 Adjacent pixels will spread out to replace missing pixels.
9116
9117 @item wrap
9118 Out of range pixels are wrapped so they point to pixels of other side.
9119
9120 @item mirror
9121 Out of range pixels will be replaced with mirrored pixels.
9122 @end table
9123 Default is @samp{smear}.
9124
9125 @end table
9126
9127 @subsection Examples
9128
9129 @itemize
9130 @item
9131 Add ripple effect to rgb input of video size hd720:
9132 @example
9133 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
9134 @end example
9135
9136 @item
9137 Add wave effect to rgb input of video size hd720:
9138 @example
9139 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
9140 @end example
9141 @end itemize
9142
9143 @section dnn_processing
9144
9145 Do image processing with deep neural networks. It works together with another filter
9146 which converts the pixel format of the Frame to what the dnn network requires.
9147
9148 The filter accepts the following options:
9149
9150 @table @option
9151 @item dnn_backend
9152 Specify which DNN backend to use for model loading and execution. This option accepts
9153 the following values:
9154
9155 @table @samp
9156 @item native
9157 Native implementation of DNN loading and execution.
9158
9159 @item tensorflow
9160 TensorFlow backend. To enable this backend you
9161 need to install the TensorFlow for C library (see
9162 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
9163 @code{--enable-libtensorflow}
9164 @end table
9165
9166 Default value is @samp{native}.
9167
9168 @item model
9169 Set path to model file specifying network architecture and its parameters.
9170 Note that different backends use different file formats. TensorFlow and native
9171 backend can load files for only its format.
9172
9173 Native model file (.model) can be generated from TensorFlow model file (.pb) by using tools/python/convert.py
9174
9175 @item input
9176 Set the input name of the dnn network.
9177
9178 @item output
9179 Set the output name of the dnn network.
9180
9181 @end table
9182
9183 @itemize
9184 @item
9185 Halve the red channle of the frame with format rgb24:
9186 @example
9187 ffmpeg -i input.jpg -vf format=rgb24,dnn_processing=model=halve_first_channel.model:input=dnn_in:output=dnn_out:dnn_backend=native out.native.png
9188 @end example
9189
9190 @item
9191 Halve the pixel value of the frame with format gray32f:
9192 @example
9193 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
9194 @end example
9195
9196 @end itemize
9197
9198 @section drawbox
9199
9200 Draw a colored box on the input image.
9201
9202 It accepts the following parameters:
9203
9204 @table @option
9205 @item x
9206 @item y
9207 The expressions which specify the top left corner coordinates of the box. It defaults to 0.
9208
9209 @item width, w
9210 @item height, h
9211 The expressions which specify the width and height of the box; if 0 they are interpreted as
9212 the input width and height. It defaults to 0.
9213
9214 @item color, c
9215 Specify the color of the box to write. For the general syntax of this option,
9216 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
9217 value @code{invert} is used, the box edge color is the same as the
9218 video with inverted luma.
9219
9220 @item thickness, t
9221 The expression which sets the thickness of the box edge.
9222 A value of @code{fill} will create a filled box. Default value is @code{3}.
9223
9224 See below for the list of accepted constants.
9225
9226 @item replace
9227 Applicable if the input has alpha. With value @code{1}, the pixels of the painted box
9228 will overwrite the video's color and alpha pixels.
9229 Default is @code{0}, which composites the box onto the input, leaving the video's alpha intact.
9230 @end table
9231
9232 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
9233 following constants:
9234
9235 @table @option
9236 @item dar
9237 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
9238
9239 @item hsub
9240 @item vsub
9241 horizontal and vertical chroma subsample values. For example for the
9242 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
9243
9244 @item in_h, ih
9245 @item in_w, iw
9246 The input width and height.
9247
9248 @item sar
9249 The input sample aspect ratio.
9250
9251 @item x
9252 @item y
9253 The x and y offset coordinates where the box is drawn.
9254
9255 @item w
9256 @item h
9257 The width and height of the drawn box.
9258
9259 @item t
9260 The thickness of the drawn box.
9261
9262 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
9263 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
9264
9265 @end table
9266
9267 @subsection Examples
9268
9269 @itemize
9270 @item
9271 Draw a black box around the edge of the input image:
9272 @example
9273 drawbox
9274 @end example
9275
9276 @item
9277 Draw a box with color red and an opacity of 50%:
9278 @example
9279 drawbox=10:20:200:60:red@@0.5
9280 @end example
9281
9282 The previous example can be specified as:
9283 @example
9284 drawbox=x=10:y=20:w=200:h=60:color=red@@0.5
9285 @end example
9286
9287 @item
9288 Fill the box with pink color:
9289 @example
9290 drawbox=x=10:y=10:w=100:h=100:color=pink@@0.5:t=fill
9291 @end example
9292
9293 @item
9294 Draw a 2-pixel red 2.40:1 mask:
9295 @example
9296 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
9297 @end example
9298 @end itemize
9299
9300 @subsection Commands
9301 This filter supports same commands as options.
9302 The command accepts the same syntax of the corresponding option.
9303
9304 If the specified expression is not valid, it is kept at its current
9305 value.
9306
9307 @anchor{drawgraph}
9308 @section drawgraph
9309 Draw a graph using input video metadata.
9310
9311 It accepts the following parameters:
9312
9313 @table @option
9314 @item m1
9315 Set 1st frame metadata key from which metadata values will be used to draw a graph.
9316
9317 @item fg1
9318 Set 1st foreground color expression.
9319
9320 @item m2
9321 Set 2nd frame metadata key from which metadata values will be used to draw a graph.
9322
9323 @item fg2
9324 Set 2nd foreground color expression.
9325
9326 @item m3
9327 Set 3rd frame metadata key from which metadata values will be used to draw a graph.
9328
9329 @item fg3
9330 Set 3rd foreground color expression.
9331
9332 @item m4
9333 Set 4th frame metadata key from which metadata values will be used to draw a graph.
9334
9335 @item fg4
9336 Set 4th foreground color expression.
9337
9338 @item min
9339 Set minimal value of metadata value.
9340
9341 @item max
9342 Set maximal value of metadata value.
9343
9344 @item bg
9345 Set graph background color. Default is white.
9346
9347 @item mode
9348 Set graph mode.
9349
9350 Available values for mode is:
9351 @table @samp
9352 @item bar
9353 @item dot
9354 @item line
9355 @end table
9356
9357 Default is @code{line}.
9358
9359 @item slide
9360 Set slide mode.
9361
9362 Available values for slide is:
9363 @table @samp
9364 @item frame
9365 Draw new frame when right border is reached.
9366
9367 @item replace
9368 Replace old columns with new ones.
9369
9370 @item scroll
9371 Scroll from right to left.
9372
9373 @item rscroll
9374 Scroll from left to right.
9375
9376 @item picture
9377 Draw single picture.
9378 @end table
9379
9380 Default is @code{frame}.
9381
9382 @item size
9383 Set size of graph video. For the syntax of this option, check the
9384 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
9385 The default value is @code{900x256}.
9386
9387 @item rate, r
9388 Set the output frame rate. Default value is @code{25}.
9389
9390 The foreground color expressions can use the following variables:
9391 @table @option
9392 @item MIN
9393 Minimal value of metadata value.
9394
9395 @item MAX
9396 Maximal value of metadata value.
9397
9398 @item VAL
9399 Current metadata key value.
9400 @end table
9401
9402 The color is defined as 0xAABBGGRR.
9403 @end table
9404
9405 Example using metadata from @ref{signalstats} filter:
9406 @example
9407 signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255
9408 @end example
9409
9410 Example using metadata from @ref{ebur128} filter:
9411 @example
9412 ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-120:max=5
9413 @end example
9414
9415 @section drawgrid
9416
9417 Draw a grid on the input image.
9418
9419 It accepts the following parameters:
9420
9421 @table @option
9422 @item x
9423 @item y
9424 The expressions which specify the coordinates of some point of grid intersection (meant to configure offset). Both default to 0.
9425
9426 @item width, w
9427 @item height, h
9428 The expressions which specify the width and height of the grid cell, if 0 they are interpreted as the
9429 input width and height, respectively, minus @code{thickness}, so image gets
9430 framed. Default to 0.
9431
9432 @item color, c
9433 Specify the color of the grid. For the general syntax of this option,
9434 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
9435 value @code{invert} is used, the grid color is the same as the
9436 video with inverted luma.
9437
9438 @item thickness, t
9439 The expression which sets the thickness of the grid line. Default value is @code{1}.
9440
9441 See below for the list of accepted constants.
9442
9443 @item replace
9444 Applicable if the input has alpha. With @code{1} the pixels of the painted grid
9445 will overwrite the video's color and alpha pixels.
9446 Default is @code{0}, which composites the grid onto the input, leaving the video's alpha intact.
9447 @end table
9448
9449 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
9450 following constants:
9451
9452 @table @option
9453 @item dar
9454 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
9455
9456 @item hsub
9457 @item vsub
9458 horizontal and vertical chroma subsample values. For example for the
9459 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
9460
9461 @item in_h, ih
9462 @item in_w, iw
9463 The input grid cell width and height.
9464
9465 @item sar
9466 The input sample aspect ratio.
9467
9468 @item x
9469 @item y
9470 The x and y coordinates of some point of grid intersection (meant to configure offset).
9471
9472 @item w
9473 @item h
9474 The width and height of the drawn cell.
9475
9476 @item t
9477 The thickness of the drawn cell.
9478
9479 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
9480 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
9481
9482 @end table
9483
9484 @subsection Examples
9485
9486 @itemize
9487 @item
9488 Draw a grid with cell 100x100 pixels, thickness 2 pixels, with color red and an opacity of 50%:
9489 @example
9490 drawgrid=width=100:height=100:thickness=2:color=red@@0.5
9491 @end example
9492
9493 @item
9494 Draw a white 3x3 grid with an opacity of 50%:
9495 @example
9496 drawgrid=w=iw/3:h=ih/3:t=2:c=white@@0.5
9497 @end example
9498 @end itemize
9499
9500 @subsection Commands
9501 This filter supports same commands as options.
9502 The command accepts the same syntax of the corresponding option.
9503
9504 If the specified expression is not valid, it is kept at its current
9505 value.
9506
9507 @anchor{drawtext}
9508 @section drawtext
9509
9510 Draw a text string or text from a specified file on top of a video, using the
9511 libfreetype library.
9512
9513 To enable compilation of this filter, you need to configure FFmpeg with
9514 @code{--enable-libfreetype}.
9515 To enable default font fallback and the @var{font} option you need to
9516 configure FFmpeg with @code{--enable-libfontconfig}.
9517 To enable the @var{text_shaping} option, you need to configure FFmpeg with
9518 @code{--enable-libfribidi}.
9519
9520 @subsection Syntax
9521
9522 It accepts the following parameters:
9523
9524 @table @option
9525
9526 @item box
9527 Used to draw a box around text using the background color.
9528 The value must be either 1 (enable) or 0 (disable).
9529 The default value of @var{box} is 0.
9530
9531 @item boxborderw
9532 Set the width of the border to be drawn around the box using @var{boxcolor}.
9533 The default value of @var{boxborderw} is 0.
9534
9535 @item boxcolor
9536 The color to be used for drawing box around text. For the syntax of this
9537 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
9538
9539 The default value of @var{boxcolor} is "white".
9540
9541 @item line_spacing
9542 Set the line spacing in pixels of the border to be drawn around the box using @var{box}.
9543 The default value of @var{line_spacing} is 0.
9544
9545 @item borderw
9546 Set the width of the border to be drawn around the text using @var{bordercolor}.
9547 The default value of @var{borderw} is 0.
9548
9549 @item bordercolor
9550 Set the color to be used for drawing border around text. For the syntax of this
9551 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
9552
9553 The default value of @var{bordercolor} is "black".
9554
9555 @item expansion
9556 Select how the @var{text} is expanded. Can be either @code{none},
9557 @code{strftime} (deprecated) or
9558 @code{normal} (default). See the @ref{drawtext_expansion, Text expansion} section
9559 below for details.
9560
9561 @item basetime
9562 Set a start time for the count. Value is in microseconds. Only applied
9563 in the deprecated strftime expansion mode. To emulate in normal expansion
9564 mode use the @code{pts} function, supplying the start time (in seconds)
9565 as the second argument.
9566
9567 @item fix_bounds
9568 If true, check and fix text coords to avoid clipping.
9569
9570 @item fontcolor
9571 The color to be used for drawing fonts. For the syntax of this option, check
9572 the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
9573
9574 The default value of @var{fontcolor} is "black".
9575
9576 @item fontcolor_expr
9577 String which is expanded the same way as @var{text} to obtain dynamic
9578 @var{fontcolor} value. By default this option has empty value and is not
9579 processed. When this option is set, it overrides @var{fontcolor} option.
9580
9581 @item font
9582 The font family to be used for drawing text. By default Sans.
9583
9584 @item fontfile
9585 The font file to be used for drawing text. The path must be included.
9586 This parameter is mandatory if the fontconfig support is disabled.
9587
9588 @item alpha
9589 Draw the text applying alpha blending. The value can
9590 be a number between 0.0 and 1.0.
9591 The expression accepts the same variables @var{x, y} as well.
9592 The default value is 1.
9593 Please see @var{fontcolor_expr}.
9594
9595 @item fontsize
9596 The font size to be used for drawing text.
9597 The default value of @var{fontsize} is 16.
9598
9599 @item text_shaping
9600 If set to 1, attempt to shape the text (for example, reverse the order of
9601 right-to-left text and join Arabic characters) before drawing it.
9602 Otherwise, just draw the text exactly as given.
9603 By default 1 (if supported).
9604
9605 @item ft_load_flags
9606 The flags to be used for loading the fonts.
9607
9608 The flags map the corresponding flags supported by libfreetype, and are
9609 a combination of the following values:
9610 @table @var
9611 @item default
9612 @item no_scale
9613 @item no_hinting
9614 @item render
9615 @item no_bitmap
9616 @item vertical_layout
9617 @item force_autohint
9618 @item crop_bitmap
9619 @item pedantic
9620 @item ignore_global_advance_width
9621 @item no_recurse
9622 @item ignore_transform
9623 @item monochrome
9624 @item linear_design
9625 @item no_autohint
9626 @end table
9627
9628 Default value is "default".
9629
9630 For more information consult the documentation for the FT_LOAD_*
9631 libfreetype flags.
9632
9633 @item shadowcolor
9634 The color to be used for drawing a shadow behind the drawn text. For the
9635 syntax of this option, check the @ref{color syntax,,"Color" section in the
9636 ffmpeg-utils manual,ffmpeg-utils}.
9637
9638 The default value of @var{shadowcolor} is "black".
9639
9640 @item shadowx
9641 @item shadowy
9642 The x and y offsets for the text shadow position with respect to the
9643 position of the text. They can be either positive or negative
9644 values. The default value for both is "0".
9645
9646 @item start_number
9647 The starting frame number for the n/frame_num variable. The default value
9648 is "0".
9649
9650 @item tabsize
9651 The size in number of spaces to use for rendering the tab.
9652 Default value is 4.
9653
9654 @item timecode
9655 Set the initial timecode representation in "hh:mm:ss[:;.]ff"
9656 format. It can be used with or without text parameter. @var{timecode_rate}
9657 option must be specified.
9658
9659 @item timecode_rate, rate, r
9660 Set the timecode frame rate (timecode only). Value will be rounded to nearest
9661 integer. Minimum value is "1".
9662 Drop-frame timecode is supported for frame rates 30 & 60.
9663
9664 @item tc24hmax
9665 If set to 1, the output of the timecode option will wrap around at 24 hours.
9666 Default is 0 (disabled).
9667
9668 @item text
9669 The text string to be drawn. The text must be a sequence of UTF-8
9670 encoded characters.
9671 This parameter is mandatory if no file is specified with the parameter
9672 @var{textfile}.
9673
9674 @item textfile
9675 A text file containing text to be drawn. The text must be a sequence
9676 of UTF-8 encoded characters.
9677
9678 This parameter is mandatory if no text string is specified with the
9679 parameter @var{text}.
9680
9681 If both @var{text} and @var{textfile} are specified, an error is thrown.
9682
9683 @item reload
9684 If set to 1, the @var{textfile} will be reloaded before each frame.
9685 Be sure to update it atomically, or it may be read partially, or even fail.
9686
9687 @item x
9688 @item y
9689 The expressions which specify the offsets where text will be drawn
9690 within the video frame. They are relative to the top/left border of the
9691 output image.
9692
9693 The default value of @var{x} and @var{y} is "0".
9694
9695 See below for the list of accepted constants and functions.
9696 @end table
9697
9698 The parameters for @var{x} and @var{y} are expressions containing the
9699 following constants and functions:
9700
9701 @table @option
9702 @item dar
9703 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
9704
9705 @item hsub
9706 @item vsub
9707 horizontal and vertical chroma subsample values. For example for the
9708 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
9709
9710 @item line_h, lh
9711 the height of each text line
9712
9713 @item main_h, h, H
9714 the input height
9715
9716 @item main_w, w, W
9717 the input width
9718
9719 @item max_glyph_a, ascent
9720 the maximum distance from the baseline to the highest/upper grid
9721 coordinate used to place a glyph outline point, for all the rendered
9722 glyphs.
9723 It is a positive value, due to the grid's orientation with the Y axis
9724 upwards.
9725
9726 @item max_glyph_d, descent
9727 the maximum distance from the baseline to the lowest grid coordinate
9728 used to place a glyph outline point, for all the rendered glyphs.
9729 This is a negative value, due to the grid's orientation, with the Y axis
9730 upwards.
9731
9732 @item max_glyph_h
9733 maximum glyph height, that is the maximum height for all the glyphs
9734 contained in the rendered text, it is equivalent to @var{ascent} -
9735 @var{descent}.
9736
9737 @item max_glyph_w
9738 maximum glyph width, that is the maximum width for all the glyphs
9739 contained in the rendered text
9740
9741 @item n
9742 the number of input frame, starting from 0
9743
9744 @item rand(min, max)
9745 return a random number included between @var{min} and @var{max}
9746
9747 @item sar
9748 The input sample aspect ratio.
9749
9750 @item t
9751 timestamp expressed in seconds, NAN if the input timestamp is unknown
9752
9753 @item text_h, th
9754 the height of the rendered text
9755
9756 @item text_w, tw
9757 the width of the rendered text
9758
9759 @item x
9760 @item y
9761 the x and y offset coordinates where the text is drawn.
9762
9763 These parameters allow the @var{x} and @var{y} expressions to refer
9764 to each other, so you can for example specify @code{y=x/dar}.
9765
9766 @item pict_type
9767 A one character description of the current frame's picture type.
9768
9769 @item pkt_pos
9770 The current packet's position in the input file or stream
9771 (in bytes, from the start of the input). A value of -1 indicates
9772 this info is not available.
9773
9774 @item pkt_duration
9775 The current packet's duration, in seconds.
9776
9777 @item pkt_size
9778 The current packet's size (in bytes).
9779 @end table
9780
9781 @anchor{drawtext_expansion}
9782 @subsection Text expansion
9783
9784 If @option{expansion} is set to @code{strftime},
9785 the filter recognizes strftime() sequences in the provided text and
9786 expands them accordingly. Check the documentation of strftime(). This
9787 feature is deprecated.
9788
9789 If @option{expansion} is set to @code{none}, the text is printed verbatim.
9790
9791 If @option{expansion} is set to @code{normal} (which is the default),
9792 the following expansion mechanism is used.
9793
9794 The backslash character @samp{\}, followed by any character, always expands to
9795 the second character.
9796
9797 Sequences of the form @code{%@{...@}} are expanded. The text between the
9798 braces is a function name, possibly followed by arguments separated by ':'.
9799 If the arguments contain special characters or delimiters (':' or '@}'),
9800 they should be escaped.
9801
9802 Note that they probably must also be escaped as the value for the
9803 @option{text} option in the filter argument string and as the filter
9804 argument in the filtergraph description, and possibly also for the shell,
9805 that makes up to four levels of escaping; using a text file avoids these
9806 problems.
9807
9808 The following functions are available:
9809
9810 @table @command
9811
9812 @item expr, e
9813 The expression evaluation result.
9814
9815 It must take one argument specifying the expression to be evaluated,
9816 which accepts the same constants and functions as the @var{x} and
9817 @var{y} values. Note that not all constants should be used, for
9818 example the text size is not known when evaluating the expression, so
9819 the constants @var{text_w} and @var{text_h} will have an undefined
9820 value.
9821
9822 @item expr_int_format, eif
9823 Evaluate the expression's value and output as formatted integer.
9824
9825 The first argument is the expression to be evaluated, just as for the @var{expr} function.
9826 The second argument specifies the output format. Allowed values are @samp{x},
9827 @samp{X}, @samp{d} and @samp{u}. They are treated exactly as in the
9828 @code{printf} function.
9829 The third parameter is optional and sets the number of positions taken by the output.
9830 It can be used to add padding with zeros from the left.
9831
9832 @item gmtime
9833 The time at which the filter is running, expressed in UTC.
9834 It can accept an argument: a strftime() format string.
9835
9836 @item localtime
9837 The time at which the filter is running, expressed in the local time zone.
9838 It can accept an argument: a strftime() format string.
9839
9840 @item metadata
9841 Frame metadata. Takes one or two arguments.
9842
9843 The first argument is mandatory and specifies the metadata key.
9844
9845 The second argument is optional and specifies a default value, used when the
9846 metadata key is not found or empty.
9847
9848 Available metadata can be identified by inspecting entries
9849 starting with TAG included within each frame section
9850 printed by running @code{ffprobe -show_frames}.
9851
9852 String metadata generated in filters leading to
9853 the drawtext filter are also available.
9854
9855 @item n, frame_num
9856 The frame number, starting from 0.
9857
9858 @item pict_type
9859 A one character description of the current picture type.
9860
9861 @item pts
9862 The timestamp of the current frame.
9863 It can take up to three arguments.
9864
9865 The first argument is the format of the timestamp; it defaults to @code{flt}
9866 for seconds as a decimal number with microsecond accuracy; @code{hms} stands
9867 for a formatted @var{[-]HH:MM:SS.mmm} timestamp with millisecond accuracy.
9868 @code{gmtime} stands for the timestamp of the frame formatted as UTC time;
9869 @code{localtime} stands for the timestamp of the frame formatted as
9870 local time zone time.
9871
9872 The second argument is an offset added to the timestamp.
9873
9874 If the format is set to @code{hms}, a third argument @code{24HH} may be
9875 supplied to present the hour part of the formatted timestamp in 24h format
9876 (00-23).
9877
9878 If the format is set to @code{localtime} or @code{gmtime},
9879 a third argument may be supplied: a strftime() format string.
9880 By default, @var{YYYY-MM-DD HH:MM:SS} format will be used.
9881 @end table
9882
9883 @subsection Commands
9884
9885 This filter supports altering parameters via commands:
9886 @table @option
9887 @item reinit
9888 Alter existing filter parameters.
9889
9890 Syntax for the argument is the same as for filter invocation, e.g.
9891
9892 @example
9893 fontsize=56:fontcolor=green:text='Hello World'
9894 @end example
9895
9896 Full filter invocation with sendcmd would look like this:
9897
9898 @example
9899 sendcmd=c='56.0 drawtext reinit fontsize=56\:fontcolor=green\:text=Hello\\ World'
9900 @end example
9901 @end table
9902
9903 If the entire argument can't be parsed or applied as valid values then the filter will
9904 continue with its existing parameters.
9905
9906 @subsection Examples
9907
9908 @itemize
9909 @item
9910 Draw "Test Text" with font FreeSerif, using the default values for the
9911 optional parameters.
9912
9913 @example
9914 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
9915 @end example
9916
9917 @item
9918 Draw 'Test Text' with font FreeSerif of size 24 at position x=100
9919 and y=50 (counting from the top-left corner of the screen), text is
9920 yellow with a red box around it. Both the text and the box have an
9921 opacity of 20%.
9922
9923 @example
9924 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
9925           x=100: y=50: fontsize=24: fontcolor=yellow@@0.2: box=1: boxcolor=red@@0.2"
9926 @end example
9927
9928 Note that the double quotes are not necessary if spaces are not used
9929 within the parameter list.
9930
9931 @item
9932 Show the text at the center of the video frame:
9933 @example
9934 drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h)/2"
9935 @end example
9936
9937 @item
9938 Show the text at a random position, switching to a new position every 30 seconds:
9939 @example
9940 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)"
9941 @end example
9942
9943 @item
9944 Show a text line sliding from right to left in the last row of the video
9945 frame. The file @file{LONG_LINE} is assumed to contain a single line
9946 with no newlines.
9947 @example
9948 drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
9949 @end example
9950
9951 @item
9952 Show the content of file @file{CREDITS} off the bottom of the frame and scroll up.
9953 @example
9954 drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
9955 @end example
9956
9957 @item
9958 Draw a single green letter "g", at the center of the input video.
9959 The glyph baseline is placed at half screen height.
9960 @example
9961 drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
9962 @end example
9963
9964 @item
9965 Show text for 1 second every 3 seconds:
9966 @example
9967 drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'"
9968 @end example
9969
9970 @item
9971 Use fontconfig to set the font. Note that the colons need to be escaped.
9972 @example
9973 drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
9974 @end example
9975
9976 @item
9977 Print the date of a real-time encoding (see strftime(3)):
9978 @example
9979 drawtext='fontfile=FreeSans.ttf:text=%@{localtime\:%a %b %d %Y@}'
9980 @end example
9981
9982 @item
9983 Show text fading in and out (appearing/disappearing):
9984 @example
9985 #!/bin/sh
9986 DS=1.0 # display start
9987 DE=10.0 # display end
9988 FID=1.5 # fade in duration
9989 FOD=5 # fade out duration
9990 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 @}"
9991 @end example
9992
9993 @item
9994 Horizontally align multiple separate texts. Note that @option{max_glyph_a}
9995 and the @option{fontsize} value are included in the @option{y} offset.
9996 @example
9997 drawtext=fontfile=FreeSans.ttf:text=DOG:fontsize=24:x=10:y=20+24-max_glyph_a,
9998 drawtext=fontfile=FreeSans.ttf:text=cow:fontsize=24:x=80:y=20+24-max_glyph_a
9999 @end example
10000
10001 @item
10002 Plot special @var{lavf.image2dec.source_basename} metadata onto each frame if
10003 such metadata exists. Otherwise, plot the string "NA". Note that image2 demuxer
10004 must have option @option{-export_path_metadata 1} for the special metadata fields
10005 to be available for filters.
10006 @example
10007 drawtext="fontsize=20:fontcolor=white:fontfile=FreeSans.ttf:text='%@{metadata\:lavf.image2dec.source_basename\:NA@}':x=10:y=10"
10008 @end example
10009
10010 @end itemize
10011
10012 For more information about libfreetype, check:
10013 @url{http://www.freetype.org/}.
10014
10015 For more information about fontconfig, check:
10016 @url{http://freedesktop.org/software/fontconfig/fontconfig-user.html}.
10017
10018 For more information about libfribidi, check:
10019 @url{http://fribidi.org/}.
10020
10021 @section edgedetect
10022
10023 Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
10024
10025 The filter accepts the following options:
10026
10027 @table @option
10028 @item low
10029 @item high
10030 Set low and high threshold values used by the Canny thresholding
10031 algorithm.
10032
10033 The high threshold selects the "strong" edge pixels, which are then
10034 connected through 8-connectivity with the "weak" edge pixels selected
10035 by the low threshold.
10036
10037 @var{low} and @var{high} threshold values must be chosen in the range
10038 [0,1], and @var{low} should be lesser or equal to @var{high}.
10039
10040 Default value for @var{low} is @code{20/255}, and default value for @var{high}
10041 is @code{50/255}.
10042
10043 @item mode
10044 Define the drawing mode.
10045
10046 @table @samp
10047 @item wires
10048 Draw white/gray wires on black background.
10049
10050 @item colormix
10051 Mix the colors to create a paint/cartoon effect.
10052
10053 @item canny
10054 Apply Canny edge detector on all selected planes.
10055 @end table
10056 Default value is @var{wires}.
10057
10058 @item planes
10059 Select planes for filtering. By default all available planes are filtered.
10060 @end table
10061
10062 @subsection Examples
10063
10064 @itemize
10065 @item
10066 Standard edge detection with custom values for the hysteresis thresholding:
10067 @example
10068 edgedetect=low=0.1:high=0.4
10069 @end example
10070
10071 @item
10072 Painting effect without thresholding:
10073 @example
10074 edgedetect=mode=colormix:high=0
10075 @end example
10076 @end itemize
10077
10078 @section elbg
10079
10080 Apply a posterize effect using the ELBG (Enhanced LBG) algorithm.
10081
10082 For each input image, the filter will compute the optimal mapping from
10083 the input to the output given the codebook length, that is the number
10084 of distinct output colors.
10085
10086 This filter accepts the following options.
10087
10088 @table @option
10089 @item codebook_length, l
10090 Set codebook length. The value must be a positive integer, and
10091 represents the number of distinct output colors. Default value is 256.
10092
10093 @item nb_steps, n
10094 Set the maximum number of iterations to apply for computing the optimal
10095 mapping. The higher the value the better the result and the higher the
10096 computation time. Default value is 1.
10097
10098 @item seed, s
10099 Set a random seed, must be an integer included between 0 and
10100 UINT32_MAX. If not specified, or if explicitly set to -1, the filter
10101 will try to use a good random seed on a best effort basis.
10102
10103 @item pal8
10104 Set pal8 output pixel format. This option does not work with codebook
10105 length greater than 256.
10106 @end table
10107
10108 @section entropy
10109
10110 Measure graylevel entropy in histogram of color channels of video frames.
10111
10112 It accepts the following parameters:
10113
10114 @table @option
10115 @item mode
10116 Can be either @var{normal} or @var{diff}. Default is @var{normal}.
10117
10118 @var{diff} mode measures entropy of histogram delta values, absolute differences
10119 between neighbour histogram values.
10120 @end table
10121
10122 @section eq
10123 Set brightness, contrast, saturation and approximate gamma adjustment.
10124
10125 The filter accepts the following options:
10126
10127 @table @option
10128 @item contrast
10129 Set the contrast expression. The value must be a float value in range
10130 @code{-1000.0} to @code{1000.0}. The default value is "1".
10131
10132 @item brightness
10133 Set the brightness expression. The value must be a float value in
10134 range @code{-1.0} to @code{1.0}. The default value is "0".
10135
10136 @item saturation
10137 Set the saturation expression. The value must be a float in
10138 range @code{0.0} to @code{3.0}. The default value is "1".
10139
10140 @item gamma
10141 Set the gamma expression. The value must be a float in range
10142 @code{0.1} to @code{10.0}.  The default value is "1".
10143
10144 @item gamma_r
10145 Set the gamma expression for red. The value must be a float in
10146 range @code{0.1} to @code{10.0}. The default value is "1".
10147
10148 @item gamma_g
10149 Set the gamma expression for green. The value must be a float in range
10150 @code{0.1} to @code{10.0}. The default value is "1".
10151
10152 @item gamma_b
10153 Set the gamma expression for blue. The value must be a float in range
10154 @code{0.1} to @code{10.0}. The default value is "1".
10155
10156 @item gamma_weight
10157 Set the gamma weight expression. It can be used to reduce the effect
10158 of a high gamma value on bright image areas, e.g. keep them from
10159 getting overamplified and just plain white. The value must be a float
10160 in range @code{0.0} to @code{1.0}. A value of @code{0.0} turns the
10161 gamma correction all the way down while @code{1.0} leaves it at its
10162 full strength. Default is "1".
10163
10164 @item eval
10165 Set when the expressions for brightness, contrast, saturation and
10166 gamma expressions are evaluated.
10167
10168 It accepts the following values:
10169 @table @samp
10170 @item init
10171 only evaluate expressions once during the filter initialization or
10172 when a command is processed
10173
10174 @item frame
10175 evaluate expressions for each incoming frame
10176 @end table
10177
10178 Default value is @samp{init}.
10179 @end table
10180
10181 The expressions accept the following parameters:
10182 @table @option
10183 @item n
10184 frame count of the input frame starting from 0
10185
10186 @item pos
10187 byte position of the corresponding packet in the input file, NAN if
10188 unspecified
10189
10190 @item r
10191 frame rate of the input video, NAN if the input frame rate is unknown
10192
10193 @item t
10194 timestamp expressed in seconds, NAN if the input timestamp is unknown
10195 @end table
10196
10197 @subsection Commands
10198 The filter supports the following commands:
10199
10200 @table @option
10201 @item contrast
10202 Set the contrast expression.
10203
10204 @item brightness
10205 Set the brightness expression.
10206
10207 @item saturation
10208 Set the saturation expression.
10209
10210 @item gamma
10211 Set the gamma expression.
10212
10213 @item gamma_r
10214 Set the gamma_r expression.
10215
10216 @item gamma_g
10217 Set gamma_g expression.
10218
10219 @item gamma_b
10220 Set gamma_b expression.
10221
10222 @item gamma_weight
10223 Set gamma_weight expression.
10224
10225 The command accepts the same syntax of the corresponding option.
10226
10227 If the specified expression is not valid, it is kept at its current
10228 value.
10229
10230 @end table
10231
10232 @section erosion
10233
10234 Apply erosion effect to the video.
10235
10236 This filter replaces the pixel by the local(3x3) minimum.
10237
10238 It accepts the following options:
10239
10240 @table @option
10241 @item threshold0
10242 @item threshold1
10243 @item threshold2
10244 @item threshold3
10245 Limit the maximum change for each plane, default is 65535.
10246 If 0, plane will remain unchanged.
10247
10248 @item coordinates
10249 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
10250 pixels are used.
10251
10252 Flags to local 3x3 coordinates maps like this:
10253
10254     1 2 3
10255     4   5
10256     6 7 8
10257 @end table
10258
10259 @subsection Commands
10260
10261 This filter supports the all above options as @ref{commands}.
10262
10263 @section extractplanes
10264
10265 Extract color channel components from input video stream into
10266 separate grayscale video streams.
10267
10268 The filter accepts the following option:
10269
10270 @table @option
10271 @item planes
10272 Set plane(s) to extract.
10273
10274 Available values for planes are:
10275 @table @samp
10276 @item y
10277 @item u
10278 @item v
10279 @item a
10280 @item r
10281 @item g
10282 @item b
10283 @end table
10284
10285 Choosing planes not available in the input will result in an error.
10286 That means you cannot select @code{r}, @code{g}, @code{b} planes
10287 with @code{y}, @code{u}, @code{v} planes at same time.
10288 @end table
10289
10290 @subsection Examples
10291
10292 @itemize
10293 @item
10294 Extract luma, u and v color channel component from input video frame
10295 into 3 grayscale outputs:
10296 @example
10297 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
10298 @end example
10299 @end itemize
10300
10301 @section fade
10302
10303 Apply a fade-in/out effect to the input video.
10304
10305 It accepts the following parameters:
10306
10307 @table @option
10308 @item type, t
10309 The effect type can be either "in" for a fade-in, or "out" for a fade-out
10310 effect.
10311 Default is @code{in}.
10312
10313 @item start_frame, s
10314 Specify the number of the frame to start applying the fade
10315 effect at. Default is 0.
10316
10317 @item nb_frames, n
10318 The number of frames that the fade effect lasts. At the end of the
10319 fade-in effect, the output video will have the same intensity as the input video.
10320 At the end of the fade-out transition, the output video will be filled with the
10321 selected @option{color}.
10322 Default is 25.
10323
10324 @item alpha
10325 If set to 1, fade only alpha channel, if one exists on the input.
10326 Default value is 0.
10327
10328 @item start_time, st
10329 Specify the timestamp (in seconds) of the frame to start to apply the fade
10330 effect. If both start_frame and start_time are specified, the fade will start at
10331 whichever comes last.  Default is 0.
10332
10333 @item duration, d
10334 The number of seconds for which the fade effect has to last. At the end of the
10335 fade-in effect the output video will have the same intensity as the input video,
10336 at the end of the fade-out transition the output video will be filled with the
10337 selected @option{color}.
10338 If both duration and nb_frames are specified, duration is used. Default is 0
10339 (nb_frames is used by default).
10340
10341 @item color, c
10342 Specify the color of the fade. Default is "black".
10343 @end table
10344
10345 @subsection Examples
10346
10347 @itemize
10348 @item
10349 Fade in the first 30 frames of video:
10350 @example
10351 fade=in:0:30
10352 @end example
10353
10354 The command above is equivalent to:
10355 @example
10356 fade=t=in:s=0:n=30
10357 @end example
10358
10359 @item
10360 Fade out the last 45 frames of a 200-frame video:
10361 @example
10362 fade=out:155:45
10363 fade=type=out:start_frame=155:nb_frames=45
10364 @end example
10365
10366 @item
10367 Fade in the first 25 frames and fade out the last 25 frames of a 1000-frame video:
10368 @example
10369 fade=in:0:25, fade=out:975:25
10370 @end example
10371
10372 @item
10373 Make the first 5 frames yellow, then fade in from frame 5-24:
10374 @example
10375 fade=in:5:20:color=yellow
10376 @end example
10377
10378 @item
10379 Fade in alpha over first 25 frames of video:
10380 @example
10381 fade=in:0:25:alpha=1
10382 @end example
10383
10384 @item
10385 Make the first 5.5 seconds black, then fade in for 0.5 seconds:
10386 @example
10387 fade=t=in:st=5.5:d=0.5
10388 @end example
10389
10390 @end itemize
10391
10392 @section fftdnoiz
10393 Denoise frames using 3D FFT (frequency domain filtering).
10394
10395 The filter accepts the following options:
10396
10397 @table @option
10398 @item sigma
10399 Set the noise sigma constant. This sets denoising strength.
10400 Default value is 1. Allowed range is from 0 to 30.
10401 Using very high sigma with low overlap may give blocking artifacts.
10402
10403 @item amount
10404 Set amount of denoising. By default all detected noise is reduced.
10405 Default value is 1. Allowed range is from 0 to 1.
10406
10407 @item block
10408 Set size of block, Default is 4, can be 3, 4, 5 or 6.
10409 Actual size of block in pixels is 2 to power of @var{block}, so by default
10410 block size in pixels is 2^4 which is 16.
10411
10412 @item overlap
10413 Set block overlap. Default is 0.5. Allowed range is from 0.2 to 0.8.
10414
10415 @item prev
10416 Set number of previous frames to use for denoising. By default is set to 0.
10417
10418 @item next
10419 Set number of next frames to to use for denoising. By default is set to 0.
10420
10421 @item planes
10422 Set planes which will be filtered, by default are all available filtered
10423 except alpha.
10424 @end table
10425
10426 @section fftfilt
10427 Apply arbitrary expressions to samples in frequency domain
10428
10429 @table @option
10430 @item dc_Y
10431 Adjust the dc value (gain) of the luma plane of the image. The filter
10432 accepts an integer value in range @code{0} to @code{1000}. The default
10433 value is set to @code{0}.
10434
10435 @item dc_U
10436 Adjust the dc value (gain) of the 1st chroma plane of the image. The
10437 filter accepts an integer value in range @code{0} to @code{1000}. The
10438 default value is set to @code{0}.
10439
10440 @item dc_V
10441 Adjust the dc value (gain) of the 2nd chroma plane of the image. The
10442 filter accepts an integer value in range @code{0} to @code{1000}. The
10443 default value is set to @code{0}.
10444
10445 @item weight_Y
10446 Set the frequency domain weight expression for the luma plane.
10447
10448 @item weight_U
10449 Set the frequency domain weight expression for the 1st chroma plane.
10450
10451 @item weight_V
10452 Set the frequency domain weight expression for the 2nd chroma plane.
10453
10454 @item eval
10455 Set when the expressions are evaluated.
10456
10457 It accepts the following values:
10458 @table @samp
10459 @item init
10460 Only evaluate expressions once during the filter initialization.
10461
10462 @item frame
10463 Evaluate expressions for each incoming frame.
10464 @end table
10465
10466 Default value is @samp{init}.
10467
10468 The filter accepts the following variables:
10469 @item X
10470 @item Y
10471 The coordinates of the current sample.
10472
10473 @item W
10474 @item H
10475 The width and height of the image.
10476
10477 @item N
10478 The number of input frame, starting from 0.
10479 @end table
10480
10481 @subsection Examples
10482
10483 @itemize
10484 @item
10485 High-pass:
10486 @example
10487 fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)'
10488 @end example
10489
10490 @item
10491 Low-pass:
10492 @example
10493 fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)'
10494 @end example
10495
10496 @item
10497 Sharpen:
10498 @example
10499 fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)'
10500 @end example
10501
10502 @item
10503 Blur:
10504 @example
10505 fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))'
10506 @end example
10507
10508 @end itemize
10509
10510 @section field
10511
10512 Extract a single field from an interlaced image using stride
10513 arithmetic to avoid wasting CPU time. The output frames are marked as
10514 non-interlaced.
10515
10516 The filter accepts the following options:
10517
10518 @table @option
10519 @item type
10520 Specify whether to extract the top (if the value is @code{0} or
10521 @code{top}) or the bottom field (if the value is @code{1} or
10522 @code{bottom}).
10523 @end table
10524
10525 @section fieldhint
10526
10527 Create new frames by copying the top and bottom fields from surrounding frames
10528 supplied as numbers by the hint file.
10529
10530 @table @option
10531 @item hint
10532 Set file containing hints: absolute/relative frame numbers.
10533
10534 There must be one line for each frame in a clip. Each line must contain two
10535 numbers separated by the comma, optionally followed by @code{-} or @code{+}.
10536 Numbers supplied on each line of file can not be out of [N-1,N+1] where N
10537 is current frame number for @code{absolute} mode or out of [-1, 1] range
10538 for @code{relative} mode. First number tells from which frame to pick up top
10539 field and second number tells from which frame to pick up bottom field.
10540
10541 If optionally followed by @code{+} output frame will be marked as interlaced,
10542 else if followed by @code{-} output frame will be marked as progressive, else
10543 it will be marked same as input frame.
10544 If optionally followed by @code{t} output frame will use only top field, or in
10545 case of @code{b} it will use only bottom field.
10546 If line starts with @code{#} or @code{;} that line is skipped.
10547
10548 @item mode
10549 Can be item @code{absolute} or @code{relative}. Default is @code{absolute}.
10550 @end table
10551
10552 Example of first several lines of @code{hint} file for @code{relative} mode:
10553 @example
10554 0,0 - # first frame
10555 1,0 - # second frame, use third's frame top field and second's frame bottom field
10556 1,0 - # third frame, use fourth's frame top field and third's frame bottom field
10557 1,0 -
10558 0,0 -
10559 0,0 -
10560 1,0 -
10561 1,0 -
10562 1,0 -
10563 0,0 -
10564 0,0 -
10565 1,0 -
10566 1,0 -
10567 1,0 -
10568 0,0 -
10569 @end example
10570
10571 @section fieldmatch
10572
10573 Field matching filter for inverse telecine. It is meant to reconstruct the
10574 progressive frames from a telecined stream. The filter does not drop duplicated
10575 frames, so to achieve a complete inverse telecine @code{fieldmatch} needs to be
10576 followed by a decimation filter such as @ref{decimate} in the filtergraph.
10577
10578 The separation of the field matching and the decimation is notably motivated by
10579 the possibility of inserting a de-interlacing filter fallback between the two.
10580 If the source has mixed telecined and real interlaced content,
10581 @code{fieldmatch} will not be able to match fields for the interlaced parts.
10582 But these remaining combed frames will be marked as interlaced, and thus can be
10583 de-interlaced by a later filter such as @ref{yadif} before decimation.
10584
10585 In addition to the various configuration options, @code{fieldmatch} can take an
10586 optional second stream, activated through the @option{ppsrc} option. If
10587 enabled, the frames reconstruction will be based on the fields and frames from
10588 this second stream. This allows the first input to be pre-processed in order to
10589 help the various algorithms of the filter, while keeping the output lossless
10590 (assuming the fields are matched properly). Typically, a field-aware denoiser,
10591 or brightness/contrast adjustments can help.
10592
10593 Note that this filter uses the same algorithms as TIVTC/TFM (AviSynth project)
10594 and VIVTC/VFM (VapourSynth project). The later is a light clone of TFM from
10595 which @code{fieldmatch} is based on. While the semantic and usage are very
10596 close, some behaviour and options names can differ.
10597
10598 The @ref{decimate} filter currently only works for constant frame rate input.
10599 If your input has mixed telecined (30fps) and progressive content with a lower
10600 framerate like 24fps use the following filterchain to produce the necessary cfr
10601 stream: @code{dejudder,fps=30000/1001,fieldmatch,decimate}.
10602
10603 The filter accepts the following options:
10604
10605 @table @option
10606 @item order
10607 Specify the assumed field order of the input stream. Available values are:
10608
10609 @table @samp
10610 @item auto
10611 Auto detect parity (use FFmpeg's internal parity value).
10612 @item bff
10613 Assume bottom field first.
10614 @item tff
10615 Assume top field first.
10616 @end table
10617
10618 Note that it is sometimes recommended not to trust the parity announced by the
10619 stream.
10620
10621 Default value is @var{auto}.
10622
10623 @item mode
10624 Set the matching mode or strategy to use. @option{pc} mode is the safest in the
10625 sense that it won't risk creating jerkiness due to duplicate frames when
10626 possible, but if there are bad edits or blended fields it will end up
10627 outputting combed frames when a good match might actually exist. On the other
10628 hand, @option{pcn_ub} mode is the most risky in terms of creating jerkiness,
10629 but will almost always find a good frame if there is one. The other values are
10630 all somewhere in between @option{pc} and @option{pcn_ub} in terms of risking
10631 jerkiness and creating duplicate frames versus finding good matches in sections
10632 with bad edits, orphaned fields, blended fields, etc.
10633
10634 More details about p/c/n/u/b are available in @ref{p/c/n/u/b meaning} section.
10635
10636 Available values are:
10637
10638 @table @samp
10639 @item pc
10640 2-way matching (p/c)
10641 @item pc_n
10642 2-way matching, and trying 3rd match if still combed (p/c + n)
10643 @item pc_u
10644 2-way matching, and trying 3rd match (same order) if still combed (p/c + u)
10645 @item pc_n_ub
10646 2-way matching, trying 3rd match if still combed, and trying 4th/5th matches if
10647 still combed (p/c + n + u/b)
10648 @item pcn
10649 3-way matching (p/c/n)
10650 @item pcn_ub
10651 3-way matching, and trying 4th/5th matches if all 3 of the original matches are
10652 detected as combed (p/c/n + u/b)
10653 @end table
10654
10655 The parenthesis at the end indicate the matches that would be used for that
10656 mode assuming @option{order}=@var{tff} (and @option{field} on @var{auto} or
10657 @var{top}).
10658
10659 In terms of speed @option{pc} mode is by far the fastest and @option{pcn_ub} is
10660 the slowest.
10661
10662 Default value is @var{pc_n}.
10663
10664 @item ppsrc
10665 Mark the main input stream as a pre-processed input, and enable the secondary
10666 input stream as the clean source to pick the fields from. See the filter
10667 introduction for more details. It is similar to the @option{clip2} feature from
10668 VFM/TFM.
10669
10670 Default value is @code{0} (disabled).
10671
10672 @item field
10673 Set the field to match from. It is recommended to set this to the same value as
10674 @option{order} unless you experience matching failures with that setting. In
10675 certain circumstances changing the field that is used to match from can have a
10676 large impact on matching performance. Available values are:
10677
10678 @table @samp
10679 @item auto
10680 Automatic (same value as @option{order}).
10681 @item bottom
10682 Match from the bottom field.
10683 @item top
10684 Match from the top field.
10685 @end table
10686
10687 Default value is @var{auto}.
10688
10689 @item mchroma
10690 Set whether or not chroma is included during the match comparisons. In most
10691 cases it is recommended to leave this enabled. You should set this to @code{0}
10692 only if your clip has bad chroma problems such as heavy rainbowing or other
10693 artifacts. Setting this to @code{0} could also be used to speed things up at
10694 the cost of some accuracy.
10695
10696 Default value is @code{1}.
10697
10698 @item y0
10699 @item y1
10700 These define an exclusion band which excludes the lines between @option{y0} and
10701 @option{y1} from being included in the field matching decision. An exclusion
10702 band can be used to ignore subtitles, a logo, or other things that may
10703 interfere with the matching. @option{y0} sets the starting scan line and
10704 @option{y1} sets the ending line; all lines in between @option{y0} and
10705 @option{y1} (including @option{y0} and @option{y1}) will be ignored. Setting
10706 @option{y0} and @option{y1} to the same value will disable the feature.
10707 @option{y0} and @option{y1} defaults to @code{0}.
10708
10709 @item scthresh
10710 Set the scene change detection threshold as a percentage of maximum change on
10711 the luma plane. Good values are in the @code{[8.0, 14.0]} range. Scene change
10712 detection is only relevant in case @option{combmatch}=@var{sc}.  The range for
10713 @option{scthresh} is @code{[0.0, 100.0]}.
10714
10715 Default value is @code{12.0}.
10716
10717 @item combmatch
10718 When @option{combatch} is not @var{none}, @code{fieldmatch} will take into
10719 account the combed scores of matches when deciding what match to use as the
10720 final match. Available values are:
10721
10722 @table @samp
10723 @item none
10724 No final matching based on combed scores.
10725 @item sc
10726 Combed scores are only used when a scene change is detected.
10727 @item full
10728 Use combed scores all the time.
10729 @end table
10730
10731 Default is @var{sc}.
10732
10733 @item combdbg
10734 Force @code{fieldmatch} to calculate the combed metrics for certain matches and
10735 print them. This setting is known as @option{micout} in TFM/VFM vocabulary.
10736 Available values are:
10737
10738 @table @samp
10739 @item none
10740 No forced calculation.
10741 @item pcn
10742 Force p/c/n calculations.
10743 @item pcnub
10744 Force p/c/n/u/b calculations.
10745 @end table
10746
10747 Default value is @var{none}.
10748
10749 @item cthresh
10750 This is the area combing threshold used for combed frame detection. This
10751 essentially controls how "strong" or "visible" combing must be to be detected.
10752 Larger values mean combing must be more visible and smaller values mean combing
10753 can be less visible or strong and still be detected. Valid settings are from
10754 @code{-1} (every pixel will be detected as combed) to @code{255} (no pixel will
10755 be detected as combed). This is basically a pixel difference value. A good
10756 range is @code{[8, 12]}.
10757
10758 Default value is @code{9}.
10759
10760 @item chroma
10761 Sets whether or not chroma is considered in the combed frame decision.  Only
10762 disable this if your source has chroma problems (rainbowing, etc.) that are
10763 causing problems for the combed frame detection with chroma enabled. Actually,
10764 using @option{chroma}=@var{0} is usually more reliable, except for the case
10765 where there is chroma only combing in the source.
10766
10767 Default value is @code{0}.
10768
10769 @item blockx
10770 @item blocky
10771 Respectively set the x-axis and y-axis size of the window used during combed
10772 frame detection. This has to do with the size of the area in which
10773 @option{combpel} pixels are required to be detected as combed for a frame to be
10774 declared combed. See the @option{combpel} parameter description for more info.
10775 Possible values are any number that is a power of 2 starting at 4 and going up
10776 to 512.
10777
10778 Default value is @code{16}.
10779
10780 @item combpel
10781 The number of combed pixels inside any of the @option{blocky} by
10782 @option{blockx} size blocks on the frame for the frame to be detected as
10783 combed. While @option{cthresh} controls how "visible" the combing must be, this
10784 setting controls "how much" combing there must be in any localized area (a
10785 window defined by the @option{blockx} and @option{blocky} settings) on the
10786 frame. Minimum value is @code{0} and maximum is @code{blocky x blockx} (at
10787 which point no frames will ever be detected as combed). This setting is known
10788 as @option{MI} in TFM/VFM vocabulary.
10789
10790 Default value is @code{80}.
10791 @end table
10792
10793 @anchor{p/c/n/u/b meaning}
10794 @subsection p/c/n/u/b meaning
10795
10796 @subsubsection p/c/n
10797
10798 We assume the following telecined stream:
10799
10800 @example
10801 Top fields:     1 2 2 3 4
10802 Bottom fields:  1 2 3 4 4
10803 @end example
10804
10805 The numbers correspond to the progressive frame the fields relate to. Here, the
10806 first two frames are progressive, the 3rd and 4th are combed, and so on.
10807
10808 When @code{fieldmatch} is configured to run a matching from bottom
10809 (@option{field}=@var{bottom}) this is how this input stream get transformed:
10810
10811 @example
10812 Input stream:
10813                 T     1 2 2 3 4
10814                 B     1 2 3 4 4   <-- matching reference
10815
10816 Matches:              c c n n c
10817
10818 Output stream:
10819                 T     1 2 3 4 4
10820                 B     1 2 3 4 4
10821 @end example
10822
10823 As a result of the field matching, we can see that some frames get duplicated.
10824 To perform a complete inverse telecine, you need to rely on a decimation filter
10825 after this operation. See for instance the @ref{decimate} filter.
10826
10827 The same operation now matching from top fields (@option{field}=@var{top})
10828 looks like this:
10829
10830 @example
10831 Input stream:
10832                 T     1 2 2 3 4   <-- matching reference
10833                 B     1 2 3 4 4
10834
10835 Matches:              c c p p c
10836
10837 Output stream:
10838                 T     1 2 2 3 4
10839                 B     1 2 2 3 4
10840 @end example
10841
10842 In these examples, we can see what @var{p}, @var{c} and @var{n} mean;
10843 basically, they refer to the frame and field of the opposite parity:
10844
10845 @itemize
10846 @item @var{p} matches the field of the opposite parity in the previous frame
10847 @item @var{c} matches the field of the opposite parity in the current frame
10848 @item @var{n} matches the field of the opposite parity in the next frame
10849 @end itemize
10850
10851 @subsubsection u/b
10852
10853 The @var{u} and @var{b} matching are a bit special in the sense that they match
10854 from the opposite parity flag. In the following examples, we assume that we are
10855 currently matching the 2nd frame (Top:2, bottom:2). According to the match, a
10856 'x' is placed above and below each matched fields.
10857
10858 With bottom matching (@option{field}=@var{bottom}):
10859 @example
10860 Match:           c         p           n          b          u
10861
10862                  x       x               x        x          x
10863   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
10864   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
10865                  x         x           x        x              x
10866
10867 Output frames:
10868                  2          1          2          2          2
10869                  2          2          2          1          3
10870 @end example
10871
10872 With top matching (@option{field}=@var{top}):
10873 @example
10874 Match:           c         p           n          b          u
10875
10876                  x         x           x        x              x
10877   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
10878   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
10879                  x       x               x        x          x
10880
10881 Output frames:
10882                  2          2          2          1          2
10883                  2          1          3          2          2
10884 @end example
10885
10886 @subsection Examples
10887
10888 Simple IVTC of a top field first telecined stream:
10889 @example
10890 fieldmatch=order=tff:combmatch=none, decimate
10891 @end example
10892
10893 Advanced IVTC, with fallback on @ref{yadif} for still combed frames:
10894 @example
10895 fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
10896 @end example
10897
10898 @section fieldorder
10899
10900 Transform the field order of the input video.
10901
10902 It accepts the following parameters:
10903
10904 @table @option
10905
10906 @item order
10907 The output field order. Valid values are @var{tff} for top field first or @var{bff}
10908 for bottom field first.
10909 @end table
10910
10911 The default value is @samp{tff}.
10912
10913 The transformation is done by shifting the picture content up or down
10914 by one line, and filling the remaining line with appropriate picture content.
10915 This method is consistent with most broadcast field order converters.
10916
10917 If the input video is not flagged as being interlaced, or it is already
10918 flagged as being of the required output field order, then this filter does
10919 not alter the incoming video.
10920
10921 It is very useful when converting to or from PAL DV material,
10922 which is bottom field first.
10923
10924 For example:
10925 @example
10926 ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
10927 @end example
10928
10929 @section fifo, afifo
10930
10931 Buffer input images and send them when they are requested.
10932
10933 It is mainly useful when auto-inserted by the libavfilter
10934 framework.
10935
10936 It does not take parameters.
10937
10938 @section fillborders
10939
10940 Fill borders of the input video, without changing video stream dimensions.
10941 Sometimes video can have garbage at the four edges and you may not want to
10942 crop video input to keep size multiple of some number.
10943
10944 This filter accepts the following options:
10945
10946 @table @option
10947 @item left
10948 Number of pixels to fill from left border.
10949
10950 @item right
10951 Number of pixels to fill from right border.
10952
10953 @item top
10954 Number of pixels to fill from top border.
10955
10956 @item bottom
10957 Number of pixels to fill from bottom border.
10958
10959 @item mode
10960 Set fill mode.
10961
10962 It accepts the following values:
10963 @table @samp
10964 @item smear
10965 fill pixels using outermost pixels
10966
10967 @item mirror
10968 fill pixels using mirroring
10969
10970 @item fixed
10971 fill pixels with constant value
10972 @end table
10973
10974 Default is @var{smear}.
10975
10976 @item color
10977 Set color for pixels in fixed mode. Default is @var{black}.
10978 @end table
10979
10980 @subsection Commands
10981 This filter supports same @ref{commands} as options.
10982 The command accepts the same syntax of the corresponding option.
10983
10984 If the specified expression is not valid, it is kept at its current
10985 value.
10986
10987 @section find_rect
10988
10989 Find a rectangular object
10990
10991 It accepts the following options:
10992
10993 @table @option
10994 @item object
10995 Filepath of the object image, needs to be in gray8.
10996
10997 @item threshold
10998 Detection threshold, default is 0.5.
10999
11000 @item mipmaps
11001 Number of mipmaps, default is 3.
11002
11003 @item xmin, ymin, xmax, ymax
11004 Specifies the rectangle in which to search.
11005 @end table
11006
11007 @subsection Examples
11008
11009 @itemize
11010 @item
11011 Cover a rectangular object by the supplied image of a given video using @command{ffmpeg}:
11012 @example
11013 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
11014 @end example
11015 @end itemize
11016
11017 @section floodfill
11018
11019 Flood area with values of same pixel components with another values.
11020
11021 It accepts the following options:
11022 @table @option
11023 @item x
11024 Set pixel x coordinate.
11025
11026 @item y
11027 Set pixel y coordinate.
11028
11029 @item s0
11030 Set source #0 component value.
11031
11032 @item s1
11033 Set source #1 component value.
11034
11035 @item s2
11036 Set source #2 component value.
11037
11038 @item s3
11039 Set source #3 component value.
11040
11041 @item d0
11042 Set destination #0 component value.
11043
11044 @item d1
11045 Set destination #1 component value.
11046
11047 @item d2
11048 Set destination #2 component value.
11049
11050 @item d3
11051 Set destination #3 component value.
11052 @end table
11053
11054 @anchor{format}
11055 @section format
11056
11057 Convert the input video to one of the specified pixel formats.
11058 Libavfilter will try to pick one that is suitable as input to
11059 the next filter.
11060
11061 It accepts the following parameters:
11062 @table @option
11063
11064 @item pix_fmts
11065 A '|'-separated list of pixel format names, such as
11066 "pix_fmts=yuv420p|monow|rgb24".
11067
11068 @end table
11069
11070 @subsection Examples
11071
11072 @itemize
11073 @item
11074 Convert the input video to the @var{yuv420p} format
11075 @example
11076 format=pix_fmts=yuv420p
11077 @end example
11078
11079 Convert the input video to any of the formats in the list
11080 @example
11081 format=pix_fmts=yuv420p|yuv444p|yuv410p
11082 @end example
11083 @end itemize
11084
11085 @anchor{fps}
11086 @section fps
11087
11088 Convert the video to specified constant frame rate by duplicating or dropping
11089 frames as necessary.
11090
11091 It accepts the following parameters:
11092 @table @option
11093
11094 @item fps
11095 The desired output frame rate. The default is @code{25}.
11096
11097 @item start_time
11098 Assume the first PTS should be the given value, in seconds. This allows for
11099 padding/trimming at the start of stream. By default, no assumption is made
11100 about the first frame's expected PTS, so no padding or trimming is done.
11101 For example, this could be set to 0 to pad the beginning with duplicates of
11102 the first frame if a video stream starts after the audio stream or to trim any
11103 frames with a negative PTS.
11104
11105 @item round
11106 Timestamp (PTS) rounding method.
11107
11108 Possible values are:
11109 @table @option
11110 @item zero
11111 round towards 0
11112 @item inf
11113 round away from 0
11114 @item down
11115 round towards -infinity
11116 @item up
11117 round towards +infinity
11118 @item near
11119 round to nearest
11120 @end table
11121 The default is @code{near}.
11122
11123 @item eof_action
11124 Action performed when reading the last frame.
11125
11126 Possible values are:
11127 @table @option
11128 @item round
11129 Use same timestamp rounding method as used for other frames.
11130 @item pass
11131 Pass through last frame if input duration has not been reached yet.
11132 @end table
11133 The default is @code{round}.
11134
11135 @end table
11136
11137 Alternatively, the options can be specified as a flat string:
11138 @var{fps}[:@var{start_time}[:@var{round}]].
11139
11140 See also the @ref{setpts} filter.
11141
11142 @subsection Examples
11143
11144 @itemize
11145 @item
11146 A typical usage in order to set the fps to 25:
11147 @example
11148 fps=fps=25
11149 @end example
11150
11151 @item
11152 Sets the fps to 24, using abbreviation and rounding method to round to nearest:
11153 @example
11154 fps=fps=film:round=near
11155 @end example
11156 @end itemize
11157
11158 @section framepack
11159
11160 Pack two different video streams into a stereoscopic video, setting proper
11161 metadata on supported codecs. The two views should have the same size and
11162 framerate and processing will stop when the shorter video ends. Please note
11163 that you may conveniently adjust view properties with the @ref{scale} and
11164 @ref{fps} filters.
11165
11166 It accepts the following parameters:
11167 @table @option
11168
11169 @item format
11170 The desired packing format. Supported values are:
11171
11172 @table @option
11173
11174 @item sbs
11175 The views are next to each other (default).
11176
11177 @item tab
11178 The views are on top of each other.
11179
11180 @item lines
11181 The views are packed by line.
11182
11183 @item columns
11184 The views are packed by column.
11185
11186 @item frameseq
11187 The views are temporally interleaved.
11188
11189 @end table
11190
11191 @end table
11192
11193 Some examples:
11194
11195 @example
11196 # Convert left and right views into a frame-sequential video
11197 ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT
11198
11199 # Convert views into a side-by-side video with the same output resolution as the input
11200 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
11201 @end example
11202
11203 @section framerate
11204
11205 Change the frame rate by interpolating new video output frames from the source
11206 frames.
11207
11208 This filter is not designed to function correctly with interlaced media. If
11209 you wish to change the frame rate of interlaced media then you are required
11210 to deinterlace before this filter and re-interlace after this filter.
11211
11212 A description of the accepted options follows.
11213
11214 @table @option
11215 @item fps
11216 Specify the output frames per second. This option can also be specified
11217 as a value alone. The default is @code{50}.
11218
11219 @item interp_start
11220 Specify the start of a range where the output frame will be created as a
11221 linear interpolation of two frames. The range is [@code{0}-@code{255}],
11222 the default is @code{15}.
11223
11224 @item interp_end
11225 Specify the end of a range where the output frame will be created as a
11226 linear interpolation of two frames. The range is [@code{0}-@code{255}],
11227 the default is @code{240}.
11228
11229 @item scene
11230 Specify the level at which a scene change is detected as a value between
11231 0 and 100 to indicate a new scene; a low value reflects a low
11232 probability for the current frame to introduce a new scene, while a higher
11233 value means the current frame is more likely to be one.
11234 The default is @code{8.2}.
11235
11236 @item flags
11237 Specify flags influencing the filter process.
11238
11239 Available value for @var{flags} is:
11240
11241 @table @option
11242 @item scene_change_detect, scd
11243 Enable scene change detection using the value of the option @var{scene}.
11244 This flag is enabled by default.
11245 @end table
11246 @end table
11247
11248 @section framestep
11249
11250 Select one frame every N-th frame.
11251
11252 This filter accepts the following option:
11253 @table @option
11254 @item step
11255 Select frame after every @code{step} frames.
11256 Allowed values are positive integers higher than 0. Default value is @code{1}.
11257 @end table
11258
11259 @section freezedetect
11260
11261 Detect frozen video.
11262
11263 This filter logs a message and sets frame metadata when it detects that the
11264 input video has no significant change in content during a specified duration.
11265 Video freeze detection calculates the mean average absolute difference of all
11266 the components of video frames and compares it to a noise floor.
11267
11268 The printed times and duration are expressed in seconds. The
11269 @code{lavfi.freezedetect.freeze_start} metadata key is set on the first frame
11270 whose timestamp equals or exceeds the detection duration and it contains the
11271 timestamp of the first frame of the freeze. The
11272 @code{lavfi.freezedetect.freeze_duration} and
11273 @code{lavfi.freezedetect.freeze_end} metadata keys are set on the first frame
11274 after the freeze.
11275
11276 The filter accepts the following options:
11277
11278 @table @option
11279 @item noise, n
11280 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
11281 specified value) or as a difference ratio between 0 and 1. Default is -60dB, or
11282 0.001.
11283
11284 @item duration, d
11285 Set freeze duration until notification (default is 2 seconds).
11286 @end table
11287
11288 @section freezeframes
11289
11290 Freeze video frames.
11291
11292 This filter freezes video frames using frame from 2nd input.
11293
11294 The filter accepts the following options:
11295
11296 @table @option
11297 @item first
11298 Set number of first frame from which to start freeze.
11299
11300 @item last
11301 Set number of last frame from which to end freeze.
11302
11303 @item replace
11304 Set number of frame from 2nd input which will be used instead of replaced frames.
11305 @end table
11306
11307 @anchor{frei0r}
11308 @section frei0r
11309
11310 Apply a frei0r effect to the input video.
11311
11312 To enable the compilation of this filter, you need to install the frei0r
11313 header and configure FFmpeg with @code{--enable-frei0r}.
11314
11315 It accepts the following parameters:
11316
11317 @table @option
11318
11319 @item filter_name
11320 The name of the frei0r effect to load. If the environment variable
11321 @env{FREI0R_PATH} is defined, the frei0r effect is searched for in each of the
11322 directories specified by the colon-separated list in @env{FREI0R_PATH}.
11323 Otherwise, the standard frei0r paths are searched, in this order:
11324 @file{HOME/.frei0r-1/lib/}, @file{/usr/local/lib/frei0r-1/},
11325 @file{/usr/lib/frei0r-1/}.
11326
11327 @item filter_params
11328 A '|'-separated list of parameters to pass to the frei0r effect.
11329
11330 @end table
11331
11332 A frei0r effect parameter can be a boolean (its value is either
11333 "y" or "n"), a double, a color (specified as
11334 @var{R}/@var{G}/@var{B}, where @var{R}, @var{G}, and @var{B} are floating point
11335 numbers between 0.0 and 1.0, inclusive) or a color description as specified in the
11336 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils},
11337 a position (specified as @var{X}/@var{Y}, where
11338 @var{X} and @var{Y} are floating point numbers) and/or a string.
11339
11340 The number and types of parameters depend on the loaded effect. If an
11341 effect parameter is not specified, the default value is set.
11342
11343 @subsection Examples
11344
11345 @itemize
11346 @item
11347 Apply the distort0r effect, setting the first two double parameters:
11348 @example
11349 frei0r=filter_name=distort0r:filter_params=0.5|0.01
11350 @end example
11351
11352 @item
11353 Apply the colordistance effect, taking a color as the first parameter:
11354 @example
11355 frei0r=colordistance:0.2/0.3/0.4
11356 frei0r=colordistance:violet
11357 frei0r=colordistance:0x112233
11358 @end example
11359
11360 @item
11361 Apply the perspective effect, specifying the top left and top right image
11362 positions:
11363 @example
11364 frei0r=perspective:0.2/0.2|0.8/0.2
11365 @end example
11366 @end itemize
11367
11368 For more information, see
11369 @url{http://frei0r.dyne.org}
11370
11371 @section fspp
11372
11373 Apply fast and simple postprocessing. It is a faster version of @ref{spp}.
11374
11375 It splits (I)DCT into horizontal/vertical passes. Unlike the simple post-
11376 processing filter, one of them is performed once per block, not per pixel.
11377 This allows for much higher speed.
11378
11379 The filter accepts the following options:
11380
11381 @table @option
11382 @item quality
11383 Set quality. This option defines the number of levels for averaging. It accepts
11384 an integer in the range 4-5. Default value is @code{4}.
11385
11386 @item qp
11387 Force a constant quantization parameter. It accepts an integer in range 0-63.
11388 If not set, the filter will use the QP from the video stream (if available).
11389
11390 @item strength
11391 Set filter strength. It accepts an integer in range -15 to 32. Lower values mean
11392 more details but also more artifacts, while higher values make the image smoother
11393 but also blurrier. Default value is @code{0} âˆ’ PSNR optimal.
11394
11395 @item use_bframe_qp
11396 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
11397 option may cause flicker since the B-Frames have often larger QP. Default is
11398 @code{0} (not enabled).
11399
11400 @end table
11401
11402 @section gblur
11403
11404 Apply Gaussian blur filter.
11405
11406 The filter accepts the following options:
11407
11408 @table @option
11409 @item sigma
11410 Set horizontal sigma, standard deviation of Gaussian blur. Default is @code{0.5}.
11411
11412 @item steps
11413 Set number of steps for Gaussian approximation. Default is @code{1}.
11414
11415 @item planes
11416 Set which planes to filter. By default all planes are filtered.
11417
11418 @item sigmaV
11419 Set vertical sigma, if negative it will be same as @code{sigma}.
11420 Default is @code{-1}.
11421 @end table
11422
11423 @subsection Commands
11424 This filter supports same commands as options.
11425 The command accepts the same syntax of the corresponding option.
11426
11427 If the specified expression is not valid, it is kept at its current
11428 value.
11429
11430 @section geq
11431
11432 Apply generic equation to each pixel.
11433
11434 The filter accepts the following options:
11435
11436 @table @option
11437 @item lum_expr, lum
11438 Set the luminance expression.
11439 @item cb_expr, cb
11440 Set the chrominance blue expression.
11441 @item cr_expr, cr
11442 Set the chrominance red expression.
11443 @item alpha_expr, a
11444 Set the alpha expression.
11445 @item red_expr, r
11446 Set the red expression.
11447 @item green_expr, g
11448 Set the green expression.
11449 @item blue_expr, b
11450 Set the blue expression.
11451 @end table
11452
11453 The colorspace is selected according to the specified options. If one
11454 of the @option{lum_expr}, @option{cb_expr}, or @option{cr_expr}
11455 options is specified, the filter will automatically select a YCbCr
11456 colorspace. If one of the @option{red_expr}, @option{green_expr}, or
11457 @option{blue_expr} options is specified, it will select an RGB
11458 colorspace.
11459
11460 If one of the chrominance expression is not defined, it falls back on the other
11461 one. If no alpha expression is specified it will evaluate to opaque value.
11462 If none of chrominance expressions are specified, they will evaluate
11463 to the luminance expression.
11464
11465 The expressions can use the following variables and functions:
11466
11467 @table @option
11468 @item N
11469 The sequential number of the filtered frame, starting from @code{0}.
11470
11471 @item X
11472 @item Y
11473 The coordinates of the current sample.
11474
11475 @item W
11476 @item H
11477 The width and height of the image.
11478
11479 @item SW
11480 @item SH
11481 Width and height scale depending on the currently filtered plane. It is the
11482 ratio between the corresponding luma plane number of pixels and the current
11483 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
11484 @code{0.5,0.5} for chroma planes.
11485
11486 @item T
11487 Time of the current frame, expressed in seconds.
11488
11489 @item p(x, y)
11490 Return the value of the pixel at location (@var{x},@var{y}) of the current
11491 plane.
11492
11493 @item lum(x, y)
11494 Return the value of the pixel at location (@var{x},@var{y}) of the luminance
11495 plane.
11496
11497 @item cb(x, y)
11498 Return the value of the pixel at location (@var{x},@var{y}) of the
11499 blue-difference chroma plane. Return 0 if there is no such plane.
11500
11501 @item cr(x, y)
11502 Return the value of the pixel at location (@var{x},@var{y}) of the
11503 red-difference chroma plane. Return 0 if there is no such plane.
11504
11505 @item r(x, y)
11506 @item g(x, y)
11507 @item b(x, y)
11508 Return the value of the pixel at location (@var{x},@var{y}) of the
11509 red/green/blue component. Return 0 if there is no such component.
11510
11511 @item alpha(x, y)
11512 Return the value of the pixel at location (@var{x},@var{y}) of the alpha
11513 plane. Return 0 if there is no such plane.
11514
11515 @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)
11516 Sum of sample values in the rectangle from (0,0) to (x,y), this allows obtaining
11517 sums of samples within a rectangle. See the functions without the sum postfix.
11518
11519 @item interpolation
11520 Set one of interpolation methods:
11521 @table @option
11522 @item nearest, n
11523 @item bilinear, b
11524 @end table
11525 Default is bilinear.
11526 @end table
11527
11528 For functions, if @var{x} and @var{y} are outside the area, the value will be
11529 automatically clipped to the closer edge.
11530
11531 Please note that this filter can use multiple threads in which case each slice
11532 will have its own expression state. If you want to use only a single expression
11533 state because your expressions depend on previous state then you should limit
11534 the number of filter threads to 1.
11535
11536 @subsection Examples
11537
11538 @itemize
11539 @item
11540 Flip the image horizontally:
11541 @example
11542 geq=p(W-X\,Y)
11543 @end example
11544
11545 @item
11546 Generate a bidimensional sine wave, with angle @code{PI/3} and a
11547 wavelength of 100 pixels:
11548 @example
11549 geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
11550 @end example
11551
11552 @item
11553 Generate a fancy enigmatic moving light:
11554 @example
11555 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
11556 @end example
11557
11558 @item
11559 Generate a quick emboss effect:
11560 @example
11561 format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
11562 @end example
11563
11564 @item
11565 Modify RGB components depending on pixel position:
11566 @example
11567 geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
11568 @end example
11569
11570 @item
11571 Create a radial gradient that is the same size as the input (also see
11572 the @ref{vignette} filter):
11573 @example
11574 geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
11575 @end example
11576 @end itemize
11577
11578 @section gradfun
11579
11580 Fix the banding artifacts that are sometimes introduced into nearly flat
11581 regions by truncation to 8-bit color depth.
11582 Interpolate the gradients that should go where the bands are, and
11583 dither them.
11584
11585 It is designed for playback only.  Do not use it prior to
11586 lossy compression, because compression tends to lose the dither and
11587 bring back the bands.
11588
11589 It accepts the following parameters:
11590
11591 @table @option
11592
11593 @item strength
11594 The maximum amount by which the filter will change any one pixel. This is also
11595 the threshold for detecting nearly flat regions. Acceptable values range from
11596 .51 to 64; the default value is 1.2. Out-of-range values will be clipped to the
11597 valid range.
11598
11599 @item radius
11600 The neighborhood to fit the gradient to. A larger radius makes for smoother
11601 gradients, but also prevents the filter from modifying the pixels near detailed
11602 regions. Acceptable values are 8-32; the default value is 16. Out-of-range
11603 values will be clipped to the valid range.
11604
11605 @end table
11606
11607 Alternatively, the options can be specified as a flat string:
11608 @var{strength}[:@var{radius}]
11609
11610 @subsection Examples
11611
11612 @itemize
11613 @item
11614 Apply the filter with a @code{3.5} strength and radius of @code{8}:
11615 @example
11616 gradfun=3.5:8
11617 @end example
11618
11619 @item
11620 Specify radius, omitting the strength (which will fall-back to the default
11621 value):
11622 @example
11623 gradfun=radius=8
11624 @end example
11625
11626 @end itemize
11627
11628 @anchor{graphmonitor}
11629 @section graphmonitor
11630 Show various filtergraph stats.
11631
11632 With this filter one can debug complete filtergraph.
11633 Especially issues with links filling with queued frames.
11634
11635 The filter accepts the following options:
11636
11637 @table @option
11638 @item size, s
11639 Set video output size. Default is @var{hd720}.
11640
11641 @item opacity, o
11642 Set video opacity. Default is @var{0.9}. Allowed range is from @var{0} to @var{1}.
11643
11644 @item mode, m
11645 Set output mode, can be @var{fulll} or @var{compact}.
11646 In @var{compact} mode only filters with some queued frames have displayed stats.
11647
11648 @item flags, f
11649 Set flags which enable which stats are shown in video.
11650
11651 Available values for flags are:
11652 @table @samp
11653 @item queue
11654 Display number of queued frames in each link.
11655
11656 @item frame_count_in
11657 Display number of frames taken from filter.
11658
11659 @item frame_count_out
11660 Display number of frames given out from filter.
11661
11662 @item pts
11663 Display current filtered frame pts.
11664
11665 @item time
11666 Display current filtered frame time.
11667
11668 @item timebase
11669 Display time base for filter link.
11670
11671 @item format
11672 Display used format for filter link.
11673
11674 @item size
11675 Display video size or number of audio channels in case of audio used by filter link.
11676
11677 @item rate
11678 Display video frame rate or sample rate in case of audio used by filter link.
11679 @end table
11680
11681 @item rate, r
11682 Set upper limit for video rate of output stream, Default value is @var{25}.
11683 This guarantee that output video frame rate will not be higher than this value.
11684 @end table
11685
11686 @section greyedge
11687 A color constancy variation filter which estimates scene illumination via grey edge algorithm
11688 and corrects the scene colors accordingly.
11689
11690 See: @url{https://staff.science.uva.nl/th.gevers/pub/GeversTIP07.pdf}
11691
11692 The filter accepts the following options:
11693
11694 @table @option
11695 @item difford
11696 The order of differentiation to be applied on the scene. Must be chosen in the range
11697 [0,2] and default value is 1.
11698
11699 @item minknorm
11700 The Minkowski parameter to be used for calculating the Minkowski distance. Must
11701 be chosen in the range [0,20] and default value is 1. Set to 0 for getting
11702 max value instead of calculating Minkowski distance.
11703
11704 @item sigma
11705 The standard deviation of Gaussian blur to be applied on the scene. Must be
11706 chosen in the range [0,1024.0] and default value = 1. floor( @var{sigma} * break_off_sigma(3) )
11707 can't be equal to 0 if @var{difford} is greater than 0.
11708 @end table
11709
11710 @subsection Examples
11711 @itemize
11712
11713 @item
11714 Grey Edge:
11715 @example
11716 greyedge=difford=1:minknorm=5:sigma=2
11717 @end example
11718
11719 @item
11720 Max Edge:
11721 @example
11722 greyedge=difford=1:minknorm=0:sigma=2
11723 @end example
11724
11725 @end itemize
11726
11727 @anchor{haldclut}
11728 @section haldclut
11729
11730 Apply a Hald CLUT to a video stream.
11731
11732 First input is the video stream to process, and second one is the Hald CLUT.
11733 The Hald CLUT input can be a simple picture or a complete video stream.
11734
11735 The filter accepts the following options:
11736
11737 @table @option
11738 @item shortest
11739 Force termination when the shortest input terminates. Default is @code{0}.
11740 @item repeatlast
11741 Continue applying the last CLUT after the end of the stream. A value of
11742 @code{0} disable the filter after the last frame of the CLUT is reached.
11743 Default is @code{1}.
11744 @end table
11745
11746 @code{haldclut} also has the same interpolation options as @ref{lut3d} (both
11747 filters share the same internals).
11748
11749 This filter also supports the @ref{framesync} options.
11750
11751 More information about the Hald CLUT can be found on Eskil Steenberg's website
11752 (Hald CLUT author) at @url{http://www.quelsolaar.com/technology/clut.html}.
11753
11754 @subsection Workflow examples
11755
11756 @subsubsection Hald CLUT video stream
11757
11758 Generate an identity Hald CLUT stream altered with various effects:
11759 @example
11760 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
11761 @end example
11762
11763 Note: make sure you use a lossless codec.
11764
11765 Then use it with @code{haldclut} to apply it on some random stream:
11766 @example
11767 ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
11768 @end example
11769
11770 The Hald CLUT will be applied to the 10 first seconds (duration of
11771 @file{clut.nut}), then the latest picture of that CLUT stream will be applied
11772 to the remaining frames of the @code{mandelbrot} stream.
11773
11774 @subsubsection Hald CLUT with preview
11775
11776 A Hald CLUT is supposed to be a squared image of @code{Level*Level*Level} by
11777 @code{Level*Level*Level} pixels. For a given Hald CLUT, FFmpeg will select the
11778 biggest possible square starting at the top left of the picture. The remaining
11779 padding pixels (bottom or right) will be ignored. This area can be used to add
11780 a preview of the Hald CLUT.
11781
11782 Typically, the following generated Hald CLUT will be supported by the
11783 @code{haldclut} filter:
11784
11785 @example
11786 ffmpeg -f lavfi -i @ref{haldclutsrc}=8 -vf "
11787    pad=iw+320 [padded_clut];
11788    smptebars=s=320x256, split [a][b];
11789    [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
11790    [main][b] overlay=W-320" -frames:v 1 clut.png
11791 @end example
11792
11793 It contains the original and a preview of the effect of the CLUT: SMPTE color
11794 bars are displayed on the right-top, and below the same color bars processed by
11795 the color changes.
11796
11797 Then, the effect of this Hald CLUT can be visualized with:
11798 @example
11799 ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
11800 @end example
11801
11802 @section hflip
11803
11804 Flip the input video horizontally.
11805
11806 For example, to horizontally flip the input video with @command{ffmpeg}:
11807 @example
11808 ffmpeg -i in.avi -vf "hflip" out.avi
11809 @end example
11810
11811 @section histeq
11812 This filter applies a global color histogram equalization on a
11813 per-frame basis.
11814
11815 It can be used to correct video that has a compressed range of pixel
11816 intensities.  The filter redistributes the pixel intensities to
11817 equalize their distribution across the intensity range. It may be
11818 viewed as an "automatically adjusting contrast filter". This filter is
11819 useful only for correcting degraded or poorly captured source
11820 video.
11821
11822 The filter accepts the following options:
11823
11824 @table @option
11825 @item strength
11826 Determine the amount of equalization to be applied.  As the strength
11827 is reduced, the distribution of pixel intensities more-and-more
11828 approaches that of the input frame. The value must be a float number
11829 in the range [0,1] and defaults to 0.200.
11830
11831 @item intensity
11832 Set the maximum intensity that can generated and scale the output
11833 values appropriately.  The strength should be set as desired and then
11834 the intensity can be limited if needed to avoid washing-out. The value
11835 must be a float number in the range [0,1] and defaults to 0.210.
11836
11837 @item antibanding
11838 Set the antibanding level. If enabled the filter will randomly vary
11839 the luminance of output pixels by a small amount to avoid banding of
11840 the histogram. Possible values are @code{none}, @code{weak} or
11841 @code{strong}. It defaults to @code{none}.
11842 @end table
11843
11844 @anchor{histogram}
11845 @section histogram
11846
11847 Compute and draw a color distribution histogram for the input video.
11848
11849 The computed histogram is a representation of the color component
11850 distribution in an image.
11851
11852 Standard histogram displays the color components distribution in an image.
11853 Displays color graph for each color component. Shows distribution of
11854 the Y, U, V, A or R, G, B components, depending on input format, in the
11855 current frame. Below each graph a color component scale meter is shown.
11856
11857 The filter accepts the following options:
11858
11859 @table @option
11860 @item level_height
11861 Set height of level. Default value is @code{200}.
11862 Allowed range is [50, 2048].
11863
11864 @item scale_height
11865 Set height of color scale. Default value is @code{12}.
11866 Allowed range is [0, 40].
11867
11868 @item display_mode
11869 Set display mode.
11870 It accepts the following values:
11871 @table @samp
11872 @item stack
11873 Per color component graphs are placed below each other.
11874
11875 @item parade
11876 Per color component graphs are placed side by side.
11877
11878 @item overlay
11879 Presents information identical to that in the @code{parade}, except
11880 that the graphs representing color components are superimposed directly
11881 over one another.
11882 @end table
11883 Default is @code{stack}.
11884
11885 @item levels_mode
11886 Set mode. Can be either @code{linear}, or @code{logarithmic}.
11887 Default is @code{linear}.
11888
11889 @item components
11890 Set what color components to display.
11891 Default is @code{7}.
11892
11893 @item fgopacity
11894 Set foreground opacity. Default is @code{0.7}.
11895
11896 @item bgopacity
11897 Set background opacity. Default is @code{0.5}.
11898 @end table
11899
11900 @subsection Examples
11901
11902 @itemize
11903
11904 @item
11905 Calculate and draw histogram:
11906 @example
11907 ffplay -i input -vf histogram
11908 @end example
11909
11910 @end itemize
11911
11912 @anchor{hqdn3d}
11913 @section hqdn3d
11914
11915 This is a high precision/quality 3d denoise filter. It aims to reduce
11916 image noise, producing smooth images and making still images really
11917 still. It should enhance compressibility.
11918
11919 It accepts the following optional parameters:
11920
11921 @table @option
11922 @item luma_spatial
11923 A non-negative floating point number which specifies spatial luma strength.
11924 It defaults to 4.0.
11925
11926 @item chroma_spatial
11927 A non-negative floating point number which specifies spatial chroma strength.
11928 It defaults to 3.0*@var{luma_spatial}/4.0.
11929
11930 @item luma_tmp
11931 A floating point number which specifies luma temporal strength. It defaults to
11932 6.0*@var{luma_spatial}/4.0.
11933
11934 @item chroma_tmp
11935 A floating point number which specifies chroma temporal strength. It defaults to
11936 @var{luma_tmp}*@var{chroma_spatial}/@var{luma_spatial}.
11937 @end table
11938
11939 @subsection Commands
11940 This filter supports same @ref{commands} as options.
11941 The command accepts the same syntax of the corresponding option.
11942
11943 If the specified expression is not valid, it is kept at its current
11944 value.
11945
11946 @anchor{hwdownload}
11947 @section hwdownload
11948
11949 Download hardware frames to system memory.
11950
11951 The input must be in hardware frames, and the output a non-hardware format.
11952 Not all formats will be supported on the output - it may be necessary to insert
11953 an additional @option{format} filter immediately following in the graph to get
11954 the output in a supported format.
11955
11956 @section hwmap
11957
11958 Map hardware frames to system memory or to another device.
11959
11960 This filter has several different modes of operation; which one is used depends
11961 on the input and output formats:
11962 @itemize
11963 @item
11964 Hardware frame input, normal frame output
11965
11966 Map the input frames to system memory and pass them to the output.  If the
11967 original hardware frame is later required (for example, after overlaying
11968 something else on part of it), the @option{hwmap} filter can be used again
11969 in the next mode to retrieve it.
11970 @item
11971 Normal frame input, hardware frame output
11972
11973 If the input is actually a software-mapped hardware frame, then unmap it -
11974 that is, return the original hardware frame.
11975
11976 Otherwise, a device must be provided.  Create new hardware surfaces on that
11977 device for the output, then map them back to the software format at the input
11978 and give those frames to the preceding filter.  This will then act like the
11979 @option{hwupload} filter, but may be able to avoid an additional copy when
11980 the input is already in a compatible format.
11981 @item
11982 Hardware frame input and output
11983
11984 A device must be supplied for the output, either directly or with the
11985 @option{derive_device} option.  The input and output devices must be of
11986 different types and compatible - the exact meaning of this is
11987 system-dependent, but typically it means that they must refer to the same
11988 underlying hardware context (for example, refer to the same graphics card).
11989
11990 If the input frames were originally created on the output device, then unmap
11991 to retrieve the original frames.
11992
11993 Otherwise, map the frames to the output device - create new hardware frames
11994 on the output corresponding to the frames on the input.
11995 @end itemize
11996
11997 The following additional parameters are accepted:
11998
11999 @table @option
12000 @item mode
12001 Set the frame mapping mode.  Some combination of:
12002 @table @var
12003 @item read
12004 The mapped frame should be readable.
12005 @item write
12006 The mapped frame should be writeable.
12007 @item overwrite
12008 The mapping will always overwrite the entire frame.
12009
12010 This may improve performance in some cases, as the original contents of the
12011 frame need not be loaded.
12012 @item direct
12013 The mapping must not involve any copying.
12014
12015 Indirect mappings to copies of frames are created in some cases where either
12016 direct mapping is not possible or it would have unexpected properties.
12017 Setting this flag ensures that the mapping is direct and will fail if that is
12018 not possible.
12019 @end table
12020 Defaults to @var{read+write} if not specified.
12021
12022 @item derive_device @var{type}
12023 Rather than using the device supplied at initialisation, instead derive a new
12024 device of type @var{type} from the device the input frames exist on.
12025
12026 @item reverse
12027 In a hardware to hardware mapping, map in reverse - create frames in the sink
12028 and map them back to the source.  This may be necessary in some cases where
12029 a mapping in one direction is required but only the opposite direction is
12030 supported by the devices being used.
12031
12032 This option is dangerous - it may break the preceding filter in undefined
12033 ways if there are any additional constraints on that filter's output.
12034 Do not use it without fully understanding the implications of its use.
12035 @end table
12036
12037 @anchor{hwupload}
12038 @section hwupload
12039
12040 Upload system memory frames to hardware surfaces.
12041
12042 The device to upload to must be supplied when the filter is initialised.  If
12043 using ffmpeg, select the appropriate device with the @option{-filter_hw_device}
12044 option or with the @option{derive_device} option.  The input and output devices
12045 must be of different types and compatible - the exact meaning of this is
12046 system-dependent, but typically it means that they must refer to the same
12047 underlying hardware context (for example, refer to the same graphics card).
12048
12049 The following additional parameters are accepted:
12050
12051 @table @option
12052 @item derive_device @var{type}
12053 Rather than using the device supplied at initialisation, instead derive a new
12054 device of type @var{type} from the device the input frames exist on.
12055 @end table
12056
12057 @anchor{hwupload_cuda}
12058 @section hwupload_cuda
12059
12060 Upload system memory frames to a CUDA device.
12061
12062 It accepts the following optional parameters:
12063
12064 @table @option
12065 @item device
12066 The number of the CUDA device to use
12067 @end table
12068
12069 @section hqx
12070
12071 Apply a high-quality magnification filter designed for pixel art. This filter
12072 was originally created by Maxim Stepin.
12073
12074 It accepts the following option:
12075
12076 @table @option
12077 @item n
12078 Set the scaling dimension: @code{2} for @code{hq2x}, @code{3} for
12079 @code{hq3x} and @code{4} for @code{hq4x}.
12080 Default is @code{3}.
12081 @end table
12082
12083 @section hstack
12084 Stack input videos horizontally.
12085
12086 All streams must be of same pixel format and of same height.
12087
12088 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
12089 to create same output.
12090
12091 The filter accepts the following option:
12092
12093 @table @option
12094 @item inputs
12095 Set number of input streams. Default is 2.
12096
12097 @item shortest
12098 If set to 1, force the output to terminate when the shortest input
12099 terminates. Default value is 0.
12100 @end table
12101
12102 @section hue
12103
12104 Modify the hue and/or the saturation of the input.
12105
12106 It accepts the following parameters:
12107
12108 @table @option
12109 @item h
12110 Specify the hue angle as a number of degrees. It accepts an expression,
12111 and defaults to "0".
12112
12113 @item s
12114 Specify the saturation in the [-10,10] range. It accepts an expression and
12115 defaults to "1".
12116
12117 @item H
12118 Specify the hue angle as a number of radians. It accepts an
12119 expression, and defaults to "0".
12120
12121 @item b
12122 Specify the brightness in the [-10,10] range. It accepts an expression and
12123 defaults to "0".
12124 @end table
12125
12126 @option{h} and @option{H} are mutually exclusive, and can't be
12127 specified at the same time.
12128
12129 The @option{b}, @option{h}, @option{H} and @option{s} option values are
12130 expressions containing the following constants:
12131
12132 @table @option
12133 @item n
12134 frame count of the input frame starting from 0
12135
12136 @item pts
12137 presentation timestamp of the input frame expressed in time base units
12138
12139 @item r
12140 frame rate of the input video, NAN if the input frame rate is unknown
12141
12142 @item t
12143 timestamp expressed in seconds, NAN if the input timestamp is unknown
12144
12145 @item tb
12146 time base of the input video
12147 @end table
12148
12149 @subsection Examples
12150
12151 @itemize
12152 @item
12153 Set the hue to 90 degrees and the saturation to 1.0:
12154 @example
12155 hue=h=90:s=1
12156 @end example
12157
12158 @item
12159 Same command but expressing the hue in radians:
12160 @example
12161 hue=H=PI/2:s=1
12162 @end example
12163
12164 @item
12165 Rotate hue and make the saturation swing between 0
12166 and 2 over a period of 1 second:
12167 @example
12168 hue="H=2*PI*t: s=sin(2*PI*t)+1"
12169 @end example
12170
12171 @item
12172 Apply a 3 seconds saturation fade-in effect starting at 0:
12173 @example
12174 hue="s=min(t/3\,1)"
12175 @end example
12176
12177 The general fade-in expression can be written as:
12178 @example
12179 hue="s=min(0\, max((t-START)/DURATION\, 1))"
12180 @end example
12181
12182 @item
12183 Apply a 3 seconds saturation fade-out effect starting at 5 seconds:
12184 @example
12185 hue="s=max(0\, min(1\, (8-t)/3))"
12186 @end example
12187
12188 The general fade-out expression can be written as:
12189 @example
12190 hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
12191 @end example
12192
12193 @end itemize
12194
12195 @subsection Commands
12196
12197 This filter supports the following commands:
12198 @table @option
12199 @item b
12200 @item s
12201 @item h
12202 @item H
12203 Modify the hue and/or the saturation and/or brightness of the input video.
12204 The command accepts the same syntax of the corresponding option.
12205
12206 If the specified expression is not valid, it is kept at its current
12207 value.
12208 @end table
12209
12210 @section hysteresis
12211
12212 Grow first stream into second stream by connecting components.
12213 This makes it possible to build more robust edge masks.
12214
12215 This filter accepts the following options:
12216
12217 @table @option
12218 @item planes
12219 Set which planes will be processed as bitmap, unprocessed planes will be
12220 copied from first stream.
12221 By default value 0xf, all planes will be processed.
12222
12223 @item threshold
12224 Set threshold which is used in filtering. If pixel component value is higher than
12225 this value filter algorithm for connecting components is activated.
12226 By default value is 0.
12227 @end table
12228
12229 @section idet
12230
12231 Detect video interlacing type.
12232
12233 This filter tries to detect if the input frames are interlaced, progressive,
12234 top or bottom field first. It will also try to detect fields that are
12235 repeated between adjacent frames (a sign of telecine).
12236
12237 Single frame detection considers only immediately adjacent frames when classifying each frame.
12238 Multiple frame detection incorporates the classification history of previous frames.
12239
12240 The filter will log these metadata values:
12241
12242 @table @option
12243 @item single.current_frame
12244 Detected type of current frame using single-frame detection. One of:
12245 ``tff'' (top field first), ``bff'' (bottom field first),
12246 ``progressive'', or ``undetermined''
12247
12248 @item single.tff
12249 Cumulative number of frames detected as top field first using single-frame detection.
12250
12251 @item multiple.tff
12252 Cumulative number of frames detected as top field first using multiple-frame detection.
12253
12254 @item single.bff
12255 Cumulative number of frames detected as bottom field first using single-frame detection.
12256
12257 @item multiple.current_frame
12258 Detected type of current frame using multiple-frame detection. One of:
12259 ``tff'' (top field first), ``bff'' (bottom field first),
12260 ``progressive'', or ``undetermined''
12261
12262 @item multiple.bff
12263 Cumulative number of frames detected as bottom field first using multiple-frame detection.
12264
12265 @item single.progressive
12266 Cumulative number of frames detected as progressive using single-frame detection.
12267
12268 @item multiple.progressive
12269 Cumulative number of frames detected as progressive using multiple-frame detection.
12270
12271 @item single.undetermined
12272 Cumulative number of frames that could not be classified using single-frame detection.
12273
12274 @item multiple.undetermined
12275 Cumulative number of frames that could not be classified using multiple-frame detection.
12276
12277 @item repeated.current_frame
12278 Which field in the current frame is repeated from the last. One of ``neither'', ``top'', or ``bottom''.
12279
12280 @item repeated.neither
12281 Cumulative number of frames with no repeated field.
12282
12283 @item repeated.top
12284 Cumulative number of frames with the top field repeated from the previous frame's top field.
12285
12286 @item repeated.bottom
12287 Cumulative number of frames with the bottom field repeated from the previous frame's bottom field.
12288 @end table
12289
12290 The filter accepts the following options:
12291
12292 @table @option
12293 @item intl_thres
12294 Set interlacing threshold.
12295 @item prog_thres
12296 Set progressive threshold.
12297 @item rep_thres
12298 Threshold for repeated field detection.
12299 @item half_life
12300 Number of frames after which a given frame's contribution to the
12301 statistics is halved (i.e., it contributes only 0.5 to its
12302 classification). The default of 0 means that all frames seen are given
12303 full weight of 1.0 forever.
12304 @item analyze_interlaced_flag
12305 When this is not 0 then idet will use the specified number of frames to determine
12306 if the interlaced flag is accurate, it will not count undetermined frames.
12307 If the flag is found to be accurate it will be used without any further
12308 computations, if it is found to be inaccurate it will be cleared without any
12309 further computations. This allows inserting the idet filter as a low computational
12310 method to clean up the interlaced flag
12311 @end table
12312
12313 @section il
12314
12315 Deinterleave or interleave fields.
12316
12317 This filter allows one to process interlaced images fields without
12318 deinterlacing them. Deinterleaving splits the input frame into 2
12319 fields (so called half pictures). Odd lines are moved to the top
12320 half of the output image, even lines to the bottom half.
12321 You can process (filter) them independently and then re-interleave them.
12322
12323 The filter accepts the following options:
12324
12325 @table @option
12326 @item luma_mode, l
12327 @item chroma_mode, c
12328 @item alpha_mode, a
12329 Available values for @var{luma_mode}, @var{chroma_mode} and
12330 @var{alpha_mode} are:
12331
12332 @table @samp
12333 @item none
12334 Do nothing.
12335
12336 @item deinterleave, d
12337 Deinterleave fields, placing one above the other.
12338
12339 @item interleave, i
12340 Interleave fields. Reverse the effect of deinterleaving.
12341 @end table
12342 Default value is @code{none}.
12343
12344 @item luma_swap, ls
12345 @item chroma_swap, cs
12346 @item alpha_swap, as
12347 Swap luma/chroma/alpha fields. Exchange even & odd lines. Default value is @code{0}.
12348 @end table
12349
12350 @subsection Commands
12351
12352 This filter supports the all above options as @ref{commands}.
12353
12354 @section inflate
12355
12356 Apply inflate effect to the video.
12357
12358 This filter replaces the pixel by the local(3x3) average by taking into account
12359 only values higher than the pixel.
12360
12361 It accepts the following options:
12362
12363 @table @option
12364 @item threshold0
12365 @item threshold1
12366 @item threshold2
12367 @item threshold3
12368 Limit the maximum change for each plane, default is 65535.
12369 If 0, plane will remain unchanged.
12370 @end table
12371
12372 @subsection Commands
12373
12374 This filter supports the all above options as @ref{commands}.
12375
12376 @section interlace
12377
12378 Simple interlacing filter from progressive contents. This interleaves upper (or
12379 lower) lines from odd frames with lower (or upper) lines from even frames,
12380 halving the frame rate and preserving image height.
12381
12382 @example
12383    Original        Original             New Frame
12384    Frame 'j'      Frame 'j+1'             (tff)
12385   ==========      ===========       ==================
12386     Line 0  -------------------->    Frame 'j' Line 0
12387     Line 1          Line 1  ---->   Frame 'j+1' Line 1
12388     Line 2 --------------------->    Frame 'j' Line 2
12389     Line 3          Line 3  ---->   Frame 'j+1' Line 3
12390      ...             ...                   ...
12391 New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
12392 @end example
12393
12394 It accepts the following optional parameters:
12395
12396 @table @option
12397 @item scan
12398 This determines whether the interlaced frame is taken from the even
12399 (tff - default) or odd (bff) lines of the progressive frame.
12400
12401 @item lowpass
12402 Vertical lowpass filter to avoid twitter interlacing and
12403 reduce moire patterns.
12404
12405 @table @samp
12406 @item 0, off
12407 Disable vertical lowpass filter
12408
12409 @item 1, linear
12410 Enable linear filter (default)
12411
12412 @item 2, complex
12413 Enable complex filter. This will slightly less reduce twitter and moire
12414 but better retain detail and subjective sharpness impression.
12415
12416 @end table
12417 @end table
12418
12419 @section kerndeint
12420
12421 Deinterlace input video by applying Donald Graft's adaptive kernel
12422 deinterling. Work on interlaced parts of a video to produce
12423 progressive frames.
12424
12425 The description of the accepted parameters follows.
12426
12427 @table @option
12428 @item thresh
12429 Set the threshold which affects the filter's tolerance when
12430 determining if a pixel line must be processed. It must be an integer
12431 in the range [0,255] and defaults to 10. A value of 0 will result in
12432 applying the process on every pixels.
12433
12434 @item map
12435 Paint pixels exceeding the threshold value to white if set to 1.
12436 Default is 0.
12437
12438 @item order
12439 Set the fields order. Swap fields if set to 1, leave fields alone if
12440 0. Default is 0.
12441
12442 @item sharp
12443 Enable additional sharpening if set to 1. Default is 0.
12444
12445 @item twoway
12446 Enable twoway sharpening if set to 1. Default is 0.
12447 @end table
12448
12449 @subsection Examples
12450
12451 @itemize
12452 @item
12453 Apply default values:
12454 @example
12455 kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
12456 @end example
12457
12458 @item
12459 Enable additional sharpening:
12460 @example
12461 kerndeint=sharp=1
12462 @end example
12463
12464 @item
12465 Paint processed pixels in white:
12466 @example
12467 kerndeint=map=1
12468 @end example
12469 @end itemize
12470
12471 @section lagfun
12472
12473 Slowly update darker pixels.
12474
12475 This filter makes short flashes of light appear longer.
12476 This filter accepts the following options:
12477
12478 @table @option
12479 @item decay
12480 Set factor for decaying. Default is .95. Allowed range is from 0 to 1.
12481
12482 @item planes
12483 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
12484 @end table
12485
12486 @section lenscorrection
12487
12488 Correct radial lens distortion
12489
12490 This filter can be used to correct for radial distortion as can result from the use
12491 of wide angle lenses, and thereby re-rectify the image. To find the right parameters
12492 one can use tools available for example as part of opencv or simply trial-and-error.
12493 To use opencv use the calibration sample (under samples/cpp) from the opencv sources
12494 and extract the k1 and k2 coefficients from the resulting matrix.
12495
12496 Note that effectively the same filter is available in the open-source tools Krita and
12497 Digikam from the KDE project.
12498
12499 In contrast to the @ref{vignette} filter, which can also be used to compensate lens errors,
12500 this filter corrects the distortion of the image, whereas @ref{vignette} corrects the
12501 brightness distribution, so you may want to use both filters together in certain
12502 cases, though you will have to take care of ordering, i.e. whether vignetting should
12503 be applied before or after lens correction.
12504
12505 @subsection Options
12506
12507 The filter accepts the following options:
12508
12509 @table @option
12510 @item cx
12511 Relative x-coordinate of the focal point of the image, and thereby the center of the
12512 distortion. This value has a range [0,1] and is expressed as fractions of the image
12513 width. Default is 0.5.
12514 @item cy
12515 Relative y-coordinate of the focal point of the image, and thereby the center of the
12516 distortion. This value has a range [0,1] and is expressed as fractions of the image
12517 height. Default is 0.5.
12518 @item k1
12519 Coefficient of the quadratic correction term. This value has a range [-1,1]. 0 means
12520 no correction. Default is 0.
12521 @item k2
12522 Coefficient of the double quadratic correction term. This value has a range [-1,1].
12523 0 means no correction. Default is 0.
12524 @end table
12525
12526 The formula that generates the correction is:
12527
12528 @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)
12529
12530 where @var{r_0} is halve of the image diagonal and @var{r_src} and @var{r_tgt} are the
12531 distances from the focal point in the source and target images, respectively.
12532
12533 @section lensfun
12534
12535 Apply lens correction via the lensfun library (@url{http://lensfun.sourceforge.net/}).
12536
12537 The @code{lensfun} filter requires the camera make, camera model, and lens model
12538 to apply the lens correction. The filter will load the lensfun database and
12539 query it to find the corresponding camera and lens entries in the database. As
12540 long as these entries can be found with the given options, the filter can
12541 perform corrections on frames. Note that incomplete strings will result in the
12542 filter choosing the best match with the given options, and the filter will
12543 output the chosen camera and lens models (logged with level "info"). You must
12544 provide the make, camera model, and lens model as they are required.
12545
12546 The filter accepts the following options:
12547
12548 @table @option
12549 @item make
12550 The make of the camera (for example, "Canon"). This option is required.
12551
12552 @item model
12553 The model of the camera (for example, "Canon EOS 100D"). This option is
12554 required.
12555
12556 @item lens_model
12557 The model of the lens (for example, "Canon EF-S 18-55mm f/3.5-5.6 IS STM"). This
12558 option is required.
12559
12560 @item mode
12561 The type of correction to apply. The following values are valid options:
12562
12563 @table @samp
12564 @item vignetting
12565 Enables fixing lens vignetting.
12566
12567 @item geometry
12568 Enables fixing lens geometry. This is the default.
12569
12570 @item subpixel
12571 Enables fixing chromatic aberrations.
12572
12573 @item vig_geo
12574 Enables fixing lens vignetting and lens geometry.
12575
12576 @item vig_subpixel
12577 Enables fixing lens vignetting and chromatic aberrations.
12578
12579 @item distortion
12580 Enables fixing both lens geometry and chromatic aberrations.
12581
12582 @item all
12583 Enables all possible corrections.
12584
12585 @end table
12586 @item focal_length
12587 The focal length of the image/video (zoom; expected constant for video). For
12588 example, a 18--55mm lens has focal length range of [18--55], so a value in that
12589 range should be chosen when using that lens. Default 18.
12590
12591 @item aperture
12592 The aperture of the image/video (expected constant for video). Note that
12593 aperture is only used for vignetting correction. Default 3.5.
12594
12595 @item focus_distance
12596 The focus distance of the image/video (expected constant for video). Note that
12597 focus distance is only used for vignetting and only slightly affects the
12598 vignetting correction process. If unknown, leave it at the default value (which
12599 is 1000).
12600
12601 @item scale
12602 The scale factor which is applied after transformation. After correction the
12603 video is no longer necessarily rectangular. This parameter controls how much of
12604 the resulting image is visible. The value 0 means that a value will be chosen
12605 automatically such that there is little or no unmapped area in the output
12606 image. 1.0 means that no additional scaling is done. Lower values may result
12607 in more of the corrected image being visible, while higher values may avoid
12608 unmapped areas in the output.
12609
12610 @item target_geometry
12611 The target geometry of the output image/video. The following values are valid
12612 options:
12613
12614 @table @samp
12615 @item rectilinear (default)
12616 @item fisheye
12617 @item panoramic
12618 @item equirectangular
12619 @item fisheye_orthographic
12620 @item fisheye_stereographic
12621 @item fisheye_equisolid
12622 @item fisheye_thoby
12623 @end table
12624 @item reverse
12625 Apply the reverse of image correction (instead of correcting distortion, apply
12626 it).
12627
12628 @item interpolation
12629 The type of interpolation used when correcting distortion. The following values
12630 are valid options:
12631
12632 @table @samp
12633 @item nearest
12634 @item linear (default)
12635 @item lanczos
12636 @end table
12637 @end table
12638
12639 @subsection Examples
12640
12641 @itemize
12642 @item
12643 Apply lens correction with make "Canon", camera model "Canon EOS 100D", and lens
12644 model "Canon EF-S 18-55mm f/3.5-5.6 IS STM" with focal length of "18" and
12645 aperture of "8.0".
12646
12647 @example
12648 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
12649 @end example
12650
12651 @item
12652 Apply the same as before, but only for the first 5 seconds of video.
12653
12654 @example
12655 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
12656 @end example
12657
12658 @end itemize
12659
12660 @section libvmaf
12661
12662 Obtain the VMAF (Video Multi-Method Assessment Fusion)
12663 score between two input videos.
12664
12665 The obtained VMAF score is printed through the logging system.
12666
12667 It requires Netflix's vmaf library (libvmaf) as a pre-requisite.
12668 After installing the library it can be enabled using:
12669 @code{./configure --enable-libvmaf --enable-version3}.
12670 If no model path is specified it uses the default model: @code{vmaf_v0.6.1.pkl}.
12671
12672 The filter has following options:
12673
12674 @table @option
12675 @item model_path
12676 Set the model path which is to be used for SVM.
12677 Default value: @code{"/usr/local/share/model/vmaf_v0.6.1.pkl"}
12678
12679 @item log_path
12680 Set the file path to be used to store logs.
12681
12682 @item log_fmt
12683 Set the format of the log file (xml or json).
12684
12685 @item enable_transform
12686 This option can enable/disable the @code{score_transform} applied to the final predicted VMAF score,
12687 if you have specified score_transform option in the input parameter file passed to @code{run_vmaf_training.py}
12688 Default value: @code{false}
12689
12690 @item phone_model
12691 Invokes the phone model which will generate VMAF scores higher than in the
12692 regular model, which is more suitable for laptop, TV, etc. viewing conditions.
12693 Default value: @code{false}
12694
12695 @item psnr
12696 Enables computing psnr along with vmaf.
12697 Default value: @code{false}
12698
12699 @item ssim
12700 Enables computing ssim along with vmaf.
12701 Default value: @code{false}
12702
12703 @item ms_ssim
12704 Enables computing ms_ssim along with vmaf.
12705 Default value: @code{false}
12706
12707 @item pool
12708 Set the pool method to be used for computing vmaf.
12709 Options are @code{min}, @code{harmonic_mean} or @code{mean} (default).
12710
12711 @item n_threads
12712 Set number of threads to be used when computing vmaf.
12713 Default value: @code{0}, which makes use of all available logical processors.
12714
12715 @item n_subsample
12716 Set interval for frame subsampling used when computing vmaf.
12717 Default value: @code{1}
12718
12719 @item enable_conf_interval
12720 Enables confidence interval.
12721 Default value: @code{false}
12722 @end table
12723
12724 This filter also supports the @ref{framesync} options.
12725
12726 @subsection Examples
12727 @itemize
12728 @item
12729 On the below examples the input file @file{main.mpg} being processed is
12730 compared with the reference file @file{ref.mpg}.
12731
12732 @example
12733 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf -f null -
12734 @end example
12735
12736 @item
12737 Example with options:
12738 @example
12739 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf="psnr=1:log_fmt=json" -f null -
12740 @end example
12741
12742 @item
12743 Example with options and different containers:
12744 @example
12745 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 -
12746 @end example
12747 @end itemize
12748
12749 @section limiter
12750
12751 Limits the pixel components values to the specified range [min, max].
12752
12753 The filter accepts the following options:
12754
12755 @table @option
12756 @item min
12757 Lower bound. Defaults to the lowest allowed value for the input.
12758
12759 @item max
12760 Upper bound. Defaults to the highest allowed value for the input.
12761
12762 @item planes
12763 Specify which planes will be processed. Defaults to all available.
12764 @end table
12765
12766 @section loop
12767
12768 Loop video frames.
12769
12770 The filter accepts the following options:
12771
12772 @table @option
12773 @item loop
12774 Set the number of loops. Setting this value to -1 will result in infinite loops.
12775 Default is 0.
12776
12777 @item size
12778 Set maximal size in number of frames. Default is 0.
12779
12780 @item start
12781 Set first frame of loop. Default is 0.
12782 @end table
12783
12784 @subsection Examples
12785
12786 @itemize
12787 @item
12788 Loop single first frame infinitely:
12789 @example
12790 loop=loop=-1:size=1:start=0
12791 @end example
12792
12793 @item
12794 Loop single first frame 10 times:
12795 @example
12796 loop=loop=10:size=1:start=0
12797 @end example
12798
12799 @item
12800 Loop 10 first frames 5 times:
12801 @example
12802 loop=loop=5:size=10:start=0
12803 @end example
12804 @end itemize
12805
12806 @section lut1d
12807
12808 Apply a 1D LUT to an input video.
12809
12810 The filter accepts the following options:
12811
12812 @table @option
12813 @item file
12814 Set the 1D LUT file name.
12815
12816 Currently supported formats:
12817 @table @samp
12818 @item cube
12819 Iridas
12820 @item csp
12821 cineSpace
12822 @end table
12823
12824 @item interp
12825 Select interpolation mode.
12826
12827 Available values are:
12828
12829 @table @samp
12830 @item nearest
12831 Use values from the nearest defined point.
12832 @item linear
12833 Interpolate values using the linear interpolation.
12834 @item cosine
12835 Interpolate values using the cosine interpolation.
12836 @item cubic
12837 Interpolate values using the cubic interpolation.
12838 @item spline
12839 Interpolate values using the spline interpolation.
12840 @end table
12841 @end table
12842
12843 @anchor{lut3d}
12844 @section lut3d
12845
12846 Apply a 3D LUT to an input video.
12847
12848 The filter accepts the following options:
12849
12850 @table @option
12851 @item file
12852 Set the 3D LUT file name.
12853
12854 Currently supported formats:
12855 @table @samp
12856 @item 3dl
12857 AfterEffects
12858 @item cube
12859 Iridas
12860 @item dat
12861 DaVinci
12862 @item m3d
12863 Pandora
12864 @item csp
12865 cineSpace
12866 @end table
12867 @item interp
12868 Select interpolation mode.
12869
12870 Available values are:
12871
12872 @table @samp
12873 @item nearest
12874 Use values from the nearest defined point.
12875 @item trilinear
12876 Interpolate values using the 8 points defining a cube.
12877 @item tetrahedral
12878 Interpolate values using a tetrahedron.
12879 @end table
12880 @end table
12881
12882 @section lumakey
12883
12884 Turn certain luma values into transparency.
12885
12886 The filter accepts the following options:
12887
12888 @table @option
12889 @item threshold
12890 Set the luma which will be used as base for transparency.
12891 Default value is @code{0}.
12892
12893 @item tolerance
12894 Set the range of luma values to be keyed out.
12895 Default value is @code{0.01}.
12896
12897 @item softness
12898 Set the range of softness. Default value is @code{0}.
12899 Use this to control gradual transition from zero to full transparency.
12900 @end table
12901
12902 @subsection Commands
12903 This filter supports same @ref{commands} as options.
12904 The command accepts the same syntax of the corresponding option.
12905
12906 If the specified expression is not valid, it is kept at its current
12907 value.
12908
12909 @section lut, lutrgb, lutyuv
12910
12911 Compute a look-up table for binding each pixel component input value
12912 to an output value, and apply it to the input video.
12913
12914 @var{lutyuv} applies a lookup table to a YUV input video, @var{lutrgb}
12915 to an RGB input video.
12916
12917 These filters accept the following parameters:
12918 @table @option
12919 @item c0
12920 set first pixel component expression
12921 @item c1
12922 set second pixel component expression
12923 @item c2
12924 set third pixel component expression
12925 @item c3
12926 set fourth pixel component expression, corresponds to the alpha component
12927
12928 @item r
12929 set red component expression
12930 @item g
12931 set green component expression
12932 @item b
12933 set blue component expression
12934 @item a
12935 alpha component expression
12936
12937 @item y
12938 set Y/luminance component expression
12939 @item u
12940 set U/Cb component expression
12941 @item v
12942 set V/Cr component expression
12943 @end table
12944
12945 Each of them specifies the expression to use for computing the lookup table for
12946 the corresponding pixel component values.
12947
12948 The exact component associated to each of the @var{c*} options depends on the
12949 format in input.
12950
12951 The @var{lut} filter requires either YUV or RGB pixel formats in input,
12952 @var{lutrgb} requires RGB pixel formats in input, and @var{lutyuv} requires YUV.
12953
12954 The expressions can contain the following constants and functions:
12955
12956 @table @option
12957 @item w
12958 @item h
12959 The input width and height.
12960
12961 @item val
12962 The input value for the pixel component.
12963
12964 @item clipval
12965 The input value, clipped to the @var{minval}-@var{maxval} range.
12966
12967 @item maxval
12968 The maximum value for the pixel component.
12969
12970 @item minval
12971 The minimum value for the pixel component.
12972
12973 @item negval
12974 The negated value for the pixel component value, clipped to the
12975 @var{minval}-@var{maxval} range; it corresponds to the expression
12976 "maxval-clipval+minval".
12977
12978 @item clip(val)
12979 The computed value in @var{val}, clipped to the
12980 @var{minval}-@var{maxval} range.
12981
12982 @item gammaval(gamma)
12983 The computed gamma correction value of the pixel component value,
12984 clipped to the @var{minval}-@var{maxval} range. It corresponds to the
12985 expression
12986 "pow((clipval-minval)/(maxval-minval)\,@var{gamma})*(maxval-minval)+minval"
12987
12988 @end table
12989
12990 All expressions default to "val".
12991
12992 @subsection Examples
12993
12994 @itemize
12995 @item
12996 Negate input video:
12997 @example
12998 lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
12999 lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
13000 @end example
13001
13002 The above is the same as:
13003 @example
13004 lutrgb="r=negval:g=negval:b=negval"
13005 lutyuv="y=negval:u=negval:v=negval"
13006 @end example
13007
13008 @item
13009 Negate luminance:
13010 @example
13011 lutyuv=y=negval
13012 @end example
13013
13014 @item
13015 Remove chroma components, turning the video into a graytone image:
13016 @example
13017 lutyuv="u=128:v=128"
13018 @end example
13019
13020 @item
13021 Apply a luma burning effect:
13022 @example
13023 lutyuv="y=2*val"
13024 @end example
13025
13026 @item
13027 Remove green and blue components:
13028 @example
13029 lutrgb="g=0:b=0"
13030 @end example
13031
13032 @item
13033 Set a constant alpha channel value on input:
13034 @example
13035 format=rgba,lutrgb=a="maxval-minval/2"
13036 @end example
13037
13038 @item
13039 Correct luminance gamma by a factor of 0.5:
13040 @example
13041 lutyuv=y=gammaval(0.5)
13042 @end example
13043
13044 @item
13045 Discard least significant bits of luma:
13046 @example
13047 lutyuv=y='bitand(val, 128+64+32)'
13048 @end example
13049
13050 @item
13051 Technicolor like effect:
13052 @example
13053 lutyuv=u='(val-maxval/2)*2+maxval/2':v='(val-maxval/2)*2+maxval/2'
13054 @end example
13055 @end itemize
13056
13057 @section lut2, tlut2
13058
13059 The @code{lut2} filter takes two input streams and outputs one
13060 stream.
13061
13062 The @code{tlut2} (time lut2) filter takes two consecutive frames
13063 from one single stream.
13064
13065 This filter accepts the following parameters:
13066 @table @option
13067 @item c0
13068 set first pixel component expression
13069 @item c1
13070 set second pixel component expression
13071 @item c2
13072 set third pixel component expression
13073 @item c3
13074 set fourth pixel component expression, corresponds to the alpha component
13075
13076 @item d
13077 set output bit depth, only available for @code{lut2} filter. By default is 0,
13078 which means bit depth is automatically picked from first input format.
13079 @end table
13080
13081 Each of them specifies the expression to use for computing the lookup table for
13082 the corresponding pixel component values.
13083
13084 The exact component associated to each of the @var{c*} options depends on the
13085 format in inputs.
13086
13087 The expressions can contain the following constants:
13088
13089 @table @option
13090 @item w
13091 @item h
13092 The input width and height.
13093
13094 @item x
13095 The first input value for the pixel component.
13096
13097 @item y
13098 The second input value for the pixel component.
13099
13100 @item bdx
13101 The first input video bit depth.
13102
13103 @item bdy
13104 The second input video bit depth.
13105 @end table
13106
13107 All expressions default to "x".
13108
13109 @subsection Examples
13110
13111 @itemize
13112 @item
13113 Highlight differences between two RGB video streams:
13114 @example
13115 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)'
13116 @end example
13117
13118 @item
13119 Highlight differences between two YUV video streams:
13120 @example
13121 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)'
13122 @end example
13123
13124 @item
13125 Show max difference between two video streams:
13126 @example
13127 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)))'
13128 @end example
13129 @end itemize
13130
13131 @section maskedclamp
13132
13133 Clamp the first input stream with the second input and third input stream.
13134
13135 Returns the value of first stream to be between second input
13136 stream - @code{undershoot} and third input stream + @code{overshoot}.
13137
13138 This filter accepts the following options:
13139 @table @option
13140 @item undershoot
13141 Default value is @code{0}.
13142
13143 @item overshoot
13144 Default value is @code{0}.
13145
13146 @item planes
13147 Set which planes will be processed as bitmap, unprocessed planes will be
13148 copied from first stream.
13149 By default value 0xf, all planes will be processed.
13150 @end table
13151
13152 @section maskedmax
13153
13154 Merge the second and third input stream into output stream using absolute differences
13155 between second input stream and first input stream and absolute difference between
13156 third input stream and first input stream. The picked value will be from second input
13157 stream if second absolute difference is greater than first one or from third input stream
13158 otherwise.
13159
13160 This filter accepts the following options:
13161 @table @option
13162 @item planes
13163 Set which planes will be processed as bitmap, unprocessed planes will be
13164 copied from first stream.
13165 By default value 0xf, all planes will be processed.
13166 @end table
13167
13168 @section maskedmerge
13169
13170 Merge the first input stream with the second input stream using per pixel
13171 weights in the third input stream.
13172
13173 A value of 0 in the third stream pixel component means that pixel component
13174 from first stream is returned unchanged, while maximum value (eg. 255 for
13175 8-bit videos) means that pixel component from second stream is returned
13176 unchanged. Intermediate values define the amount of merging between both
13177 input stream's pixel components.
13178
13179 This filter accepts the following options:
13180 @table @option
13181 @item planes
13182 Set which planes will be processed as bitmap, unprocessed planes will be
13183 copied from first stream.
13184 By default value 0xf, all planes will be processed.
13185 @end table
13186
13187 @section maskedmin
13188
13189 Merge the second and third input stream into output stream using absolute differences
13190 between second input stream and first input stream and absolute difference between
13191 third input stream and first input stream. The picked value will be from second input
13192 stream if second absolute difference is less than first one or from third input stream
13193 otherwise.
13194
13195 This filter accepts the following options:
13196 @table @option
13197 @item planes
13198 Set which planes will be processed as bitmap, unprocessed planes will be
13199 copied from first stream.
13200 By default value 0xf, all planes will be processed.
13201 @end table
13202
13203 @section maskfun
13204 Create mask from input video.
13205
13206 For example it is useful to create motion masks after @code{tblend} filter.
13207
13208 This filter accepts the following options:
13209
13210 @table @option
13211 @item low
13212 Set low threshold. Any pixel component lower or exact than this value will be set to 0.
13213
13214 @item high
13215 Set high threshold. Any pixel component higher than this value will be set to max value
13216 allowed for current pixel format.
13217
13218 @item planes
13219 Set planes to filter, by default all available planes are filtered.
13220
13221 @item fill
13222 Fill all frame pixels with this value.
13223
13224 @item sum
13225 Set max average pixel value for frame. If sum of all pixel components is higher that this
13226 average, output frame will be completely filled with value set by @var{fill} option.
13227 Typically useful for scene changes when used in combination with @code{tblend} filter.
13228 @end table
13229
13230 @section mcdeint
13231
13232 Apply motion-compensation deinterlacing.
13233
13234 It needs one field per frame as input and must thus be used together
13235 with yadif=1/3 or equivalent.
13236
13237 This filter accepts the following options:
13238 @table @option
13239 @item mode
13240 Set the deinterlacing mode.
13241
13242 It accepts one of the following values:
13243 @table @samp
13244 @item fast
13245 @item medium
13246 @item slow
13247 use iterative motion estimation
13248 @item extra_slow
13249 like @samp{slow}, but use multiple reference frames.
13250 @end table
13251 Default value is @samp{fast}.
13252
13253 @item parity
13254 Set the picture field parity assumed for the input video. It must be
13255 one of the following values:
13256
13257 @table @samp
13258 @item 0, tff
13259 assume top field first
13260 @item 1, bff
13261 assume bottom field first
13262 @end table
13263
13264 Default value is @samp{bff}.
13265
13266 @item qp
13267 Set per-block quantization parameter (QP) used by the internal
13268 encoder.
13269
13270 Higher values should result in a smoother motion vector field but less
13271 optimal individual vectors. Default value is 1.
13272 @end table
13273
13274 @section median
13275
13276 Pick median pixel from certain rectangle defined by radius.
13277
13278 This filter accepts the following options:
13279
13280 @table @option
13281 @item radius
13282 Set horizontal radius size. Default value is @code{1}.
13283 Allowed range is integer from 1 to 127.
13284
13285 @item planes
13286 Set which planes to process. Default is @code{15}, which is all available planes.
13287
13288 @item radiusV
13289 Set vertical radius size. Default value is @code{0}.
13290 Allowed range is integer from 0 to 127.
13291 If it is 0, value will be picked from horizontal @code{radius} option.
13292 @end table
13293
13294 @subsection Commands
13295 This filter supports same @ref{commands} as options.
13296 The command accepts the same syntax of the corresponding option.
13297
13298 If the specified expression is not valid, it is kept at its current
13299 value.
13300
13301 @section mergeplanes
13302
13303 Merge color channel components from several video streams.
13304
13305 The filter accepts up to 4 input streams, and merge selected input
13306 planes to the output video.
13307
13308 This filter accepts the following options:
13309 @table @option
13310 @item mapping
13311 Set input to output plane mapping. Default is @code{0}.
13312
13313 The mappings is specified as a bitmap. It should be specified as a
13314 hexadecimal number in the form 0xAa[Bb[Cc[Dd]]]. 'Aa' describes the
13315 mapping for the first plane of the output stream. 'A' sets the number of
13316 the input stream to use (from 0 to 3), and 'a' the plane number of the
13317 corresponding input to use (from 0 to 3). The rest of the mappings is
13318 similar, 'Bb' describes the mapping for the output stream second
13319 plane, 'Cc' describes the mapping for the output stream third plane and
13320 'Dd' describes the mapping for the output stream fourth plane.
13321
13322 @item format
13323 Set output pixel format. Default is @code{yuva444p}.
13324 @end table
13325
13326 @subsection Examples
13327
13328 @itemize
13329 @item
13330 Merge three gray video streams of same width and height into single video stream:
13331 @example
13332 [a0][a1][a2]mergeplanes=0x001020:yuv444p
13333 @end example
13334
13335 @item
13336 Merge 1st yuv444p stream and 2nd gray video stream into yuva444p video stream:
13337 @example
13338 [a0][a1]mergeplanes=0x00010210:yuva444p
13339 @end example
13340
13341 @item
13342 Swap Y and A plane in yuva444p stream:
13343 @example
13344 format=yuva444p,mergeplanes=0x03010200:yuva444p
13345 @end example
13346
13347 @item
13348 Swap U and V plane in yuv420p stream:
13349 @example
13350 format=yuv420p,mergeplanes=0x000201:yuv420p
13351 @end example
13352
13353 @item
13354 Cast a rgb24 clip to yuv444p:
13355 @example
13356 format=rgb24,mergeplanes=0x000102:yuv444p
13357 @end example
13358 @end itemize
13359
13360 @section mestimate
13361
13362 Estimate and export motion vectors using block matching algorithms.
13363 Motion vectors are stored in frame side data to be used by other filters.
13364
13365 This filter accepts the following options:
13366 @table @option
13367 @item method
13368 Specify the motion estimation method. Accepts one of the following values:
13369
13370 @table @samp
13371 @item esa
13372 Exhaustive search algorithm.
13373 @item tss
13374 Three step search algorithm.
13375 @item tdls
13376 Two dimensional logarithmic search algorithm.
13377 @item ntss
13378 New three step search algorithm.
13379 @item fss
13380 Four step search algorithm.
13381 @item ds
13382 Diamond search algorithm.
13383 @item hexbs
13384 Hexagon-based search algorithm.
13385 @item epzs
13386 Enhanced predictive zonal search algorithm.
13387 @item umh
13388 Uneven multi-hexagon search algorithm.
13389 @end table
13390 Default value is @samp{esa}.
13391
13392 @item mb_size
13393 Macroblock size. Default @code{16}.
13394
13395 @item search_param
13396 Search parameter. Default @code{7}.
13397 @end table
13398
13399 @section midequalizer
13400
13401 Apply Midway Image Equalization effect using two video streams.
13402
13403 Midway Image Equalization adjusts a pair of images to have the same
13404 histogram, while maintaining their dynamics as much as possible. It's
13405 useful for e.g. matching exposures from a pair of stereo cameras.
13406
13407 This filter has two inputs and one output, which must be of same pixel format, but
13408 may be of different sizes. The output of filter is first input adjusted with
13409 midway histogram of both inputs.
13410
13411 This filter accepts the following option:
13412
13413 @table @option
13414 @item planes
13415 Set which planes to process. Default is @code{15}, which is all available planes.
13416 @end table
13417
13418 @section minterpolate
13419
13420 Convert the video to specified frame rate using motion interpolation.
13421
13422 This filter accepts the following options:
13423 @table @option
13424 @item fps
13425 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}.
13426
13427 @item mi_mode
13428 Motion interpolation mode. Following values are accepted:
13429 @table @samp
13430 @item dup
13431 Duplicate previous or next frame for interpolating new ones.
13432 @item blend
13433 Blend source frames. Interpolated frame is mean of previous and next frames.
13434 @item mci
13435 Motion compensated interpolation. Following options are effective when this mode is selected:
13436
13437 @table @samp
13438 @item mc_mode
13439 Motion compensation mode. Following values are accepted:
13440 @table @samp
13441 @item obmc
13442 Overlapped block motion compensation.
13443 @item aobmc
13444 Adaptive overlapped block motion compensation. Window weighting coefficients are controlled adaptively according to the reliabilities of the neighboring motion vectors to reduce oversmoothing.
13445 @end table
13446 Default mode is @samp{obmc}.
13447
13448 @item me_mode
13449 Motion estimation mode. Following values are accepted:
13450 @table @samp
13451 @item bidir
13452 Bidirectional motion estimation. Motion vectors are estimated for each source frame in both forward and backward directions.
13453 @item bilat
13454 Bilateral motion estimation. Motion vectors are estimated directly for interpolated frame.
13455 @end table
13456 Default mode is @samp{bilat}.
13457
13458 @item me
13459 The algorithm to be used for motion estimation. Following values are accepted:
13460 @table @samp
13461 @item esa
13462 Exhaustive search algorithm.
13463 @item tss
13464 Three step search algorithm.
13465 @item tdls
13466 Two dimensional logarithmic search algorithm.
13467 @item ntss
13468 New three step search algorithm.
13469 @item fss
13470 Four step search algorithm.
13471 @item ds
13472 Diamond search algorithm.
13473 @item hexbs
13474 Hexagon-based search algorithm.
13475 @item epzs
13476 Enhanced predictive zonal search algorithm.
13477 @item umh
13478 Uneven multi-hexagon search algorithm.
13479 @end table
13480 Default algorithm is @samp{epzs}.
13481
13482 @item mb_size
13483 Macroblock size. Default @code{16}.
13484
13485 @item search_param
13486 Motion estimation search parameter. Default @code{32}.
13487
13488 @item vsbmc
13489 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).
13490 @end table
13491 @end table
13492
13493 @item scd
13494 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:
13495 @table @samp
13496 @item none
13497 Disable scene change detection.
13498 @item fdiff
13499 Frame difference. Corresponding pixel values are compared and if it satisfies @var{scd_threshold} scene change is detected.
13500 @end table
13501 Default method is @samp{fdiff}.
13502
13503 @item scd_threshold
13504 Scene change detection threshold. Default is @code{5.0}.
13505 @end table
13506
13507 @section mix
13508
13509 Mix several video input streams into one video stream.
13510
13511 A description of the accepted options follows.
13512
13513 @table @option
13514 @item nb_inputs
13515 The number of inputs. If unspecified, it defaults to 2.
13516
13517 @item weights
13518 Specify weight of each input video stream as sequence.
13519 Each weight is separated by space. If number of weights
13520 is smaller than number of @var{frames} last specified
13521 weight will be used for all remaining unset weights.
13522
13523 @item scale
13524 Specify scale, if it is set it will be multiplied with sum
13525 of each weight multiplied with pixel values to give final destination
13526 pixel value. By default @var{scale} is auto scaled to sum of weights.
13527
13528 @item duration
13529 Specify how end of stream is determined.
13530 @table @samp
13531 @item longest
13532 The duration of the longest input. (default)
13533
13534 @item shortest
13535 The duration of the shortest input.
13536
13537 @item first
13538 The duration of the first input.
13539 @end table
13540 @end table
13541
13542 @section mpdecimate
13543
13544 Drop frames that do not differ greatly from the previous frame in
13545 order to reduce frame rate.
13546
13547 The main use of this filter is for very-low-bitrate encoding
13548 (e.g. streaming over dialup modem), but it could in theory be used for
13549 fixing movies that were inverse-telecined incorrectly.
13550
13551 A description of the accepted options follows.
13552
13553 @table @option
13554 @item max
13555 Set the maximum number of consecutive frames which can be dropped (if
13556 positive), or the minimum interval between dropped frames (if
13557 negative). If the value is 0, the frame is dropped disregarding the
13558 number of previous sequentially dropped frames.
13559
13560 Default value is 0.
13561
13562 @item hi
13563 @item lo
13564 @item frac
13565 Set the dropping threshold values.
13566
13567 Values for @option{hi} and @option{lo} are for 8x8 pixel blocks and
13568 represent actual pixel value differences, so a threshold of 64
13569 corresponds to 1 unit of difference for each pixel, or the same spread
13570 out differently over the block.
13571
13572 A frame is a candidate for dropping if no 8x8 blocks differ by more
13573 than a threshold of @option{hi}, and if no more than @option{frac} blocks (1
13574 meaning the whole image) differ by more than a threshold of @option{lo}.
13575
13576 Default value for @option{hi} is 64*12, default value for @option{lo} is
13577 64*5, and default value for @option{frac} is 0.33.
13578 @end table
13579
13580
13581 @section negate
13582
13583 Negate (invert) the input video.
13584
13585 It accepts the following option:
13586
13587 @table @option
13588
13589 @item negate_alpha
13590 With value 1, it negates the alpha component, if present. Default value is 0.
13591 @end table
13592
13593 @anchor{nlmeans}
13594 @section nlmeans
13595
13596 Denoise frames using Non-Local Means algorithm.
13597
13598 Each pixel is adjusted by looking for other pixels with similar contexts. This
13599 context similarity is defined by comparing their surrounding patches of size
13600 @option{p}x@option{p}. Patches are searched in an area of @option{r}x@option{r}
13601 around the pixel.
13602
13603 Note that the research area defines centers for patches, which means some
13604 patches will be made of pixels outside that research area.
13605
13606 The filter accepts the following options.
13607
13608 @table @option
13609 @item s
13610 Set denoising strength. Default is 1.0. Must be in range [1.0, 30.0].
13611
13612 @item p
13613 Set patch size. Default is 7. Must be odd number in range [0, 99].
13614
13615 @item pc
13616 Same as @option{p} but for chroma planes.
13617
13618 The default value is @var{0} and means automatic.
13619
13620 @item r
13621 Set research size. Default is 15. Must be odd number in range [0, 99].
13622
13623 @item rc
13624 Same as @option{r} but for chroma planes.
13625
13626 The default value is @var{0} and means automatic.
13627 @end table
13628
13629 @section nnedi
13630
13631 Deinterlace video using neural network edge directed interpolation.
13632
13633 This filter accepts the following options:
13634
13635 @table @option
13636 @item weights
13637 Mandatory option, without binary file filter can not work.
13638 Currently file can be found here:
13639 https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin
13640
13641 @item deint
13642 Set which frames to deinterlace, by default it is @code{all}.
13643 Can be @code{all} or @code{interlaced}.
13644
13645 @item field
13646 Set mode of operation.
13647
13648 Can be one of the following:
13649
13650 @table @samp
13651 @item af
13652 Use frame flags, both fields.
13653 @item a
13654 Use frame flags, single field.
13655 @item t
13656 Use top field only.
13657 @item b
13658 Use bottom field only.
13659 @item tf
13660 Use both fields, top first.
13661 @item bf
13662 Use both fields, bottom first.
13663 @end table
13664
13665 @item planes
13666 Set which planes to process, by default filter process all frames.
13667
13668 @item nsize
13669 Set size of local neighborhood around each pixel, used by the predictor neural
13670 network.
13671
13672 Can be one of the following:
13673
13674 @table @samp
13675 @item s8x6
13676 @item s16x6
13677 @item s32x6
13678 @item s48x6
13679 @item s8x4
13680 @item s16x4
13681 @item s32x4
13682 @end table
13683
13684 @item nns
13685 Set the number of neurons in predictor neural network.
13686 Can be one of the following:
13687
13688 @table @samp
13689 @item n16
13690 @item n32
13691 @item n64
13692 @item n128
13693 @item n256
13694 @end table
13695
13696 @item qual
13697 Controls the number of different neural network predictions that are blended
13698 together to compute the final output value. Can be @code{fast}, default or
13699 @code{slow}.
13700
13701 @item etype
13702 Set which set of weights to use in the predictor.
13703 Can be one of the following:
13704
13705 @table @samp
13706 @item a
13707 weights trained to minimize absolute error
13708 @item s
13709 weights trained to minimize squared error
13710 @end table
13711
13712 @item pscrn
13713 Controls whether or not the prescreener neural network is used to decide
13714 which pixels should be processed by the predictor neural network and which
13715 can be handled by simple cubic interpolation.
13716 The prescreener is trained to know whether cubic interpolation will be
13717 sufficient for a pixel or whether it should be predicted by the predictor nn.
13718 The computational complexity of the prescreener nn is much less than that of
13719 the predictor nn. Since most pixels can be handled by cubic interpolation,
13720 using the prescreener generally results in much faster processing.
13721 The prescreener is pretty accurate, so the difference between using it and not
13722 using it is almost always unnoticeable.
13723
13724 Can be one of the following:
13725
13726 @table @samp
13727 @item none
13728 @item original
13729 @item new
13730 @end table
13731
13732 Default is @code{new}.
13733
13734 @item fapprox
13735 Set various debugging flags.
13736 @end table
13737
13738 @section noformat
13739
13740 Force libavfilter not to use any of the specified pixel formats for the
13741 input to the next filter.
13742
13743 It accepts the following parameters:
13744 @table @option
13745
13746 @item pix_fmts
13747 A '|'-separated list of pixel format names, such as
13748 pix_fmts=yuv420p|monow|rgb24".
13749
13750 @end table
13751
13752 @subsection Examples
13753
13754 @itemize
13755 @item
13756 Force libavfilter to use a format different from @var{yuv420p} for the
13757 input to the vflip filter:
13758 @example
13759 noformat=pix_fmts=yuv420p,vflip
13760 @end example
13761
13762 @item
13763 Convert the input video to any of the formats not contained in the list:
13764 @example
13765 noformat=yuv420p|yuv444p|yuv410p
13766 @end example
13767 @end itemize
13768
13769 @section noise
13770
13771 Add noise on video input frame.
13772
13773 The filter accepts the following options:
13774
13775 @table @option
13776 @item all_seed
13777 @item c0_seed
13778 @item c1_seed
13779 @item c2_seed
13780 @item c3_seed
13781 Set noise seed for specific pixel component or all pixel components in case
13782 of @var{all_seed}. Default value is @code{123457}.
13783
13784 @item all_strength, alls
13785 @item c0_strength, c0s
13786 @item c1_strength, c1s
13787 @item c2_strength, c2s
13788 @item c3_strength, c3s
13789 Set noise strength for specific pixel component or all pixel components in case
13790 @var{all_strength}. Default value is @code{0}. Allowed range is [0, 100].
13791
13792 @item all_flags, allf
13793 @item c0_flags, c0f
13794 @item c1_flags, c1f
13795 @item c2_flags, c2f
13796 @item c3_flags, c3f
13797 Set pixel component flags or set flags for all components if @var{all_flags}.
13798 Available values for component flags are:
13799 @table @samp
13800 @item a
13801 averaged temporal noise (smoother)
13802 @item p
13803 mix random noise with a (semi)regular pattern
13804 @item t
13805 temporal noise (noise pattern changes between frames)
13806 @item u
13807 uniform noise (gaussian otherwise)
13808 @end table
13809 @end table
13810
13811 @subsection Examples
13812
13813 Add temporal and uniform noise to input video:
13814 @example
13815 noise=alls=20:allf=t+u
13816 @end example
13817
13818 @section normalize
13819
13820 Normalize RGB video (aka histogram stretching, contrast stretching).
13821 See: https://en.wikipedia.org/wiki/Normalization_(image_processing)
13822
13823 For each channel of each frame, the filter computes the input range and maps
13824 it linearly to the user-specified output range. The output range defaults
13825 to the full dynamic range from pure black to pure white.
13826
13827 Temporal smoothing can be used on the input range to reduce flickering (rapid
13828 changes in brightness) caused when small dark or bright objects enter or leave
13829 the scene. This is similar to the auto-exposure (automatic gain control) on a
13830 video camera, and, like a video camera, it may cause a period of over- or
13831 under-exposure of the video.
13832
13833 The R,G,B channels can be normalized independently, which may cause some
13834 color shifting, or linked together as a single channel, which prevents
13835 color shifting. Linked normalization preserves hue. Independent normalization
13836 does not, so it can be used to remove some color casts. Independent and linked
13837 normalization can be combined in any ratio.
13838
13839 The normalize filter accepts the following options:
13840
13841 @table @option
13842 @item blackpt
13843 @item whitept
13844 Colors which define the output range. The minimum input value is mapped to
13845 the @var{blackpt}. The maximum input value is mapped to the @var{whitept}.
13846 The defaults are black and white respectively. Specifying white for
13847 @var{blackpt} and black for @var{whitept} will give color-inverted,
13848 normalized video. Shades of grey can be used to reduce the dynamic range
13849 (contrast). Specifying saturated colors here can create some interesting
13850 effects.
13851
13852 @item smoothing
13853 The number of previous frames to use for temporal smoothing. The input range
13854 of each channel is smoothed using a rolling average over the current frame
13855 and the @var{smoothing} previous frames. The default is 0 (no temporal
13856 smoothing).
13857
13858 @item independence
13859 Controls the ratio of independent (color shifting) channel normalization to
13860 linked (color preserving) normalization. 0.0 is fully linked, 1.0 is fully
13861 independent. Defaults to 1.0 (fully independent).
13862
13863 @item strength
13864 Overall strength of the filter. 1.0 is full strength. 0.0 is a rather
13865 expensive no-op. Defaults to 1.0 (full strength).
13866
13867 @end table
13868
13869 @subsection Commands
13870 This filter supports same @ref{commands} as options, excluding @var{smoothing} option.
13871 The command accepts the same syntax of the corresponding option.
13872
13873 If the specified expression is not valid, it is kept at its current
13874 value.
13875
13876 @subsection Examples
13877
13878 Stretch video contrast to use the full dynamic range, with no temporal
13879 smoothing; may flicker depending on the source content:
13880 @example
13881 normalize=blackpt=black:whitept=white:smoothing=0
13882 @end example
13883
13884 As above, but with 50 frames of temporal smoothing; flicker should be
13885 reduced, depending on the source content:
13886 @example
13887 normalize=blackpt=black:whitept=white:smoothing=50
13888 @end example
13889
13890 As above, but with hue-preserving linked channel normalization:
13891 @example
13892 normalize=blackpt=black:whitept=white:smoothing=50:independence=0
13893 @end example
13894
13895 As above, but with half strength:
13896 @example
13897 normalize=blackpt=black:whitept=white:smoothing=50:independence=0:strength=0.5
13898 @end example
13899
13900 Map the darkest input color to red, the brightest input color to cyan:
13901 @example
13902 normalize=blackpt=red:whitept=cyan
13903 @end example
13904
13905 @section null
13906
13907 Pass the video source unchanged to the output.
13908
13909 @section ocr
13910 Optical Character Recognition
13911
13912 This filter uses Tesseract for optical character recognition. To enable
13913 compilation of this filter, you need to configure FFmpeg with
13914 @code{--enable-libtesseract}.
13915
13916 It accepts the following options:
13917
13918 @table @option
13919 @item datapath
13920 Set datapath to tesseract data. Default is to use whatever was
13921 set at installation.
13922
13923 @item language
13924 Set language, default is "eng".
13925
13926 @item whitelist
13927 Set character whitelist.
13928
13929 @item blacklist
13930 Set character blacklist.
13931 @end table
13932
13933 The filter exports recognized text as the frame metadata @code{lavfi.ocr.text}.
13934 The filter exports confidence of recognized words as the frame metadata @code{lavfi.ocr.confidence}.
13935
13936 @section ocv
13937
13938 Apply a video transform using libopencv.
13939
13940 To enable this filter, install the libopencv library and headers and
13941 configure FFmpeg with @code{--enable-libopencv}.
13942
13943 It accepts the following parameters:
13944
13945 @table @option
13946
13947 @item filter_name
13948 The name of the libopencv filter to apply.
13949
13950 @item filter_params
13951 The parameters to pass to the libopencv filter. If not specified, the default
13952 values are assumed.
13953
13954 @end table
13955
13956 Refer to the official libopencv documentation for more precise
13957 information:
13958 @url{http://docs.opencv.org/master/modules/imgproc/doc/filtering.html}
13959
13960 Several libopencv filters are supported; see the following subsections.
13961
13962 @anchor{dilate}
13963 @subsection dilate
13964
13965 Dilate an image by using a specific structuring element.
13966 It corresponds to the libopencv function @code{cvDilate}.
13967
13968 It accepts the parameters: @var{struct_el}|@var{nb_iterations}.
13969
13970 @var{struct_el} represents a structuring element, and has the syntax:
13971 @var{cols}x@var{rows}+@var{anchor_x}x@var{anchor_y}/@var{shape}
13972
13973 @var{cols} and @var{rows} represent the number of columns and rows of
13974 the structuring element, @var{anchor_x} and @var{anchor_y} the anchor
13975 point, and @var{shape} the shape for the structuring element. @var{shape}
13976 must be "rect", "cross", "ellipse", or "custom".
13977
13978 If the value for @var{shape} is "custom", it must be followed by a
13979 string of the form "=@var{filename}". The file with name
13980 @var{filename} is assumed to represent a binary image, with each
13981 printable character corresponding to a bright pixel. When a custom
13982 @var{shape} is used, @var{cols} and @var{rows} are ignored, the number
13983 or columns and rows of the read file are assumed instead.
13984
13985 The default value for @var{struct_el} is "3x3+0x0/rect".
13986
13987 @var{nb_iterations} specifies the number of times the transform is
13988 applied to the image, and defaults to 1.
13989
13990 Some examples:
13991 @example
13992 # Use the default values
13993 ocv=dilate
13994
13995 # Dilate using a structuring element with a 5x5 cross, iterating two times
13996 ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
13997
13998 # Read the shape from the file diamond.shape, iterating two times.
13999 # The file diamond.shape may contain a pattern of characters like this
14000 #   *
14001 #  ***
14002 # *****
14003 #  ***
14004 #   *
14005 # The specified columns and rows are ignored
14006 # but the anchor point coordinates are not
14007 ocv=dilate:0x0+2x2/custom=diamond.shape|2
14008 @end example
14009
14010 @subsection erode
14011
14012 Erode an image by using a specific structuring element.
14013 It corresponds to the libopencv function @code{cvErode}.
14014
14015 It accepts the parameters: @var{struct_el}:@var{nb_iterations},
14016 with the same syntax and semantics as the @ref{dilate} filter.
14017
14018 @subsection smooth
14019
14020 Smooth the input video.
14021
14022 The filter takes the following parameters:
14023 @var{type}|@var{param1}|@var{param2}|@var{param3}|@var{param4}.
14024
14025 @var{type} is the type of smooth filter to apply, and must be one of
14026 the following values: "blur", "blur_no_scale", "median", "gaussian",
14027 or "bilateral". The default value is "gaussian".
14028
14029 The meaning of @var{param1}, @var{param2}, @var{param3}, and @var{param4}
14030 depends on the smooth type. @var{param1} and
14031 @var{param2} accept integer positive values or 0. @var{param3} and
14032 @var{param4} accept floating point values.
14033
14034 The default value for @var{param1} is 3. The default value for the
14035 other parameters is 0.
14036
14037 These parameters correspond to the parameters assigned to the
14038 libopencv function @code{cvSmooth}.
14039
14040 @section oscilloscope
14041
14042 2D Video Oscilloscope.
14043
14044 Useful to measure spatial impulse, step responses, chroma delays, etc.
14045
14046 It accepts the following parameters:
14047
14048 @table @option
14049 @item x
14050 Set scope center x position.
14051
14052 @item y
14053 Set scope center y position.
14054
14055 @item s
14056 Set scope size, relative to frame diagonal.
14057
14058 @item t
14059 Set scope tilt/rotation.
14060
14061 @item o
14062 Set trace opacity.
14063
14064 @item tx
14065 Set trace center x position.
14066
14067 @item ty
14068 Set trace center y position.
14069
14070 @item tw
14071 Set trace width, relative to width of frame.
14072
14073 @item th
14074 Set trace height, relative to height of frame.
14075
14076 @item c
14077 Set which components to trace. By default it traces first three components.
14078
14079 @item g
14080 Draw trace grid. By default is enabled.
14081
14082 @item st
14083 Draw some statistics. By default is enabled.
14084
14085 @item sc
14086 Draw scope. By default is enabled.
14087 @end table
14088
14089 @subsection Commands
14090 This filter supports same @ref{commands} as options.
14091 The command accepts the same syntax of the corresponding option.
14092
14093 If the specified expression is not valid, it is kept at its current
14094 value.
14095
14096 @subsection Examples
14097
14098 @itemize
14099 @item
14100 Inspect full first row of video frame.
14101 @example
14102 oscilloscope=x=0.5:y=0:s=1
14103 @end example
14104
14105 @item
14106 Inspect full last row of video frame.
14107 @example
14108 oscilloscope=x=0.5:y=1:s=1
14109 @end example
14110
14111 @item
14112 Inspect full 5th line of video frame of height 1080.
14113 @example
14114 oscilloscope=x=0.5:y=5/1080:s=1
14115 @end example
14116
14117 @item
14118 Inspect full last column of video frame.
14119 @example
14120 oscilloscope=x=1:y=0.5:s=1:t=1
14121 @end example
14122
14123 @end itemize
14124
14125 @anchor{overlay}
14126 @section overlay
14127
14128 Overlay one video on top of another.
14129
14130 It takes two inputs and has one output. The first input is the "main"
14131 video on which the second input is overlaid.
14132
14133 It accepts the following parameters:
14134
14135 A description of the accepted options follows.
14136
14137 @table @option
14138 @item x
14139 @item y
14140 Set the expression for the x and y coordinates of the overlaid video
14141 on the main video. Default value is "0" for both expressions. In case
14142 the expression is invalid, it is set to a huge value (meaning that the
14143 overlay will not be displayed within the output visible area).
14144
14145 @item eof_action
14146 See @ref{framesync}.
14147
14148 @item eval
14149 Set when the expressions for @option{x}, and @option{y} are evaluated.
14150
14151 It accepts the following values:
14152 @table @samp
14153 @item init
14154 only evaluate expressions once during the filter initialization or
14155 when a command is processed
14156
14157 @item frame
14158 evaluate expressions for each incoming frame
14159 @end table
14160
14161 Default value is @samp{frame}.
14162
14163 @item shortest
14164 See @ref{framesync}.
14165
14166 @item format
14167 Set the format for the output video.
14168
14169 It accepts the following values:
14170 @table @samp
14171 @item yuv420
14172 force YUV420 output
14173
14174 @item yuv422
14175 force YUV422 output
14176
14177 @item yuv444
14178 force YUV444 output
14179
14180 @item rgb
14181 force packed RGB output
14182
14183 @item gbrp
14184 force planar RGB output
14185
14186 @item auto
14187 automatically pick format
14188 @end table
14189
14190 Default value is @samp{yuv420}.
14191
14192 @item repeatlast
14193 See @ref{framesync}.
14194
14195 @item alpha
14196 Set format of alpha of the overlaid video, it can be @var{straight} or
14197 @var{premultiplied}. Default is @var{straight}.
14198 @end table
14199
14200 The @option{x}, and @option{y} expressions can contain the following
14201 parameters.
14202
14203 @table @option
14204 @item main_w, W
14205 @item main_h, H
14206 The main input width and height.
14207
14208 @item overlay_w, w
14209 @item overlay_h, h
14210 The overlay input width and height.
14211
14212 @item x
14213 @item y
14214 The computed values for @var{x} and @var{y}. They are evaluated for
14215 each new frame.
14216
14217 @item hsub
14218 @item vsub
14219 horizontal and vertical chroma subsample values of the output
14220 format. For example for the pixel format "yuv422p" @var{hsub} is 2 and
14221 @var{vsub} is 1.
14222
14223 @item n
14224 the number of input frame, starting from 0
14225
14226 @item pos
14227 the position in the file of the input frame, NAN if unknown
14228
14229 @item t
14230 The timestamp, expressed in seconds. It's NAN if the input timestamp is unknown.
14231
14232 @end table
14233
14234 This filter also supports the @ref{framesync} options.
14235
14236 Note that the @var{n}, @var{pos}, @var{t} variables are available only
14237 when evaluation is done @emph{per frame}, and will evaluate to NAN
14238 when @option{eval} is set to @samp{init}.
14239
14240 Be aware that frames are taken from each input video in timestamp
14241 order, hence, if their initial timestamps differ, it is a good idea
14242 to pass the two inputs through a @var{setpts=PTS-STARTPTS} filter to
14243 have them begin in the same zero timestamp, as the example for
14244 the @var{movie} filter does.
14245
14246 You can chain together more overlays but you should test the
14247 efficiency of such approach.
14248
14249 @subsection Commands
14250
14251 This filter supports the following commands:
14252 @table @option
14253 @item x
14254 @item y
14255 Modify the x and y of the overlay input.
14256 The command accepts the same syntax of the corresponding option.
14257
14258 If the specified expression is not valid, it is kept at its current
14259 value.
14260 @end table
14261
14262 @subsection Examples
14263
14264 @itemize
14265 @item
14266 Draw the overlay at 10 pixels from the bottom right corner of the main
14267 video:
14268 @example
14269 overlay=main_w-overlay_w-10:main_h-overlay_h-10
14270 @end example
14271
14272 Using named options the example above becomes:
14273 @example
14274 overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
14275 @end example
14276
14277 @item
14278 Insert a transparent PNG logo in the bottom left corner of the input,
14279 using the @command{ffmpeg} tool with the @code{-filter_complex} option:
14280 @example
14281 ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
14282 @end example
14283
14284 @item
14285 Insert 2 different transparent PNG logos (second logo on bottom
14286 right corner) using the @command{ffmpeg} tool:
14287 @example
14288 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
14289 @end example
14290
14291 @item
14292 Add a transparent color layer on top of the main video; @code{WxH}
14293 must specify the size of the main input to the overlay filter:
14294 @example
14295 color=color=red@@.3:size=WxH [over]; [in][over] overlay [out]
14296 @end example
14297
14298 @item
14299 Play an original video and a filtered version (here with the deshake
14300 filter) side by side using the @command{ffplay} tool:
14301 @example
14302 ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
14303 @end example
14304
14305 The above command is the same as:
14306 @example
14307 ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
14308 @end example
14309
14310 @item
14311 Make a sliding overlay appearing from the left to the right top part of the
14312 screen starting since time 2:
14313 @example
14314 overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
14315 @end example
14316
14317 @item
14318 Compose output by putting two input videos side to side:
14319 @example
14320 ffmpeg -i left.avi -i right.avi -filter_complex "
14321 nullsrc=size=200x100 [background];
14322 [0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
14323 [1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
14324 [background][left]       overlay=shortest=1       [background+left];
14325 [background+left][right] overlay=shortest=1:x=100 [left+right]
14326 "
14327 @end example
14328
14329 @item
14330 Mask 10-20 seconds of a video by applying the delogo filter to a section
14331 @example
14332 ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
14333 -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]'
14334 masked.avi
14335 @end example
14336
14337 @item
14338 Chain several overlays in cascade:
14339 @example
14340 nullsrc=s=200x200 [bg];
14341 testsrc=s=100x100, split=4 [in0][in1][in2][in3];
14342 [in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
14343 [in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
14344 [in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
14345 [in3] null,       [mid2] overlay=100:100 [out0]
14346 @end example
14347
14348 @end itemize
14349
14350 @section owdenoise
14351
14352 Apply Overcomplete Wavelet denoiser.
14353
14354 The filter accepts the following options:
14355
14356 @table @option
14357 @item depth
14358 Set depth.
14359
14360 Larger depth values will denoise lower frequency components more, but
14361 slow down filtering.
14362
14363 Must be an int in the range 8-16, default is @code{8}.
14364
14365 @item luma_strength, ls
14366 Set luma strength.
14367
14368 Must be a double value in the range 0-1000, default is @code{1.0}.
14369
14370 @item chroma_strength, cs
14371 Set chroma strength.
14372
14373 Must be a double value in the range 0-1000, default is @code{1.0}.
14374 @end table
14375
14376 @anchor{pad}
14377 @section pad
14378
14379 Add paddings to the input image, and place the original input at the
14380 provided @var{x}, @var{y} coordinates.
14381
14382 It accepts the following parameters:
14383
14384 @table @option
14385 @item width, w
14386 @item height, h
14387 Specify an expression for the size of the output image with the
14388 paddings added. If the value for @var{width} or @var{height} is 0, the
14389 corresponding input size is used for the output.
14390
14391 The @var{width} expression can reference the value set by the
14392 @var{height} expression, and vice versa.
14393
14394 The default value of @var{width} and @var{height} is 0.
14395
14396 @item x
14397 @item y
14398 Specify the offsets to place the input image at within the padded area,
14399 with respect to the top/left border of the output image.
14400
14401 The @var{x} expression can reference the value set by the @var{y}
14402 expression, and vice versa.
14403
14404 The default value of @var{x} and @var{y} is 0.
14405
14406 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
14407 so the input image is centered on the padded area.
14408
14409 @item color
14410 Specify the color of the padded area. For the syntax of this option,
14411 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
14412 manual,ffmpeg-utils}.
14413
14414 The default value of @var{color} is "black".
14415
14416 @item eval
14417 Specify when to evaluate  @var{width}, @var{height}, @var{x} and @var{y} expression.
14418
14419 It accepts the following values:
14420
14421 @table @samp
14422 @item init
14423 Only evaluate expressions once during the filter initialization or when
14424 a command is processed.
14425
14426 @item frame
14427 Evaluate expressions for each incoming frame.
14428
14429 @end table
14430
14431 Default value is @samp{init}.
14432
14433 @item aspect
14434 Pad to aspect instead to a resolution.
14435
14436 @end table
14437
14438 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
14439 options are expressions containing the following constants:
14440
14441 @table @option
14442 @item in_w
14443 @item in_h
14444 The input video width and height.
14445
14446 @item iw
14447 @item ih
14448 These are the same as @var{in_w} and @var{in_h}.
14449
14450 @item out_w
14451 @item out_h
14452 The output width and height (the size of the padded area), as
14453 specified by the @var{width} and @var{height} expressions.
14454
14455 @item ow
14456 @item oh
14457 These are the same as @var{out_w} and @var{out_h}.
14458
14459 @item x
14460 @item y
14461 The x and y offsets as specified by the @var{x} and @var{y}
14462 expressions, or NAN if not yet specified.
14463
14464 @item a
14465 same as @var{iw} / @var{ih}
14466
14467 @item sar
14468 input sample aspect ratio
14469
14470 @item dar
14471 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
14472
14473 @item hsub
14474 @item vsub
14475 The horizontal and vertical chroma subsample values. For example for the
14476 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
14477 @end table
14478
14479 @subsection Examples
14480
14481 @itemize
14482 @item
14483 Add paddings with the color "violet" to the input video. The output video
14484 size is 640x480, and the top-left corner of the input video is placed at
14485 column 0, row 40
14486 @example
14487 pad=640:480:0:40:violet
14488 @end example
14489
14490 The example above is equivalent to the following command:
14491 @example
14492 pad=width=640:height=480:x=0:y=40:color=violet
14493 @end example
14494
14495 @item
14496 Pad the input to get an output with dimensions increased by 3/2,
14497 and put the input video at the center of the padded area:
14498 @example
14499 pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
14500 @end example
14501
14502 @item
14503 Pad the input to get a squared output with size equal to the maximum
14504 value between the input width and height, and put the input video at
14505 the center of the padded area:
14506 @example
14507 pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
14508 @end example
14509
14510 @item
14511 Pad the input to get a final w/h ratio of 16:9:
14512 @example
14513 pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
14514 @end example
14515
14516 @item
14517 In case of anamorphic video, in order to set the output display aspect
14518 correctly, it is necessary to use @var{sar} in the expression,
14519 according to the relation:
14520 @example
14521 (ih * X / ih) * sar = output_dar
14522 X = output_dar / sar
14523 @end example
14524
14525 Thus the previous example needs to be modified to:
14526 @example
14527 pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
14528 @end example
14529
14530 @item
14531 Double the output size and put the input video in the bottom-right
14532 corner of the output padded area:
14533 @example
14534 pad="2*iw:2*ih:ow-iw:oh-ih"
14535 @end example
14536 @end itemize
14537
14538 @anchor{palettegen}
14539 @section palettegen
14540
14541 Generate one palette for a whole video stream.
14542
14543 It accepts the following options:
14544
14545 @table @option
14546 @item max_colors
14547 Set the maximum number of colors to quantize in the palette.
14548 Note: the palette will still contain 256 colors; the unused palette entries
14549 will be black.
14550
14551 @item reserve_transparent
14552 Create a palette of 255 colors maximum and reserve the last one for
14553 transparency. Reserving the transparency color is useful for GIF optimization.
14554 If not set, the maximum of colors in the palette will be 256. You probably want
14555 to disable this option for a standalone image.
14556 Set by default.
14557
14558 @item transparency_color
14559 Set the color that will be used as background for transparency.
14560
14561 @item stats_mode
14562 Set statistics mode.
14563
14564 It accepts the following values:
14565 @table @samp
14566 @item full
14567 Compute full frame histograms.
14568 @item diff
14569 Compute histograms only for the part that differs from previous frame. This
14570 might be relevant to give more importance to the moving part of your input if
14571 the background is static.
14572 @item single
14573 Compute new histogram for each frame.
14574 @end table
14575
14576 Default value is @var{full}.
14577 @end table
14578
14579 The filter also exports the frame metadata @code{lavfi.color_quant_ratio}
14580 (@code{nb_color_in / nb_color_out}) which you can use to evaluate the degree of
14581 color quantization of the palette. This information is also visible at
14582 @var{info} logging level.
14583
14584 @subsection Examples
14585
14586 @itemize
14587 @item
14588 Generate a representative palette of a given video using @command{ffmpeg}:
14589 @example
14590 ffmpeg -i input.mkv -vf palettegen palette.png
14591 @end example
14592 @end itemize
14593
14594 @section paletteuse
14595
14596 Use a palette to downsample an input video stream.
14597
14598 The filter takes two inputs: one video stream and a palette. The palette must
14599 be a 256 pixels image.
14600
14601 It accepts the following options:
14602
14603 @table @option
14604 @item dither
14605 Select dithering mode. Available algorithms are:
14606 @table @samp
14607 @item bayer
14608 Ordered 8x8 bayer dithering (deterministic)
14609 @item heckbert
14610 Dithering as defined by Paul Heckbert in 1982 (simple error diffusion).
14611 Note: this dithering is sometimes considered "wrong" and is included as a
14612 reference.
14613 @item floyd_steinberg
14614 Floyd and Steingberg dithering (error diffusion)
14615 @item sierra2
14616 Frankie Sierra dithering v2 (error diffusion)
14617 @item sierra2_4a
14618 Frankie Sierra dithering v2 "Lite" (error diffusion)
14619 @end table
14620
14621 Default is @var{sierra2_4a}.
14622
14623 @item bayer_scale
14624 When @var{bayer} dithering is selected, this option defines the scale of the
14625 pattern (how much the crosshatch pattern is visible). A low value means more
14626 visible pattern for less banding, and higher value means less visible pattern
14627 at the cost of more banding.
14628
14629 The option must be an integer value in the range [0,5]. Default is @var{2}.
14630
14631 @item diff_mode
14632 If set, define the zone to process
14633
14634 @table @samp
14635 @item rectangle
14636 Only the changing rectangle will be reprocessed. This is similar to GIF
14637 cropping/offsetting compression mechanism. This option can be useful for speed
14638 if only a part of the image is changing, and has use cases such as limiting the
14639 scope of the error diffusal @option{dither} to the rectangle that bounds the
14640 moving scene (it leads to more deterministic output if the scene doesn't change
14641 much, and as a result less moving noise and better GIF compression).
14642 @end table
14643
14644 Default is @var{none}.
14645
14646 @item new
14647 Take new palette for each output frame.
14648
14649 @item alpha_threshold
14650 Sets the alpha threshold for transparency. Alpha values above this threshold
14651 will be treated as completely opaque, and values below this threshold will be
14652 treated as completely transparent.
14653
14654 The option must be an integer value in the range [0,255]. Default is @var{128}.
14655 @end table
14656
14657 @subsection Examples
14658
14659 @itemize
14660 @item
14661 Use a palette (generated for example with @ref{palettegen}) to encode a GIF
14662 using @command{ffmpeg}:
14663 @example
14664 ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
14665 @end example
14666 @end itemize
14667
14668 @section perspective
14669
14670 Correct perspective of video not recorded perpendicular to the screen.
14671
14672 A description of the accepted parameters follows.
14673
14674 @table @option
14675 @item x0
14676 @item y0
14677 @item x1
14678 @item y1
14679 @item x2
14680 @item y2
14681 @item x3
14682 @item y3
14683 Set coordinates expression for top left, top right, bottom left and bottom right corners.
14684 Default values are @code{0:0:W:0:0:H:W:H} with which perspective will remain unchanged.
14685 If the @code{sense} option is set to @code{source}, then the specified points will be sent
14686 to the corners of the destination. If the @code{sense} option is set to @code{destination},
14687 then the corners of the source will be sent to the specified coordinates.
14688
14689 The expressions can use the following variables:
14690
14691 @table @option
14692 @item W
14693 @item H
14694 the width and height of video frame.
14695 @item in
14696 Input frame count.
14697 @item on
14698 Output frame count.
14699 @end table
14700
14701 @item interpolation
14702 Set interpolation for perspective correction.
14703
14704 It accepts the following values:
14705 @table @samp
14706 @item linear
14707 @item cubic
14708 @end table
14709
14710 Default value is @samp{linear}.
14711
14712 @item sense
14713 Set interpretation of coordinate options.
14714
14715 It accepts the following values:
14716 @table @samp
14717 @item 0, source
14718
14719 Send point in the source specified by the given coordinates to
14720 the corners of the destination.
14721
14722 @item 1, destination
14723
14724 Send the corners of the source to the point in the destination specified
14725 by the given coordinates.
14726
14727 Default value is @samp{source}.
14728 @end table
14729
14730 @item eval
14731 Set when the expressions for coordinates @option{x0,y0,...x3,y3} are evaluated.
14732
14733 It accepts the following values:
14734 @table @samp
14735 @item init
14736 only evaluate expressions once during the filter initialization or
14737 when a command is processed
14738
14739 @item frame
14740 evaluate expressions for each incoming frame
14741 @end table
14742
14743 Default value is @samp{init}.
14744 @end table
14745
14746 @section phase
14747
14748 Delay interlaced video by one field time so that the field order changes.
14749
14750 The intended use is to fix PAL movies that have been captured with the
14751 opposite field order to the film-to-video transfer.
14752
14753 A description of the accepted parameters follows.
14754
14755 @table @option
14756 @item mode
14757 Set phase mode.
14758
14759 It accepts the following values:
14760 @table @samp
14761 @item t
14762 Capture field order top-first, transfer bottom-first.
14763 Filter will delay the bottom field.
14764
14765 @item b
14766 Capture field order bottom-first, transfer top-first.
14767 Filter will delay the top field.
14768
14769 @item p
14770 Capture and transfer with the same field order. This mode only exists
14771 for the documentation of the other options to refer to, but if you
14772 actually select it, the filter will faithfully do nothing.
14773
14774 @item a
14775 Capture field order determined automatically by field flags, transfer
14776 opposite.
14777 Filter selects among @samp{t} and @samp{b} modes on a frame by frame
14778 basis using field flags. If no field information is available,
14779 then this works just like @samp{u}.
14780
14781 @item u
14782 Capture unknown or varying, transfer opposite.
14783 Filter selects among @samp{t} and @samp{b} on a frame by frame basis by
14784 analyzing the images and selecting the alternative that produces best
14785 match between the fields.
14786
14787 @item T
14788 Capture top-first, transfer unknown or varying.
14789 Filter selects among @samp{t} and @samp{p} using image analysis.
14790
14791 @item B
14792 Capture bottom-first, transfer unknown or varying.
14793 Filter selects among @samp{b} and @samp{p} using image analysis.
14794
14795 @item A
14796 Capture determined by field flags, transfer unknown or varying.
14797 Filter selects among @samp{t}, @samp{b} and @samp{p} using field flags and
14798 image analysis. If no field information is available, then this works just
14799 like @samp{U}. This is the default mode.
14800
14801 @item U
14802 Both capture and transfer unknown or varying.
14803 Filter selects among @samp{t}, @samp{b} and @samp{p} using image analysis only.
14804 @end table
14805 @end table
14806
14807 @section photosensitivity
14808 Reduce various flashes in video, so to help users with epilepsy.
14809
14810 It accepts the following options:
14811 @table @option
14812 @item frames, f
14813 Set how many frames to use when filtering. Default is 30.
14814
14815 @item threshold, t
14816 Set detection threshold factor. Default is 1.
14817 Lower is stricter.
14818
14819 @item skip
14820 Set how many pixels to skip when sampling frames. Default is 1.
14821 Allowed range is from 1 to 1024.
14822
14823 @item bypass
14824 Leave frames unchanged. Default is disabled.
14825 @end table
14826
14827 @section pixdesctest
14828
14829 Pixel format descriptor test filter, mainly useful for internal
14830 testing. The output video should be equal to the input video.
14831
14832 For example:
14833 @example
14834 format=monow, pixdesctest
14835 @end example
14836
14837 can be used to test the monowhite pixel format descriptor definition.
14838
14839 @section pixscope
14840
14841 Display sample values of color channels. Mainly useful for checking color
14842 and levels. Minimum supported resolution is 640x480.
14843
14844 The filters accept the following options:
14845
14846 @table @option
14847 @item x
14848 Set scope X position, relative offset on X axis.
14849
14850 @item y
14851 Set scope Y position, relative offset on Y axis.
14852
14853 @item w
14854 Set scope width.
14855
14856 @item h
14857 Set scope height.
14858
14859 @item o
14860 Set window opacity. This window also holds statistics about pixel area.
14861
14862 @item wx
14863 Set window X position, relative offset on X axis.
14864
14865 @item wy
14866 Set window Y position, relative offset on Y axis.
14867 @end table
14868
14869 @section pp
14870
14871 Enable the specified chain of postprocessing subfilters using libpostproc. This
14872 library should be automatically selected with a GPL build (@code{--enable-gpl}).
14873 Subfilters must be separated by '/' and can be disabled by prepending a '-'.
14874 Each subfilter and some options have a short and a long name that can be used
14875 interchangeably, i.e. dr/dering are the same.
14876
14877 The filters accept the following options:
14878
14879 @table @option
14880 @item subfilters
14881 Set postprocessing subfilters string.
14882 @end table
14883
14884 All subfilters share common options to determine their scope:
14885
14886 @table @option
14887 @item a/autoq
14888 Honor the quality commands for this subfilter.
14889
14890 @item c/chrom
14891 Do chrominance filtering, too (default).
14892
14893 @item y/nochrom
14894 Do luminance filtering only (no chrominance).
14895
14896 @item n/noluma
14897 Do chrominance filtering only (no luminance).
14898 @end table
14899
14900 These options can be appended after the subfilter name, separated by a '|'.
14901
14902 Available subfilters are:
14903
14904 @table @option
14905 @item hb/hdeblock[|difference[|flatness]]
14906 Horizontal deblocking filter
14907 @table @option
14908 @item difference
14909 Difference factor where higher values mean more deblocking (default: @code{32}).
14910 @item flatness
14911 Flatness threshold where lower values mean more deblocking (default: @code{39}).
14912 @end table
14913
14914 @item vb/vdeblock[|difference[|flatness]]
14915 Vertical deblocking filter
14916 @table @option
14917 @item difference
14918 Difference factor where higher values mean more deblocking (default: @code{32}).
14919 @item flatness
14920 Flatness threshold where lower values mean more deblocking (default: @code{39}).
14921 @end table
14922
14923 @item ha/hadeblock[|difference[|flatness]]
14924 Accurate horizontal deblocking filter
14925 @table @option
14926 @item difference
14927 Difference factor where higher values mean more deblocking (default: @code{32}).
14928 @item flatness
14929 Flatness threshold where lower values mean more deblocking (default: @code{39}).
14930 @end table
14931
14932 @item va/vadeblock[|difference[|flatness]]
14933 Accurate vertical deblocking filter
14934 @table @option
14935 @item difference
14936 Difference factor where higher values mean more deblocking (default: @code{32}).
14937 @item flatness
14938 Flatness threshold where lower values mean more deblocking (default: @code{39}).
14939 @end table
14940 @end table
14941
14942 The horizontal and vertical deblocking filters share the difference and
14943 flatness values so you cannot set different horizontal and vertical
14944 thresholds.
14945
14946 @table @option
14947 @item h1/x1hdeblock
14948 Experimental horizontal deblocking filter
14949
14950 @item v1/x1vdeblock
14951 Experimental vertical deblocking filter
14952
14953 @item dr/dering
14954 Deringing filter
14955
14956 @item tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer
14957 @table @option
14958 @item threshold1
14959 larger -> stronger filtering
14960 @item threshold2
14961 larger -> stronger filtering
14962 @item threshold3
14963 larger -> stronger filtering
14964 @end table
14965
14966 @item al/autolevels[:f/fullyrange], automatic brightness / contrast correction
14967 @table @option
14968 @item f/fullyrange
14969 Stretch luminance to @code{0-255}.
14970 @end table
14971
14972 @item lb/linblenddeint
14973 Linear blend deinterlacing filter that deinterlaces the given block by
14974 filtering all lines with a @code{(1 2 1)} filter.
14975
14976 @item li/linipoldeint
14977 Linear interpolating deinterlacing filter that deinterlaces the given block by
14978 linearly interpolating every second line.
14979
14980 @item ci/cubicipoldeint
14981 Cubic interpolating deinterlacing filter deinterlaces the given block by
14982 cubically interpolating every second line.
14983
14984 @item md/mediandeint
14985 Median deinterlacing filter that deinterlaces the given block by applying a
14986 median filter to every second line.
14987
14988 @item fd/ffmpegdeint
14989 FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
14990 second line with a @code{(-1 4 2 4 -1)} filter.
14991
14992 @item l5/lowpass5
14993 Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
14994 block by filtering all lines with a @code{(-1 2 6 2 -1)} filter.
14995
14996 @item fq/forceQuant[|quantizer]
14997 Overrides the quantizer table from the input with the constant quantizer you
14998 specify.
14999 @table @option
15000 @item quantizer
15001 Quantizer to use
15002 @end table
15003
15004 @item de/default
15005 Default pp filter combination (@code{hb|a,vb|a,dr|a})
15006
15007 @item fa/fast
15008 Fast pp filter combination (@code{h1|a,v1|a,dr|a})
15009
15010 @item ac
15011 High quality pp filter combination (@code{ha|a|128|7,va|a,dr|a})
15012 @end table
15013
15014 @subsection Examples
15015
15016 @itemize
15017 @item
15018 Apply horizontal and vertical deblocking, deringing and automatic
15019 brightness/contrast:
15020 @example
15021 pp=hb/vb/dr/al
15022 @end example
15023
15024 @item
15025 Apply default filters without brightness/contrast correction:
15026 @example
15027 pp=de/-al
15028 @end example
15029
15030 @item
15031 Apply default filters and temporal denoiser:
15032 @example
15033 pp=default/tmpnoise|1|2|3
15034 @end example
15035
15036 @item
15037 Apply deblocking on luminance only, and switch vertical deblocking on or off
15038 automatically depending on available CPU time:
15039 @example
15040 pp=hb|y/vb|a
15041 @end example
15042 @end itemize
15043
15044 @section pp7
15045 Apply Postprocessing filter 7. It is variant of the @ref{spp} filter,
15046 similar to spp = 6 with 7 point DCT, where only the center sample is
15047 used after IDCT.
15048
15049 The filter accepts the following options:
15050
15051 @table @option
15052 @item qp
15053 Force a constant quantization parameter. It accepts an integer in range
15054 0 to 63. If not set, the filter will use the QP from the video stream
15055 (if available).
15056
15057 @item mode
15058 Set thresholding mode. Available modes are:
15059
15060 @table @samp
15061 @item hard
15062 Set hard thresholding.
15063 @item soft
15064 Set soft thresholding (better de-ringing effect, but likely blurrier).
15065 @item medium
15066 Set medium thresholding (good results, default).
15067 @end table
15068 @end table
15069
15070 @section premultiply
15071 Apply alpha premultiply effect to input video stream using first plane
15072 of second stream as alpha.
15073
15074 Both streams must have same dimensions and same pixel format.
15075
15076 The filter accepts the following option:
15077
15078 @table @option
15079 @item planes
15080 Set which planes will be processed, unprocessed planes will be copied.
15081 By default value 0xf, all planes will be processed.
15082
15083 @item inplace
15084 Do not require 2nd input for processing, instead use alpha plane from input stream.
15085 @end table
15086
15087 @section prewitt
15088 Apply prewitt operator to input video stream.
15089
15090 The filter accepts the following option:
15091
15092 @table @option
15093 @item planes
15094 Set which planes will be processed, unprocessed planes will be copied.
15095 By default value 0xf, all planes will be processed.
15096
15097 @item scale
15098 Set value which will be multiplied with filtered result.
15099
15100 @item delta
15101 Set value which will be added to filtered result.
15102 @end table
15103
15104 @section pseudocolor
15105
15106 Alter frame colors in video with pseudocolors.
15107
15108 This filter accepts the following options:
15109
15110 @table @option
15111 @item c0
15112 set pixel first component expression
15113
15114 @item c1
15115 set pixel second component expression
15116
15117 @item c2
15118 set pixel third component expression
15119
15120 @item c3
15121 set pixel fourth component expression, corresponds to the alpha component
15122
15123 @item i
15124 set component to use as base for altering colors
15125 @end table
15126
15127 Each of them specifies the expression to use for computing the lookup table for
15128 the corresponding pixel component values.
15129
15130 The expressions can contain the following constants and functions:
15131
15132 @table @option
15133 @item w
15134 @item h
15135 The input width and height.
15136
15137 @item val
15138 The input value for the pixel component.
15139
15140 @item ymin, umin, vmin, amin
15141 The minimum allowed component value.
15142
15143 @item ymax, umax, vmax, amax
15144 The maximum allowed component value.
15145 @end table
15146
15147 All expressions default to "val".
15148
15149 @subsection Examples
15150
15151 @itemize
15152 @item
15153 Change too high luma values to gradient:
15154 @example
15155 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'"
15156 @end example
15157 @end itemize
15158
15159 @section psnr
15160
15161 Obtain the average, maximum and minimum PSNR (Peak Signal to Noise
15162 Ratio) between two input videos.
15163
15164 This filter takes in input two input videos, the first input is
15165 considered the "main" source and is passed unchanged to the
15166 output. The second input is used as a "reference" video for computing
15167 the PSNR.
15168
15169 Both video inputs must have the same resolution and pixel format for
15170 this filter to work correctly. Also it assumes that both inputs
15171 have the same number of frames, which are compared one by one.
15172
15173 The obtained average PSNR is printed through the logging system.
15174
15175 The filter stores the accumulated MSE (mean squared error) of each
15176 frame, and at the end of the processing it is averaged across all frames
15177 equally, and the following formula is applied to obtain the PSNR:
15178
15179 @example
15180 PSNR = 10*log10(MAX^2/MSE)
15181 @end example
15182
15183 Where MAX is the average of the maximum values of each component of the
15184 image.
15185
15186 The description of the accepted parameters follows.
15187
15188 @table @option
15189 @item stats_file, f
15190 If specified the filter will use the named file to save the PSNR of
15191 each individual frame. When filename equals "-" the data is sent to
15192 standard output.
15193
15194 @item stats_version
15195 Specifies which version of the stats file format to use. Details of
15196 each format are written below.
15197 Default value is 1.
15198
15199 @item stats_add_max
15200 Determines whether the max value is output to the stats log.
15201 Default value is 0.
15202 Requires stats_version >= 2. If this is set and stats_version < 2,
15203 the filter will return an error.
15204 @end table
15205
15206 This filter also supports the @ref{framesync} options.
15207
15208 The file printed if @var{stats_file} is selected, contains a sequence of
15209 key/value pairs of the form @var{key}:@var{value} for each compared
15210 couple of frames.
15211
15212 If a @var{stats_version} greater than 1 is specified, a header line precedes
15213 the list of per-frame-pair stats, with key value pairs following the frame
15214 format with the following parameters:
15215
15216 @table @option
15217 @item psnr_log_version
15218 The version of the log file format. Will match @var{stats_version}.
15219
15220 @item fields
15221 A comma separated list of the per-frame-pair parameters included in
15222 the log.
15223 @end table
15224
15225 A description of each shown per-frame-pair parameter follows:
15226
15227 @table @option
15228 @item n
15229 sequential number of the input frame, starting from 1
15230
15231 @item mse_avg
15232 Mean Square Error pixel-by-pixel average difference of the compared
15233 frames, averaged over all the image components.
15234
15235 @item mse_y, mse_u, mse_v, mse_r, mse_g, mse_b, mse_a
15236 Mean Square Error pixel-by-pixel average difference of the compared
15237 frames for the component specified by the suffix.
15238
15239 @item psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a
15240 Peak Signal to Noise ratio of the compared frames for the component
15241 specified by the suffix.
15242
15243 @item max_avg, max_y, max_u, max_v
15244 Maximum allowed value for each channel, and average over all
15245 channels.
15246 @end table
15247
15248 @subsection Examples
15249 @itemize
15250 @item
15251 For example:
15252 @example
15253 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
15254 [main][ref] psnr="stats_file=stats.log" [out]
15255 @end example
15256
15257 On this example the input file being processed is compared with the
15258 reference file @file{ref_movie.mpg}. The PSNR of each individual frame
15259 is stored in @file{stats.log}.
15260
15261 @item
15262 Another example with different containers:
15263 @example
15264 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 -
15265 @end example
15266 @end itemize
15267
15268 @anchor{pullup}
15269 @section pullup
15270
15271 Pulldown reversal (inverse telecine) filter, capable of handling mixed
15272 hard-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
15273 content.
15274
15275 The pullup filter is designed to take advantage of future context in making
15276 its decisions. This filter is stateless in the sense that it does not lock
15277 onto a pattern to follow, but it instead looks forward to the following
15278 fields in order to identify matches and rebuild progressive frames.
15279
15280 To produce content with an even framerate, insert the fps filter after
15281 pullup, use @code{fps=24000/1001} if the input frame rate is 29.97fps,
15282 @code{fps=24} for 30fps and the (rare) telecined 25fps input.
15283
15284 The filter accepts the following options:
15285
15286 @table @option
15287 @item jl
15288 @item jr
15289 @item jt
15290 @item jb
15291 These options set the amount of "junk" to ignore at the left, right, top, and
15292 bottom of the image, respectively. Left and right are in units of 8 pixels,
15293 while top and bottom are in units of 2 lines.
15294 The default is 8 pixels on each side.
15295
15296 @item sb
15297 Set the strict breaks. Setting this option to 1 will reduce the chances of
15298 filter generating an occasional mismatched frame, but it may also cause an
15299 excessive number of frames to be dropped during high motion sequences.
15300 Conversely, setting it to -1 will make filter match fields more easily.
15301 This may help processing of video where there is slight blurring between
15302 the fields, but may also cause there to be interlaced frames in the output.
15303 Default value is @code{0}.
15304
15305 @item mp
15306 Set the metric plane to use. It accepts the following values:
15307 @table @samp
15308 @item l
15309 Use luma plane.
15310
15311 @item u
15312 Use chroma blue plane.
15313
15314 @item v
15315 Use chroma red plane.
15316 @end table
15317
15318 This option may be set to use chroma plane instead of the default luma plane
15319 for doing filter's computations. This may improve accuracy on very clean
15320 source material, but more likely will decrease accuracy, especially if there
15321 is chroma noise (rainbow effect) or any grayscale video.
15322 The main purpose of setting @option{mp} to a chroma plane is to reduce CPU
15323 load and make pullup usable in realtime on slow machines.
15324 @end table
15325
15326 For best results (without duplicated frames in the output file) it is
15327 necessary to change the output frame rate. For example, to inverse
15328 telecine NTSC input:
15329 @example
15330 ffmpeg -i input -vf pullup -r 24000/1001 ...
15331 @end example
15332
15333 @section qp
15334
15335 Change video quantization parameters (QP).
15336
15337 The filter accepts the following option:
15338
15339 @table @option
15340 @item qp
15341 Set expression for quantization parameter.
15342 @end table
15343
15344 The expression is evaluated through the eval API and can contain, among others,
15345 the following constants:
15346
15347 @table @var
15348 @item known
15349 1 if index is not 129, 0 otherwise.
15350
15351 @item qp
15352 Sequential index starting from -129 to 128.
15353 @end table
15354
15355 @subsection Examples
15356
15357 @itemize
15358 @item
15359 Some equation like:
15360 @example
15361 qp=2+2*sin(PI*qp)
15362 @end example
15363 @end itemize
15364
15365 @section random
15366
15367 Flush video frames from internal cache of frames into a random order.
15368 No frame is discarded.
15369 Inspired by @ref{frei0r} nervous filter.
15370
15371 @table @option
15372 @item frames
15373 Set size in number of frames of internal cache, in range from @code{2} to
15374 @code{512}. Default is @code{30}.
15375
15376 @item seed
15377 Set seed for random number generator, must be an integer included between
15378 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
15379 less than @code{0}, the filter will try to use a good random seed on a
15380 best effort basis.
15381 @end table
15382
15383 @section readeia608
15384
15385 Read closed captioning (EIA-608) information from the top lines of a video frame.
15386
15387 This filter adds frame metadata for @code{lavfi.readeia608.X.cc} and
15388 @code{lavfi.readeia608.X.line}, where @code{X} is the number of the identified line
15389 with EIA-608 data (starting from 0). A description of each metadata value follows:
15390
15391 @table @option
15392 @item lavfi.readeia608.X.cc
15393 The two bytes stored as EIA-608 data (printed in hexadecimal).
15394
15395 @item lavfi.readeia608.X.line
15396 The number of the line on which the EIA-608 data was identified and read.
15397 @end table
15398
15399 This filter accepts the following options:
15400
15401 @table @option
15402 @item scan_min
15403 Set the line to start scanning for EIA-608 data. Default is @code{0}.
15404
15405 @item scan_max
15406 Set the line to end scanning for EIA-608 data. Default is @code{29}.
15407
15408 @item spw
15409 Set the ratio of width reserved for sync code detection.
15410 Default is @code{0.27}. Allowed range is @code{[0.1 - 0.7]}.
15411
15412 @item chp
15413 Enable checking the parity bit. In the event of a parity error, the filter will output
15414 @code{0x00} for that character. Default is false.
15415
15416 @item lp
15417 Lowpass lines prior to further processing. Default is enabled.
15418 @end table
15419
15420 @subsection Examples
15421
15422 @itemize
15423 @item
15424 Output a csv with presentation time and the first two lines of identified EIA-608 captioning data.
15425 @example
15426 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
15427 @end example
15428 @end itemize
15429
15430 @section readvitc
15431
15432 Read vertical interval timecode (VITC) information from the top lines of a
15433 video frame.
15434
15435 The filter adds frame metadata key @code{lavfi.readvitc.tc_str} with the
15436 timecode value, if a valid timecode has been detected. Further metadata key
15437 @code{lavfi.readvitc.found} is set to 0/1 depending on whether
15438 timecode data has been found or not.
15439
15440 This filter accepts the following options:
15441
15442 @table @option
15443 @item scan_max
15444 Set the maximum number of lines to scan for VITC data. If the value is set to
15445 @code{-1} the full video frame is scanned. Default is @code{45}.
15446
15447 @item thr_b
15448 Set the luma threshold for black. Accepts float numbers in the range [0.0,1.0],
15449 default value is @code{0.2}. The value must be equal or less than @code{thr_w}.
15450
15451 @item thr_w
15452 Set the luma threshold for white. Accepts float numbers in the range [0.0,1.0],
15453 default value is @code{0.6}. The value must be equal or greater than @code{thr_b}.
15454 @end table
15455
15456 @subsection Examples
15457
15458 @itemize
15459 @item
15460 Detect and draw VITC data onto the video frame; if no valid VITC is detected,
15461 draw @code{--:--:--:--} as a placeholder:
15462 @example
15463 ffmpeg -i input.avi -filter:v 'readvitc,drawtext=fontfile=FreeMono.ttf:text=%@{metadata\\:lavfi.readvitc.tc_str\\:--\\\\\\:--\\\\\\:--\\\\\\:--@}:x=(w-tw)/2:y=400-ascent'
15464 @end example
15465 @end itemize
15466
15467 @section remap
15468
15469 Remap pixels using 2nd: Xmap and 3rd: Ymap input video stream.
15470
15471 Destination pixel at position (X, Y) will be picked from source (x, y) position
15472 where x = Xmap(X, Y) and y = Ymap(X, Y). If mapping values are out of range, zero
15473 value for pixel will be used for destination pixel.
15474
15475 Xmap and Ymap input video streams must be of same dimensions. Output video stream
15476 will have Xmap/Ymap video stream dimensions.
15477 Xmap and Ymap input video streams are 16bit depth, single channel.
15478
15479 @table @option
15480 @item format
15481 Specify pixel format of output from this filter. Can be @code{color} or @code{gray}.
15482 Default is @code{color}.
15483 @end table
15484
15485 @section removegrain
15486
15487 The removegrain filter is a spatial denoiser for progressive video.
15488
15489 @table @option
15490 @item m0
15491 Set mode for the first plane.
15492
15493 @item m1
15494 Set mode for the second plane.
15495
15496 @item m2
15497 Set mode for the third plane.
15498
15499 @item m3
15500 Set mode for the fourth plane.
15501 @end table
15502
15503 Range of mode is from 0 to 24. Description of each mode follows:
15504
15505 @table @var
15506 @item 0
15507 Leave input plane unchanged. Default.
15508
15509 @item 1
15510 Clips the pixel with the minimum and maximum of the 8 neighbour pixels.
15511
15512 @item 2
15513 Clips the pixel with the second minimum and maximum of the 8 neighbour pixels.
15514
15515 @item 3
15516 Clips the pixel with the third minimum and maximum of the 8 neighbour pixels.
15517
15518 @item 4
15519 Clips the pixel with the fourth minimum and maximum of the 8 neighbour pixels.
15520 This is equivalent to a median filter.
15521
15522 @item 5
15523 Line-sensitive clipping giving the minimal change.
15524
15525 @item 6
15526 Line-sensitive clipping, intermediate.
15527
15528 @item 7
15529 Line-sensitive clipping, intermediate.
15530
15531 @item 8
15532 Line-sensitive clipping, intermediate.
15533
15534 @item 9
15535 Line-sensitive clipping on a line where the neighbours pixels are the closest.
15536
15537 @item 10
15538 Replaces the target pixel with the closest neighbour.
15539
15540 @item 11
15541 [1 2 1] horizontal and vertical kernel blur.
15542
15543 @item 12
15544 Same as mode 11.
15545
15546 @item 13
15547 Bob mode, interpolates top field from the line where the neighbours
15548 pixels are the closest.
15549
15550 @item 14
15551 Bob mode, interpolates bottom field from the line where the neighbours
15552 pixels are the closest.
15553
15554 @item 15
15555 Bob mode, interpolates top field. Same as 13 but with a more complicated
15556 interpolation formula.
15557
15558 @item 16
15559 Bob mode, interpolates bottom field. Same as 14 but with a more complicated
15560 interpolation formula.
15561
15562 @item 17
15563 Clips the pixel with the minimum and maximum of respectively the maximum and
15564 minimum of each pair of opposite neighbour pixels.
15565
15566 @item 18
15567 Line-sensitive clipping using opposite neighbours whose greatest distance from
15568 the current pixel is minimal.
15569
15570 @item 19
15571 Replaces the pixel with the average of its 8 neighbours.
15572
15573 @item 20
15574 Averages the 9 pixels ([1 1 1] horizontal and vertical blur).
15575
15576 @item 21
15577 Clips pixels using the averages of opposite neighbour.
15578
15579 @item 22
15580 Same as mode 21 but simpler and faster.
15581
15582 @item 23
15583 Small edge and halo removal, but reputed useless.
15584
15585 @item 24
15586 Similar as 23.
15587 @end table
15588
15589 @section removelogo
15590
15591 Suppress a TV station logo, using an image file to determine which
15592 pixels comprise the logo. It works by filling in the pixels that
15593 comprise the logo with neighboring pixels.
15594
15595 The filter accepts the following options:
15596
15597 @table @option
15598 @item filename, f
15599 Set the filter bitmap file, which can be any image format supported by
15600 libavformat. The width and height of the image file must match those of the
15601 video stream being processed.
15602 @end table
15603
15604 Pixels in the provided bitmap image with a value of zero are not
15605 considered part of the logo, non-zero pixels are considered part of
15606 the logo. If you use white (255) for the logo and black (0) for the
15607 rest, you will be safe. For making the filter bitmap, it is
15608 recommended to take a screen capture of a black frame with the logo
15609 visible, and then using a threshold filter followed by the erode
15610 filter once or twice.
15611
15612 If needed, little splotches can be fixed manually. Remember that if
15613 logo pixels are not covered, the filter quality will be much
15614 reduced. Marking too many pixels as part of the logo does not hurt as
15615 much, but it will increase the amount of blurring needed to cover over
15616 the image and will destroy more information than necessary, and extra
15617 pixels will slow things down on a large logo.
15618
15619 @section repeatfields
15620
15621 This filter uses the repeat_field flag from the Video ES headers and hard repeats
15622 fields based on its value.
15623
15624 @section reverse
15625
15626 Reverse a video clip.
15627
15628 Warning: This filter requires memory to buffer the entire clip, so trimming
15629 is suggested.
15630
15631 @subsection Examples
15632
15633 @itemize
15634 @item
15635 Take the first 5 seconds of a clip, and reverse it.
15636 @example
15637 trim=end=5,reverse
15638 @end example
15639 @end itemize
15640
15641 @section rgbashift
15642 Shift R/G/B/A pixels horizontally and/or vertically.
15643
15644 The filter accepts the following options:
15645 @table @option
15646 @item rh
15647 Set amount to shift red horizontally.
15648 @item rv
15649 Set amount to shift red vertically.
15650 @item gh
15651 Set amount to shift green horizontally.
15652 @item gv
15653 Set amount to shift green vertically.
15654 @item bh
15655 Set amount to shift blue horizontally.
15656 @item bv
15657 Set amount to shift blue vertically.
15658 @item ah
15659 Set amount to shift alpha horizontally.
15660 @item av
15661 Set amount to shift alpha vertically.
15662 @item edge
15663 Set edge mode, can be @var{smear}, default, or @var{warp}.
15664 @end table
15665
15666 @subsection Commands
15667
15668 This filter supports the all above options as @ref{commands}.
15669
15670 @section roberts
15671 Apply roberts cross operator to input video stream.
15672
15673 The filter accepts the following option:
15674
15675 @table @option
15676 @item planes
15677 Set which planes will be processed, unprocessed planes will be copied.
15678 By default value 0xf, all planes will be processed.
15679
15680 @item scale
15681 Set value which will be multiplied with filtered result.
15682
15683 @item delta
15684 Set value which will be added to filtered result.
15685 @end table
15686
15687 @section rotate
15688
15689 Rotate video by an arbitrary angle expressed in radians.
15690
15691 The filter accepts the following options:
15692
15693 A description of the optional parameters follows.
15694 @table @option
15695 @item angle, a
15696 Set an expression for the angle by which to rotate the input video
15697 clockwise, expressed as a number of radians. A negative value will
15698 result in a counter-clockwise rotation. By default it is set to "0".
15699
15700 This expression is evaluated for each frame.
15701
15702 @item out_w, ow
15703 Set the output width expression, default value is "iw".
15704 This expression is evaluated just once during configuration.
15705
15706 @item out_h, oh
15707 Set the output height expression, default value is "ih".
15708 This expression is evaluated just once during configuration.
15709
15710 @item bilinear
15711 Enable bilinear interpolation if set to 1, a value of 0 disables
15712 it. Default value is 1.
15713
15714 @item fillcolor, c
15715 Set the color used to fill the output area not covered by the rotated
15716 image. For the general syntax of this option, check the
15717 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
15718 If the special value "none" is selected then no
15719 background is printed (useful for example if the background is never shown).
15720
15721 Default value is "black".
15722 @end table
15723
15724 The expressions for the angle and the output size can contain the
15725 following constants and functions:
15726
15727 @table @option
15728 @item n
15729 sequential number of the input frame, starting from 0. It is always NAN
15730 before the first frame is filtered.
15731
15732 @item t
15733 time in seconds of the input frame, it is set to 0 when the filter is
15734 configured. It is always NAN before the first frame is filtered.
15735
15736 @item hsub
15737 @item vsub
15738 horizontal and vertical chroma subsample values. For example for the
15739 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
15740
15741 @item in_w, iw
15742 @item in_h, ih
15743 the input video width and height
15744
15745 @item out_w, ow
15746 @item out_h, oh
15747 the output width and height, that is the size of the padded area as
15748 specified by the @var{width} and @var{height} expressions
15749
15750 @item rotw(a)
15751 @item roth(a)
15752 the minimal width/height required for completely containing the input
15753 video rotated by @var{a} radians.
15754
15755 These are only available when computing the @option{out_w} and
15756 @option{out_h} expressions.
15757 @end table
15758
15759 @subsection Examples
15760
15761 @itemize
15762 @item
15763 Rotate the input by PI/6 radians clockwise:
15764 @example
15765 rotate=PI/6
15766 @end example
15767
15768 @item
15769 Rotate the input by PI/6 radians counter-clockwise:
15770 @example
15771 rotate=-PI/6
15772 @end example
15773
15774 @item
15775 Rotate the input by 45 degrees clockwise:
15776 @example
15777 rotate=45*PI/180
15778 @end example
15779
15780 @item
15781 Apply a constant rotation with period T, starting from an angle of PI/3:
15782 @example
15783 rotate=PI/3+2*PI*t/T
15784 @end example
15785
15786 @item
15787 Make the input video rotation oscillating with a period of T
15788 seconds and an amplitude of A radians:
15789 @example
15790 rotate=A*sin(2*PI/T*t)
15791 @end example
15792
15793 @item
15794 Rotate the video, output size is chosen so that the whole rotating
15795 input video is always completely contained in the output:
15796 @example
15797 rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
15798 @end example
15799
15800 @item
15801 Rotate the video, reduce the output size so that no background is ever
15802 shown:
15803 @example
15804 rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
15805 @end example
15806 @end itemize
15807
15808 @subsection Commands
15809
15810 The filter supports the following commands:
15811
15812 @table @option
15813 @item a, angle
15814 Set the angle expression.
15815 The command accepts the same syntax of the corresponding option.
15816
15817 If the specified expression is not valid, it is kept at its current
15818 value.
15819 @end table
15820
15821 @section sab
15822
15823 Apply Shape Adaptive Blur.
15824
15825 The filter accepts the following options:
15826
15827 @table @option
15828 @item luma_radius, lr
15829 Set luma blur filter strength, must be a value in range 0.1-4.0, default
15830 value is 1.0. A greater value will result in a more blurred image, and
15831 in slower processing.
15832
15833 @item luma_pre_filter_radius, lpfr
15834 Set luma pre-filter radius, must be a value in the 0.1-2.0 range, default
15835 value is 1.0.
15836
15837 @item luma_strength, ls
15838 Set luma maximum difference between pixels to still be considered, must
15839 be a value in the 0.1-100.0 range, default value is 1.0.
15840
15841 @item chroma_radius, cr
15842 Set chroma blur filter strength, must be a value in range -0.9-4.0. A
15843 greater value will result in a more blurred image, and in slower
15844 processing.
15845
15846 @item chroma_pre_filter_radius, cpfr
15847 Set chroma pre-filter radius, must be a value in the -0.9-2.0 range.
15848
15849 @item chroma_strength, cs
15850 Set chroma maximum difference between pixels to still be considered,
15851 must be a value in the -0.9-100.0 range.
15852 @end table
15853
15854 Each chroma option value, if not explicitly specified, is set to the
15855 corresponding luma option value.
15856
15857 @anchor{scale}
15858 @section scale
15859
15860 Scale (resize) the input video, using the libswscale library.
15861
15862 The scale filter forces the output display aspect ratio to be the same
15863 of the input, by changing the output sample aspect ratio.
15864
15865 If the input image format is different from the format requested by
15866 the next filter, the scale filter will convert the input to the
15867 requested format.
15868
15869 @subsection Options
15870 The filter accepts the following options, or any of the options
15871 supported by the libswscale scaler.
15872
15873 See @ref{scaler_options,,the ffmpeg-scaler manual,ffmpeg-scaler} for
15874 the complete list of scaler options.
15875
15876 @table @option
15877 @item width, w
15878 @item height, h
15879 Set the output video dimension expression. Default value is the input
15880 dimension.
15881
15882 If the @var{width} or @var{w} value is 0, the input width is used for
15883 the output. If the @var{height} or @var{h} value is 0, the input height
15884 is used for the output.
15885
15886 If one and only one of the values is -n with n >= 1, the scale filter
15887 will use a value that maintains the aspect ratio of the input image,
15888 calculated from the other specified dimension. After that it will,
15889 however, make sure that the calculated dimension is divisible by n and
15890 adjust the value if necessary.
15891
15892 If both values are -n with n >= 1, the behavior will be identical to
15893 both values being set to 0 as previously detailed.
15894
15895 See below for the list of accepted constants for use in the dimension
15896 expression.
15897
15898 @item eval
15899 Specify when to evaluate @var{width} and @var{height} expression. It accepts the following values:
15900
15901 @table @samp
15902 @item init
15903 Only evaluate expressions once during the filter initialization or when a command is processed.
15904
15905 @item frame
15906 Evaluate expressions for each incoming frame.
15907
15908 @end table
15909
15910 Default value is @samp{init}.
15911
15912
15913 @item interl
15914 Set the interlacing mode. It accepts the following values:
15915
15916 @table @samp
15917 @item 1
15918 Force interlaced aware scaling.
15919
15920 @item 0
15921 Do not apply interlaced scaling.
15922
15923 @item -1
15924 Select interlaced aware scaling depending on whether the source frames
15925 are flagged as interlaced or not.
15926 @end table
15927
15928 Default value is @samp{0}.
15929
15930 @item flags
15931 Set libswscale scaling flags. See
15932 @ref{sws_flags,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
15933 complete list of values. If not explicitly specified the filter applies
15934 the default flags.
15935
15936
15937 @item param0, param1
15938 Set libswscale input parameters for scaling algorithms that need them. See
15939 @ref{sws_params,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
15940 complete documentation. If not explicitly specified the filter applies
15941 empty parameters.
15942
15943
15944
15945 @item size, s
15946 Set the video size. For the syntax of this option, check the
15947 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
15948
15949 @item in_color_matrix
15950 @item out_color_matrix
15951 Set in/output YCbCr color space type.
15952
15953 This allows the autodetected value to be overridden as well as allows forcing
15954 a specific value used for the output and encoder.
15955
15956 If not specified, the color space type depends on the pixel format.
15957
15958 Possible values:
15959
15960 @table @samp
15961 @item auto
15962 Choose automatically.
15963
15964 @item bt709
15965 Format conforming to International Telecommunication Union (ITU)
15966 Recommendation BT.709.
15967
15968 @item fcc
15969 Set color space conforming to the United States Federal Communications
15970 Commission (FCC) Code of Federal Regulations (CFR) Title 47 (2003) 73.682 (a).
15971
15972 @item bt601
15973 @item bt470
15974 @item smpte170m
15975 Set color space conforming to:
15976
15977 @itemize
15978 @item
15979 ITU Radiocommunication Sector (ITU-R) Recommendation BT.601
15980
15981 @item
15982 ITU-R Rec. BT.470-6 (1998) Systems B, B1, and G
15983
15984 @item
15985 Society of Motion Picture and Television Engineers (SMPTE) ST 170:2004
15986
15987 @end itemize
15988
15989 @item smpte240m
15990 Set color space conforming to SMPTE ST 240:1999.
15991
15992 @item bt2020
15993 Set color space conforming to ITU-R BT.2020 non-constant luminance system.
15994 @end table
15995
15996 @item in_range
15997 @item out_range
15998 Set in/output YCbCr sample range.
15999
16000 This allows the autodetected value to be overridden as well as allows forcing
16001 a specific value used for the output and encoder. If not specified, the
16002 range depends on the pixel format. Possible values:
16003
16004 @table @samp
16005 @item auto/unknown
16006 Choose automatically.
16007
16008 @item jpeg/full/pc
16009 Set full range (0-255 in case of 8-bit luma).
16010
16011 @item mpeg/limited/tv
16012 Set "MPEG" range (16-235 in case of 8-bit luma).
16013 @end table
16014
16015 @item force_original_aspect_ratio
16016 Enable decreasing or increasing output video width or height if necessary to
16017 keep the original aspect ratio. Possible values:
16018
16019 @table @samp
16020 @item disable
16021 Scale the video as specified and disable this feature.
16022
16023 @item decrease
16024 The output video dimensions will automatically be decreased if needed.
16025
16026 @item increase
16027 The output video dimensions will automatically be increased if needed.
16028
16029 @end table
16030
16031 One useful instance of this option is that when you know a specific device's
16032 maximum allowed resolution, you can use this to limit the output video to
16033 that, while retaining the aspect ratio. For example, device A allows
16034 1280x720 playback, and your video is 1920x800. Using this option (set it to
16035 decrease) and specifying 1280x720 to the command line makes the output
16036 1280x533.
16037
16038 Please note that this is a different thing than specifying -1 for @option{w}
16039 or @option{h}, you still need to specify the output resolution for this option
16040 to work.
16041
16042 @item force_divisible_by
16043 Ensures that both the output dimensions, width and height, are divisible by the
16044 given integer when used together with @option{force_original_aspect_ratio}. This
16045 works similar to using @code{-n} in the @option{w} and @option{h} options.
16046
16047 This option respects the value set for @option{force_original_aspect_ratio},
16048 increasing or decreasing the resolution accordingly. The video's aspect ratio
16049 may be slightly modified.
16050
16051 This option can be handy if you need to have a video fit within or exceed
16052 a defined resolution using @option{force_original_aspect_ratio} but also have
16053 encoder restrictions on width or height divisibility.
16054
16055 @end table
16056
16057 The values of the @option{w} and @option{h} options are expressions
16058 containing the following constants:
16059
16060 @table @var
16061 @item in_w
16062 @item in_h
16063 The input width and height
16064
16065 @item iw
16066 @item ih
16067 These are the same as @var{in_w} and @var{in_h}.
16068
16069 @item out_w
16070 @item out_h
16071 The output (scaled) width and height
16072
16073 @item ow
16074 @item oh
16075 These are the same as @var{out_w} and @var{out_h}
16076
16077 @item a
16078 The same as @var{iw} / @var{ih}
16079
16080 @item sar
16081 input sample aspect ratio
16082
16083 @item dar
16084 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
16085
16086 @item hsub
16087 @item vsub
16088 horizontal and vertical input chroma subsample values. For example for the
16089 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16090
16091 @item ohsub
16092 @item ovsub
16093 horizontal and vertical output chroma subsample values. For example for the
16094 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16095
16096 @item n
16097 The (sequential) number of the input frame, starting from 0.
16098 Only available with @code{eval=frame}.
16099
16100 @item t
16101 The presentation timestamp of the input frame, expressed as a number of
16102 seconds. Only available with @code{eval=frame}.
16103
16104 @item pos
16105 The position (byte offset) of the frame in the input stream, or NaN if
16106 this information is unavailable and/or meaningless (for example in case of synthetic video).
16107 Only available with @code{eval=frame}.
16108 @end table
16109
16110 @subsection Examples
16111
16112 @itemize
16113 @item
16114 Scale the input video to a size of 200x100
16115 @example
16116 scale=w=200:h=100
16117 @end example
16118
16119 This is equivalent to:
16120 @example
16121 scale=200:100
16122 @end example
16123
16124 or:
16125 @example
16126 scale=200x100
16127 @end example
16128
16129 @item
16130 Specify a size abbreviation for the output size:
16131 @example
16132 scale=qcif
16133 @end example
16134
16135 which can also be written as:
16136 @example
16137 scale=size=qcif
16138 @end example
16139
16140 @item
16141 Scale the input to 2x:
16142 @example
16143 scale=w=2*iw:h=2*ih
16144 @end example
16145
16146 @item
16147 The above is the same as:
16148 @example
16149 scale=2*in_w:2*in_h
16150 @end example
16151
16152 @item
16153 Scale the input to 2x with forced interlaced scaling:
16154 @example
16155 scale=2*iw:2*ih:interl=1
16156 @end example
16157
16158 @item
16159 Scale the input to half size:
16160 @example
16161 scale=w=iw/2:h=ih/2
16162 @end example
16163
16164 @item
16165 Increase the width, and set the height to the same size:
16166 @example
16167 scale=3/2*iw:ow
16168 @end example
16169
16170 @item
16171 Seek Greek harmony:
16172 @example
16173 scale=iw:1/PHI*iw
16174 scale=ih*PHI:ih
16175 @end example
16176
16177 @item
16178 Increase the height, and set the width to 3/2 of the height:
16179 @example
16180 scale=w=3/2*oh:h=3/5*ih
16181 @end example
16182
16183 @item
16184 Increase the size, making the size a multiple of the chroma
16185 subsample values:
16186 @example
16187 scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
16188 @end example
16189
16190 @item
16191 Increase the width to a maximum of 500 pixels,
16192 keeping the same aspect ratio as the input:
16193 @example
16194 scale=w='min(500\, iw*3/2):h=-1'
16195 @end example
16196
16197 @item
16198 Make pixels square by combining scale and setsar:
16199 @example
16200 scale='trunc(ih*dar):ih',setsar=1/1
16201 @end example
16202
16203 @item
16204 Make pixels square by combining scale and setsar,
16205 making sure the resulting resolution is even (required by some codecs):
16206 @example
16207 scale='trunc(ih*dar/2)*2:trunc(ih/2)*2',setsar=1/1
16208 @end example
16209 @end itemize
16210
16211 @subsection Commands
16212
16213 This filter supports the following commands:
16214 @table @option
16215 @item width, w
16216 @item height, h
16217 Set the output video dimension expression.
16218 The command accepts the same syntax of the corresponding option.
16219
16220 If the specified expression is not valid, it is kept at its current
16221 value.
16222 @end table
16223
16224 @section scale_npp
16225
16226 Use the NVIDIA Performance Primitives (libnpp) to perform scaling and/or pixel
16227 format conversion on CUDA video frames. Setting the output width and height
16228 works in the same way as for the @var{scale} filter.
16229
16230 The following additional options are accepted:
16231 @table @option
16232 @item format
16233 The pixel format of the output CUDA frames. If set to the string "same" (the
16234 default), the input format will be kept. Note that automatic format negotiation
16235 and conversion is not yet supported for hardware frames
16236
16237 @item interp_algo
16238 The interpolation algorithm used for resizing. One of the following:
16239 @table @option
16240 @item nn
16241 Nearest neighbour.
16242
16243 @item linear
16244 @item cubic
16245 @item cubic2p_bspline
16246 2-parameter cubic (B=1, C=0)
16247
16248 @item cubic2p_catmullrom
16249 2-parameter cubic (B=0, C=1/2)
16250
16251 @item cubic2p_b05c03
16252 2-parameter cubic (B=1/2, C=3/10)
16253
16254 @item super
16255 Supersampling
16256
16257 @item lanczos
16258 @end table
16259
16260 @item force_original_aspect_ratio
16261 Enable decreasing or increasing output video width or height if necessary to
16262 keep the original aspect ratio. Possible values:
16263
16264 @table @samp
16265 @item disable
16266 Scale the video as specified and disable this feature.
16267
16268 @item decrease
16269 The output video dimensions will automatically be decreased if needed.
16270
16271 @item increase
16272 The output video dimensions will automatically be increased if needed.
16273
16274 @end table
16275
16276 One useful instance of this option is that when you know a specific device's
16277 maximum allowed resolution, you can use this to limit the output video to
16278 that, while retaining the aspect ratio. For example, device A allows
16279 1280x720 playback, and your video is 1920x800. Using this option (set it to
16280 decrease) and specifying 1280x720 to the command line makes the output
16281 1280x533.
16282
16283 Please note that this is a different thing than specifying -1 for @option{w}
16284 or @option{h}, you still need to specify the output resolution for this option
16285 to work.
16286
16287 @item force_divisible_by
16288 Ensures that both the output dimensions, width and height, are divisible by the
16289 given integer when used together with @option{force_original_aspect_ratio}. This
16290 works similar to using @code{-n} in the @option{w} and @option{h} options.
16291
16292 This option respects the value set for @option{force_original_aspect_ratio},
16293 increasing or decreasing the resolution accordingly. The video's aspect ratio
16294 may be slightly modified.
16295
16296 This option can be handy if you need to have a video fit within or exceed
16297 a defined resolution using @option{force_original_aspect_ratio} but also have
16298 encoder restrictions on width or height divisibility.
16299
16300 @end table
16301
16302 @section scale2ref
16303
16304 Scale (resize) the input video, based on a reference video.
16305
16306 See the scale filter for available options, scale2ref supports the same but
16307 uses the reference video instead of the main input as basis. scale2ref also
16308 supports the following additional constants for the @option{w} and
16309 @option{h} options:
16310
16311 @table @var
16312 @item main_w
16313 @item main_h
16314 The main input video's width and height
16315
16316 @item main_a
16317 The same as @var{main_w} / @var{main_h}
16318
16319 @item main_sar
16320 The main input video's sample aspect ratio
16321
16322 @item main_dar, mdar
16323 The main input video's display aspect ratio. Calculated from
16324 @code{(main_w / main_h) * main_sar}.
16325
16326 @item main_hsub
16327 @item main_vsub
16328 The main input video's horizontal and vertical chroma subsample values.
16329 For example for the pixel format "yuv422p" @var{hsub} is 2 and @var{vsub}
16330 is 1.
16331
16332 @item main_n
16333 The (sequential) number of the main input frame, starting from 0.
16334 Only available with @code{eval=frame}.
16335
16336 @item main_t
16337 The presentation timestamp of the main input frame, expressed as a number of
16338 seconds. Only available with @code{eval=frame}.
16339
16340 @item main_pos
16341 The position (byte offset) of the frame in the main input stream, or NaN if
16342 this information is unavailable and/or meaningless (for example in case of synthetic video).
16343 Only available with @code{eval=frame}.
16344 @end table
16345
16346 @subsection Examples
16347
16348 @itemize
16349 @item
16350 Scale a subtitle stream (b) to match the main video (a) in size before overlaying
16351 @example
16352 'scale2ref[b][a];[a][b]overlay'
16353 @end example
16354
16355 @item
16356 Scale a logo to 1/10th the height of a video, while preserving its display aspect ratio.
16357 @example
16358 [logo-in][video-in]scale2ref=w=oh*mdar:h=ih/10[logo-out][video-out]
16359 @end example
16360 @end itemize
16361
16362 @subsection Commands
16363
16364 This filter supports the following commands:
16365 @table @option
16366 @item width, w
16367 @item height, h
16368 Set the output video dimension expression.
16369 The command accepts the same syntax of the corresponding option.
16370
16371 If the specified expression is not valid, it is kept at its current
16372 value.
16373 @end table
16374
16375 @section scroll
16376 Scroll input video horizontally and/or vertically by constant speed.
16377
16378 The filter accepts the following options:
16379 @table @option
16380 @item horizontal, h
16381 Set the horizontal scrolling speed. Default is 0. Allowed range is from -1 to 1.
16382 Negative values changes scrolling direction.
16383
16384 @item vertical, v
16385 Set the vertical scrolling speed. Default is 0. Allowed range is from -1 to 1.
16386 Negative values changes scrolling direction.
16387
16388 @item hpos
16389 Set the initial horizontal scrolling position. Default is 0. Allowed range is from 0 to 1.
16390
16391 @item vpos
16392 Set the initial vertical scrolling position. Default is 0. Allowed range is from 0 to 1.
16393 @end table
16394
16395 @subsection Commands
16396
16397 This filter supports the following @ref{commands}:
16398 @table @option
16399 @item horizontal, h
16400 Set the horizontal scrolling speed.
16401 @item vertical, v
16402 Set the vertical scrolling speed.
16403 @end table
16404
16405 @anchor{selectivecolor}
16406 @section selectivecolor
16407
16408 Adjust cyan, magenta, yellow and black (CMYK) to certain ranges of colors (such
16409 as "reds", "yellows", "greens", "cyans", ...). The adjustment range is defined
16410 by the "purity" of the color (that is, how saturated it already is).
16411
16412 This filter is similar to the Adobe Photoshop Selective Color tool.
16413
16414 The filter accepts the following options:
16415
16416 @table @option
16417 @item correction_method
16418 Select color correction method.
16419
16420 Available values are:
16421 @table @samp
16422 @item absolute
16423 Specified adjustments are applied "as-is" (added/subtracted to original pixel
16424 component value).
16425 @item relative
16426 Specified adjustments are relative to the original component value.
16427 @end table
16428 Default is @code{absolute}.
16429 @item reds
16430 Adjustments for red pixels (pixels where the red component is the maximum)
16431 @item yellows
16432 Adjustments for yellow pixels (pixels where the blue component is the minimum)
16433 @item greens
16434 Adjustments for green pixels (pixels where the green component is the maximum)
16435 @item cyans
16436 Adjustments for cyan pixels (pixels where the red component is the minimum)
16437 @item blues
16438 Adjustments for blue pixels (pixels where the blue component is the maximum)
16439 @item magentas
16440 Adjustments for magenta pixels (pixels where the green component is the minimum)
16441 @item whites
16442 Adjustments for white pixels (pixels where all components are greater than 128)
16443 @item neutrals
16444 Adjustments for all pixels except pure black and pure white
16445 @item blacks
16446 Adjustments for black pixels (pixels where all components are lesser than 128)
16447 @item psfile
16448 Specify a Photoshop selective color file (@code{.asv}) to import the settings from.
16449 @end table
16450
16451 All the adjustment settings (@option{reds}, @option{yellows}, ...) accept up to
16452 4 space separated floating point adjustment values in the [-1,1] range,
16453 respectively to adjust the amount of cyan, magenta, yellow and black for the
16454 pixels of its range.
16455
16456 @subsection Examples
16457
16458 @itemize
16459 @item
16460 Increase cyan by 50% and reduce yellow by 33% in every green areas, and
16461 increase magenta by 27% in blue areas:
16462 @example
16463 selectivecolor=greens=.5 0 -.33 0:blues=0 .27
16464 @end example
16465
16466 @item
16467 Use a Photoshop selective color preset:
16468 @example
16469 selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
16470 @end example
16471 @end itemize
16472
16473 @anchor{separatefields}
16474 @section separatefields
16475
16476 The @code{separatefields} takes a frame-based video input and splits
16477 each frame into its components fields, producing a new half height clip
16478 with twice the frame rate and twice the frame count.
16479
16480 This filter use field-dominance information in frame to decide which
16481 of each pair of fields to place first in the output.
16482 If it gets it wrong use @ref{setfield} filter before @code{separatefields} filter.
16483
16484 @section setdar, setsar
16485
16486 The @code{setdar} filter sets the Display Aspect Ratio for the filter
16487 output video.
16488
16489 This is done by changing the specified Sample (aka Pixel) Aspect
16490 Ratio, according to the following equation:
16491 @example
16492 @var{DAR} = @var{HORIZONTAL_RESOLUTION} / @var{VERTICAL_RESOLUTION} * @var{SAR}
16493 @end example
16494
16495 Keep in mind that the @code{setdar} filter does not modify the pixel
16496 dimensions of the video frame. Also, the display aspect ratio set by
16497 this filter may be changed by later filters in the filterchain,
16498 e.g. in case of scaling or if another "setdar" or a "setsar" filter is
16499 applied.
16500
16501 The @code{setsar} filter sets the Sample (aka Pixel) Aspect Ratio for
16502 the filter output video.
16503
16504 Note that as a consequence of the application of this filter, the
16505 output display aspect ratio will change according to the equation
16506 above.
16507
16508 Keep in mind that the sample aspect ratio set by the @code{setsar}
16509 filter may be changed by later filters in the filterchain, e.g. if
16510 another "setsar" or a "setdar" filter is applied.
16511
16512 It accepts the following parameters:
16513
16514 @table @option
16515 @item r, ratio, dar (@code{setdar} only), sar (@code{setsar} only)
16516 Set the aspect ratio used by the filter.
16517
16518 The parameter can be a floating point number string, an expression, or
16519 a string of the form @var{num}:@var{den}, where @var{num} and
16520 @var{den} are the numerator and denominator of the aspect ratio. If
16521 the parameter is not specified, it is assumed the value "0".
16522 In case the form "@var{num}:@var{den}" is used, the @code{:} character
16523 should be escaped.
16524
16525 @item max
16526 Set the maximum integer value to use for expressing numerator and
16527 denominator when reducing the expressed aspect ratio to a rational.
16528 Default value is @code{100}.
16529
16530 @end table
16531
16532 The parameter @var{sar} is an expression containing
16533 the following constants:
16534
16535 @table @option
16536 @item E, PI, PHI
16537 These are approximated values for the mathematical constants e
16538 (Euler's number), pi (Greek pi), and phi (the golden ratio).
16539
16540 @item w, h
16541 The input width and height.
16542
16543 @item a
16544 These are the same as @var{w} / @var{h}.
16545
16546 @item sar
16547 The input sample aspect ratio.
16548
16549 @item dar
16550 The input display aspect ratio. It is the same as
16551 (@var{w} / @var{h}) * @var{sar}.
16552
16553 @item hsub, vsub
16554 Horizontal and vertical chroma subsample values. For example, for the
16555 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16556 @end table
16557
16558 @subsection Examples
16559
16560 @itemize
16561
16562 @item
16563 To change the display aspect ratio to 16:9, specify one of the following:
16564 @example
16565 setdar=dar=1.77777
16566 setdar=dar=16/9
16567 @end example
16568
16569 @item
16570 To change the sample aspect ratio to 10:11, specify:
16571 @example
16572 setsar=sar=10/11
16573 @end example
16574
16575 @item
16576 To set a display aspect ratio of 16:9, and specify a maximum integer value of
16577 1000 in the aspect ratio reduction, use the command:
16578 @example
16579 setdar=ratio=16/9:max=1000
16580 @end example
16581
16582 @end itemize
16583
16584 @anchor{setfield}
16585 @section setfield
16586
16587 Force field for the output video frame.
16588
16589 The @code{setfield} filter marks the interlace type field for the
16590 output frames. It does not change the input frame, but only sets the
16591 corresponding property, which affects how the frame is treated by
16592 following filters (e.g. @code{fieldorder} or @code{yadif}).
16593
16594 The filter accepts the following options:
16595
16596 @table @option
16597
16598 @item mode
16599 Available values are:
16600
16601 @table @samp
16602 @item auto
16603 Keep the same field property.
16604
16605 @item bff
16606 Mark the frame as bottom-field-first.
16607
16608 @item tff
16609 Mark the frame as top-field-first.
16610
16611 @item prog
16612 Mark the frame as progressive.
16613 @end table
16614 @end table
16615
16616 @anchor{setparams}
16617 @section setparams
16618
16619 Force frame parameter for the output video frame.
16620
16621 The @code{setparams} filter marks interlace and color range for the
16622 output frames. It does not change the input frame, but only sets the
16623 corresponding property, which affects how the frame is treated by
16624 filters/encoders.
16625
16626 @table @option
16627 @item field_mode
16628 Available values are:
16629
16630 @table @samp
16631 @item auto
16632 Keep the same field property (default).
16633
16634 @item bff
16635 Mark the frame as bottom-field-first.
16636
16637 @item tff
16638 Mark the frame as top-field-first.
16639
16640 @item prog
16641 Mark the frame as progressive.
16642 @end table
16643
16644 @item range
16645 Available values are:
16646
16647 @table @samp
16648 @item auto
16649 Keep the same color range property (default).
16650
16651 @item unspecified, unknown
16652 Mark the frame as unspecified color range.
16653
16654 @item limited, tv, mpeg
16655 Mark the frame as limited range.
16656
16657 @item full, pc, jpeg
16658 Mark the frame as full range.
16659 @end table
16660
16661 @item color_primaries
16662 Set the color primaries.
16663 Available values are:
16664
16665 @table @samp
16666 @item auto
16667 Keep the same color primaries property (default).
16668
16669 @item bt709
16670 @item unknown
16671 @item bt470m
16672 @item bt470bg
16673 @item smpte170m
16674 @item smpte240m
16675 @item film
16676 @item bt2020
16677 @item smpte428
16678 @item smpte431
16679 @item smpte432
16680 @item jedec-p22
16681 @end table
16682
16683 @item color_trc
16684 Set the color transfer.
16685 Available values are:
16686
16687 @table @samp
16688 @item auto
16689 Keep the same color trc property (default).
16690
16691 @item bt709
16692 @item unknown
16693 @item bt470m
16694 @item bt470bg
16695 @item smpte170m
16696 @item smpte240m
16697 @item linear
16698 @item log100
16699 @item log316
16700 @item iec61966-2-4
16701 @item bt1361e
16702 @item iec61966-2-1
16703 @item bt2020-10
16704 @item bt2020-12
16705 @item smpte2084
16706 @item smpte428
16707 @item arib-std-b67
16708 @end table
16709
16710 @item colorspace
16711 Set the colorspace.
16712 Available values are:
16713
16714 @table @samp
16715 @item auto
16716 Keep the same colorspace property (default).
16717
16718 @item gbr
16719 @item bt709
16720 @item unknown
16721 @item fcc
16722 @item bt470bg
16723 @item smpte170m
16724 @item smpte240m
16725 @item ycgco
16726 @item bt2020nc
16727 @item bt2020c
16728 @item smpte2085
16729 @item chroma-derived-nc
16730 @item chroma-derived-c
16731 @item ictcp
16732 @end table
16733 @end table
16734
16735 @section showinfo
16736
16737 Show a line containing various information for each input video frame.
16738 The input video is not modified.
16739
16740 This filter supports the following options:
16741
16742 @table @option
16743 @item checksum
16744 Calculate checksums of each plane. By default enabled.
16745 @end table
16746
16747 The shown line contains a sequence of key/value pairs of the form
16748 @var{key}:@var{value}.
16749
16750 The following values are shown in the output:
16751
16752 @table @option
16753 @item n
16754 The (sequential) number of the input frame, starting from 0.
16755
16756 @item pts
16757 The Presentation TimeStamp of the input frame, expressed as a number of
16758 time base units. The time base unit depends on the filter input pad.
16759
16760 @item pts_time
16761 The Presentation TimeStamp of the input frame, expressed as a number of
16762 seconds.
16763
16764 @item pos
16765 The position of the frame in the input stream, or -1 if this information is
16766 unavailable and/or meaningless (for example in case of synthetic video).
16767
16768 @item fmt
16769 The pixel format name.
16770
16771 @item sar
16772 The sample aspect ratio of the input frame, expressed in the form
16773 @var{num}/@var{den}.
16774
16775 @item s
16776 The size of the input frame. For the syntax of this option, check the
16777 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
16778
16779 @item i
16780 The type of interlaced mode ("P" for "progressive", "T" for top field first, "B"
16781 for bottom field first).
16782
16783 @item iskey
16784 This is 1 if the frame is a key frame, 0 otherwise.
16785
16786 @item type
16787 The picture type of the input frame ("I" for an I-frame, "P" for a
16788 P-frame, "B" for a B-frame, or "?" for an unknown type).
16789 Also refer to the documentation of the @code{AVPictureType} enum and of
16790 the @code{av_get_picture_type_char} function defined in
16791 @file{libavutil/avutil.h}.
16792
16793 @item checksum
16794 The Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame.
16795
16796 @item plane_checksum
16797 The Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
16798 expressed in the form "[@var{c0} @var{c1} @var{c2} @var{c3}]".
16799
16800 @item mean
16801 The mean value of pixels in each plane of the input frame, expressed in the form
16802 "[@var{mean0} @var{mean1} @var{mean2} @var{mean3}]".
16803
16804 @item stdev
16805 The standard deviation of pixel values in each plane of the input frame, expressed
16806 in the form "[@var{stdev0} @var{stdev1} @var{stdev2} @var{stdev3}]".
16807
16808 @end table
16809
16810 @section showpalette
16811
16812 Displays the 256 colors palette of each frame. This filter is only relevant for
16813 @var{pal8} pixel format frames.
16814
16815 It accepts the following option:
16816
16817 @table @option
16818 @item s
16819 Set the size of the box used to represent one palette color entry. Default is
16820 @code{30} (for a @code{30x30} pixel box).
16821 @end table
16822
16823 @section shuffleframes
16824
16825 Reorder and/or duplicate and/or drop video frames.
16826
16827 It accepts the following parameters:
16828
16829 @table @option
16830 @item mapping
16831 Set the destination indexes of input frames.
16832 This is space or '|' separated list of indexes that maps input frames to output
16833 frames. Number of indexes also sets maximal value that each index may have.
16834 '-1' index have special meaning and that is to drop frame.
16835 @end table
16836
16837 The first frame has the index 0. The default is to keep the input unchanged.
16838
16839 @subsection Examples
16840
16841 @itemize
16842 @item
16843 Swap second and third frame of every three frames of the input:
16844 @example
16845 ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
16846 @end example
16847
16848 @item
16849 Swap 10th and 1st frame of every ten frames of the input:
16850 @example
16851 ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
16852 @end example
16853 @end itemize
16854
16855 @section shuffleplanes
16856
16857 Reorder and/or duplicate video planes.
16858
16859 It accepts the following parameters:
16860
16861 @table @option
16862
16863 @item map0
16864 The index of the input plane to be used as the first output plane.
16865
16866 @item map1
16867 The index of the input plane to be used as the second output plane.
16868
16869 @item map2
16870 The index of the input plane to be used as the third output plane.
16871
16872 @item map3
16873 The index of the input plane to be used as the fourth output plane.
16874
16875 @end table
16876
16877 The first plane has the index 0. The default is to keep the input unchanged.
16878
16879 @subsection Examples
16880
16881 @itemize
16882 @item
16883 Swap the second and third planes of the input:
16884 @example
16885 ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
16886 @end example
16887 @end itemize
16888
16889 @anchor{signalstats}
16890 @section signalstats
16891 Evaluate various visual metrics that assist in determining issues associated
16892 with the digitization of analog video media.
16893
16894 By default the filter will log these metadata values:
16895
16896 @table @option
16897 @item YMIN
16898 Display the minimal Y value contained within the input frame. Expressed in
16899 range of [0-255].
16900
16901 @item YLOW
16902 Display the Y value at the 10% percentile within the input frame. Expressed in
16903 range of [0-255].
16904
16905 @item YAVG
16906 Display the average Y value within the input frame. Expressed in range of
16907 [0-255].
16908
16909 @item YHIGH
16910 Display the Y value at the 90% percentile within the input frame. Expressed in
16911 range of [0-255].
16912
16913 @item YMAX
16914 Display the maximum Y value contained within the input frame. Expressed in
16915 range of [0-255].
16916
16917 @item UMIN
16918 Display the minimal U value contained within the input frame. Expressed in
16919 range of [0-255].
16920
16921 @item ULOW
16922 Display the U value at the 10% percentile within the input frame. Expressed in
16923 range of [0-255].
16924
16925 @item UAVG
16926 Display the average U value within the input frame. Expressed in range of
16927 [0-255].
16928
16929 @item UHIGH
16930 Display the U value at the 90% percentile within the input frame. Expressed in
16931 range of [0-255].
16932
16933 @item UMAX
16934 Display the maximum U value contained within the input frame. Expressed in
16935 range of [0-255].
16936
16937 @item VMIN
16938 Display the minimal V value contained within the input frame. Expressed in
16939 range of [0-255].
16940
16941 @item VLOW
16942 Display the V value at the 10% percentile within the input frame. Expressed in
16943 range of [0-255].
16944
16945 @item VAVG
16946 Display the average V value within the input frame. Expressed in range of
16947 [0-255].
16948
16949 @item VHIGH
16950 Display the V value at the 90% percentile within the input frame. Expressed in
16951 range of [0-255].
16952
16953 @item VMAX
16954 Display the maximum V value contained within the input frame. Expressed in
16955 range of [0-255].
16956
16957 @item SATMIN
16958 Display the minimal saturation value contained within the input frame.
16959 Expressed in range of [0-~181.02].
16960
16961 @item SATLOW
16962 Display the saturation value at the 10% percentile within the input frame.
16963 Expressed in range of [0-~181.02].
16964
16965 @item SATAVG
16966 Display the average saturation value within the input frame. Expressed in range
16967 of [0-~181.02].
16968
16969 @item SATHIGH
16970 Display the saturation value at the 90% percentile within the input frame.
16971 Expressed in range of [0-~181.02].
16972
16973 @item SATMAX
16974 Display the maximum saturation value contained within the input frame.
16975 Expressed in range of [0-~181.02].
16976
16977 @item HUEMED
16978 Display the median value for hue within the input frame. Expressed in range of
16979 [0-360].
16980
16981 @item HUEAVG
16982 Display the average value for hue within the input frame. Expressed in range of
16983 [0-360].
16984
16985 @item YDIF
16986 Display the average of sample value difference between all values of the Y
16987 plane in the current frame and corresponding values of the previous input frame.
16988 Expressed in range of [0-255].
16989
16990 @item UDIF
16991 Display the average of sample value difference between all values of the U
16992 plane in the current frame and corresponding values of the previous input frame.
16993 Expressed in range of [0-255].
16994
16995 @item VDIF
16996 Display the average of sample value difference between all values of the V
16997 plane in the current frame and corresponding values of the previous input frame.
16998 Expressed in range of [0-255].
16999
17000 @item YBITDEPTH
17001 Display bit depth of Y plane in current frame.
17002 Expressed in range of [0-16].
17003
17004 @item UBITDEPTH
17005 Display bit depth of U plane in current frame.
17006 Expressed in range of [0-16].
17007
17008 @item VBITDEPTH
17009 Display bit depth of V plane in current frame.
17010 Expressed in range of [0-16].
17011 @end table
17012
17013 The filter accepts the following options:
17014
17015 @table @option
17016 @item stat
17017 @item out
17018
17019 @option{stat} specify an additional form of image analysis.
17020 @option{out} output video with the specified type of pixel highlighted.
17021
17022 Both options accept the following values:
17023
17024 @table @samp
17025 @item tout
17026 Identify @var{temporal outliers} pixels. A @var{temporal outlier} is a pixel
17027 unlike the neighboring pixels of the same field. Examples of temporal outliers
17028 include the results of video dropouts, head clogs, or tape tracking issues.
17029
17030 @item vrep
17031 Identify @var{vertical line repetition}. Vertical line repetition includes
17032 similar rows of pixels within a frame. In born-digital video vertical line
17033 repetition is common, but this pattern is uncommon in video digitized from an
17034 analog source. When it occurs in video that results from the digitization of an
17035 analog source it can indicate concealment from a dropout compensator.
17036
17037 @item brng
17038 Identify pixels that fall outside of legal broadcast range.
17039 @end table
17040
17041 @item color, c
17042 Set the highlight color for the @option{out} option. The default color is
17043 yellow.
17044 @end table
17045
17046 @subsection Examples
17047
17048 @itemize
17049 @item
17050 Output data of various video metrics:
17051 @example
17052 ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
17053 @end example
17054
17055 @item
17056 Output specific data about the minimum and maximum values of the Y plane per frame:
17057 @example
17058 ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
17059 @end example
17060
17061 @item
17062 Playback video while highlighting pixels that are outside of broadcast range in red.
17063 @example
17064 ffplay example.mov -vf signalstats="out=brng:color=red"
17065 @end example
17066
17067 @item
17068 Playback video with signalstats metadata drawn over the frame.
17069 @example
17070 ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
17071 @end example
17072
17073 The contents of signalstat_drawtext.txt used in the command are:
17074 @example
17075 time %@{pts:hms@}
17076 Y (%@{metadata:lavfi.signalstats.YMIN@}-%@{metadata:lavfi.signalstats.YMAX@})
17077 U (%@{metadata:lavfi.signalstats.UMIN@}-%@{metadata:lavfi.signalstats.UMAX@})
17078 V (%@{metadata:lavfi.signalstats.VMIN@}-%@{metadata:lavfi.signalstats.VMAX@})
17079 saturation maximum: %@{metadata:lavfi.signalstats.SATMAX@}
17080
17081 @end example
17082 @end itemize
17083
17084 @anchor{signature}
17085 @section signature
17086
17087 Calculates the MPEG-7 Video Signature. The filter can handle more than one
17088 input. In this case the matching between the inputs can be calculated additionally.
17089 The filter always passes through the first input. The signature of each stream can
17090 be written into a file.
17091
17092 It accepts the following options:
17093
17094 @table @option
17095 @item detectmode
17096 Enable or disable the matching process.
17097
17098 Available values are:
17099
17100 @table @samp
17101 @item off
17102 Disable the calculation of a matching (default).
17103 @item full
17104 Calculate the matching for the whole video and output whether the whole video
17105 matches or only parts.
17106 @item fast
17107 Calculate only until a matching is found or the video ends. Should be faster in
17108 some cases.
17109 @end table
17110
17111 @item nb_inputs
17112 Set the number of inputs. The option value must be a non negative integer.
17113 Default value is 1.
17114
17115 @item filename
17116 Set the path to which the output is written. If there is more than one input,
17117 the path must be a prototype, i.e. must contain %d or %0nd (where n is a positive
17118 integer), that will be replaced with the input number. If no filename is
17119 specified, no output will be written. This is the default.
17120
17121 @item format
17122 Choose the output format.
17123
17124 Available values are:
17125
17126 @table @samp
17127 @item binary
17128 Use the specified binary representation (default).
17129 @item xml
17130 Use the specified xml representation.
17131 @end table
17132
17133 @item th_d
17134 Set threshold to detect one word as similar. The option value must be an integer
17135 greater than zero. The default value is 9000.
17136
17137 @item th_dc
17138 Set threshold to detect all words as similar. The option value must be an integer
17139 greater than zero. The default value is 60000.
17140
17141 @item th_xh
17142 Set threshold to detect frames as similar. The option value must be an integer
17143 greater than zero. The default value is 116.
17144
17145 @item th_di
17146 Set the minimum length of a sequence in frames to recognize it as matching
17147 sequence. The option value must be a non negative integer value.
17148 The default value is 0.
17149
17150 @item th_it
17151 Set the minimum relation, that matching frames to all frames must have.
17152 The option value must be a double value between 0 and 1. The default value is 0.5.
17153 @end table
17154
17155 @subsection Examples
17156
17157 @itemize
17158 @item
17159 To calculate the signature of an input video and store it in signature.bin:
17160 @example
17161 ffmpeg -i input.mkv -vf signature=filename=signature.bin -map 0:v -f null -
17162 @end example
17163
17164 @item
17165 To detect whether two videos match and store the signatures in XML format in
17166 signature0.xml and signature1.xml:
17167 @example
17168 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 -
17169 @end example
17170
17171 @end itemize
17172
17173 @anchor{smartblur}
17174 @section smartblur
17175
17176 Blur the input video without impacting the outlines.
17177
17178 It accepts the following options:
17179
17180 @table @option
17181 @item luma_radius, lr
17182 Set the luma radius. The option value must be a float number in
17183 the range [0.1,5.0] that specifies the variance of the gaussian filter
17184 used to blur the image (slower if larger). Default value is 1.0.
17185
17186 @item luma_strength, ls
17187 Set the luma strength. The option value must be a float number
17188 in the range [-1.0,1.0] that configures the blurring. A value included
17189 in [0.0,1.0] will blur the image whereas a value included in
17190 [-1.0,0.0] will sharpen the image. Default value is 1.0.
17191
17192 @item luma_threshold, lt
17193 Set the luma threshold used as a coefficient to determine
17194 whether a pixel should be blurred or not. The option value must be an
17195 integer in the range [-30,30]. A value of 0 will filter all the image,
17196 a value included in [0,30] will filter flat areas and a value included
17197 in [-30,0] will filter edges. Default value is 0.
17198
17199 @item chroma_radius, cr
17200 Set the chroma radius. The option value must be a float number in
17201 the range [0.1,5.0] that specifies the variance of the gaussian filter
17202 used to blur the image (slower if larger). Default value is @option{luma_radius}.
17203
17204 @item chroma_strength, cs
17205 Set the chroma strength. The option value must be a float number
17206 in the range [-1.0,1.0] that configures the blurring. A value included
17207 in [0.0,1.0] will blur the image whereas a value included in
17208 [-1.0,0.0] will sharpen the image. Default value is @option{luma_strength}.
17209
17210 @item chroma_threshold, ct
17211 Set the chroma threshold used as a coefficient to determine
17212 whether a pixel should be blurred or not. The option value must be an
17213 integer in the range [-30,30]. A value of 0 will filter all the image,
17214 a value included in [0,30] will filter flat areas and a value included
17215 in [-30,0] will filter edges. Default value is @option{luma_threshold}.
17216 @end table
17217
17218 If a chroma option is not explicitly set, the corresponding luma value
17219 is set.
17220
17221 @section sobel
17222 Apply sobel operator to input video stream.
17223
17224 The filter accepts the following option:
17225
17226 @table @option
17227 @item planes
17228 Set which planes will be processed, unprocessed planes will be copied.
17229 By default value 0xf, all planes will be processed.
17230
17231 @item scale
17232 Set value which will be multiplied with filtered result.
17233
17234 @item delta
17235 Set value which will be added to filtered result.
17236 @end table
17237
17238 @anchor{spp}
17239 @section spp
17240
17241 Apply a simple postprocessing filter that compresses and decompresses the image
17242 at several (or - in the case of @option{quality} level @code{6} - all) shifts
17243 and average the results.
17244
17245 The filter accepts the following options:
17246
17247 @table @option
17248 @item quality
17249 Set quality. This option defines the number of levels for averaging. It accepts
17250 an integer in the range 0-6. If set to @code{0}, the filter will have no
17251 effect. A value of @code{6} means the higher quality. For each increment of
17252 that value the speed drops by a factor of approximately 2.  Default value is
17253 @code{3}.
17254
17255 @item qp
17256 Force a constant quantization parameter. If not set, the filter will use the QP
17257 from the video stream (if available).
17258
17259 @item mode
17260 Set thresholding mode. Available modes are:
17261
17262 @table @samp
17263 @item hard
17264 Set hard thresholding (default).
17265 @item soft
17266 Set soft thresholding (better de-ringing effect, but likely blurrier).
17267 @end table
17268
17269 @item use_bframe_qp
17270 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
17271 option may cause flicker since the B-Frames have often larger QP. Default is
17272 @code{0} (not enabled).
17273 @end table
17274
17275 @subsection Commands
17276
17277 This filter supports the following commands:
17278 @table @option
17279 @item quality, level
17280 Set quality level. The value @code{max} can be used to set the maximum level,
17281 currently @code{6}.
17282 @end table
17283
17284 @section sr
17285
17286 Scale the input by applying one of the super-resolution methods based on
17287 convolutional neural networks. Supported models:
17288
17289 @itemize
17290 @item
17291 Super-Resolution Convolutional Neural Network model (SRCNN).
17292 See @url{https://arxiv.org/abs/1501.00092}.
17293
17294 @item
17295 Efficient Sub-Pixel Convolutional Neural Network model (ESPCN).
17296 See @url{https://arxiv.org/abs/1609.05158}.
17297 @end itemize
17298
17299 Training scripts as well as scripts for model file (.pb) saving can be found at
17300 @url{https://github.com/XueweiMeng/sr/tree/sr_dnn_native}. Original repository
17301 is at @url{https://github.com/HighVoltageRocknRoll/sr.git}.
17302
17303 Native model files (.model) can be generated from TensorFlow model
17304 files (.pb) by using tools/python/convert.py
17305
17306 The filter accepts the following options:
17307
17308 @table @option
17309 @item dnn_backend
17310 Specify which DNN backend to use for model loading and execution. This option accepts
17311 the following values:
17312
17313 @table @samp
17314 @item native
17315 Native implementation of DNN loading and execution.
17316
17317 @item tensorflow
17318 TensorFlow backend. To enable this backend you
17319 need to install the TensorFlow for C library (see
17320 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
17321 @code{--enable-libtensorflow}
17322 @end table
17323
17324 Default value is @samp{native}.
17325
17326 @item model
17327 Set path to model file specifying network architecture and its parameters.
17328 Note that different backends use different file formats. TensorFlow backend
17329 can load files for both formats, while native backend can load files for only
17330 its format.
17331
17332 @item scale_factor
17333 Set scale factor for SRCNN model. Allowed values are @code{2}, @code{3} and @code{4}.
17334 Default value is @code{2}. Scale factor is necessary for SRCNN model, because it accepts
17335 input upscaled using bicubic upscaling with proper scale factor.
17336 @end table
17337
17338 @section ssim
17339
17340 Obtain the SSIM (Structural SImilarity Metric) between two input videos.
17341
17342 This filter takes in input two input videos, the first input is
17343 considered the "main" source and is passed unchanged to the
17344 output. The second input is used as a "reference" video for computing
17345 the SSIM.
17346
17347 Both video inputs must have the same resolution and pixel format for
17348 this filter to work correctly. Also it assumes that both inputs
17349 have the same number of frames, which are compared one by one.
17350
17351 The filter stores the calculated SSIM of each frame.
17352
17353 The description of the accepted parameters follows.
17354
17355 @table @option
17356 @item stats_file, f
17357 If specified the filter will use the named file to save the SSIM of
17358 each individual frame. When filename equals "-" the data is sent to
17359 standard output.
17360 @end table
17361
17362 The file printed if @var{stats_file} is selected, contains a sequence of
17363 key/value pairs of the form @var{key}:@var{value} for each compared
17364 couple of frames.
17365
17366 A description of each shown parameter follows:
17367
17368 @table @option
17369 @item n
17370 sequential number of the input frame, starting from 1
17371
17372 @item Y, U, V, R, G, B
17373 SSIM of the compared frames for the component specified by the suffix.
17374
17375 @item All
17376 SSIM of the compared frames for the whole frame.
17377
17378 @item dB
17379 Same as above but in dB representation.
17380 @end table
17381
17382 This filter also supports the @ref{framesync} options.
17383
17384 @subsection Examples
17385 @itemize
17386 @item
17387 For example:
17388 @example
17389 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
17390 [main][ref] ssim="stats_file=stats.log" [out]
17391 @end example
17392
17393 On this example the input file being processed is compared with the
17394 reference file @file{ref_movie.mpg}. The SSIM of each individual frame
17395 is stored in @file{stats.log}.
17396
17397 @item
17398 Another example with both psnr and ssim at same time:
17399 @example
17400 ffmpeg -i main.mpg -i ref.mpg -lavfi  "ssim;[0:v][1:v]psnr" -f null -
17401 @end example
17402
17403 @item
17404 Another example with different containers:
17405 @example
17406 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 -
17407 @end example
17408 @end itemize
17409
17410 @section stereo3d
17411
17412 Convert between different stereoscopic image formats.
17413
17414 The filters accept the following options:
17415
17416 @table @option
17417 @item in
17418 Set stereoscopic image format of input.
17419
17420 Available values for input image formats are:
17421 @table @samp
17422 @item sbsl
17423 side by side parallel (left eye left, right eye right)
17424
17425 @item sbsr
17426 side by side crosseye (right eye left, left eye right)
17427
17428 @item sbs2l
17429 side by side parallel with half width resolution
17430 (left eye left, right eye right)
17431
17432 @item sbs2r
17433 side by side crosseye with half width resolution
17434 (right eye left, left eye right)
17435
17436 @item abl
17437 @item tbl
17438 above-below (left eye above, right eye below)
17439
17440 @item abr
17441 @item tbr
17442 above-below (right eye above, left eye below)
17443
17444 @item ab2l
17445 @item tb2l
17446 above-below with half height resolution
17447 (left eye above, right eye below)
17448
17449 @item ab2r
17450 @item tb2r
17451 above-below with half height resolution
17452 (right eye above, left eye below)
17453
17454 @item al
17455 alternating frames (left eye first, right eye second)
17456
17457 @item ar
17458 alternating frames (right eye first, left eye second)
17459
17460 @item irl
17461 interleaved rows (left eye has top row, right eye starts on next row)
17462
17463 @item irr
17464 interleaved rows (right eye has top row, left eye starts on next row)
17465
17466 @item icl
17467 interleaved columns, left eye first
17468
17469 @item icr
17470 interleaved columns, right eye first
17471
17472 Default value is @samp{sbsl}.
17473 @end table
17474
17475 @item out
17476 Set stereoscopic image format of output.
17477
17478 @table @samp
17479 @item sbsl
17480 side by side parallel (left eye left, right eye right)
17481
17482 @item sbsr
17483 side by side crosseye (right eye left, left eye right)
17484
17485 @item sbs2l
17486 side by side parallel with half width resolution
17487 (left eye left, right eye right)
17488
17489 @item sbs2r
17490 side by side crosseye with half width resolution
17491 (right eye left, left eye right)
17492
17493 @item abl
17494 @item tbl
17495 above-below (left eye above, right eye below)
17496
17497 @item abr
17498 @item tbr
17499 above-below (right eye above, left eye below)
17500
17501 @item ab2l
17502 @item tb2l
17503 above-below with half height resolution
17504 (left eye above, right eye below)
17505
17506 @item ab2r
17507 @item tb2r
17508 above-below with half height resolution
17509 (right eye above, left eye below)
17510
17511 @item al
17512 alternating frames (left eye first, right eye second)
17513
17514 @item ar
17515 alternating frames (right eye first, left eye second)
17516
17517 @item irl
17518 interleaved rows (left eye has top row, right eye starts on next row)
17519
17520 @item irr
17521 interleaved rows (right eye has top row, left eye starts on next row)
17522
17523 @item arbg
17524 anaglyph red/blue gray
17525 (red filter on left eye, blue filter on right eye)
17526
17527 @item argg
17528 anaglyph red/green gray
17529 (red filter on left eye, green filter on right eye)
17530
17531 @item arcg
17532 anaglyph red/cyan gray
17533 (red filter on left eye, cyan filter on right eye)
17534
17535 @item arch
17536 anaglyph red/cyan half colored
17537 (red filter on left eye, cyan filter on right eye)
17538
17539 @item arcc
17540 anaglyph red/cyan color
17541 (red filter on left eye, cyan filter on right eye)
17542
17543 @item arcd
17544 anaglyph red/cyan color optimized with the least squares projection of dubois
17545 (red filter on left eye, cyan filter on right eye)
17546
17547 @item agmg
17548 anaglyph green/magenta gray
17549 (green filter on left eye, magenta filter on right eye)
17550
17551 @item agmh
17552 anaglyph green/magenta half colored
17553 (green filter on left eye, magenta filter on right eye)
17554
17555 @item agmc
17556 anaglyph green/magenta colored
17557 (green filter on left eye, magenta filter on right eye)
17558
17559 @item agmd
17560 anaglyph green/magenta color optimized with the least squares projection of dubois
17561 (green filter on left eye, magenta filter on right eye)
17562
17563 @item aybg
17564 anaglyph yellow/blue gray
17565 (yellow filter on left eye, blue filter on right eye)
17566
17567 @item aybh
17568 anaglyph yellow/blue half colored
17569 (yellow filter on left eye, blue filter on right eye)
17570
17571 @item aybc
17572 anaglyph yellow/blue colored
17573 (yellow filter on left eye, blue filter on right eye)
17574
17575 @item aybd
17576 anaglyph yellow/blue color optimized with the least squares projection of dubois
17577 (yellow filter on left eye, blue filter on right eye)
17578
17579 @item ml
17580 mono output (left eye only)
17581
17582 @item mr
17583 mono output (right eye only)
17584
17585 @item chl
17586 checkerboard, left eye first
17587
17588 @item chr
17589 checkerboard, right eye first
17590
17591 @item icl
17592 interleaved columns, left eye first
17593
17594 @item icr
17595 interleaved columns, right eye first
17596
17597 @item hdmi
17598 HDMI frame pack
17599 @end table
17600
17601 Default value is @samp{arcd}.
17602 @end table
17603
17604 @subsection Examples
17605
17606 @itemize
17607 @item
17608 Convert input video from side by side parallel to anaglyph yellow/blue dubois:
17609 @example
17610 stereo3d=sbsl:aybd
17611 @end example
17612
17613 @item
17614 Convert input video from above below (left eye above, right eye below) to side by side crosseye.
17615 @example
17616 stereo3d=abl:sbsr
17617 @end example
17618 @end itemize
17619
17620 @section streamselect, astreamselect
17621 Select video or audio streams.
17622
17623 The filter accepts the following options:
17624
17625 @table @option
17626 @item inputs
17627 Set number of inputs. Default is 2.
17628
17629 @item map
17630 Set input indexes to remap to outputs.
17631 @end table
17632
17633 @subsection Commands
17634
17635 The @code{streamselect} and @code{astreamselect} filter supports the following
17636 commands:
17637
17638 @table @option
17639 @item map
17640 Set input indexes to remap to outputs.
17641 @end table
17642
17643 @subsection Examples
17644
17645 @itemize
17646 @item
17647 Select first 5 seconds 1st stream and rest of time 2nd stream:
17648 @example
17649 sendcmd='5.0 streamselect map 1',streamselect=inputs=2:map=0
17650 @end example
17651
17652 @item
17653 Same as above, but for audio:
17654 @example
17655 asendcmd='5.0 astreamselect map 1',astreamselect=inputs=2:map=0
17656 @end example
17657 @end itemize
17658
17659 @anchor{subtitles}
17660 @section subtitles
17661
17662 Draw subtitles on top of input video using the libass library.
17663
17664 To enable compilation of this filter you need to configure FFmpeg with
17665 @code{--enable-libass}. This filter also requires a build with libavcodec and
17666 libavformat to convert the passed subtitles file to ASS (Advanced Substation
17667 Alpha) subtitles format.
17668
17669 The filter accepts the following options:
17670
17671 @table @option
17672 @item filename, f
17673 Set the filename of the subtitle file to read. It must be specified.
17674
17675 @item original_size
17676 Specify the size of the original video, the video for which the ASS file
17677 was composed. For the syntax of this option, check the
17678 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17679 Due to a misdesign in ASS aspect ratio arithmetic, this is necessary to
17680 correctly scale the fonts if the aspect ratio has been changed.
17681
17682 @item fontsdir
17683 Set a directory path containing fonts that can be used by the filter.
17684 These fonts will be used in addition to whatever the font provider uses.
17685
17686 @item alpha
17687 Process alpha channel, by default alpha channel is untouched.
17688
17689 @item charenc
17690 Set subtitles input character encoding. @code{subtitles} filter only. Only
17691 useful if not UTF-8.
17692
17693 @item stream_index, si
17694 Set subtitles stream index. @code{subtitles} filter only.
17695
17696 @item force_style
17697 Override default style or script info parameters of the subtitles. It accepts a
17698 string containing ASS style format @code{KEY=VALUE} couples separated by ",".
17699 @end table
17700
17701 If the first key is not specified, it is assumed that the first value
17702 specifies the @option{filename}.
17703
17704 For example, to render the file @file{sub.srt} on top of the input
17705 video, use the command:
17706 @example
17707 subtitles=sub.srt
17708 @end example
17709
17710 which is equivalent to:
17711 @example
17712 subtitles=filename=sub.srt
17713 @end example
17714
17715 To render the default subtitles stream from file @file{video.mkv}, use:
17716 @example
17717 subtitles=video.mkv
17718 @end example
17719
17720 To render the second subtitles stream from that file, use:
17721 @example
17722 subtitles=video.mkv:si=1
17723 @end example
17724
17725 To make the subtitles stream from @file{sub.srt} appear in 80% transparent blue
17726 @code{DejaVu Serif}, use:
17727 @example
17728 subtitles=sub.srt:force_style='FontName=DejaVu Serif,PrimaryColour=&HCCFF0000'
17729 @end example
17730
17731 @section super2xsai
17732
17733 Scale the input by 2x and smooth using the Super2xSaI (Scale and
17734 Interpolate) pixel art scaling algorithm.
17735
17736 Useful for enlarging pixel art images without reducing sharpness.
17737
17738 @section swaprect
17739
17740 Swap two rectangular objects in video.
17741
17742 This filter accepts the following options:
17743
17744 @table @option
17745 @item w
17746 Set object width.
17747
17748 @item h
17749 Set object height.
17750
17751 @item x1
17752 Set 1st rect x coordinate.
17753
17754 @item y1
17755 Set 1st rect y coordinate.
17756
17757 @item x2
17758 Set 2nd rect x coordinate.
17759
17760 @item y2
17761 Set 2nd rect y coordinate.
17762
17763 All expressions are evaluated once for each frame.
17764 @end table
17765
17766 The all options are expressions containing the following constants:
17767
17768 @table @option
17769 @item w
17770 @item h
17771 The input width and height.
17772
17773 @item a
17774 same as @var{w} / @var{h}
17775
17776 @item sar
17777 input sample aspect ratio
17778
17779 @item dar
17780 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
17781
17782 @item n
17783 The number of the input frame, starting from 0.
17784
17785 @item t
17786 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
17787
17788 @item pos
17789 the position in the file of the input frame, NAN if unknown
17790 @end table
17791
17792 @section swapuv
17793 Swap U & V plane.
17794
17795 @section telecine
17796
17797 Apply telecine process to the video.
17798
17799 This filter accepts the following options:
17800
17801 @table @option
17802 @item first_field
17803 @table @samp
17804 @item top, t
17805 top field first
17806 @item bottom, b
17807 bottom field first
17808 The default value is @code{top}.
17809 @end table
17810
17811 @item pattern
17812 A string of numbers representing the pulldown pattern you wish to apply.
17813 The default value is @code{23}.
17814 @end table
17815
17816 @example
17817 Some typical patterns:
17818
17819 NTSC output (30i):
17820 27.5p: 32222
17821 24p: 23 (classic)
17822 24p: 2332 (preferred)
17823 20p: 33
17824 18p: 334
17825 16p: 3444
17826
17827 PAL output (25i):
17828 27.5p: 12222
17829 24p: 222222222223 ("Euro pulldown")
17830 16.67p: 33
17831 16p: 33333334
17832 @end example
17833
17834 @section thistogram
17835
17836 Compute and draw a color distribution histogram for the input video across time.
17837
17838 Unlike @ref{histogram} video filter which only shows histogram of single input frame
17839 at certain time, this filter shows also past histograms of number of frames defined
17840 by @code{width} option.
17841
17842 The computed histogram is a representation of the color component
17843 distribution in an image.
17844
17845 The filter accepts the following options:
17846
17847 @table @option
17848 @item width, w
17849 Set width of single color component output. Default value is @code{0}.
17850 Value of @code{0} means width will be picked from input video.
17851 This also set number of passed histograms to keep.
17852 Allowed range is [0, 8192].
17853
17854 @item display_mode, d
17855 Set display mode.
17856 It accepts the following values:
17857 @table @samp
17858 @item stack
17859 Per color component graphs are placed below each other.
17860
17861 @item parade
17862 Per color component graphs are placed side by side.
17863
17864 @item overlay
17865 Presents information identical to that in the @code{parade}, except
17866 that the graphs representing color components are superimposed directly
17867 over one another.
17868 @end table
17869 Default is @code{stack}.
17870
17871 @item levels_mode, m
17872 Set mode. Can be either @code{linear}, or @code{logarithmic}.
17873 Default is @code{linear}.
17874
17875 @item components, c
17876 Set what color components to display.
17877 Default is @code{7}.
17878
17879 @item bgopacity, b
17880 Set background opacity. Default is @code{0.9}.
17881
17882 @item envelope, e
17883 Show envelope. Default is disabled.
17884
17885 @item ecolor, ec
17886 Set envelope color. Default is @code{gold}.
17887 @end table
17888
17889 @section threshold
17890
17891 Apply threshold effect to video stream.
17892
17893 This filter needs four video streams to perform thresholding.
17894 First stream is stream we are filtering.
17895 Second stream is holding threshold values, third stream is holding min values,
17896 and last, fourth stream is holding max values.
17897
17898 The filter accepts the following option:
17899
17900 @table @option
17901 @item planes
17902 Set which planes will be processed, unprocessed planes will be copied.
17903 By default value 0xf, all planes will be processed.
17904 @end table
17905
17906 For example if first stream pixel's component value is less then threshold value
17907 of pixel component from 2nd threshold stream, third stream value will picked,
17908 otherwise fourth stream pixel component value will be picked.
17909
17910 Using color source filter one can perform various types of thresholding:
17911
17912 @subsection Examples
17913
17914 @itemize
17915 @item
17916 Binary threshold, using gray color as threshold:
17917 @example
17918 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=black -f lavfi -i color=white -lavfi threshold output.avi
17919 @end example
17920
17921 @item
17922 Inverted binary threshold, using gray color as threshold:
17923 @example
17924 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -f lavfi -i color=black -lavfi threshold output.avi
17925 @end example
17926
17927 @item
17928 Truncate binary threshold, using gray color as threshold:
17929 @example
17930 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=gray -lavfi threshold output.avi
17931 @end example
17932
17933 @item
17934 Threshold to zero, using gray color as threshold:
17935 @example
17936 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -i 320x240.avi -lavfi threshold output.avi
17937 @end example
17938
17939 @item
17940 Inverted threshold to zero, using gray color as threshold:
17941 @example
17942 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=white -lavfi threshold output.avi
17943 @end example
17944 @end itemize
17945
17946 @section thumbnail
17947 Select the most representative frame in a given sequence of consecutive frames.
17948
17949 The filter accepts the following options:
17950
17951 @table @option
17952 @item n
17953 Set the frames batch size to analyze; in a set of @var{n} frames, the filter
17954 will pick one of them, and then handle the next batch of @var{n} frames until
17955 the end. Default is @code{100}.
17956 @end table
17957
17958 Since the filter keeps track of the whole frames sequence, a bigger @var{n}
17959 value will result in a higher memory usage, so a high value is not recommended.
17960
17961 @subsection Examples
17962
17963 @itemize
17964 @item
17965 Extract one picture each 50 frames:
17966 @example
17967 thumbnail=50
17968 @end example
17969
17970 @item
17971 Complete example of a thumbnail creation with @command{ffmpeg}:
17972 @example
17973 ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
17974 @end example
17975 @end itemize
17976
17977 @section tile
17978
17979 Tile several successive frames together.
17980
17981 The filter accepts the following options:
17982
17983 @table @option
17984
17985 @item layout
17986 Set the grid size (i.e. the number of lines and columns). For the syntax of
17987 this option, check the
17988 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17989
17990 @item nb_frames
17991 Set the maximum number of frames to render in the given area. It must be less
17992 than or equal to @var{w}x@var{h}. The default value is @code{0}, meaning all
17993 the area will be used.
17994
17995 @item margin
17996 Set the outer border margin in pixels.
17997
17998 @item padding
17999 Set the inner border thickness (i.e. the number of pixels between frames). For
18000 more advanced padding options (such as having different values for the edges),
18001 refer to the pad video filter.
18002
18003 @item color
18004 Specify the color of the unused area. For the syntax of this option, check the
18005 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
18006 The default value of @var{color} is "black".
18007
18008 @item overlap
18009 Set the number of frames to overlap when tiling several successive frames together.
18010 The value must be between @code{0} and @var{nb_frames - 1}.
18011
18012 @item init_padding
18013 Set the number of frames to initially be empty before displaying first output frame.
18014 This controls how soon will one get first output frame.
18015 The value must be between @code{0} and @var{nb_frames - 1}.
18016 @end table
18017
18018 @subsection Examples
18019
18020 @itemize
18021 @item
18022 Produce 8x8 PNG tiles of all keyframes (@option{-skip_frame nokey}) in a movie:
18023 @example
18024 ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
18025 @end example
18026 The @option{-vsync 0} is necessary to prevent @command{ffmpeg} from
18027 duplicating each output frame to accommodate the originally detected frame
18028 rate.
18029
18030 @item
18031 Display @code{5} pictures in an area of @code{3x2} frames,
18032 with @code{7} pixels between them, and @code{2} pixels of initial margin, using
18033 mixed flat and named options:
18034 @example
18035 tile=3x2:nb_frames=5:padding=7:margin=2
18036 @end example
18037 @end itemize
18038
18039 @section tinterlace
18040
18041 Perform various types of temporal field interlacing.
18042
18043 Frames are counted starting from 1, so the first input frame is
18044 considered odd.
18045
18046 The filter accepts the following options:
18047
18048 @table @option
18049
18050 @item mode
18051 Specify the mode of the interlacing. This option can also be specified
18052 as a value alone. See below for a list of values for this option.
18053
18054 Available values are:
18055
18056 @table @samp
18057 @item merge, 0
18058 Move odd frames into the upper field, even into the lower field,
18059 generating a double height frame at half frame rate.
18060 @example
18061  ------> time
18062 Input:
18063 Frame 1         Frame 2         Frame 3         Frame 4
18064
18065 11111           22222           33333           44444
18066 11111           22222           33333           44444
18067 11111           22222           33333           44444
18068 11111           22222           33333           44444
18069
18070 Output:
18071 11111                           33333
18072 22222                           44444
18073 11111                           33333
18074 22222                           44444
18075 11111                           33333
18076 22222                           44444
18077 11111                           33333
18078 22222                           44444
18079 @end example
18080
18081 @item drop_even, 1
18082 Only output odd frames, even frames are dropped, generating a frame with
18083 unchanged height at half frame rate.
18084
18085 @example
18086  ------> time
18087 Input:
18088 Frame 1         Frame 2         Frame 3         Frame 4
18089
18090 11111           22222           33333           44444
18091 11111           22222           33333           44444
18092 11111           22222           33333           44444
18093 11111           22222           33333           44444
18094
18095 Output:
18096 11111                           33333
18097 11111                           33333
18098 11111                           33333
18099 11111                           33333
18100 @end example
18101
18102 @item drop_odd, 2
18103 Only output even frames, odd frames are dropped, generating a frame with
18104 unchanged height at half frame rate.
18105
18106 @example
18107  ------> time
18108 Input:
18109 Frame 1         Frame 2         Frame 3         Frame 4
18110
18111 11111           22222           33333           44444
18112 11111           22222           33333           44444
18113 11111           22222           33333           44444
18114 11111           22222           33333           44444
18115
18116 Output:
18117                 22222                           44444
18118                 22222                           44444
18119                 22222                           44444
18120                 22222                           44444
18121 @end example
18122
18123 @item pad, 3
18124 Expand each frame to full height, but pad alternate lines with black,
18125 generating a frame with double height at the same input frame rate.
18126
18127 @example
18128  ------> time
18129 Input:
18130 Frame 1         Frame 2         Frame 3         Frame 4
18131
18132 11111           22222           33333           44444
18133 11111           22222           33333           44444
18134 11111           22222           33333           44444
18135 11111           22222           33333           44444
18136
18137 Output:
18138 11111           .....           33333           .....
18139 .....           22222           .....           44444
18140 11111           .....           33333           .....
18141 .....           22222           .....           44444
18142 11111           .....           33333           .....
18143 .....           22222           .....           44444
18144 11111           .....           33333           .....
18145 .....           22222           .....           44444
18146 @end example
18147
18148
18149 @item interleave_top, 4
18150 Interleave the upper field from odd frames with the lower field from
18151 even frames, generating a frame with unchanged height at half frame rate.
18152
18153 @example
18154  ------> time
18155 Input:
18156 Frame 1         Frame 2         Frame 3         Frame 4
18157
18158 11111<-         22222           33333<-         44444
18159 11111           22222<-         33333           44444<-
18160 11111<-         22222           33333<-         44444
18161 11111           22222<-         33333           44444<-
18162
18163 Output:
18164 11111                           33333
18165 22222                           44444
18166 11111                           33333
18167 22222                           44444
18168 @end example
18169
18170
18171 @item interleave_bottom, 5
18172 Interleave the lower field from odd frames with the upper field from
18173 even frames, generating a frame with unchanged height at half frame rate.
18174
18175 @example
18176  ------> time
18177 Input:
18178 Frame 1         Frame 2         Frame 3         Frame 4
18179
18180 11111           22222<-         33333           44444<-
18181 11111<-         22222           33333<-         44444
18182 11111           22222<-         33333           44444<-
18183 11111<-         22222           33333<-         44444
18184
18185 Output:
18186 22222                           44444
18187 11111                           33333
18188 22222                           44444
18189 11111                           33333
18190 @end example
18191
18192
18193 @item interlacex2, 6
18194 Double frame rate with unchanged height. Frames are inserted each
18195 containing the second temporal field from the previous input frame and
18196 the first temporal field from the next input frame. This mode relies on
18197 the top_field_first flag. Useful for interlaced video displays with no
18198 field synchronisation.
18199
18200 @example
18201  ------> time
18202 Input:
18203 Frame 1         Frame 2         Frame 3         Frame 4
18204
18205 11111           22222           33333           44444
18206  11111           22222           33333           44444
18207 11111           22222           33333           44444
18208  11111           22222           33333           44444
18209
18210 Output:
18211 11111   22222   22222   33333   33333   44444   44444
18212  11111   11111   22222   22222   33333   33333   44444
18213 11111   22222   22222   33333   33333   44444   44444
18214  11111   11111   22222   22222   33333   33333   44444
18215 @end example
18216
18217
18218 @item mergex2, 7
18219 Move odd frames into the upper field, even into the lower field,
18220 generating a double height frame at same frame rate.
18221
18222 @example
18223  ------> time
18224 Input:
18225 Frame 1         Frame 2         Frame 3         Frame 4
18226
18227 11111           22222           33333           44444
18228 11111           22222           33333           44444
18229 11111           22222           33333           44444
18230 11111           22222           33333           44444
18231
18232 Output:
18233 11111           33333           33333           55555
18234 22222           22222           44444           44444
18235 11111           33333           33333           55555
18236 22222           22222           44444           44444
18237 11111           33333           33333           55555
18238 22222           22222           44444           44444
18239 11111           33333           33333           55555
18240 22222           22222           44444           44444
18241 @end example
18242
18243 @end table
18244
18245 Numeric values are deprecated but are accepted for backward
18246 compatibility reasons.
18247
18248 Default mode is @code{merge}.
18249
18250 @item flags
18251 Specify flags influencing the filter process.
18252
18253 Available value for @var{flags} is:
18254
18255 @table @option
18256 @item low_pass_filter, vlpf
18257 Enable linear vertical low-pass filtering in the filter.
18258 Vertical low-pass filtering is required when creating an interlaced
18259 destination from a progressive source which contains high-frequency
18260 vertical detail. Filtering will reduce interlace 'twitter' and Moire
18261 patterning.
18262
18263 @item complex_filter, cvlpf
18264 Enable complex vertical low-pass filtering.
18265 This will slightly less reduce interlace 'twitter' and Moire
18266 patterning but better retain detail and subjective sharpness impression.
18267
18268 @item bypass_il
18269 Bypass already interlaced frames, only adjust the frame rate.
18270 @end table
18271
18272 Vertical low-pass filtering and bypassing already interlaced frames can only be
18273 enabled for @option{mode} @var{interleave_top} and @var{interleave_bottom}.
18274
18275 @end table
18276
18277 @section tmix
18278
18279 Mix successive video frames.
18280
18281 A description of the accepted options follows.
18282
18283 @table @option
18284 @item frames
18285 The number of successive frames to mix. If unspecified, it defaults to 3.
18286
18287 @item weights
18288 Specify weight of each input video frame.
18289 Each weight is separated by space. If number of weights is smaller than
18290 number of @var{frames} last specified weight will be used for all remaining
18291 unset weights.
18292
18293 @item scale
18294 Specify scale, if it is set it will be multiplied with sum
18295 of each weight multiplied with pixel values to give final destination
18296 pixel value. By default @var{scale} is auto scaled to sum of weights.
18297 @end table
18298
18299 @subsection Examples
18300
18301 @itemize
18302 @item
18303 Average 7 successive frames:
18304 @example
18305 tmix=frames=7:weights="1 1 1 1 1 1 1"
18306 @end example
18307
18308 @item
18309 Apply simple temporal convolution:
18310 @example
18311 tmix=frames=3:weights="-1 3 -1"
18312 @end example
18313
18314 @item
18315 Similar as above but only showing temporal differences:
18316 @example
18317 tmix=frames=3:weights="-1 2 -1":scale=1
18318 @end example
18319 @end itemize
18320
18321 @anchor{tonemap}
18322 @section tonemap
18323 Tone map colors from different dynamic ranges.
18324
18325 This filter expects data in single precision floating point, as it needs to
18326 operate on (and can output) out-of-range values. Another filter, such as
18327 @ref{zscale}, is needed to convert the resulting frame to a usable format.
18328
18329 The tonemapping algorithms implemented only work on linear light, so input
18330 data should be linearized beforehand (and possibly correctly tagged).
18331
18332 @example
18333 ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT
18334 @end example
18335
18336 @subsection Options
18337 The filter accepts the following options.
18338
18339 @table @option
18340 @item tonemap
18341 Set the tone map algorithm to use.
18342
18343 Possible values are:
18344 @table @var
18345 @item none
18346 Do not apply any tone map, only desaturate overbright pixels.
18347
18348 @item clip
18349 Hard-clip any out-of-range values. Use it for perfect color accuracy for
18350 in-range values, while distorting out-of-range values.
18351
18352 @item linear
18353 Stretch the entire reference gamut to a linear multiple of the display.
18354
18355 @item gamma
18356 Fit a logarithmic transfer between the tone curves.
18357
18358 @item reinhard
18359 Preserve overall image brightness with a simple curve, using nonlinear
18360 contrast, which results in flattening details and degrading color accuracy.
18361
18362 @item hable
18363 Preserve both dark and bright details better than @var{reinhard}, at the cost
18364 of slightly darkening everything. Use it when detail preservation is more
18365 important than color and brightness accuracy.
18366
18367 @item mobius
18368 Smoothly map out-of-range values, while retaining contrast and colors for
18369 in-range material as much as possible. Use it when color accuracy is more
18370 important than detail preservation.
18371 @end table
18372
18373 Default is none.
18374
18375 @item param
18376 Tune the tone mapping algorithm.
18377
18378 This affects the following algorithms:
18379 @table @var
18380 @item none
18381 Ignored.
18382
18383 @item linear
18384 Specifies the scale factor to use while stretching.
18385 Default to 1.0.
18386
18387 @item gamma
18388 Specifies the exponent of the function.
18389 Default to 1.8.
18390
18391 @item clip
18392 Specify an extra linear coefficient to multiply into the signal before clipping.
18393 Default to 1.0.
18394
18395 @item reinhard
18396 Specify the local contrast coefficient at the display peak.
18397 Default to 0.5, which means that in-gamut values will be about half as bright
18398 as when clipping.
18399
18400 @item hable
18401 Ignored.
18402
18403 @item mobius
18404 Specify the transition point from linear to mobius transform. Every value
18405 below this point is guaranteed to be mapped 1:1. The higher the value, the
18406 more accurate the result will be, at the cost of losing bright details.
18407 Default to 0.3, which due to the steep initial slope still preserves in-range
18408 colors fairly accurately.
18409 @end table
18410
18411 @item desat
18412 Apply desaturation for highlights that exceed this level of brightness. The
18413 higher the parameter, the more color information will be preserved. This
18414 setting helps prevent unnaturally blown-out colors for super-highlights, by
18415 (smoothly) turning into white instead. This makes images feel more natural,
18416 at the cost of reducing information about out-of-range colors.
18417
18418 The default of 2.0 is somewhat conservative and will mostly just apply to
18419 skies or directly sunlit surfaces. A setting of 0.0 disables this option.
18420
18421 This option works only if the input frame has a supported color tag.
18422
18423 @item peak
18424 Override signal/nominal/reference peak with this value. Useful when the
18425 embedded peak information in display metadata is not reliable or when tone
18426 mapping from a lower range to a higher range.
18427 @end table
18428
18429 @section tpad
18430
18431 Temporarily pad video frames.
18432
18433 The filter accepts the following options:
18434
18435 @table @option
18436 @item start
18437 Specify number of delay frames before input video stream.
18438
18439 @item stop
18440 Specify number of padding frames after input video stream.
18441 Set to -1 to pad indefinitely.
18442
18443 @item start_mode
18444 Set kind of frames added to beginning of stream.
18445 Can be either @var{add} or @var{clone}.
18446 With @var{add} frames of solid-color are added.
18447 With @var{clone} frames are clones of first frame.
18448
18449 @item stop_mode
18450 Set kind of frames added to end of stream.
18451 Can be either @var{add} or @var{clone}.
18452 With @var{add} frames of solid-color are added.
18453 With @var{clone} frames are clones of last frame.
18454
18455 @item start_duration, stop_duration
18456 Specify the duration of the start/stop delay. See
18457 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
18458 for the accepted syntax.
18459 These options override @var{start} and @var{stop}.
18460
18461 @item color
18462 Specify the color of the padded area. For the syntax of this option,
18463 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
18464 manual,ffmpeg-utils}.
18465
18466 The default value of @var{color} is "black".
18467 @end table
18468
18469 @anchor{transpose}
18470 @section transpose
18471
18472 Transpose rows with columns in the input video and optionally flip it.
18473
18474 It accepts the following parameters:
18475
18476 @table @option
18477
18478 @item dir
18479 Specify the transposition direction.
18480
18481 Can assume the following values:
18482 @table @samp
18483 @item 0, 4, cclock_flip
18484 Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
18485 @example
18486 L.R     L.l
18487 . . ->  . .
18488 l.r     R.r
18489 @end example
18490
18491 @item 1, 5, clock
18492 Rotate by 90 degrees clockwise, that is:
18493 @example
18494 L.R     l.L
18495 . . ->  . .
18496 l.r     r.R
18497 @end example
18498
18499 @item 2, 6, cclock
18500 Rotate by 90 degrees counterclockwise, that is:
18501 @example
18502 L.R     R.r
18503 . . ->  . .
18504 l.r     L.l
18505 @end example
18506
18507 @item 3, 7, clock_flip
18508 Rotate by 90 degrees clockwise and vertically flip, that is:
18509 @example
18510 L.R     r.R
18511 . . ->  . .
18512 l.r     l.L
18513 @end example
18514 @end table
18515
18516 For values between 4-7, the transposition is only done if the input
18517 video geometry is portrait and not landscape. These values are
18518 deprecated, the @code{passthrough} option should be used instead.
18519
18520 Numerical values are deprecated, and should be dropped in favor of
18521 symbolic constants.
18522
18523 @item passthrough
18524 Do not apply the transposition if the input geometry matches the one
18525 specified by the specified value. It accepts the following values:
18526 @table @samp
18527 @item none
18528 Always apply transposition.
18529 @item portrait
18530 Preserve portrait geometry (when @var{height} >= @var{width}).
18531 @item landscape
18532 Preserve landscape geometry (when @var{width} >= @var{height}).
18533 @end table
18534
18535 Default value is @code{none}.
18536 @end table
18537
18538 For example to rotate by 90 degrees clockwise and preserve portrait
18539 layout:
18540 @example
18541 transpose=dir=1:passthrough=portrait
18542 @end example
18543
18544 The command above can also be specified as:
18545 @example
18546 transpose=1:portrait
18547 @end example
18548
18549 @section transpose_npp
18550
18551 Transpose rows with columns in the input video and optionally flip it.
18552 For more in depth examples see the @ref{transpose} video filter, which shares mostly the same options.
18553
18554 It accepts the following parameters:
18555
18556 @table @option
18557
18558 @item dir
18559 Specify the transposition direction.
18560
18561 Can assume the following values:
18562 @table @samp
18563 @item cclock_flip
18564 Rotate by 90 degrees counterclockwise and vertically flip. (default)
18565
18566 @item clock
18567 Rotate by 90 degrees clockwise.
18568
18569 @item cclock
18570 Rotate by 90 degrees counterclockwise.
18571
18572 @item clock_flip
18573 Rotate by 90 degrees clockwise and vertically flip.
18574 @end table
18575
18576 @item passthrough
18577 Do not apply the transposition if the input geometry matches the one
18578 specified by the specified value. It accepts the following values:
18579 @table @samp
18580 @item none
18581 Always apply transposition. (default)
18582 @item portrait
18583 Preserve portrait geometry (when @var{height} >= @var{width}).
18584 @item landscape
18585 Preserve landscape geometry (when @var{width} >= @var{height}).
18586 @end table
18587
18588 @end table
18589
18590 @section trim
18591 Trim the input so that the output contains one continuous subpart of the input.
18592
18593 It accepts the following parameters:
18594 @table @option
18595 @item start
18596 Specify the time of the start of the kept section, i.e. the frame with the
18597 timestamp @var{start} will be the first frame in the output.
18598
18599 @item end
18600 Specify the time of the first frame that will be dropped, i.e. the frame
18601 immediately preceding the one with the timestamp @var{end} will be the last
18602 frame in the output.
18603
18604 @item start_pts
18605 This is the same as @var{start}, except this option sets the start timestamp
18606 in timebase units instead of seconds.
18607
18608 @item end_pts
18609 This is the same as @var{end}, except this option sets the end timestamp
18610 in timebase units instead of seconds.
18611
18612 @item duration
18613 The maximum duration of the output in seconds.
18614
18615 @item start_frame
18616 The number of the first frame that should be passed to the output.
18617
18618 @item end_frame
18619 The number of the first frame that should be dropped.
18620 @end table
18621
18622 @option{start}, @option{end}, and @option{duration} are expressed as time
18623 duration specifications; see
18624 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
18625 for the accepted syntax.
18626
18627 Note that the first two sets of the start/end options and the @option{duration}
18628 option look at the frame timestamp, while the _frame variants simply count the
18629 frames that pass through the filter. Also note that this filter does not modify
18630 the timestamps. If you wish for the output timestamps to start at zero, insert a
18631 setpts filter after the trim filter.
18632
18633 If multiple start or end options are set, this filter tries to be greedy and
18634 keep all the frames that match at least one of the specified constraints. To keep
18635 only the part that matches all the constraints at once, chain multiple trim
18636 filters.
18637
18638 The defaults are such that all the input is kept. So it is possible to set e.g.
18639 just the end values to keep everything before the specified time.
18640
18641 Examples:
18642 @itemize
18643 @item
18644 Drop everything except the second minute of input:
18645 @example
18646 ffmpeg -i INPUT -vf trim=60:120
18647 @end example
18648
18649 @item
18650 Keep only the first second:
18651 @example
18652 ffmpeg -i INPUT -vf trim=duration=1
18653 @end example
18654
18655 @end itemize
18656
18657 @section unpremultiply
18658 Apply alpha unpremultiply effect to input video stream using first plane
18659 of second stream as alpha.
18660
18661 Both streams must have same dimensions and same pixel format.
18662
18663 The filter accepts the following option:
18664
18665 @table @option
18666 @item planes
18667 Set which planes will be processed, unprocessed planes will be copied.
18668 By default value 0xf, all planes will be processed.
18669
18670 If the format has 1 or 2 components, then luma is bit 0.
18671 If the format has 3 or 4 components:
18672 for RGB formats bit 0 is green, bit 1 is blue and bit 2 is red;
18673 for YUV formats bit 0 is luma, bit 1 is chroma-U and bit 2 is chroma-V.
18674 If present, the alpha channel is always the last bit.
18675
18676 @item inplace
18677 Do not require 2nd input for processing, instead use alpha plane from input stream.
18678 @end table
18679
18680 @anchor{unsharp}
18681 @section unsharp
18682
18683 Sharpen or blur the input video.
18684
18685 It accepts the following parameters:
18686
18687 @table @option
18688 @item luma_msize_x, lx
18689 Set the luma matrix horizontal size. It must be an odd integer between
18690 3 and 23. The default value is 5.
18691
18692 @item luma_msize_y, ly
18693 Set the luma matrix vertical size. It must be an odd integer between 3
18694 and 23. The default value is 5.
18695
18696 @item luma_amount, la
18697 Set the luma effect strength. It must be a floating point number, reasonable
18698 values lay between -1.5 and 1.5.
18699
18700 Negative values will blur the input video, while positive values will
18701 sharpen it, a value of zero will disable the effect.
18702
18703 Default value is 1.0.
18704
18705 @item chroma_msize_x, cx
18706 Set the chroma matrix horizontal size. It must be an odd integer
18707 between 3 and 23. The default value is 5.
18708
18709 @item chroma_msize_y, cy
18710 Set the chroma matrix vertical size. It must be an odd integer
18711 between 3 and 23. The default value is 5.
18712
18713 @item chroma_amount, ca
18714 Set the chroma effect strength. It must be a floating point number, reasonable
18715 values lay between -1.5 and 1.5.
18716
18717 Negative values will blur the input video, while positive values will
18718 sharpen it, a value of zero will disable the effect.
18719
18720 Default value is 0.0.
18721
18722 @end table
18723
18724 All parameters are optional and default to the equivalent of the
18725 string '5:5:1.0:5:5:0.0'.
18726
18727 @subsection Examples
18728
18729 @itemize
18730 @item
18731 Apply strong luma sharpen effect:
18732 @example
18733 unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
18734 @end example
18735
18736 @item
18737 Apply a strong blur of both luma and chroma parameters:
18738 @example
18739 unsharp=7:7:-2:7:7:-2
18740 @end example
18741 @end itemize
18742
18743 @section uspp
18744
18745 Apply ultra slow/simple postprocessing filter that compresses and decompresses
18746 the image at several (or - in the case of @option{quality} level @code{8} - all)
18747 shifts and average the results.
18748
18749 The way this differs from the behavior of spp is that uspp actually encodes &
18750 decodes each case with libavcodec Snow, whereas spp uses a simplified intra only 8x8
18751 DCT similar to MJPEG.
18752
18753 The filter accepts the following options:
18754
18755 @table @option
18756 @item quality
18757 Set quality. This option defines the number of levels for averaging. It accepts
18758 an integer in the range 0-8. If set to @code{0}, the filter will have no
18759 effect. A value of @code{8} means the higher quality. For each increment of
18760 that value the speed drops by a factor of approximately 2.  Default value is
18761 @code{3}.
18762
18763 @item qp
18764 Force a constant quantization parameter. If not set, the filter will use the QP
18765 from the video stream (if available).
18766 @end table
18767
18768 @section v360
18769
18770 Convert 360 videos between various formats.
18771
18772 The filter accepts the following options:
18773
18774 @table @option
18775
18776 @item input
18777 @item output
18778 Set format of the input/output video.
18779
18780 Available formats:
18781
18782 @table @samp
18783
18784 @item e
18785 @item equirect
18786 Equirectangular projection.
18787
18788 @item c3x2
18789 @item c6x1
18790 @item c1x6
18791 Cubemap with 3x2/6x1/1x6 layout.
18792
18793 Format specific options:
18794
18795 @table @option
18796 @item in_pad
18797 @item out_pad
18798 Set padding proportion for the input/output cubemap. Values in decimals.
18799
18800 Example values:
18801 @table @samp
18802 @item 0
18803 No padding.
18804 @item 0.01
18805 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)
18806 @end table
18807
18808 Default value is @b{@samp{0}}.
18809
18810 @item fin_pad
18811 @item fout_pad
18812 Set fixed padding for the input/output cubemap. Values in pixels.
18813
18814 Default value is @b{@samp{0}}. If greater than zero it overrides other padding options.
18815
18816 @item in_forder
18817 @item out_forder
18818 Set order of faces for the input/output cubemap. Choose one direction for each position.
18819
18820 Designation of directions:
18821 @table @samp
18822 @item r
18823 right
18824 @item l
18825 left
18826 @item u
18827 up
18828 @item d
18829 down
18830 @item f
18831 forward
18832 @item b
18833 back
18834 @end table
18835
18836 Default value is @b{@samp{rludfb}}.
18837
18838 @item in_frot
18839 @item out_frot
18840 Set rotation of faces for the input/output cubemap. Choose one angle for each position.
18841
18842 Designation of angles:
18843 @table @samp
18844 @item 0
18845 0 degrees clockwise
18846 @item 1
18847 90 degrees clockwise
18848 @item 2
18849 180 degrees clockwise
18850 @item 3
18851 270 degrees clockwise
18852 @end table
18853
18854 Default value is @b{@samp{000000}}.
18855 @end table
18856
18857 @item eac
18858 Equi-Angular Cubemap.
18859
18860 @item flat
18861 @item gnomonic
18862 @item rectilinear
18863 Regular video.
18864
18865 Format specific options:
18866 @table @option
18867 @item h_fov
18868 @item v_fov
18869 @item d_fov
18870 Set output horizontal/vertical/diagonal field of view. Values in degrees.
18871
18872 If diagonal field of view is set it overrides horizontal and vertical field of view.
18873
18874 @item ih_fov
18875 @item iv_fov
18876 @item id_fov
18877 Set input horizontal/vertical/diagonal field of view. Values in degrees.
18878
18879 If diagonal field of view is set it overrides horizontal and vertical field of view.
18880 @end table
18881
18882 @item dfisheye
18883 Dual fisheye.
18884
18885 Format specific options:
18886 @table @option
18887 @item in_pad
18888 @item out_pad
18889 Set padding proportion. Values in decimals.
18890
18891 Example values:
18892 @table @samp
18893 @item 0
18894 No padding.
18895 @item 0.01
18896 1% padding.
18897 @end table
18898
18899 Default value is @b{@samp{0}}.
18900 @end table
18901
18902 @item barrel
18903 @item fb
18904 Facebook's 360 format.
18905
18906 @item sg
18907 Stereographic format.
18908
18909 Format specific options:
18910 @table @option
18911 @item h_fov
18912 @item v_fov
18913 @item d_fov
18914 Set output horizontal/vertical/diagonal field of view. Values in degrees.
18915
18916 If diagonal field of view is set it overrides horizontal and vertical field of view.
18917
18918 @item ih_fov
18919 @item iv_fov
18920 @item id_fov
18921 Set input horizontal/vertical/diagonal field of view. Values in degrees.
18922
18923 If diagonal field of view is set it overrides horizontal and vertical field of view.
18924 @end table
18925
18926 @item mercator
18927 Mercator format.
18928
18929 @item ball
18930 Ball format, gives significant distortion toward the back.
18931
18932 @item hammer
18933 Hammer-Aitoff map projection format.
18934
18935 @item sinusoidal
18936 Sinusoidal map projection format.
18937
18938 @item fisheye
18939 Fisheye projection.
18940
18941 Format specific options:
18942 @table @option
18943 @item h_fov
18944 @item v_fov
18945 @item d_fov
18946 Set output horizontal/vertical/diagonal field of view. Values in degrees.
18947
18948 If diagonal field of view is set it overrides horizontal and vertical field of view.
18949
18950 @item ih_fov
18951 @item iv_fov
18952 @item id_fov
18953 Set input horizontal/vertical/diagonal field of view. Values in degrees.
18954
18955 If diagonal field of view is set it overrides horizontal and vertical field of view.
18956 @end table
18957
18958 @item pannini
18959 Pannini projection. @i{(output only)}
18960
18961 Format specific options:
18962 @table @option
18963 @item h_fov
18964 Set pannini parameter.
18965 @end table
18966
18967 @item cylindrical
18968 Cylindrical projection.
18969
18970 Format specific options:
18971 @table @option
18972 @item h_fov
18973 @item v_fov
18974 @item d_fov
18975 Set output horizontal/vertical/diagonal field of view. Values in degrees.
18976
18977 If diagonal field of view is set it overrides horizontal and vertical field of view.
18978
18979 @item ih_fov
18980 @item iv_fov
18981 @item id_fov
18982 Set input horizontal/vertical/diagonal field of view. Values in degrees.
18983
18984 If diagonal field of view is set it overrides horizontal and vertical field of view.
18985 @end table
18986
18987 @item perspective
18988 Perspective projection. @i{(output only)}
18989
18990 Format specific options:
18991 @table @option
18992 @item v_fov
18993 Set perspective parameter.
18994 @end table
18995
18996 @item tetrahedron
18997 Tetrahedron projection.
18998 @end table
18999
19000 @item interp
19001 Set interpolation method.@*
19002 @i{Note: more complex interpolation methods require much more memory to run.}
19003
19004 Available methods:
19005
19006 @table @samp
19007 @item near
19008 @item nearest
19009 Nearest neighbour.
19010 @item line
19011 @item linear
19012 Bilinear interpolation.
19013 @item cube
19014 @item cubic
19015 Bicubic interpolation.
19016 @item lanc
19017 @item lanczos
19018 Lanczos interpolation.
19019 @item sp16
19020 @item spline16
19021 Spline16 interpolation.
19022 @item gauss
19023 @item gaussian
19024 Gaussian interpolation.
19025 @end table
19026
19027 Default value is @b{@samp{line}}.
19028
19029 @item w
19030 @item h
19031 Set the output video resolution.
19032
19033 Default resolution depends on formats.
19034
19035 @item in_stereo
19036 @item out_stereo
19037 Set the input/output stereo format.
19038
19039 @table @samp
19040 @item 2d
19041 2D mono
19042 @item sbs
19043 Side by side
19044 @item tb
19045 Top bottom
19046 @end table
19047
19048 Default value is @b{@samp{2d}} for input and output format.
19049
19050 @item yaw
19051 @item pitch
19052 @item roll
19053 Set rotation for the output video. Values in degrees.
19054
19055 @item rorder
19056 Set rotation order for the output video. Choose one item for each position.
19057
19058 @table @samp
19059 @item y, Y
19060 yaw
19061 @item p, P
19062 pitch
19063 @item r, R
19064 roll
19065 @end table
19066
19067 Default value is @b{@samp{ypr}}.
19068
19069 @item h_flip
19070 @item v_flip
19071 @item d_flip
19072 Flip the output video horizontally(swaps left-right)/vertically(swaps up-down)/in-depth(swaps back-forward). Boolean values.
19073
19074 @item ih_flip
19075 @item iv_flip
19076 Set if input video is flipped horizontally/vertically. Boolean values.
19077
19078 @item in_trans
19079 Set if input video is transposed. Boolean value, by default disabled.
19080
19081 @item out_trans
19082 Set if output video needs to be transposed. Boolean value, by default disabled.
19083
19084 @item alpha_mask
19085 Build mask in alpha plane for all unmapped pixels by marking them fully transparent. Boolean value, by default disabled.
19086 @end table
19087
19088 @subsection Examples
19089
19090 @itemize
19091 @item
19092 Convert equirectangular video to cubemap with 3x2 layout and 1% padding using bicubic interpolation:
19093 @example
19094 ffmpeg -i input.mkv -vf v360=e:c3x2:cubic:out_pad=0.01 output.mkv
19095 @end example
19096 @item
19097 Extract back view of Equi-Angular Cubemap:
19098 @example
19099 ffmpeg -i input.mkv -vf v360=eac:flat:yaw=180 output.mkv
19100 @end example
19101 @item
19102 Convert transposed and horizontally flipped Equi-Angular Cubemap in side-by-side stereo format to equirectangular top-bottom stereo format:
19103 @example
19104 v360=eac:equirect:in_stereo=sbs:in_trans=1:ih_flip=1:out_stereo=tb
19105 @end example
19106 @end itemize
19107
19108 @section vaguedenoiser
19109
19110 Apply a wavelet based denoiser.
19111
19112 It transforms each frame from the video input into the wavelet domain,
19113 using Cohen-Daubechies-Feauveau 9/7. Then it applies some filtering to
19114 the obtained coefficients. It does an inverse wavelet transform after.
19115 Due to wavelet properties, it should give a nice smoothed result, and
19116 reduced noise, without blurring picture features.
19117
19118 This filter accepts the following options:
19119
19120 @table @option
19121 @item threshold
19122 The filtering strength. The higher, the more filtered the video will be.
19123 Hard thresholding can use a higher threshold than soft thresholding
19124 before the video looks overfiltered. Default value is 2.
19125
19126 @item method
19127 The filtering method the filter will use.
19128
19129 It accepts the following values:
19130 @table @samp
19131 @item hard
19132 All values under the threshold will be zeroed.
19133
19134 @item soft
19135 All values under the threshold will be zeroed. All values above will be
19136 reduced by the threshold.
19137
19138 @item garrote
19139 Scales or nullifies coefficients - intermediary between (more) soft and
19140 (less) hard thresholding.
19141 @end table
19142
19143 Default is garrote.
19144
19145 @item nsteps
19146 Number of times, the wavelet will decompose the picture. Picture can't
19147 be decomposed beyond a particular point (typically, 8 for a 640x480
19148 frame - as 2^9 = 512 > 480). Valid values are integers between 1 and 32. Default value is 6.
19149
19150 @item percent
19151 Partial of full denoising (limited coefficients shrinking), from 0 to 100. Default value is 85.
19152
19153 @item planes
19154 A list of the planes to process. By default all planes are processed.
19155 @end table
19156
19157 @section vectorscope
19158
19159 Display 2 color component values in the two dimensional graph (which is called
19160 a vectorscope).
19161
19162 This filter accepts the following options:
19163
19164 @table @option
19165 @item mode, m
19166 Set vectorscope mode.
19167
19168 It accepts the following values:
19169 @table @samp
19170 @item gray
19171 @item tint
19172 Gray values are displayed on graph, higher brightness means more pixels have
19173 same component color value on location in graph. This is the default mode.
19174
19175 @item color
19176 Gray values are displayed on graph. Surrounding pixels values which are not
19177 present in video frame are drawn in gradient of 2 color components which are
19178 set by option @code{x} and @code{y}. The 3rd color component is static.
19179
19180 @item color2
19181 Actual color components values present in video frame are displayed on graph.
19182
19183 @item color3
19184 Similar as color2 but higher frequency of same values @code{x} and @code{y}
19185 on graph increases value of another color component, which is luminance by
19186 default values of @code{x} and @code{y}.
19187
19188 @item color4
19189 Actual colors present in video frame are displayed on graph. If two different
19190 colors map to same position on graph then color with higher value of component
19191 not present in graph is picked.
19192
19193 @item color5
19194 Gray values are displayed on graph. Similar to @code{color} but with 3rd color
19195 component picked from radial gradient.
19196 @end table
19197
19198 @item x
19199 Set which color component will be represented on X-axis. Default is @code{1}.
19200
19201 @item y
19202 Set which color component will be represented on Y-axis. Default is @code{2}.
19203
19204 @item intensity, i
19205 Set intensity, used by modes: gray, color, color3 and color5 for increasing brightness
19206 of color component which represents frequency of (X, Y) location in graph.
19207
19208 @item envelope, e
19209 @table @samp
19210 @item none
19211 No envelope, this is default.
19212
19213 @item instant
19214 Instant envelope, even darkest single pixel will be clearly highlighted.
19215
19216 @item peak
19217 Hold maximum and minimum values presented in graph over time. This way you
19218 can still spot out of range values without constantly looking at vectorscope.
19219
19220 @item peak+instant
19221 Peak and instant envelope combined together.
19222 @end table
19223
19224 @item graticule, g
19225 Set what kind of graticule to draw.
19226 @table @samp
19227 @item none
19228 @item green
19229 @item color
19230 @item invert
19231 @end table
19232
19233 @item opacity, o
19234 Set graticule opacity.
19235
19236 @item flags, f
19237 Set graticule flags.
19238
19239 @table @samp
19240 @item white
19241 Draw graticule for white point.
19242
19243 @item black
19244 Draw graticule for black point.
19245
19246 @item name
19247 Draw color points short names.
19248 @end table
19249
19250 @item bgopacity, b
19251 Set background opacity.
19252
19253 @item lthreshold, l
19254 Set low threshold for color component not represented on X or Y axis.
19255 Values lower than this value will be ignored. Default is 0.
19256 Note this value is multiplied with actual max possible value one pixel component
19257 can have. So for 8-bit input and low threshold value of 0.1 actual threshold
19258 is 0.1 * 255 = 25.
19259
19260 @item hthreshold, h
19261 Set high threshold for color component not represented on X or Y axis.
19262 Values higher than this value will be ignored. Default is 1.
19263 Note this value is multiplied with actual max possible value one pixel component
19264 can have. So for 8-bit input and high threshold value of 0.9 actual threshold
19265 is 0.9 * 255 = 230.
19266
19267 @item colorspace, c
19268 Set what kind of colorspace to use when drawing graticule.
19269 @table @samp
19270 @item auto
19271 @item 601
19272 @item 709
19273 @end table
19274 Default is auto.
19275
19276 @item tint0, t0
19277 @item tint1, t1
19278 Set color tint for gray/tint vectorscope mode. By default both options are zero.
19279 This means no tint, and output will remain gray.
19280 @end table
19281
19282 @anchor{vidstabdetect}
19283 @section vidstabdetect
19284
19285 Analyze video stabilization/deshaking. Perform pass 1 of 2, see
19286 @ref{vidstabtransform} for pass 2.
19287
19288 This filter generates a file with relative translation and rotation
19289 transform information about subsequent frames, which is then used by
19290 the @ref{vidstabtransform} filter.
19291
19292 To enable compilation of this filter you need to configure FFmpeg with
19293 @code{--enable-libvidstab}.
19294
19295 This filter accepts the following options:
19296
19297 @table @option
19298 @item result
19299 Set the path to the file used to write the transforms information.
19300 Default value is @file{transforms.trf}.
19301
19302 @item shakiness
19303 Set how shaky the video is and how quick the camera is. It accepts an
19304 integer in the range 1-10, a value of 1 means little shakiness, a
19305 value of 10 means strong shakiness. Default value is 5.
19306
19307 @item accuracy
19308 Set the accuracy of the detection process. It must be a value in the
19309 range 1-15. A value of 1 means low accuracy, a value of 15 means high
19310 accuracy. Default value is 15.
19311
19312 @item stepsize
19313 Set stepsize of the search process. The region around minimum is
19314 scanned with 1 pixel resolution. Default value is 6.
19315
19316 @item mincontrast
19317 Set minimum contrast. Below this value a local measurement field is
19318 discarded. Must be a floating point value in the range 0-1. Default
19319 value is 0.3.
19320
19321 @item tripod
19322 Set reference frame number for tripod mode.
19323
19324 If enabled, the motion of the frames is compared to a reference frame
19325 in the filtered stream, identified by the specified number. The idea
19326 is to compensate all movements in a more-or-less static scene and keep
19327 the camera view absolutely still.
19328
19329 If set to 0, it is disabled. The frames are counted starting from 1.
19330
19331 @item show
19332 Show fields and transforms in the resulting frames. It accepts an
19333 integer in the range 0-2. Default value is 0, which disables any
19334 visualization.
19335 @end table
19336
19337 @subsection Examples
19338
19339 @itemize
19340 @item
19341 Use default values:
19342 @example
19343 vidstabdetect
19344 @end example
19345
19346 @item
19347 Analyze strongly shaky movie and put the results in file
19348 @file{mytransforms.trf}:
19349 @example
19350 vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
19351 @end example
19352
19353 @item
19354 Visualize the result of internal transformations in the resulting
19355 video:
19356 @example
19357 vidstabdetect=show=1
19358 @end example
19359
19360 @item
19361 Analyze a video with medium shakiness using @command{ffmpeg}:
19362 @example
19363 ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
19364 @end example
19365 @end itemize
19366
19367 @anchor{vidstabtransform}
19368 @section vidstabtransform
19369
19370 Video stabilization/deshaking: pass 2 of 2,
19371 see @ref{vidstabdetect} for pass 1.
19372
19373 Read a file with transform information for each frame and
19374 apply/compensate them. Together with the @ref{vidstabdetect}
19375 filter this can be used to deshake videos. See also
19376 @url{http://public.hronopik.de/vid.stab}. It is important to also use
19377 the @ref{unsharp} filter, see below.
19378
19379 To enable compilation of this filter you need to configure FFmpeg with
19380 @code{--enable-libvidstab}.
19381
19382 @subsection Options
19383
19384 @table @option
19385 @item input
19386 Set path to the file used to read the transforms. Default value is
19387 @file{transforms.trf}.
19388
19389 @item smoothing
19390 Set the number of frames (value*2 + 1) used for lowpass filtering the
19391 camera movements. Default value is 10.
19392
19393 For example a number of 10 means that 21 frames are used (10 in the
19394 past and 10 in the future) to smoothen the motion in the video. A
19395 larger value leads to a smoother video, but limits the acceleration of
19396 the camera (pan/tilt movements). 0 is a special case where a static
19397 camera is simulated.
19398
19399 @item optalgo
19400 Set the camera path optimization algorithm.
19401
19402 Accepted values are:
19403 @table @samp
19404 @item gauss
19405 gaussian kernel low-pass filter on camera motion (default)
19406 @item avg
19407 averaging on transformations
19408 @end table
19409
19410 @item maxshift
19411 Set maximal number of pixels to translate frames. Default value is -1,
19412 meaning no limit.
19413
19414 @item maxangle
19415 Set maximal angle in radians (degree*PI/180) to rotate frames. Default
19416 value is -1, meaning no limit.
19417
19418 @item crop
19419 Specify how to deal with borders that may be visible due to movement
19420 compensation.
19421
19422 Available values are:
19423 @table @samp
19424 @item keep
19425 keep image information from previous frame (default)
19426 @item black
19427 fill the border black
19428 @end table
19429
19430 @item invert
19431 Invert transforms if set to 1. Default value is 0.
19432
19433 @item relative
19434 Consider transforms as relative to previous frame if set to 1,
19435 absolute if set to 0. Default value is 0.
19436
19437 @item zoom
19438 Set percentage to zoom. A positive value will result in a zoom-in
19439 effect, a negative value in a zoom-out effect. Default value is 0 (no
19440 zoom).
19441
19442 @item optzoom
19443 Set optimal zooming to avoid borders.
19444
19445 Accepted values are:
19446 @table @samp
19447 @item 0
19448 disabled
19449 @item 1
19450 optimal static zoom value is determined (only very strong movements
19451 will lead to visible borders) (default)
19452 @item 2
19453 optimal adaptive zoom value is determined (no borders will be
19454 visible), see @option{zoomspeed}
19455 @end table
19456
19457 Note that the value given at zoom is added to the one calculated here.
19458
19459 @item zoomspeed
19460 Set percent to zoom maximally each frame (enabled when
19461 @option{optzoom} is set to 2). Range is from 0 to 5, default value is
19462 0.25.
19463
19464 @item interpol
19465 Specify type of interpolation.
19466
19467 Available values are:
19468 @table @samp
19469 @item no
19470 no interpolation
19471 @item linear
19472 linear only horizontal
19473 @item bilinear
19474 linear in both directions (default)
19475 @item bicubic
19476 cubic in both directions (slow)
19477 @end table
19478
19479 @item tripod
19480 Enable virtual tripod mode if set to 1, which is equivalent to
19481 @code{relative=0:smoothing=0}. Default value is 0.
19482
19483 Use also @code{tripod} option of @ref{vidstabdetect}.
19484
19485 @item debug
19486 Increase log verbosity if set to 1. Also the detected global motions
19487 are written to the temporary file @file{global_motions.trf}. Default
19488 value is 0.
19489 @end table
19490
19491 @subsection Examples
19492
19493 @itemize
19494 @item
19495 Use @command{ffmpeg} for a typical stabilization with default values:
19496 @example
19497 ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
19498 @end example
19499
19500 Note the use of the @ref{unsharp} filter which is always recommended.
19501
19502 @item
19503 Zoom in a bit more and load transform data from a given file:
19504 @example
19505 vidstabtransform=zoom=5:input="mytransforms.trf"
19506 @end example
19507
19508 @item
19509 Smoothen the video even more:
19510 @example
19511 vidstabtransform=smoothing=30
19512 @end example
19513 @end itemize
19514
19515 @section vflip
19516
19517 Flip the input video vertically.
19518
19519 For example, to vertically flip a video with @command{ffmpeg}:
19520 @example
19521 ffmpeg -i in.avi -vf "vflip" out.avi
19522 @end example
19523
19524 @section vfrdet
19525
19526 Detect variable frame rate video.
19527
19528 This filter tries to detect if the input is variable or constant frame rate.
19529
19530 At end it will output number of frames detected as having variable delta pts,
19531 and ones with constant delta pts.
19532 If there was frames with variable delta, than it will also show min, max and
19533 average delta encountered.
19534
19535 @section vibrance
19536
19537 Boost or alter saturation.
19538
19539 The filter accepts the following options:
19540 @table @option
19541 @item intensity
19542 Set strength of boost if positive value or strength of alter if negative value.
19543 Default is 0. Allowed range is from -2 to 2.
19544
19545 @item rbal
19546 Set the red balance. Default is 1. Allowed range is from -10 to 10.
19547
19548 @item gbal
19549 Set the green balance. Default is 1. Allowed range is from -10 to 10.
19550
19551 @item bbal
19552 Set the blue balance. Default is 1. Allowed range is from -10 to 10.
19553
19554 @item rlum
19555 Set the red luma coefficient.
19556
19557 @item glum
19558 Set the green luma coefficient.
19559
19560 @item blum
19561 Set the blue luma coefficient.
19562
19563 @item alternate
19564 If @code{intensity} is negative and this is set to 1, colors will change,
19565 otherwise colors will be less saturated, more towards gray.
19566 @end table
19567
19568 @subsection Commands
19569
19570 This filter supports the all above options as @ref{commands}.
19571
19572 @anchor{vignette}
19573 @section vignette
19574
19575 Make or reverse a natural vignetting effect.
19576
19577 The filter accepts the following options:
19578
19579 @table @option
19580 @item angle, a
19581 Set lens angle expression as a number of radians.
19582
19583 The value is clipped in the @code{[0,PI/2]} range.
19584
19585 Default value: @code{"PI/5"}
19586
19587 @item x0
19588 @item y0
19589 Set center coordinates expressions. Respectively @code{"w/2"} and @code{"h/2"}
19590 by default.
19591
19592 @item mode
19593 Set forward/backward mode.
19594
19595 Available modes are:
19596 @table @samp
19597 @item forward
19598 The larger the distance from the central point, the darker the image becomes.
19599
19600 @item backward
19601 The larger the distance from the central point, the brighter the image becomes.
19602 This can be used to reverse a vignette effect, though there is no automatic
19603 detection to extract the lens @option{angle} and other settings (yet). It can
19604 also be used to create a burning effect.
19605 @end table
19606
19607 Default value is @samp{forward}.
19608
19609 @item eval
19610 Set evaluation mode for the expressions (@option{angle}, @option{x0}, @option{y0}).
19611
19612 It accepts the following values:
19613 @table @samp
19614 @item init
19615 Evaluate expressions only once during the filter initialization.
19616
19617 @item frame
19618 Evaluate expressions for each incoming frame. This is way slower than the
19619 @samp{init} mode since it requires all the scalers to be re-computed, but it
19620 allows advanced dynamic expressions.
19621 @end table
19622
19623 Default value is @samp{init}.
19624
19625 @item dither
19626 Set dithering to reduce the circular banding effects. Default is @code{1}
19627 (enabled).
19628
19629 @item aspect
19630 Set vignette aspect. This setting allows one to adjust the shape of the vignette.
19631 Setting this value to the SAR of the input will make a rectangular vignetting
19632 following the dimensions of the video.
19633
19634 Default is @code{1/1}.
19635 @end table
19636
19637 @subsection Expressions
19638
19639 The @option{alpha}, @option{x0} and @option{y0} expressions can contain the
19640 following parameters.
19641
19642 @table @option
19643 @item w
19644 @item h
19645 input width and height
19646
19647 @item n
19648 the number of input frame, starting from 0
19649
19650 @item pts
19651 the PTS (Presentation TimeStamp) time of the filtered video frame, expressed in
19652 @var{TB} units, NAN if undefined
19653
19654 @item r
19655 frame rate of the input video, NAN if the input frame rate is unknown
19656
19657 @item t
19658 the PTS (Presentation TimeStamp) of the filtered video frame,
19659 expressed in seconds, NAN if undefined
19660
19661 @item tb
19662 time base of the input video
19663 @end table
19664
19665
19666 @subsection Examples
19667
19668 @itemize
19669 @item
19670 Apply simple strong vignetting effect:
19671 @example
19672 vignette=PI/4
19673 @end example
19674
19675 @item
19676 Make a flickering vignetting:
19677 @example
19678 vignette='PI/4+random(1)*PI/50':eval=frame
19679 @end example
19680
19681 @end itemize
19682
19683 @section vmafmotion
19684
19685 Obtain the average VMAF motion score of a video.
19686 It is one of the component metrics of VMAF.
19687
19688 The obtained average motion score is printed through the logging system.
19689
19690 The filter accepts the following options:
19691
19692 @table @option
19693 @item stats_file
19694 If specified, the filter will use the named file to save the motion score of
19695 each frame with respect to the previous frame.
19696 When filename equals "-" the data is sent to standard output.
19697 @end table
19698
19699 Example:
19700 @example
19701 ffmpeg -i ref.mpg -vf vmafmotion -f null -
19702 @end example
19703
19704 @section vstack
19705 Stack input videos vertically.
19706
19707 All streams must be of same pixel format and of same width.
19708
19709 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
19710 to create same output.
19711
19712 The filter accepts the following options:
19713
19714 @table @option
19715 @item inputs
19716 Set number of input streams. Default is 2.
19717
19718 @item shortest
19719 If set to 1, force the output to terminate when the shortest input
19720 terminates. Default value is 0.
19721 @end table
19722
19723 @section w3fdif
19724
19725 Deinterlace the input video ("w3fdif" stands for "Weston 3 Field
19726 Deinterlacing Filter").
19727
19728 Based on the process described by Martin Weston for BBC R&D, and
19729 implemented based on the de-interlace algorithm written by Jim
19730 Easterbrook for BBC R&D, the Weston 3 field deinterlacing filter
19731 uses filter coefficients calculated by BBC R&D.
19732
19733 This filter uses field-dominance information in frame to decide which
19734 of each pair of fields to place first in the output.
19735 If it gets it wrong use @ref{setfield} filter before @code{w3fdif} filter.
19736
19737 There are two sets of filter coefficients, so called "simple"
19738 and "complex". Which set of filter coefficients is used can
19739 be set by passing an optional parameter:
19740
19741 @table @option
19742 @item filter
19743 Set the interlacing filter coefficients. Accepts one of the following values:
19744
19745 @table @samp
19746 @item simple
19747 Simple filter coefficient set.
19748 @item complex
19749 More-complex filter coefficient set.
19750 @end table
19751 Default value is @samp{complex}.
19752
19753 @item deint
19754 Specify which frames to deinterlace. Accepts one of the following values:
19755
19756 @table @samp
19757 @item all
19758 Deinterlace all frames,
19759 @item interlaced
19760 Only deinterlace frames marked as interlaced.
19761 @end table
19762
19763 Default value is @samp{all}.
19764 @end table
19765
19766 @section waveform
19767 Video waveform monitor.
19768
19769 The waveform monitor plots color component intensity. By default luminance
19770 only. Each column of the waveform corresponds to a column of pixels in the
19771 source video.
19772
19773 It accepts the following options:
19774
19775 @table @option
19776 @item mode, m
19777 Can be either @code{row}, or @code{column}. Default is @code{column}.
19778 In row mode, the graph on the left side represents color component value 0 and
19779 the right side represents value = 255. In column mode, the top side represents
19780 color component value = 0 and bottom side represents value = 255.
19781
19782 @item intensity, i
19783 Set intensity. Smaller values are useful to find out how many values of the same
19784 luminance are distributed across input rows/columns.
19785 Default value is @code{0.04}. Allowed range is [0, 1].
19786
19787 @item mirror, r
19788 Set mirroring mode. @code{0} means unmirrored, @code{1} means mirrored.
19789 In mirrored mode, higher values will be represented on the left
19790 side for @code{row} mode and at the top for @code{column} mode. Default is
19791 @code{1} (mirrored).
19792
19793 @item display, d
19794 Set display mode.
19795 It accepts the following values:
19796 @table @samp
19797 @item overlay
19798 Presents information identical to that in the @code{parade}, except
19799 that the graphs representing color components are superimposed directly
19800 over one another.
19801
19802 This display mode makes it easier to spot relative differences or similarities
19803 in overlapping areas of the color components that are supposed to be identical,
19804 such as neutral whites, grays, or blacks.
19805
19806 @item stack
19807 Display separate graph for the color components side by side in
19808 @code{row} mode or one below the other in @code{column} mode.
19809
19810 @item parade
19811 Display separate graph for the color components side by side in
19812 @code{column} mode or one below the other in @code{row} mode.
19813
19814 Using this display mode makes it easy to spot color casts in the highlights
19815 and shadows of an image, by comparing the contours of the top and the bottom
19816 graphs of each waveform. Since whites, grays, and blacks are characterized
19817 by exactly equal amounts of red, green, and blue, neutral areas of the picture
19818 should display three waveforms of roughly equal width/height. If not, the
19819 correction is easy to perform by making level adjustments the three waveforms.
19820 @end table
19821 Default is @code{stack}.
19822
19823 @item components, c
19824 Set which color components to display. Default is 1, which means only luminance
19825 or red color component if input is in RGB colorspace. If is set for example to
19826 7 it will display all 3 (if) available color components.
19827
19828 @item envelope, e
19829 @table @samp
19830 @item none
19831 No envelope, this is default.
19832
19833 @item instant
19834 Instant envelope, minimum and maximum values presented in graph will be easily
19835 visible even with small @code{step} value.
19836
19837 @item peak
19838 Hold minimum and maximum values presented in graph across time. This way you
19839 can still spot out of range values without constantly looking at waveforms.
19840
19841 @item peak+instant
19842 Peak and instant envelope combined together.
19843 @end table
19844
19845 @item filter, f
19846 @table @samp
19847 @item lowpass
19848 No filtering, this is default.
19849
19850 @item flat
19851 Luma and chroma combined together.
19852
19853 @item aflat
19854 Similar as above, but shows difference between blue and red chroma.
19855
19856 @item xflat
19857 Similar as above, but use different colors.
19858
19859 @item yflat
19860 Similar as above, but again with different colors.
19861
19862 @item chroma
19863 Displays only chroma.
19864
19865 @item color
19866 Displays actual color value on waveform.
19867
19868 @item acolor
19869 Similar as above, but with luma showing frequency of chroma values.
19870 @end table
19871
19872 @item graticule, g
19873 Set which graticule to display.
19874
19875 @table @samp
19876 @item none
19877 Do not display graticule.
19878
19879 @item green
19880 Display green graticule showing legal broadcast ranges.
19881
19882 @item orange
19883 Display orange graticule showing legal broadcast ranges.
19884
19885 @item invert
19886 Display invert graticule showing legal broadcast ranges.
19887 @end table
19888
19889 @item opacity, o
19890 Set graticule opacity.
19891
19892 @item flags, fl
19893 Set graticule flags.
19894
19895 @table @samp
19896 @item numbers
19897 Draw numbers above lines. By default enabled.
19898
19899 @item dots
19900 Draw dots instead of lines.
19901 @end table
19902
19903 @item scale, s
19904 Set scale used for displaying graticule.
19905
19906 @table @samp
19907 @item digital
19908 @item millivolts
19909 @item ire
19910 @end table
19911 Default is digital.
19912
19913 @item bgopacity, b
19914 Set background opacity.
19915
19916 @item tint0, t0
19917 @item tint1, t1
19918 Set tint for output.
19919 Only used with lowpass filter and when display is not overlay and input
19920 pixel formats are not RGB.
19921 @end table
19922
19923 @section weave, doubleweave
19924
19925 The @code{weave} takes a field-based video input and join
19926 each two sequential fields into single frame, producing a new double
19927 height clip with half the frame rate and half the frame count.
19928
19929 The @code{doubleweave} works same as @code{weave} but without
19930 halving frame rate and frame count.
19931
19932 It accepts the following option:
19933
19934 @table @option
19935 @item first_field
19936 Set first field. Available values are:
19937
19938 @table @samp
19939 @item top, t
19940 Set the frame as top-field-first.
19941
19942 @item bottom, b
19943 Set the frame as bottom-field-first.
19944 @end table
19945 @end table
19946
19947 @subsection Examples
19948
19949 @itemize
19950 @item
19951 Interlace video using @ref{select} and @ref{separatefields} filter:
19952 @example
19953 separatefields,select=eq(mod(n,4),0)+eq(mod(n,4),3),weave
19954 @end example
19955 @end itemize
19956
19957 @section xbr
19958 Apply the xBR high-quality magnification filter which is designed for pixel
19959 art. It follows a set of edge-detection rules, see
19960 @url{https://forums.libretro.com/t/xbr-algorithm-tutorial/123}.
19961
19962 It accepts the following option:
19963
19964 @table @option
19965 @item n
19966 Set the scaling dimension: @code{2} for @code{2xBR}, @code{3} for
19967 @code{3xBR} and @code{4} for @code{4xBR}.
19968 Default is @code{3}.
19969 @end table
19970
19971 @section xfade
19972
19973 Apply cross fade from one input video stream to another input video stream.
19974 The cross fade is applied for specified duration.
19975
19976 The filter accepts the following options:
19977
19978 @table @option
19979 @item transition
19980 Set one of available transition effects:
19981
19982 @table @samp
19983 @item custom
19984 @item fade
19985 @item wipeleft
19986 @item wiperight
19987 @item wipeup
19988 @item wipedown
19989 @item slideleft
19990 @item slideright
19991 @item slideup
19992 @item slidedown
19993 @item circlecrop
19994 @item rectcrop
19995 @item distance
19996 @item fadeblack
19997 @item fadewhite
19998 @item radial
19999 @item smoothleft
20000 @item smoothright
20001 @item smoothup
20002 @item smoothdown
20003 @item circleopen
20004 @item circleclose
20005 @item vertopen
20006 @item vertclose
20007 @item horzopen
20008 @item horzclose
20009 @item dissolve
20010 @item pixelize
20011 @item diagtl
20012 @item diagtr
20013 @item diagbl
20014 @item diagbr
20015 @end table
20016 Default transition effect is fade.
20017
20018 @item duration
20019 Set cross fade duration in seconds.
20020 Default duration is 1 second.
20021
20022 @item offset
20023 Set cross fade start relative to first input stream in seconds.
20024 Default offset is 0.
20025
20026 @item expr
20027 Set expression for custom transition effect.
20028
20029 The expressions can use the following variables and functions:
20030
20031 @table @option
20032 @item X
20033 @item Y
20034 The coordinates of the current sample.
20035
20036 @item W
20037 @item H
20038 The width and height of the image.
20039
20040 @item P
20041 Progress of transition effect.
20042
20043 @item PLANE
20044 Currently processed plane.
20045
20046 @item A
20047 Return value of first input at current location and plane.
20048
20049 @item B
20050 Return value of second input at current location and plane.
20051
20052 @item a0(x, y)
20053 @item a1(x, y)
20054 @item a2(x, y)
20055 @item a3(x, y)
20056 Return the value of the pixel at location (@var{x},@var{y}) of the
20057 first/second/third/fourth component of first input.
20058
20059 @item b0(x, y)
20060 @item b1(x, y)
20061 @item b2(x, y)
20062 @item b3(x, y)
20063 Return the value of the pixel at location (@var{x},@var{y}) of the
20064 first/second/third/fourth component of second input.
20065 @end table
20066 @end table
20067
20068 @subsection Examples
20069
20070 @itemize
20071 @item
20072 Cross fade from one input video to another input video, with fade transition and duration of transition
20073 of 2 seconds starting at offset of 5 seconds:
20074 @example
20075 ffmpeg -i first.mp4 -i second.mp4 -filter_complex xfade=transition=fade:duration=2:offset=5 output.mp4
20076 @end example
20077 @end itemize
20078
20079 @section xmedian
20080 Pick median pixels from several input videos.
20081
20082 The filter accepts the following options:
20083
20084 @table @option
20085 @item inputs
20086 Set number of inputs.
20087 Default is 3. Allowed range is from 3 to 255.
20088 If number of inputs is even number, than result will be mean value between two median values.
20089
20090 @item planes
20091 Set which planes to filter. Default value is @code{15}, by which all planes are processed.
20092 @end table
20093
20094 @section xstack
20095 Stack video inputs into custom layout.
20096
20097 All streams must be of same pixel format.
20098
20099 The filter accepts the following options:
20100
20101 @table @option
20102 @item inputs
20103 Set number of input streams. Default is 2.
20104
20105 @item layout
20106 Specify layout of inputs.
20107 This option requires the desired layout configuration to be explicitly set by the user.
20108 This sets position of each video input in output. Each input
20109 is separated by '|'.
20110 The first number represents the column, and the second number represents the row.
20111 Numbers start at 0 and are separated by '_'. Optionally one can use wX and hX,
20112 where X is video input from which to take width or height.
20113 Multiple values can be used when separated by '+'. In such
20114 case values are summed together.
20115
20116 Note that if inputs are of different sizes gaps may appear, as not all of
20117 the output video frame will be filled. Similarly, videos can overlap each
20118 other if their position doesn't leave enough space for the full frame of
20119 adjoining videos.
20120
20121 For 2 inputs, a default layout of @code{0_0|w0_0} is set. In all other cases,
20122 a layout must be set by the user.
20123
20124 @item shortest
20125 If set to 1, force the output to terminate when the shortest input
20126 terminates. Default value is 0.
20127
20128 @item fill
20129 If set to valid color, all unused pixels will be filled with that color.
20130 By default fill is set to none, so it is disabled.
20131 @end table
20132
20133 @subsection Examples
20134
20135 @itemize
20136 @item
20137 Display 4 inputs into 2x2 grid.
20138
20139 Layout:
20140 @example
20141 input1(0, 0)  | input3(w0, 0)
20142 input2(0, h0) | input4(w0, h0)
20143 @end example
20144
20145 @example
20146 xstack=inputs=4:layout=0_0|0_h0|w0_0|w0_h0
20147 @end example
20148
20149 Note that if inputs are of different sizes, gaps or overlaps may occur.
20150
20151 @item
20152 Display 4 inputs into 1x4 grid.
20153
20154 Layout:
20155 @example
20156 input1(0, 0)
20157 input2(0, h0)
20158 input3(0, h0+h1)
20159 input4(0, h0+h1+h2)
20160 @end example
20161
20162 @example
20163 xstack=inputs=4:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2
20164 @end example
20165
20166 Note that if inputs are of different widths, unused space will appear.
20167
20168 @item
20169 Display 9 inputs into 3x3 grid.
20170
20171 Layout:
20172 @example
20173 input1(0, 0)       | input4(w0, 0)      | input7(w0+w3, 0)
20174 input2(0, h0)      | input5(w0, h0)     | input8(w0+w3, h0)
20175 input3(0, h0+h1)   | input6(w0, h0+h1)  | input9(w0+w3, h0+h1)
20176 @end example
20177
20178 @example
20179 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
20180 @end example
20181
20182 Note that if inputs are of different sizes, gaps or overlaps may occur.
20183
20184 @item
20185 Display 16 inputs into 4x4 grid.
20186
20187 Layout:
20188 @example
20189 input1(0, 0)       | input5(w0, 0)       | input9 (w0+w4, 0)       | input13(w0+w4+w8, 0)
20190 input2(0, h0)      | input6(w0, h0)      | input10(w0+w4, h0)      | input14(w0+w4+w8, h0)
20191 input3(0, h0+h1)   | input7(w0, h0+h1)   | input11(w0+w4, h0+h1)   | input15(w0+w4+w8, h0+h1)
20192 input4(0, h0+h1+h2)| input8(w0, h0+h1+h2)| input12(w0+w4, h0+h1+h2)| input16(w0+w4+w8, h0+h1+h2)
20193 @end example
20194
20195 @example
20196 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|
20197 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
20198 @end example
20199
20200 Note that if inputs are of different sizes, gaps or overlaps may occur.
20201
20202 @end itemize
20203
20204 @anchor{yadif}
20205 @section yadif
20206
20207 Deinterlace the input video ("yadif" means "yet another deinterlacing
20208 filter").
20209
20210 It accepts the following parameters:
20211
20212
20213 @table @option
20214
20215 @item mode
20216 The interlacing mode to adopt. It accepts one of the following values:
20217
20218 @table @option
20219 @item 0, send_frame
20220 Output one frame for each frame.
20221 @item 1, send_field
20222 Output one frame for each field.
20223 @item 2, send_frame_nospatial
20224 Like @code{send_frame}, but it skips the spatial interlacing check.
20225 @item 3, send_field_nospatial
20226 Like @code{send_field}, but it skips the spatial interlacing check.
20227 @end table
20228
20229 The default value is @code{send_frame}.
20230
20231 @item parity
20232 The picture field parity assumed for the input interlaced video. It accepts one
20233 of the following values:
20234
20235 @table @option
20236 @item 0, tff
20237 Assume the top field is first.
20238 @item 1, bff
20239 Assume the bottom field is first.
20240 @item -1, auto
20241 Enable automatic detection of field parity.
20242 @end table
20243
20244 The default value is @code{auto}.
20245 If the interlacing is unknown or the decoder does not export this information,
20246 top field first will be assumed.
20247
20248 @item deint
20249 Specify which frames to deinterlace. Accepts one of the following
20250 values:
20251
20252 @table @option
20253 @item 0, all
20254 Deinterlace all frames.
20255 @item 1, interlaced
20256 Only deinterlace frames marked as interlaced.
20257 @end table
20258
20259 The default value is @code{all}.
20260 @end table
20261
20262 @section yadif_cuda
20263
20264 Deinterlace the input video using the @ref{yadif} algorithm, but implemented
20265 in CUDA so that it can work as part of a GPU accelerated pipeline with nvdec
20266 and/or nvenc.
20267
20268 It accepts the following parameters:
20269
20270
20271 @table @option
20272
20273 @item mode
20274 The interlacing mode to adopt. It accepts one of the following values:
20275
20276 @table @option
20277 @item 0, send_frame
20278 Output one frame for each frame.
20279 @item 1, send_field
20280 Output one frame for each field.
20281 @item 2, send_frame_nospatial
20282 Like @code{send_frame}, but it skips the spatial interlacing check.
20283 @item 3, send_field_nospatial
20284 Like @code{send_field}, but it skips the spatial interlacing check.
20285 @end table
20286
20287 The default value is @code{send_frame}.
20288
20289 @item parity
20290 The picture field parity assumed for the input interlaced video. It accepts one
20291 of the following values:
20292
20293 @table @option
20294 @item 0, tff
20295 Assume the top field is first.
20296 @item 1, bff
20297 Assume the bottom field is first.
20298 @item -1, auto
20299 Enable automatic detection of field parity.
20300 @end table
20301
20302 The default value is @code{auto}.
20303 If the interlacing is unknown or the decoder does not export this information,
20304 top field first will be assumed.
20305
20306 @item deint
20307 Specify which frames to deinterlace. Accepts one of the following
20308 values:
20309
20310 @table @option
20311 @item 0, all
20312 Deinterlace all frames.
20313 @item 1, interlaced
20314 Only deinterlace frames marked as interlaced.
20315 @end table
20316
20317 The default value is @code{all}.
20318 @end table
20319
20320 @section yaepblur
20321
20322 Apply blur filter while preserving edges ("yaepblur" means "yet another edge preserving blur filter").
20323 The algorithm is described in
20324 "J. S. Lee, Digital image enhancement and noise filtering by use of local statistics, IEEE Trans. Pattern Anal. Mach. Intell. PAMI-2, 1980."
20325
20326 It accepts the following parameters:
20327
20328 @table @option
20329 @item radius, r
20330 Set the window radius. Default value is 3.
20331
20332 @item planes, p
20333 Set which planes to filter. Default is only the first plane.
20334
20335 @item sigma, s
20336 Set blur strength. Default value is 128.
20337 @end table
20338
20339 @subsection Commands
20340 This filter supports same @ref{commands} as options.
20341
20342 @section zoompan
20343
20344 Apply Zoom & Pan effect.
20345
20346 This filter accepts the following options:
20347
20348 @table @option
20349 @item zoom, z
20350 Set the zoom expression. Range is 1-10. Default is 1.
20351
20352 @item x
20353 @item y
20354 Set the x and y expression. Default is 0.
20355
20356 @item d
20357 Set the duration expression in number of frames.
20358 This sets for how many number of frames effect will last for
20359 single input image.
20360
20361 @item s
20362 Set the output image size, default is 'hd720'.
20363
20364 @item fps
20365 Set the output frame rate, default is '25'.
20366 @end table
20367
20368 Each expression can contain the following constants:
20369
20370 @table @option
20371 @item in_w, iw
20372 Input width.
20373
20374 @item in_h, ih
20375 Input height.
20376
20377 @item out_w, ow
20378 Output width.
20379
20380 @item out_h, oh
20381 Output height.
20382
20383 @item in
20384 Input frame count.
20385
20386 @item on
20387 Output frame count.
20388
20389 @item x
20390 @item y
20391 Last calculated 'x' and 'y' position from 'x' and 'y' expression
20392 for current input frame.
20393
20394 @item px
20395 @item py
20396 'x' and 'y' of last output frame of previous input frame or 0 when there was
20397 not yet such frame (first input frame).
20398
20399 @item zoom
20400 Last calculated zoom from 'z' expression for current input frame.
20401
20402 @item pzoom
20403 Last calculated zoom of last output frame of previous input frame.
20404
20405 @item duration
20406 Number of output frames for current input frame. Calculated from 'd' expression
20407 for each input frame.
20408
20409 @item pduration
20410 number of output frames created for previous input frame
20411
20412 @item a
20413 Rational number: input width / input height
20414
20415 @item sar
20416 sample aspect ratio
20417
20418 @item dar
20419 display aspect ratio
20420
20421 @end table
20422
20423 @subsection Examples
20424
20425 @itemize
20426 @item
20427 Zoom-in up to 1.5 and pan at same time to some spot near center of picture:
20428 @example
20429 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
20430 @end example
20431
20432 @item
20433 Zoom-in up to 1.5 and pan always at center of picture:
20434 @example
20435 zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
20436 @end example
20437
20438 @item
20439 Same as above but without pausing:
20440 @example
20441 zoompan=z='min(max(zoom,pzoom)+0.0015,1.5)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
20442 @end example
20443 @end itemize
20444
20445 @anchor{zscale}
20446 @section zscale
20447 Scale (resize) the input video, using the z.lib library:
20448 @url{https://github.com/sekrit-twc/zimg}. To enable compilation of this
20449 filter, you need to configure FFmpeg with @code{--enable-libzimg}.
20450
20451 The zscale filter forces the output display aspect ratio to be the same
20452 as the input, by changing the output sample aspect ratio.
20453
20454 If the input image format is different from the format requested by
20455 the next filter, the zscale filter will convert the input to the
20456 requested format.
20457
20458 @subsection Options
20459 The filter accepts the following options.
20460
20461 @table @option
20462 @item width, w
20463 @item height, h
20464 Set the output video dimension expression. Default value is the input
20465 dimension.
20466
20467 If the @var{width} or @var{w} value is 0, the input width is used for
20468 the output. If the @var{height} or @var{h} value is 0, the input height
20469 is used for the output.
20470
20471 If one and only one of the values is -n with n >= 1, the zscale filter
20472 will use a value that maintains the aspect ratio of the input image,
20473 calculated from the other specified dimension. After that it will,
20474 however, make sure that the calculated dimension is divisible by n and
20475 adjust the value if necessary.
20476
20477 If both values are -n with n >= 1, the behavior will be identical to
20478 both values being set to 0 as previously detailed.
20479
20480 See below for the list of accepted constants for use in the dimension
20481 expression.
20482
20483 @item size, s
20484 Set the video size. For the syntax of this option, check the
20485 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20486
20487 @item dither, d
20488 Set the dither type.
20489
20490 Possible values are:
20491 @table @var
20492 @item none
20493 @item ordered
20494 @item random
20495 @item error_diffusion
20496 @end table
20497
20498 Default is none.
20499
20500 @item filter, f
20501 Set the resize filter type.
20502
20503 Possible values are:
20504 @table @var
20505 @item point
20506 @item bilinear
20507 @item bicubic
20508 @item spline16
20509 @item spline36
20510 @item lanczos
20511 @end table
20512
20513 Default is bilinear.
20514
20515 @item range, r
20516 Set the color range.
20517
20518 Possible values are:
20519 @table @var
20520 @item input
20521 @item limited
20522 @item full
20523 @end table
20524
20525 Default is same as input.
20526
20527 @item primaries, p
20528 Set the color primaries.
20529
20530 Possible values are:
20531 @table @var
20532 @item input
20533 @item 709
20534 @item unspecified
20535 @item 170m
20536 @item 240m
20537 @item 2020
20538 @end table
20539
20540 Default is same as input.
20541
20542 @item transfer, t
20543 Set the transfer characteristics.
20544
20545 Possible values are:
20546 @table @var
20547 @item input
20548 @item 709
20549 @item unspecified
20550 @item 601
20551 @item linear
20552 @item 2020_10
20553 @item 2020_12
20554 @item smpte2084
20555 @item iec61966-2-1
20556 @item arib-std-b67
20557 @end table
20558
20559 Default is same as input.
20560
20561 @item matrix, m
20562 Set the colorspace matrix.
20563
20564 Possible value are:
20565 @table @var
20566 @item input
20567 @item 709
20568 @item unspecified
20569 @item 470bg
20570 @item 170m
20571 @item 2020_ncl
20572 @item 2020_cl
20573 @end table
20574
20575 Default is same as input.
20576
20577 @item rangein, rin
20578 Set the input color range.
20579
20580 Possible values are:
20581 @table @var
20582 @item input
20583 @item limited
20584 @item full
20585 @end table
20586
20587 Default is same as input.
20588
20589 @item primariesin, pin
20590 Set the input color primaries.
20591
20592 Possible values are:
20593 @table @var
20594 @item input
20595 @item 709
20596 @item unspecified
20597 @item 170m
20598 @item 240m
20599 @item 2020
20600 @end table
20601
20602 Default is same as input.
20603
20604 @item transferin, tin
20605 Set the input transfer characteristics.
20606
20607 Possible values are:
20608 @table @var
20609 @item input
20610 @item 709
20611 @item unspecified
20612 @item 601
20613 @item linear
20614 @item 2020_10
20615 @item 2020_12
20616 @end table
20617
20618 Default is same as input.
20619
20620 @item matrixin, min
20621 Set the input colorspace matrix.
20622
20623 Possible value are:
20624 @table @var
20625 @item input
20626 @item 709
20627 @item unspecified
20628 @item 470bg
20629 @item 170m
20630 @item 2020_ncl
20631 @item 2020_cl
20632 @end table
20633
20634 @item chromal, c
20635 Set the output chroma location.
20636
20637 Possible values are:
20638 @table @var
20639 @item input
20640 @item left
20641 @item center
20642 @item topleft
20643 @item top
20644 @item bottomleft
20645 @item bottom
20646 @end table
20647
20648 @item chromalin, cin
20649 Set the input chroma location.
20650
20651 Possible values are:
20652 @table @var
20653 @item input
20654 @item left
20655 @item center
20656 @item topleft
20657 @item top
20658 @item bottomleft
20659 @item bottom
20660 @end table
20661
20662 @item npl
20663 Set the nominal peak luminance.
20664 @end table
20665
20666 The values of the @option{w} and @option{h} options are expressions
20667 containing the following constants:
20668
20669 @table @var
20670 @item in_w
20671 @item in_h
20672 The input width and height
20673
20674 @item iw
20675 @item ih
20676 These are the same as @var{in_w} and @var{in_h}.
20677
20678 @item out_w
20679 @item out_h
20680 The output (scaled) width and height
20681
20682 @item ow
20683 @item oh
20684 These are the same as @var{out_w} and @var{out_h}
20685
20686 @item a
20687 The same as @var{iw} / @var{ih}
20688
20689 @item sar
20690 input sample aspect ratio
20691
20692 @item dar
20693 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
20694
20695 @item hsub
20696 @item vsub
20697 horizontal and vertical input chroma subsample values. For example for the
20698 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
20699
20700 @item ohsub
20701 @item ovsub
20702 horizontal and vertical output chroma subsample values. For example for the
20703 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
20704 @end table
20705
20706 @subsection Commands
20707
20708 This filter supports the following commands:
20709 @table @option
20710 @item width, w
20711 @item height, h
20712 Set the output video dimension expression.
20713 The command accepts the same syntax of the corresponding option.
20714
20715 If the specified expression is not valid, it is kept at its current
20716 value.
20717 @end table
20718
20719 @c man end VIDEO FILTERS
20720
20721 @chapter OpenCL Video Filters
20722 @c man begin OPENCL VIDEO FILTERS
20723
20724 Below is a description of the currently available OpenCL video filters.
20725
20726 To enable compilation of these filters you need to configure FFmpeg with
20727 @code{--enable-opencl}.
20728
20729 Running OpenCL filters requires you to initialize a hardware device and to pass that device to all filters in any filter graph.
20730 @table @option
20731
20732 @item -init_hw_device opencl[=@var{name}][:@var{device}[,@var{key=value}...]]
20733 Initialise a new hardware device of type @var{opencl} called @var{name}, using the
20734 given device parameters.
20735
20736 @item -filter_hw_device @var{name}
20737 Pass the hardware device called @var{name} to all filters in any filter graph.
20738
20739 @end table
20740
20741 For more detailed information see @url{https://www.ffmpeg.org/ffmpeg.html#Advanced-Video-options}
20742
20743 @itemize
20744 @item
20745 Example of choosing the first device on the second platform and running avgblur_opencl filter with default parameters on it.
20746 @example
20747 -init_hw_device opencl=gpu:1.0 -filter_hw_device gpu -i INPUT -vf "hwupload, avgblur_opencl, hwdownload" OUTPUT
20748 @end example
20749 @end itemize
20750
20751 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.
20752
20753 @section avgblur_opencl
20754
20755 Apply average blur filter.
20756
20757 The filter accepts the following options:
20758
20759 @table @option
20760 @item sizeX
20761 Set horizontal radius size.
20762 Range is @code{[1, 1024]} and default value is @code{1}.
20763
20764 @item planes
20765 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
20766
20767 @item sizeY
20768 Set vertical radius size. Range is @code{[1, 1024]} and default value is @code{0}. If zero, @code{sizeX} value will be used.
20769 @end table
20770
20771 @subsection Example
20772
20773 @itemize
20774 @item
20775 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.
20776 @example
20777 -i INPUT -vf "hwupload, avgblur_opencl=3, hwdownload" OUTPUT
20778 @end example
20779 @end itemize
20780
20781 @section boxblur_opencl
20782
20783 Apply a boxblur algorithm to the input video.
20784
20785 It accepts the following parameters:
20786
20787 @table @option
20788
20789 @item luma_radius, lr
20790 @item luma_power, lp
20791 @item chroma_radius, cr
20792 @item chroma_power, cp
20793 @item alpha_radius, ar
20794 @item alpha_power, ap
20795
20796 @end table
20797
20798 A description of the accepted options follows.
20799
20800 @table @option
20801 @item luma_radius, lr
20802 @item chroma_radius, cr
20803 @item alpha_radius, ar
20804 Set an expression for the box radius in pixels used for blurring the
20805 corresponding input plane.
20806
20807 The radius value must be a non-negative number, and must not be
20808 greater than the value of the expression @code{min(w,h)/2} for the
20809 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
20810 planes.
20811
20812 Default value for @option{luma_radius} is "2". If not specified,
20813 @option{chroma_radius} and @option{alpha_radius} default to the
20814 corresponding value set for @option{luma_radius}.
20815
20816 The expressions can contain the following constants:
20817 @table @option
20818 @item w
20819 @item h
20820 The input width and height in pixels.
20821
20822 @item cw
20823 @item ch
20824 The input chroma image width and height in pixels.
20825
20826 @item hsub
20827 @item vsub
20828 The horizontal and vertical chroma subsample values. For example, for the
20829 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
20830 @end table
20831
20832 @item luma_power, lp
20833 @item chroma_power, cp
20834 @item alpha_power, ap
20835 Specify how many times the boxblur filter is applied to the
20836 corresponding plane.
20837
20838 Default value for @option{luma_power} is 2. If not specified,
20839 @option{chroma_power} and @option{alpha_power} default to the
20840 corresponding value set for @option{luma_power}.
20841
20842 A value of 0 will disable the effect.
20843 @end table
20844
20845 @subsection Examples
20846
20847 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.
20848
20849 @itemize
20850 @item
20851 Apply a boxblur filter with the luma, chroma, and alpha radius
20852 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.
20853 @example
20854 -i INPUT -vf "hwupload, boxblur_opencl=luma_radius=2:luma_power=3, hwdownload" OUTPUT
20855 -i INPUT -vf "hwupload, boxblur_opencl=2:3, hwdownload" OUTPUT
20856 @end example
20857
20858 @item
20859 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.
20860
20861 For the luma plane, a 2x2 box radius will be run once.
20862
20863 For the chroma plane, a 4x4 box radius will be run 5 times.
20864
20865 For the alpha plane, a 3x3 box radius will be run 7 times.
20866 @example
20867 -i INPUT -vf "hwupload, boxblur_opencl=2:1:4:5:3:7, hwdownload" OUTPUT
20868 @end example
20869 @end itemize
20870
20871 @section colorkey_opencl
20872 RGB colorspace color keying.
20873
20874 The filter accepts the following options:
20875
20876 @table @option
20877 @item color
20878 The color which will be replaced with transparency.
20879
20880 @item similarity
20881 Similarity percentage with the key color.
20882
20883 0.01 matches only the exact key color, while 1.0 matches everything.
20884
20885 @item blend
20886 Blend percentage.
20887
20888 0.0 makes pixels either fully transparent, or not transparent at all.
20889
20890 Higher values result in semi-transparent pixels, with a higher transparency
20891 the more similar the pixels color is to the key color.
20892 @end table
20893
20894 @subsection Examples
20895
20896 @itemize
20897 @item
20898 Make every semi-green pixel in the input transparent with some slight blending:
20899 @example
20900 -i INPUT -vf "hwupload, colorkey_opencl=green:0.3:0.1, hwdownload" OUTPUT
20901 @end example
20902 @end itemize
20903
20904 @section convolution_opencl
20905
20906 Apply convolution of 3x3, 5x5, 7x7 matrix.
20907
20908 The filter accepts the following options:
20909
20910 @table @option
20911 @item 0m
20912 @item 1m
20913 @item 2m
20914 @item 3m
20915 Set matrix for each plane.
20916 Matrix is sequence of 9, 25 or 49 signed numbers.
20917 Default value for each plane is @code{0 0 0 0 1 0 0 0 0}.
20918
20919 @item 0rdiv
20920 @item 1rdiv
20921 @item 2rdiv
20922 @item 3rdiv
20923 Set multiplier for calculated value for each plane.
20924 If unset or 0, it will be sum of all matrix elements.
20925 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{1.0}.
20926
20927 @item 0bias
20928 @item 1bias
20929 @item 2bias
20930 @item 3bias
20931 Set bias for each plane. This value is added to the result of the multiplication.
20932 Useful for making the overall image brighter or darker.
20933 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{0.0}.
20934
20935 @end table
20936
20937 @subsection Examples
20938
20939 @itemize
20940 @item
20941 Apply sharpen:
20942 @example
20943 -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
20944 @end example
20945
20946 @item
20947 Apply blur:
20948 @example
20949 -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
20950 @end example
20951
20952 @item
20953 Apply edge enhance:
20954 @example
20955 -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
20956 @end example
20957
20958 @item
20959 Apply edge detect:
20960 @example
20961 -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
20962 @end example
20963
20964 @item
20965 Apply laplacian edge detector which includes diagonals:
20966 @example
20967 -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
20968 @end example
20969
20970 @item
20971 Apply emboss:
20972 @example
20973 -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
20974 @end example
20975 @end itemize
20976
20977 @section erosion_opencl
20978
20979 Apply erosion effect to the video.
20980
20981 This filter replaces the pixel by the local(3x3) minimum.
20982
20983 It accepts the following options:
20984
20985 @table @option
20986 @item threshold0
20987 @item threshold1
20988 @item threshold2
20989 @item threshold3
20990 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
20991 If @code{0}, plane will remain unchanged.
20992
20993 @item coordinates
20994 Flag which specifies the pixel to refer to.
20995 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
20996
20997 Flags to local 3x3 coordinates region centered on @code{x}:
20998
20999     1 2 3
21000
21001     4 x 5
21002
21003     6 7 8
21004 @end table
21005
21006 @subsection Example
21007
21008 @itemize
21009 @item
21010 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.
21011 @example
21012 -i INPUT -vf "hwupload, erosion_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
21013 @end example
21014 @end itemize
21015
21016 @section deshake_opencl
21017 Feature-point based video stabilization filter.
21018
21019 The filter accepts the following options:
21020
21021 @table @option
21022 @item tripod
21023 Simulates a tripod by preventing any camera movement whatsoever from the original frame. Defaults to @code{0}.
21024
21025 @item debug
21026 Whether or not additional debug info should be displayed, both in the processed output and in the console.
21027
21028 Note that in order to see console debug output you will also need to pass @code{-v verbose} to ffmpeg.
21029
21030 Viewing point matches in the output video is only supported for RGB input.
21031
21032 Defaults to @code{0}.
21033
21034 @item adaptive_crop
21035 Whether or not to do a tiny bit of cropping at the borders to cut down on the amount of mirrored pixels.
21036
21037 Defaults to @code{1}.
21038
21039 @item refine_features
21040 Whether or not feature points should be refined at a sub-pixel level.
21041
21042 This can be turned off for a slight performance gain at the cost of precision.
21043
21044 Defaults to @code{1}.
21045
21046 @item smooth_strength
21047 The strength of the smoothing applied to the camera path from @code{0.0} to @code{1.0}.
21048
21049 @code{1.0} is the maximum smoothing strength while values less than that result in less smoothing.
21050
21051 @code{0.0} causes the filter to adaptively choose a smoothing strength on a per-frame basis.
21052
21053 Defaults to @code{0.0}.
21054
21055 @item smooth_window_multiplier
21056 Controls the size of the smoothing window (the number of frames buffered to determine motion information from).
21057
21058 The size of the smoothing window is determined by multiplying the framerate of the video by this number.
21059
21060 Acceptable values range from @code{0.1} to @code{10.0}.
21061
21062 Larger values increase the amount of motion data available for determining how to smooth the camera path,
21063 potentially improving smoothness, but also increase latency and memory usage.
21064
21065 Defaults to @code{2.0}.
21066
21067 @end table
21068
21069 @subsection Examples
21070
21071 @itemize
21072 @item
21073 Stabilize a video with a fixed, medium smoothing strength:
21074 @example
21075 -i INPUT -vf "hwupload, deshake_opencl=smooth_strength=0.5, hwdownload" OUTPUT
21076 @end example
21077
21078 @item
21079 Stabilize a video with debugging (both in console and in rendered video):
21080 @example
21081 -i INPUT -filter_complex "[0:v]format=rgba, hwupload, deshake_opencl=debug=1, hwdownload, format=rgba, format=yuv420p" -v verbose OUTPUT
21082 @end example
21083 @end itemize
21084
21085 @section dilation_opencl
21086
21087 Apply dilation effect to the video.
21088
21089 This filter replaces the pixel by the local(3x3) maximum.
21090
21091 It accepts the following options:
21092
21093 @table @option
21094 @item threshold0
21095 @item threshold1
21096 @item threshold2
21097 @item threshold3
21098 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
21099 If @code{0}, plane will remain unchanged.
21100
21101 @item coordinates
21102 Flag which specifies the pixel to refer to.
21103 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
21104
21105 Flags to local 3x3 coordinates region centered on @code{x}:
21106
21107     1 2 3
21108
21109     4 x 5
21110
21111     6 7 8
21112 @end table
21113
21114 @subsection Example
21115
21116 @itemize
21117 @item
21118 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.
21119 @example
21120 -i INPUT -vf "hwupload, dilation_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
21121 @end example
21122 @end itemize
21123
21124 @section nlmeans_opencl
21125
21126 Non-local Means denoise filter through OpenCL, this filter accepts same options as @ref{nlmeans}.
21127
21128 @section overlay_opencl
21129
21130 Overlay one video on top of another.
21131
21132 It takes two inputs and has one output. The first input is the "main" video on which the second input is overlaid.
21133 This filter requires same memory layout for all the inputs. So, format conversion may be needed.
21134
21135 The filter accepts the following options:
21136
21137 @table @option
21138
21139 @item x
21140 Set the x coordinate of the overlaid video on the main video.
21141 Default value is @code{0}.
21142
21143 @item y
21144 Set the y coordinate of the overlaid video on the main video.
21145 Default value is @code{0}.
21146
21147 @end table
21148
21149 @subsection Examples
21150
21151 @itemize
21152 @item
21153 Overlay an image LOGO at the top-left corner of the INPUT video. Both inputs are yuv420p format.
21154 @example
21155 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuv420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
21156 @end example
21157 @item
21158 The inputs have same memory layout for color channels , the overlay has additional alpha plane, like INPUT is yuv420p, and the LOGO is yuva420p.
21159 @example
21160 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuva420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
21161 @end example
21162
21163 @end itemize
21164
21165 @section prewitt_opencl
21166
21167 Apply the Prewitt operator (@url{https://en.wikipedia.org/wiki/Prewitt_operator}) to input video stream.
21168
21169 The filter accepts the following option:
21170
21171 @table @option
21172 @item planes
21173 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
21174
21175 @item scale
21176 Set value which will be multiplied with filtered result.
21177 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
21178
21179 @item delta
21180 Set value which will be added to filtered result.
21181 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
21182 @end table
21183
21184 @subsection Example
21185
21186 @itemize
21187 @item
21188 Apply the Prewitt operator with scale set to 2 and delta set to 10.
21189 @example
21190 -i INPUT -vf "hwupload, prewitt_opencl=scale=2:delta=10, hwdownload" OUTPUT
21191 @end example
21192 @end itemize
21193
21194 @anchor{program_opencl}
21195 @section program_opencl
21196
21197 Filter video using an OpenCL program.
21198
21199 @table @option
21200
21201 @item source
21202 OpenCL program source file.
21203
21204 @item kernel
21205 Kernel name in program.
21206
21207 @item inputs
21208 Number of inputs to the filter.  Defaults to 1.
21209
21210 @item size, s
21211 Size of output frames.  Defaults to the same as the first input.
21212
21213 @end table
21214
21215 The program source file must contain a kernel function with the given name,
21216 which will be run once for each plane of the output.  Each run on a plane
21217 gets enqueued as a separate 2D global NDRange with one work-item for each
21218 pixel to be generated.  The global ID offset for each work-item is therefore
21219 the coordinates of a pixel in the destination image.
21220
21221 The kernel function needs to take the following arguments:
21222 @itemize
21223 @item
21224 Destination image, @var{__write_only image2d_t}.
21225
21226 This image will become the output; the kernel should write all of it.
21227 @item
21228 Frame index, @var{unsigned int}.
21229
21230 This is a counter starting from zero and increasing by one for each frame.
21231 @item
21232 Source images, @var{__read_only image2d_t}.
21233
21234 These are the most recent images on each input.  The kernel may read from
21235 them to generate the output, but they can't be written to.
21236 @end itemize
21237
21238 Example programs:
21239
21240 @itemize
21241 @item
21242 Copy the input to the output (output must be the same size as the input).
21243 @verbatim
21244 __kernel void copy(__write_only image2d_t destination,
21245                    unsigned int index,
21246                    __read_only  image2d_t source)
21247 {
21248     const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE;
21249
21250     int2 location = (int2)(get_global_id(0), get_global_id(1));
21251
21252     float4 value = read_imagef(source, sampler, location);
21253
21254     write_imagef(destination, location, value);
21255 }
21256 @end verbatim
21257
21258 @item
21259 Apply a simple transformation, rotating the input by an amount increasing
21260 with the index counter.  Pixel values are linearly interpolated by the
21261 sampler, and the output need not have the same dimensions as the input.
21262 @verbatim
21263 __kernel void rotate_image(__write_only image2d_t dst,
21264                            unsigned int index,
21265                            __read_only  image2d_t src)
21266 {
21267     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
21268                                CLK_FILTER_LINEAR);
21269
21270     float angle = (float)index / 100.0f;
21271
21272     float2 dst_dim = convert_float2(get_image_dim(dst));
21273     float2 src_dim = convert_float2(get_image_dim(src));
21274
21275     float2 dst_cen = dst_dim / 2.0f;
21276     float2 src_cen = src_dim / 2.0f;
21277
21278     int2   dst_loc = (int2)(get_global_id(0), get_global_id(1));
21279
21280     float2 dst_pos = convert_float2(dst_loc) - dst_cen;
21281     float2 src_pos = {
21282         cos(angle) * dst_pos.x - sin(angle) * dst_pos.y,
21283         sin(angle) * dst_pos.x + cos(angle) * dst_pos.y
21284     };
21285     src_pos = src_pos * src_dim / dst_dim;
21286
21287     float2 src_loc = src_pos + src_cen;
21288
21289     if (src_loc.x < 0.0f      || src_loc.y < 0.0f ||
21290         src_loc.x > src_dim.x || src_loc.y > src_dim.y)
21291         write_imagef(dst, dst_loc, 0.5f);
21292     else
21293         write_imagef(dst, dst_loc, read_imagef(src, sampler, src_loc));
21294 }
21295 @end verbatim
21296
21297 @item
21298 Blend two inputs together, with the amount of each input used varying
21299 with the index counter.
21300 @verbatim
21301 __kernel void blend_images(__write_only image2d_t dst,
21302                            unsigned int index,
21303                            __read_only  image2d_t src1,
21304                            __read_only  image2d_t src2)
21305 {
21306     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
21307                                CLK_FILTER_LINEAR);
21308
21309     float blend = (cos((float)index / 50.0f) + 1.0f) / 2.0f;
21310
21311     int2  dst_loc = (int2)(get_global_id(0), get_global_id(1));
21312     int2 src1_loc = dst_loc * get_image_dim(src1) / get_image_dim(dst);
21313     int2 src2_loc = dst_loc * get_image_dim(src2) / get_image_dim(dst);
21314
21315     float4 val1 = read_imagef(src1, sampler, src1_loc);
21316     float4 val2 = read_imagef(src2, sampler, src2_loc);
21317
21318     write_imagef(dst, dst_loc, val1 * blend + val2 * (1.0f - blend));
21319 }
21320 @end verbatim
21321
21322 @end itemize
21323
21324 @section roberts_opencl
21325 Apply the Roberts cross operator (@url{https://en.wikipedia.org/wiki/Roberts_cross}) to input video stream.
21326
21327 The filter accepts the following option:
21328
21329 @table @option
21330 @item planes
21331 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
21332
21333 @item scale
21334 Set value which will be multiplied with filtered result.
21335 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
21336
21337 @item delta
21338 Set value which will be added to filtered result.
21339 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
21340 @end table
21341
21342 @subsection Example
21343
21344 @itemize
21345 @item
21346 Apply the Roberts cross operator with scale set to 2 and delta set to 10
21347 @example
21348 -i INPUT -vf "hwupload, roberts_opencl=scale=2:delta=10, hwdownload" OUTPUT
21349 @end example
21350 @end itemize
21351
21352 @section sobel_opencl
21353
21354 Apply the Sobel operator (@url{https://en.wikipedia.org/wiki/Sobel_operator}) to input video stream.
21355
21356 The filter accepts the following option:
21357
21358 @table @option
21359 @item planes
21360 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
21361
21362 @item scale
21363 Set value which will be multiplied with filtered result.
21364 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
21365
21366 @item delta
21367 Set value which will be added to filtered result.
21368 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
21369 @end table
21370
21371 @subsection Example
21372
21373 @itemize
21374 @item
21375 Apply sobel operator with scale set to 2 and delta set to 10
21376 @example
21377 -i INPUT -vf "hwupload, sobel_opencl=scale=2:delta=10, hwdownload" OUTPUT
21378 @end example
21379 @end itemize
21380
21381 @section tonemap_opencl
21382
21383 Perform HDR(PQ/HLG) to SDR conversion with tone-mapping.
21384
21385 It accepts the following parameters:
21386
21387 @table @option
21388 @item tonemap
21389 Specify the tone-mapping operator to be used. Same as tonemap option in @ref{tonemap}.
21390
21391 @item param
21392 Tune the tone mapping algorithm. same as param option in @ref{tonemap}.
21393
21394 @item desat
21395 Apply desaturation for highlights that exceed this level of brightness. The
21396 higher the parameter, the more color information will be preserved. This
21397 setting helps prevent unnaturally blown-out colors for super-highlights, by
21398 (smoothly) turning into white instead. This makes images feel more natural,
21399 at the cost of reducing information about out-of-range colors.
21400
21401 The default value is 0.5, and the algorithm here is a little different from
21402 the cpu version tonemap currently. A setting of 0.0 disables this option.
21403
21404 @item threshold
21405 The tonemapping algorithm parameters is fine-tuned per each scene. And a threshold
21406 is used to detect whether the scene has changed or not. If the distance between
21407 the current frame average brightness and the current running average exceeds
21408 a threshold value, we would re-calculate scene average and peak brightness.
21409 The default value is 0.2.
21410
21411 @item format
21412 Specify the output pixel format.
21413
21414 Currently supported formats are:
21415 @table @var
21416 @item p010
21417 @item nv12
21418 @end table
21419
21420 @item range, r
21421 Set the output color range.
21422
21423 Possible values are:
21424 @table @var
21425 @item tv/mpeg
21426 @item pc/jpeg
21427 @end table
21428
21429 Default is same as input.
21430
21431 @item primaries, p
21432 Set the output color primaries.
21433
21434 Possible values are:
21435 @table @var
21436 @item bt709
21437 @item bt2020
21438 @end table
21439
21440 Default is same as input.
21441
21442 @item transfer, t
21443 Set the output transfer characteristics.
21444
21445 Possible values are:
21446 @table @var
21447 @item bt709
21448 @item bt2020
21449 @end table
21450
21451 Default is bt709.
21452
21453 @item matrix, m
21454 Set the output colorspace matrix.
21455
21456 Possible value are:
21457 @table @var
21458 @item bt709
21459 @item bt2020
21460 @end table
21461
21462 Default is same as input.
21463
21464 @end table
21465
21466 @subsection Example
21467
21468 @itemize
21469 @item
21470 Convert HDR(PQ/HLG) video to bt2020-transfer-characteristic p010 format using linear operator.
21471 @example
21472 -i INPUT -vf "format=p010,hwupload,tonemap_opencl=t=bt2020:tonemap=linear:format=p010,hwdownload,format=p010" OUTPUT
21473 @end example
21474 @end itemize
21475
21476 @section unsharp_opencl
21477
21478 Sharpen or blur the input video.
21479
21480 It accepts the following parameters:
21481
21482 @table @option
21483 @item luma_msize_x, lx
21484 Set the luma matrix horizontal size.
21485 Range is @code{[1, 23]} and default value is @code{5}.
21486
21487 @item luma_msize_y, ly
21488 Set the luma matrix vertical size.
21489 Range is @code{[1, 23]} and default value is @code{5}.
21490
21491 @item luma_amount, la
21492 Set the luma effect strength.
21493 Range is @code{[-10, 10]} and default value is @code{1.0}.
21494
21495 Negative values will blur the input video, while positive values will
21496 sharpen it, a value of zero will disable the effect.
21497
21498 @item chroma_msize_x, cx
21499 Set the chroma matrix horizontal size.
21500 Range is @code{[1, 23]} and default value is @code{5}.
21501
21502 @item chroma_msize_y, cy
21503 Set the chroma matrix vertical size.
21504 Range is @code{[1, 23]} and default value is @code{5}.
21505
21506 @item chroma_amount, ca
21507 Set the chroma effect strength.
21508 Range is @code{[-10, 10]} and default value is @code{0.0}.
21509
21510 Negative values will blur the input video, while positive values will
21511 sharpen it, a value of zero will disable the effect.
21512
21513 @end table
21514
21515 All parameters are optional and default to the equivalent of the
21516 string '5:5:1.0:5:5:0.0'.
21517
21518 @subsection Examples
21519
21520 @itemize
21521 @item
21522 Apply strong luma sharpen effect:
21523 @example
21524 -i INPUT -vf "hwupload, unsharp_opencl=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5, hwdownload" OUTPUT
21525 @end example
21526
21527 @item
21528 Apply a strong blur of both luma and chroma parameters:
21529 @example
21530 -i INPUT -vf "hwupload, unsharp_opencl=7:7:-2:7:7:-2, hwdownload" OUTPUT
21531 @end example
21532 @end itemize
21533
21534 @section xfade_opencl
21535
21536 Cross fade two videos with custom transition effect by using OpenCL.
21537
21538 It accepts the following options:
21539
21540 @table @option
21541 @item transition
21542 Set one of possible transition effects.
21543
21544 @table @option
21545 @item custom
21546 Select custom transition effect, the actual transition description
21547 will be picked from source and kernel options.
21548
21549 @item fade
21550 @item wipeleft
21551 @item wiperight
21552 @item wipeup
21553 @item wipedown
21554 @item slideleft
21555 @item slideright
21556 @item slideup
21557 @item slidedown
21558
21559 Default transition is fade.
21560 @end table
21561
21562 @item source
21563 OpenCL program source file for custom transition.
21564
21565 @item kernel
21566 Set name of kernel to use for custom transition from program source file.
21567
21568 @item duration
21569 Set duration of video transition.
21570
21571 @item offset
21572 Set time of start of transition relative to first video.
21573 @end table
21574
21575 The program source file must contain a kernel function with the given name,
21576 which will be run once for each plane of the output.  Each run on a plane
21577 gets enqueued as a separate 2D global NDRange with one work-item for each
21578 pixel to be generated.  The global ID offset for each work-item is therefore
21579 the coordinates of a pixel in the destination image.
21580
21581 The kernel function needs to take the following arguments:
21582 @itemize
21583 @item
21584 Destination image, @var{__write_only image2d_t}.
21585
21586 This image will become the output; the kernel should write all of it.
21587
21588 @item
21589 First Source image, @var{__read_only image2d_t}.
21590 Second Source image, @var{__read_only image2d_t}.
21591
21592 These are the most recent images on each input.  The kernel may read from
21593 them to generate the output, but they can't be written to.
21594
21595 @item
21596 Transition progress, @var{float}. This value is always between 0 and 1 inclusive.
21597 @end itemize
21598
21599 Example programs:
21600
21601 @itemize
21602 @item
21603 Apply dots curtain transition effect:
21604 @verbatim
21605 __kernel void blend_images(__write_only image2d_t dst,
21606                            __read_only  image2d_t src1,
21607                            __read_only  image2d_t src2,
21608                            float progress)
21609 {
21610     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
21611                                CLK_FILTER_LINEAR);
21612     int2  p = (int2)(get_global_id(0), get_global_id(1));
21613     float2 rp = (float2)(get_global_id(0), get_global_id(1));
21614     float2 dim = (float2)(get_image_dim(src1).x, get_image_dim(src1).y);
21615     rp = rp / dim;
21616
21617     float2 dots = (float2)(20.0, 20.0);
21618     float2 center = (float2)(0,0);
21619     float2 unused;
21620
21621     float4 val1 = read_imagef(src1, sampler, p);
21622     float4 val2 = read_imagef(src2, sampler, p);
21623     bool next = distance(fract(rp * dots, &unused), (float2)(0.5, 0.5)) < (progress / distance(rp, center));
21624
21625     write_imagef(dst, p, next ? val1 : val2);
21626 }
21627 @end verbatim
21628
21629 @end itemize
21630
21631 @c man end OPENCL VIDEO FILTERS
21632
21633 @chapter VAAPI Video Filters
21634 @c man begin VAAPI VIDEO FILTERS
21635
21636 VAAPI Video filters are usually used with VAAPI decoder and VAAPI encoder. Below is a description of VAAPI video filters.
21637
21638 To enable compilation of these filters you need to configure FFmpeg with
21639 @code{--enable-vaapi}.
21640
21641 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}
21642
21643 @section tonemap_vaapi
21644
21645 Perform HDR(High Dynamic Range) to SDR(Standard Dynamic Range) conversion with tone-mapping.
21646 It maps the dynamic range of HDR10 content to the SDR content.
21647 It currently only accepts HDR10 as input.
21648
21649 It accepts the following parameters:
21650
21651 @table @option
21652 @item format
21653 Specify the output pixel format.
21654
21655 Currently supported formats are:
21656 @table @var
21657 @item p010
21658 @item nv12
21659 @end table
21660
21661 Default is nv12.
21662
21663 @item primaries, p
21664 Set the output color primaries.
21665
21666 Default is same as input.
21667
21668 @item transfer, t
21669 Set the output transfer characteristics.
21670
21671 Default is bt709.
21672
21673 @item matrix, m
21674 Set the output colorspace matrix.
21675
21676 Default is same as input.
21677
21678 @end table
21679
21680 @subsection Example
21681
21682 @itemize
21683 @item
21684 Convert HDR(HDR10) video to bt2020-transfer-characteristic p010 format
21685 @example
21686 tonemap_vaapi=format=p010:t=bt2020-10
21687 @end example
21688 @end itemize
21689
21690 @c man end VAAPI VIDEO FILTERS
21691
21692 @chapter Video Sources
21693 @c man begin VIDEO SOURCES
21694
21695 Below is a description of the currently available video sources.
21696
21697 @section buffer
21698
21699 Buffer video frames, and make them available to the filter chain.
21700
21701 This source is mainly intended for a programmatic use, in particular
21702 through the interface defined in @file{libavfilter/vsrc_buffer.h}.
21703
21704 It accepts the following parameters:
21705
21706 @table @option
21707
21708 @item video_size
21709 Specify the size (width and height) of the buffered video frames. For the
21710 syntax of this option, check the
21711 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21712
21713 @item width
21714 The input video width.
21715
21716 @item height
21717 The input video height.
21718
21719 @item pix_fmt
21720 A string representing the pixel format of the buffered video frames.
21721 It may be a number corresponding to a pixel format, or a pixel format
21722 name.
21723
21724 @item time_base
21725 Specify the timebase assumed by the timestamps of the buffered frames.
21726
21727 @item frame_rate
21728 Specify the frame rate expected for the video stream.
21729
21730 @item pixel_aspect, sar
21731 The sample (pixel) aspect ratio of the input video.
21732
21733 @item sws_param
21734 This option is deprecated and ignored. Prepend @code{sws_flags=@var{flags};}
21735 to the filtergraph description to specify swscale flags for automatically
21736 inserted scalers. See @ref{Filtergraph syntax}.
21737
21738 @item hw_frames_ctx
21739 When using a hardware pixel format, this should be a reference to an
21740 AVHWFramesContext describing input frames.
21741 @end table
21742
21743 For example:
21744 @example
21745 buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
21746 @end example
21747
21748 will instruct the source to accept video frames with size 320x240 and
21749 with format "yuv410p", assuming 1/24 as the timestamps timebase and
21750 square pixels (1:1 sample aspect ratio).
21751 Since the pixel format with name "yuv410p" corresponds to the number 6
21752 (check the enum AVPixelFormat definition in @file{libavutil/pixfmt.h}),
21753 this example corresponds to:
21754 @example
21755 buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
21756 @end example
21757
21758 Alternatively, the options can be specified as a flat string, but this
21759 syntax is deprecated:
21760
21761 @var{width}:@var{height}:@var{pix_fmt}:@var{time_base.num}:@var{time_base.den}:@var{pixel_aspect.num}:@var{pixel_aspect.den}
21762
21763 @section cellauto
21764
21765 Create a pattern generated by an elementary cellular automaton.
21766
21767 The initial state of the cellular automaton can be defined through the
21768 @option{filename} and @option{pattern} options. If such options are
21769 not specified an initial state is created randomly.
21770
21771 At each new frame a new row in the video is filled with the result of
21772 the cellular automaton next generation. The behavior when the whole
21773 frame is filled is defined by the @option{scroll} option.
21774
21775 This source accepts the following options:
21776
21777 @table @option
21778 @item filename, f
21779 Read the initial cellular automaton state, i.e. the starting row, from
21780 the specified file.
21781 In the file, each non-whitespace character is considered an alive
21782 cell, a newline will terminate the row, and further characters in the
21783 file will be ignored.
21784
21785 @item pattern, p
21786 Read the initial cellular automaton state, i.e. the starting row, from
21787 the specified string.
21788
21789 Each non-whitespace character in the string is considered an alive
21790 cell, a newline will terminate the row, and further characters in the
21791 string will be ignored.
21792
21793 @item rate, r
21794 Set the video rate, that is the number of frames generated per second.
21795 Default is 25.
21796
21797 @item random_fill_ratio, ratio
21798 Set the random fill ratio for the initial cellular automaton row. It
21799 is a floating point number value ranging from 0 to 1, defaults to
21800 1/PHI.
21801
21802 This option is ignored when a file or a pattern is specified.
21803
21804 @item random_seed, seed
21805 Set the seed for filling randomly the initial row, must be an integer
21806 included between 0 and UINT32_MAX. If not specified, or if explicitly
21807 set to -1, the filter will try to use a good random seed on a best
21808 effort basis.
21809
21810 @item rule
21811 Set the cellular automaton rule, it is a number ranging from 0 to 255.
21812 Default value is 110.
21813
21814 @item size, s
21815 Set the size of the output video. For the syntax of this option, check the
21816 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21817
21818 If @option{filename} or @option{pattern} is specified, the size is set
21819 by default to the width of the specified initial state row, and the
21820 height is set to @var{width} * PHI.
21821
21822 If @option{size} is set, it must contain the width of the specified
21823 pattern string, and the specified pattern will be centered in the
21824 larger row.
21825
21826 If a filename or a pattern string is not specified, the size value
21827 defaults to "320x518" (used for a randomly generated initial state).
21828
21829 @item scroll
21830 If set to 1, scroll the output upward when all the rows in the output
21831 have been already filled. If set to 0, the new generated row will be
21832 written over the top row just after the bottom row is filled.
21833 Defaults to 1.
21834
21835 @item start_full, full
21836 If set to 1, completely fill the output with generated rows before
21837 outputting the first frame.
21838 This is the default behavior, for disabling set the value to 0.
21839
21840 @item stitch
21841 If set to 1, stitch the left and right row edges together.
21842 This is the default behavior, for disabling set the value to 0.
21843 @end table
21844
21845 @subsection Examples
21846
21847 @itemize
21848 @item
21849 Read the initial state from @file{pattern}, and specify an output of
21850 size 200x400.
21851 @example
21852 cellauto=f=pattern:s=200x400
21853 @end example
21854
21855 @item
21856 Generate a random initial row with a width of 200 cells, with a fill
21857 ratio of 2/3:
21858 @example
21859 cellauto=ratio=2/3:s=200x200
21860 @end example
21861
21862 @item
21863 Create a pattern generated by rule 18 starting by a single alive cell
21864 centered on an initial row with width 100:
21865 @example
21866 cellauto=p=@@:s=100x400:full=0:rule=18
21867 @end example
21868
21869 @item
21870 Specify a more elaborated initial pattern:
21871 @example
21872 cellauto=p='@@@@ @@ @@@@':s=100x400:full=0:rule=18
21873 @end example
21874
21875 @end itemize
21876
21877 @anchor{coreimagesrc}
21878 @section coreimagesrc
21879 Video source generated on GPU using Apple's CoreImage API on OSX.
21880
21881 This video source is a specialized version of the @ref{coreimage} video filter.
21882 Use a core image generator at the beginning of the applied filterchain to
21883 generate the content.
21884
21885 The coreimagesrc video source accepts the following options:
21886 @table @option
21887 @item list_generators
21888 List all available generators along with all their respective options as well as
21889 possible minimum and maximum values along with the default values.
21890 @example
21891 list_generators=true
21892 @end example
21893
21894 @item size, s
21895 Specify the size of the sourced video. For the syntax of this option, check the
21896 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21897 The default value is @code{320x240}.
21898
21899 @item rate, r
21900 Specify the frame rate of the sourced video, as the number of frames
21901 generated per second. It has to be a string in the format
21902 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
21903 number or a valid video frame rate abbreviation. The default value is
21904 "25".
21905
21906 @item sar
21907 Set the sample aspect ratio of the sourced video.
21908
21909 @item duration, d
21910 Set the duration of the sourced video. See
21911 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
21912 for the accepted syntax.
21913
21914 If not specified, or the expressed duration is negative, the video is
21915 supposed to be generated forever.
21916 @end table
21917
21918 Additionally, all options of the @ref{coreimage} video filter are accepted.
21919 A complete filterchain can be used for further processing of the
21920 generated input without CPU-HOST transfer. See @ref{coreimage} documentation
21921 and examples for details.
21922
21923 @subsection Examples
21924
21925 @itemize
21926
21927 @item
21928 Use CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
21929 given as complete and escaped command-line for Apple's standard bash shell:
21930 @example
21931 ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
21932 @end example
21933 This example is equivalent to the QRCode example of @ref{coreimage} without the
21934 need for a nullsrc video source.
21935 @end itemize
21936
21937
21938 @section mandelbrot
21939
21940 Generate a Mandelbrot set fractal, and progressively zoom towards the
21941 point specified with @var{start_x} and @var{start_y}.
21942
21943 This source accepts the following options:
21944
21945 @table @option
21946
21947 @item end_pts
21948 Set the terminal pts value. Default value is 400.
21949
21950 @item end_scale
21951 Set the terminal scale value.
21952 Must be a floating point value. Default value is 0.3.
21953
21954 @item inner
21955 Set the inner coloring mode, that is the algorithm used to draw the
21956 Mandelbrot fractal internal region.
21957
21958 It shall assume one of the following values:
21959 @table @option
21960 @item black
21961 Set black mode.
21962 @item convergence
21963 Show time until convergence.
21964 @item mincol
21965 Set color based on point closest to the origin of the iterations.
21966 @item period
21967 Set period mode.
21968 @end table
21969
21970 Default value is @var{mincol}.
21971
21972 @item bailout
21973 Set the bailout value. Default value is 10.0.
21974
21975 @item maxiter
21976 Set the maximum of iterations performed by the rendering
21977 algorithm. Default value is 7189.
21978
21979 @item outer
21980 Set outer coloring mode.
21981 It shall assume one of following values:
21982 @table @option
21983 @item iteration_count
21984 Set iteration count mode.
21985 @item normalized_iteration_count
21986 set normalized iteration count mode.
21987 @end table
21988 Default value is @var{normalized_iteration_count}.
21989
21990 @item rate, r
21991 Set frame rate, expressed as number of frames per second. Default
21992 value is "25".
21993
21994 @item size, s
21995 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
21996 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
21997
21998 @item start_scale
21999 Set the initial scale value. Default value is 3.0.
22000
22001 @item start_x
22002 Set the initial x position. Must be a floating point value between
22003 -100 and 100. Default value is -0.743643887037158704752191506114774.
22004
22005 @item start_y
22006 Set the initial y position. Must be a floating point value between
22007 -100 and 100. Default value is -0.131825904205311970493132056385139.
22008 @end table
22009
22010 @section mptestsrc
22011
22012 Generate various test patterns, as generated by the MPlayer test filter.
22013
22014 The size of the generated video is fixed, and is 256x256.
22015 This source is useful in particular for testing encoding features.
22016
22017 This source accepts the following options:
22018
22019 @table @option
22020
22021 @item rate, r
22022 Specify the frame rate of the sourced video, as the number of frames
22023 generated per second. It has to be a string in the format
22024 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
22025 number or a valid video frame rate abbreviation. The default value is
22026 "25".
22027
22028 @item duration, d
22029 Set the duration of the sourced video. See
22030 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
22031 for the accepted syntax.
22032
22033 If not specified, or the expressed duration is negative, the video is
22034 supposed to be generated forever.
22035
22036 @item test, t
22037
22038 Set the number or the name of the test to perform. Supported tests are:
22039 @table @option
22040 @item dc_luma
22041 @item dc_chroma
22042 @item freq_luma
22043 @item freq_chroma
22044 @item amp_luma
22045 @item amp_chroma
22046 @item cbp
22047 @item mv
22048 @item ring1
22049 @item ring2
22050 @item all
22051
22052 @item max_frames, m
22053 Set the maximum number of frames generated for each test, default value is 30.
22054
22055 @end table
22056
22057 Default value is "all", which will cycle through the list of all tests.
22058 @end table
22059
22060 Some examples:
22061 @example
22062 mptestsrc=t=dc_luma
22063 @end example
22064
22065 will generate a "dc_luma" test pattern.
22066
22067 @section frei0r_src
22068
22069 Provide a frei0r source.
22070
22071 To enable compilation of this filter you need to install the frei0r
22072 header and configure FFmpeg with @code{--enable-frei0r}.
22073
22074 This source accepts the following parameters:
22075
22076 @table @option
22077
22078 @item size
22079 The size of the video to generate. For the syntax of this option, check the
22080 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22081
22082 @item framerate
22083 The framerate of the generated video. It may be a string of the form
22084 @var{num}/@var{den} or a frame rate abbreviation.
22085
22086 @item filter_name
22087 The name to the frei0r source to load. For more information regarding frei0r and
22088 how to set the parameters, read the @ref{frei0r} section in the video filters
22089 documentation.
22090
22091 @item filter_params
22092 A '|'-separated list of parameters to pass to the frei0r source.
22093
22094 @end table
22095
22096 For example, to generate a frei0r partik0l source with size 200x200
22097 and frame rate 10 which is overlaid on the overlay filter main input:
22098 @example
22099 frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
22100 @end example
22101
22102 @section life
22103
22104 Generate a life pattern.
22105
22106 This source is based on a generalization of John Conway's life game.
22107
22108 The sourced input represents a life grid, each pixel represents a cell
22109 which can be in one of two possible states, alive or dead. Every cell
22110 interacts with its eight neighbours, which are the cells that are
22111 horizontally, vertically, or diagonally adjacent.
22112
22113 At each interaction the grid evolves according to the adopted rule,
22114 which specifies the number of neighbor alive cells which will make a
22115 cell stay alive or born. The @option{rule} option allows one to specify
22116 the rule to adopt.
22117
22118 This source accepts the following options:
22119
22120 @table @option
22121 @item filename, f
22122 Set the file from which to read the initial grid state. In the file,
22123 each non-whitespace character is considered an alive cell, and newline
22124 is used to delimit the end of each row.
22125
22126 If this option is not specified, the initial grid is generated
22127 randomly.
22128
22129 @item rate, r
22130 Set the video rate, that is the number of frames generated per second.
22131 Default is 25.
22132
22133 @item random_fill_ratio, ratio
22134 Set the random fill ratio for the initial random grid. It is a
22135 floating point number value ranging from 0 to 1, defaults to 1/PHI.
22136 It is ignored when a file is specified.
22137
22138 @item random_seed, seed
22139 Set the seed for filling the initial random grid, must be an integer
22140 included between 0 and UINT32_MAX. If not specified, or if explicitly
22141 set to -1, the filter will try to use a good random seed on a best
22142 effort basis.
22143
22144 @item rule
22145 Set the life rule.
22146
22147 A rule can be specified with a code of the kind "S@var{NS}/B@var{NB}",
22148 where @var{NS} and @var{NB} are sequences of numbers in the range 0-8,
22149 @var{NS} specifies the number of alive neighbor cells which make a
22150 live cell stay alive, and @var{NB} the number of alive neighbor cells
22151 which make a dead cell to become alive (i.e. to "born").
22152 "s" and "b" can be used in place of "S" and "B", respectively.
22153
22154 Alternatively a rule can be specified by an 18-bits integer. The 9
22155 high order bits are used to encode the next cell state if it is alive
22156 for each number of neighbor alive cells, the low order bits specify
22157 the rule for "borning" new cells. Higher order bits encode for an
22158 higher number of neighbor cells.
22159 For example the number 6153 = @code{(12<<9)+9} specifies a stay alive
22160 rule of 12 and a born rule of 9, which corresponds to "S23/B03".
22161
22162 Default value is "S23/B3", which is the original Conway's game of life
22163 rule, and will keep a cell alive if it has 2 or 3 neighbor alive
22164 cells, and will born a new cell if there are three alive cells around
22165 a dead cell.
22166
22167 @item size, s
22168 Set the size of the output video. For the syntax of this option, check the
22169 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22170
22171 If @option{filename} is specified, the size is set by default to the
22172 same size of the input file. If @option{size} is set, it must contain
22173 the size specified in the input file, and the initial grid defined in
22174 that file is centered in the larger resulting area.
22175
22176 If a filename is not specified, the size value defaults to "320x240"
22177 (used for a randomly generated initial grid).
22178
22179 @item stitch
22180 If set to 1, stitch the left and right grid edges together, and the
22181 top and bottom edges also. Defaults to 1.
22182
22183 @item mold
22184 Set cell mold speed. If set, a dead cell will go from @option{death_color} to
22185 @option{mold_color} with a step of @option{mold}. @option{mold} can have a
22186 value from 0 to 255.
22187
22188 @item life_color
22189 Set the color of living (or new born) cells.
22190
22191 @item death_color
22192 Set the color of dead cells. If @option{mold} is set, this is the first color
22193 used to represent a dead cell.
22194
22195 @item mold_color
22196 Set mold color, for definitely dead and moldy cells.
22197
22198 For the syntax of these 3 color options, check the @ref{color syntax,,"Color" section in the
22199 ffmpeg-utils manual,ffmpeg-utils}.
22200 @end table
22201
22202 @subsection Examples
22203
22204 @itemize
22205 @item
22206 Read a grid from @file{pattern}, and center it on a grid of size
22207 300x300 pixels:
22208 @example
22209 life=f=pattern:s=300x300
22210 @end example
22211
22212 @item
22213 Generate a random grid of size 200x200, with a fill ratio of 2/3:
22214 @example
22215 life=ratio=2/3:s=200x200
22216 @end example
22217
22218 @item
22219 Specify a custom rule for evolving a randomly generated grid:
22220 @example
22221 life=rule=S14/B34
22222 @end example
22223
22224 @item
22225 Full example with slow death effect (mold) using @command{ffplay}:
22226 @example
22227 ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
22228 @end example
22229 @end itemize
22230
22231 @anchor{allrgb}
22232 @anchor{allyuv}
22233 @anchor{color}
22234 @anchor{haldclutsrc}
22235 @anchor{nullsrc}
22236 @anchor{pal75bars}
22237 @anchor{pal100bars}
22238 @anchor{rgbtestsrc}
22239 @anchor{smptebars}
22240 @anchor{smptehdbars}
22241 @anchor{testsrc}
22242 @anchor{testsrc2}
22243 @anchor{yuvtestsrc}
22244 @section allrgb, allyuv, color, haldclutsrc, nullsrc, pal75bars, pal100bars, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc
22245
22246 The @code{allrgb} source returns frames of size 4096x4096 of all rgb colors.
22247
22248 The @code{allyuv} source returns frames of size 4096x4096 of all yuv colors.
22249
22250 The @code{color} source provides an uniformly colored input.
22251
22252 The @code{haldclutsrc} source provides an identity Hald CLUT. See also
22253 @ref{haldclut} filter.
22254
22255 The @code{nullsrc} source returns unprocessed video frames. It is
22256 mainly useful to be employed in analysis / debugging tools, or as the
22257 source for filters which ignore the input data.
22258
22259 The @code{pal75bars} source generates a color bars pattern, based on
22260 EBU PAL recommendations with 75% color levels.
22261
22262 The @code{pal100bars} source generates a color bars pattern, based on
22263 EBU PAL recommendations with 100% color levels.
22264
22265 The @code{rgbtestsrc} source generates an RGB test pattern useful for
22266 detecting RGB vs BGR issues. You should see a red, green and blue
22267 stripe from top to bottom.
22268
22269 The @code{smptebars} source generates a color bars pattern, based on
22270 the SMPTE Engineering Guideline EG 1-1990.
22271
22272 The @code{smptehdbars} source generates a color bars pattern, based on
22273 the SMPTE RP 219-2002.
22274
22275 The @code{testsrc} source generates a test video pattern, showing a
22276 color pattern, a scrolling gradient and a timestamp. This is mainly
22277 intended for testing purposes.
22278
22279 The @code{testsrc2} source is similar to testsrc, but supports more
22280 pixel formats instead of just @code{rgb24}. This allows using it as an
22281 input for other tests without requiring a format conversion.
22282
22283 The @code{yuvtestsrc} source generates an YUV test pattern. You should
22284 see a y, cb and cr stripe from top to bottom.
22285
22286 The sources accept the following parameters:
22287
22288 @table @option
22289
22290 @item level
22291 Specify the level of the Hald CLUT, only available in the @code{haldclutsrc}
22292 source. A level of @code{N} generates a picture of @code{N*N*N} by @code{N*N*N}
22293 pixels to be used as identity matrix for 3D lookup tables. Each component is
22294 coded on a @code{1/(N*N)} scale.
22295
22296 @item color, c
22297 Specify the color of the source, only available in the @code{color}
22298 source. For the syntax of this option, check the
22299 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
22300
22301 @item size, s
22302 Specify the size of the sourced video. For the syntax of this option, check the
22303 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22304 The default value is @code{320x240}.
22305
22306 This option is not available with the @code{allrgb}, @code{allyuv}, and
22307 @code{haldclutsrc} filters.
22308
22309 @item rate, r
22310 Specify the frame rate of the sourced video, as the number of frames
22311 generated per second. It has to be a string in the format
22312 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
22313 number or a valid video frame rate abbreviation. The default value is
22314 "25".
22315
22316 @item duration, d
22317 Set the duration of the sourced video. See
22318 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
22319 for the accepted syntax.
22320
22321 If not specified, or the expressed duration is negative, the video is
22322 supposed to be generated forever.
22323
22324 @item sar
22325 Set the sample aspect ratio of the sourced video.
22326
22327 @item alpha
22328 Specify the alpha (opacity) of the background, only available in the
22329 @code{testsrc2} source. The value must be between 0 (fully transparent) and
22330 255 (fully opaque, the default).
22331
22332 @item decimals, n
22333 Set the number of decimals to show in the timestamp, only available in the
22334 @code{testsrc} source.
22335
22336 The displayed timestamp value will correspond to the original
22337 timestamp value multiplied by the power of 10 of the specified
22338 value. Default value is 0.
22339 @end table
22340
22341 @subsection Examples
22342
22343 @itemize
22344 @item
22345 Generate a video with a duration of 5.3 seconds, with size
22346 176x144 and a frame rate of 10 frames per second:
22347 @example
22348 testsrc=duration=5.3:size=qcif:rate=10
22349 @end example
22350
22351 @item
22352 The following graph description will generate a red source
22353 with an opacity of 0.2, with size "qcif" and a frame rate of 10
22354 frames per second:
22355 @example
22356 color=c=red@@0.2:s=qcif:r=10
22357 @end example
22358
22359 @item
22360 If the input content is to be ignored, @code{nullsrc} can be used. The
22361 following command generates noise in the luminance plane by employing
22362 the @code{geq} filter:
22363 @example
22364 nullsrc=s=256x256, geq=random(1)*255:128:128
22365 @end example
22366 @end itemize
22367
22368 @subsection Commands
22369
22370 The @code{color} source supports the following commands:
22371
22372 @table @option
22373 @item c, color
22374 Set the color of the created image. Accepts the same syntax of the
22375 corresponding @option{color} option.
22376 @end table
22377
22378 @section openclsrc
22379
22380 Generate video using an OpenCL program.
22381
22382 @table @option
22383
22384 @item source
22385 OpenCL program source file.
22386
22387 @item kernel
22388 Kernel name in program.
22389
22390 @item size, s
22391 Size of frames to generate.  This must be set.
22392
22393 @item format
22394 Pixel format to use for the generated frames.  This must be set.
22395
22396 @item rate, r
22397 Number of frames generated every second.  Default value is '25'.
22398
22399 @end table
22400
22401 For details of how the program loading works, see the @ref{program_opencl}
22402 filter.
22403
22404 Example programs:
22405
22406 @itemize
22407 @item
22408 Generate a colour ramp by setting pixel values from the position of the pixel
22409 in the output image.  (Note that this will work with all pixel formats, but
22410 the generated output will not be the same.)
22411 @verbatim
22412 __kernel void ramp(__write_only image2d_t dst,
22413                    unsigned int index)
22414 {
22415     int2 loc = (int2)(get_global_id(0), get_global_id(1));
22416
22417     float4 val;
22418     val.xy = val.zw = convert_float2(loc) / convert_float2(get_image_dim(dst));
22419
22420     write_imagef(dst, loc, val);
22421 }
22422 @end verbatim
22423
22424 @item
22425 Generate a Sierpinski carpet pattern, panning by a single pixel each frame.
22426 @verbatim
22427 __kernel void sierpinski_carpet(__write_only image2d_t dst,
22428                                 unsigned int index)
22429 {
22430     int2 loc = (int2)(get_global_id(0), get_global_id(1));
22431
22432     float4 value = 0.0f;
22433     int x = loc.x + index;
22434     int y = loc.y + index;
22435     while (x > 0 || y > 0) {
22436         if (x % 3 == 1 && y % 3 == 1) {
22437             value = 1.0f;
22438             break;
22439         }
22440         x /= 3;
22441         y /= 3;
22442     }
22443
22444     write_imagef(dst, loc, value);
22445 }
22446 @end verbatim
22447
22448 @end itemize
22449
22450 @section sierpinski
22451
22452 Generate a Sierpinski carpet/triangle fractal, and randomly pan around.
22453
22454 This source accepts the following options:
22455
22456 @table @option
22457 @item size, s
22458 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
22459 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
22460
22461 @item rate, r
22462 Set frame rate, expressed as number of frames per second. Default
22463 value is "25".
22464
22465 @item seed
22466 Set seed which is used for random panning.
22467
22468 @item jump
22469 Set max jump for single pan destination. Allowed range is from 1 to 10000.
22470
22471 @item type
22472 Set fractal type, can be default @code{carpet} or @code{triangle}.
22473 @end table
22474
22475 @c man end VIDEO SOURCES
22476
22477 @chapter Video Sinks
22478 @c man begin VIDEO SINKS
22479
22480 Below is a description of the currently available video sinks.
22481
22482 @section buffersink
22483
22484 Buffer video frames, and make them available to the end of the filter
22485 graph.
22486
22487 This sink is mainly intended for programmatic use, in particular
22488 through the interface defined in @file{libavfilter/buffersink.h}
22489 or the options system.
22490
22491 It accepts a pointer to an AVBufferSinkContext structure, which
22492 defines the incoming buffers' formats, to be passed as the opaque
22493 parameter to @code{avfilter_init_filter} for initialization.
22494
22495 @section nullsink
22496
22497 Null video sink: do absolutely nothing with the input video. It is
22498 mainly useful as a template and for use in analysis / debugging
22499 tools.
22500
22501 @c man end VIDEO SINKS
22502
22503 @chapter Multimedia Filters
22504 @c man begin MULTIMEDIA FILTERS
22505
22506 Below is a description of the currently available multimedia filters.
22507
22508 @section abitscope
22509
22510 Convert input audio to a video output, displaying the audio bit scope.
22511
22512 The filter accepts the following options:
22513
22514 @table @option
22515 @item rate, r
22516 Set frame rate, expressed as number of frames per second. Default
22517 value is "25".
22518
22519 @item size, s
22520 Specify the video size for the output. For the syntax of this option, check the
22521 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22522 Default value is @code{1024x256}.
22523
22524 @item colors
22525 Specify list of colors separated by space or by '|' which will be used to
22526 draw channels. Unrecognized or missing colors will be replaced
22527 by white color.
22528 @end table
22529
22530 @section adrawgraph
22531 Draw a graph using input audio metadata.
22532
22533 See @ref{drawgraph}
22534
22535 @section agraphmonitor
22536
22537 See @ref{graphmonitor}.
22538
22539 @section ahistogram
22540
22541 Convert input audio to a video output, displaying the volume histogram.
22542
22543 The filter accepts the following options:
22544
22545 @table @option
22546 @item dmode
22547 Specify how histogram is calculated.
22548
22549 It accepts the following values:
22550 @table @samp
22551 @item single
22552 Use single histogram for all channels.
22553 @item separate
22554 Use separate histogram for each channel.
22555 @end table
22556 Default is @code{single}.
22557
22558 @item rate, r
22559 Set frame rate, expressed as number of frames per second. Default
22560 value is "25".
22561
22562 @item size, s
22563 Specify the video size for the output. For the syntax of this option, check the
22564 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22565 Default value is @code{hd720}.
22566
22567 @item scale
22568 Set display scale.
22569
22570 It accepts the following values:
22571 @table @samp
22572 @item log
22573 logarithmic
22574 @item sqrt
22575 square root
22576 @item cbrt
22577 cubic root
22578 @item lin
22579 linear
22580 @item rlog
22581 reverse logarithmic
22582 @end table
22583 Default is @code{log}.
22584
22585 @item ascale
22586 Set amplitude scale.
22587
22588 It accepts the following values:
22589 @table @samp
22590 @item log
22591 logarithmic
22592 @item lin
22593 linear
22594 @end table
22595 Default is @code{log}.
22596
22597 @item acount
22598 Set how much frames to accumulate in histogram.
22599 Default is 1. Setting this to -1 accumulates all frames.
22600
22601 @item rheight
22602 Set histogram ratio of window height.
22603
22604 @item slide
22605 Set sonogram sliding.
22606
22607 It accepts the following values:
22608 @table @samp
22609 @item replace
22610 replace old rows with new ones.
22611 @item scroll
22612 scroll from top to bottom.
22613 @end table
22614 Default is @code{replace}.
22615 @end table
22616
22617 @section aphasemeter
22618
22619 Measures phase of input audio, which is exported as metadata @code{lavfi.aphasemeter.phase},
22620 representing mean phase of current audio frame. A video output can also be produced and is
22621 enabled by default. The audio is passed through as first output.
22622
22623 Audio will be rematrixed to stereo if it has a different channel layout. Phase value is in
22624 range @code{[-1, 1]} where @code{-1} means left and right channels are completely out of phase
22625 and @code{1} means channels are in phase.
22626
22627 The filter accepts the following options, all related to its video output:
22628
22629 @table @option
22630 @item rate, r
22631 Set the output frame rate. Default value is @code{25}.
22632
22633 @item size, s
22634 Set the video size for the output. For the syntax of this option, check the
22635 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22636 Default value is @code{800x400}.
22637
22638 @item rc
22639 @item gc
22640 @item bc
22641 Specify the red, green, blue contrast. Default values are @code{2},
22642 @code{7} and @code{1}.
22643 Allowed range is @code{[0, 255]}.
22644
22645 @item mpc
22646 Set color which will be used for drawing median phase. If color is
22647 @code{none} which is default, no median phase value will be drawn.
22648
22649 @item video
22650 Enable video output. Default is enabled.
22651 @end table
22652
22653 @section avectorscope
22654
22655 Convert input audio to a video output, representing the audio vector
22656 scope.
22657
22658 The filter is used to measure the difference between channels of stereo
22659 audio stream. A monaural signal, consisting of identical left and right
22660 signal, results in straight vertical line. Any stereo separation is visible
22661 as a deviation from this line, creating a Lissajous figure.
22662 If the straight (or deviation from it) but horizontal line appears this
22663 indicates that the left and right channels are out of phase.
22664
22665 The filter accepts the following options:
22666
22667 @table @option
22668 @item mode, m
22669 Set the vectorscope mode.
22670
22671 Available values are:
22672 @table @samp
22673 @item lissajous
22674 Lissajous rotated by 45 degrees.
22675
22676 @item lissajous_xy
22677 Same as above but not rotated.
22678
22679 @item polar
22680 Shape resembling half of circle.
22681 @end table
22682
22683 Default value is @samp{lissajous}.
22684
22685 @item size, s
22686 Set the video size for the output. For the syntax of this option, check the
22687 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22688 Default value is @code{400x400}.
22689
22690 @item rate, r
22691 Set the output frame rate. Default value is @code{25}.
22692
22693 @item rc
22694 @item gc
22695 @item bc
22696 @item ac
22697 Specify the red, green, blue and alpha contrast. Default values are @code{40},
22698 @code{160}, @code{80} and @code{255}.
22699 Allowed range is @code{[0, 255]}.
22700
22701 @item rf
22702 @item gf
22703 @item bf
22704 @item af
22705 Specify the red, green, blue and alpha fade. Default values are @code{15},
22706 @code{10}, @code{5} and @code{5}.
22707 Allowed range is @code{[0, 255]}.
22708
22709 @item zoom
22710 Set the zoom factor. Default value is @code{1}. Allowed range is @code{[0, 10]}.
22711 Values lower than @var{1} will auto adjust zoom factor to maximal possible value.
22712
22713 @item draw
22714 Set the vectorscope drawing mode.
22715
22716 Available values are:
22717 @table @samp
22718 @item dot
22719 Draw dot for each sample.
22720
22721 @item line
22722 Draw line between previous and current sample.
22723 @end table
22724
22725 Default value is @samp{dot}.
22726
22727 @item scale
22728 Specify amplitude scale of audio samples.
22729
22730 Available values are:
22731 @table @samp
22732 @item lin
22733 Linear.
22734
22735 @item sqrt
22736 Square root.
22737
22738 @item cbrt
22739 Cubic root.
22740
22741 @item log
22742 Logarithmic.
22743 @end table
22744
22745 @item swap
22746 Swap left channel axis with right channel axis.
22747
22748 @item mirror
22749 Mirror axis.
22750
22751 @table @samp
22752 @item none
22753 No mirror.
22754
22755 @item x
22756 Mirror only x axis.
22757
22758 @item y
22759 Mirror only y axis.
22760
22761 @item xy
22762 Mirror both axis.
22763 @end table
22764
22765 @end table
22766
22767 @subsection Examples
22768
22769 @itemize
22770 @item
22771 Complete example using @command{ffplay}:
22772 @example
22773 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
22774              [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
22775 @end example
22776 @end itemize
22777
22778 @section bench, abench
22779
22780 Benchmark part of a filtergraph.
22781
22782 The filter accepts the following options:
22783
22784 @table @option
22785 @item action
22786 Start or stop a timer.
22787
22788 Available values are:
22789 @table @samp
22790 @item start
22791 Get the current time, set it as frame metadata (using the key
22792 @code{lavfi.bench.start_time}), and forward the frame to the next filter.
22793
22794 @item stop
22795 Get the current time and fetch the @code{lavfi.bench.start_time} metadata from
22796 the input frame metadata to get the time difference. Time difference, average,
22797 maximum and minimum time (respectively @code{t}, @code{avg}, @code{max} and
22798 @code{min}) are then printed. The timestamps are expressed in seconds.
22799 @end table
22800 @end table
22801
22802 @subsection Examples
22803
22804 @itemize
22805 @item
22806 Benchmark @ref{selectivecolor} filter:
22807 @example
22808 bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
22809 @end example
22810 @end itemize
22811
22812 @section concat
22813
22814 Concatenate audio and video streams, joining them together one after the
22815 other.
22816
22817 The filter works on segments of synchronized video and audio streams. All
22818 segments must have the same number of streams of each type, and that will
22819 also be the number of streams at output.
22820
22821 The filter accepts the following options:
22822
22823 @table @option
22824
22825 @item n
22826 Set the number of segments. Default is 2.
22827
22828 @item v
22829 Set the number of output video streams, that is also the number of video
22830 streams in each segment. Default is 1.
22831
22832 @item a
22833 Set the number of output audio streams, that is also the number of audio
22834 streams in each segment. Default is 0.
22835
22836 @item unsafe
22837 Activate unsafe mode: do not fail if segments have a different format.
22838
22839 @end table
22840
22841 The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then
22842 @var{a} audio outputs.
22843
22844 There are @var{n}x(@var{v}+@var{a}) inputs: first the inputs for the first
22845 segment, in the same order as the outputs, then the inputs for the second
22846 segment, etc.
22847
22848 Related streams do not always have exactly the same duration, for various
22849 reasons including codec frame size or sloppy authoring. For that reason,
22850 related synchronized streams (e.g. a video and its audio track) should be
22851 concatenated at once. The concat filter will use the duration of the longest
22852 stream in each segment (except the last one), and if necessary pad shorter
22853 audio streams with silence.
22854
22855 For this filter to work correctly, all segments must start at timestamp 0.
22856
22857 All corresponding streams must have the same parameters in all segments; the
22858 filtering system will automatically select a common pixel format for video
22859 streams, and a common sample format, sample rate and channel layout for
22860 audio streams, but other settings, such as resolution, must be converted
22861 explicitly by the user.
22862
22863 Different frame rates are acceptable but will result in variable frame rate
22864 at output; be sure to configure the output file to handle it.
22865
22866 @subsection Examples
22867
22868 @itemize
22869 @item
22870 Concatenate an opening, an episode and an ending, all in bilingual version
22871 (video in stream 0, audio in streams 1 and 2):
22872 @example
22873 ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
22874   '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
22875    concat=n=3:v=1:a=2 [v] [a1] [a2]' \
22876   -map '[v]' -map '[a1]' -map '[a2]' output.mkv
22877 @end example
22878
22879 @item
22880 Concatenate two parts, handling audio and video separately, using the
22881 (a)movie sources, and adjusting the resolution:
22882 @example
22883 movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
22884 movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
22885 [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
22886 @end example
22887 Note that a desync will happen at the stitch if the audio and video streams
22888 do not have exactly the same duration in the first file.
22889
22890 @end itemize
22891
22892 @subsection Commands
22893
22894 This filter supports the following commands:
22895 @table @option
22896 @item next
22897 Close the current segment and step to the next one
22898 @end table
22899
22900 @anchor{ebur128}
22901 @section ebur128
22902
22903 EBU R128 scanner filter. This filter takes an audio stream and analyzes its loudness
22904 level. By default, it logs a message at a frequency of 10Hz with the
22905 Momentary loudness (identified by @code{M}), Short-term loudness (@code{S}),
22906 Integrated loudness (@code{I}) and Loudness Range (@code{LRA}).
22907
22908 The filter can only analyze streams which have a sampling rate of 48000 Hz and whose
22909 sample format is double-precision floating point. The input stream will be converted to
22910 this specification, if needed. Users may need to insert aformat and/or aresample filters
22911 after this filter to obtain the original parameters.
22912
22913 The filter also has a video output (see the @var{video} option) with a real
22914 time graph to observe the loudness evolution. The graphic contains the logged
22915 message mentioned above, so it is not printed anymore when this option is set,
22916 unless the verbose logging is set. The main graphing area contains the
22917 short-term loudness (3 seconds of analysis), and the gauge on the right is for
22918 the momentary loudness (400 milliseconds), but can optionally be configured
22919 to instead display short-term loudness (see @var{gauge}).
22920
22921 The green area marks a  +/- 1LU target range around the target loudness
22922 (-23LUFS by default, unless modified through @var{target}).
22923
22924 More information about the Loudness Recommendation EBU R128 on
22925 @url{http://tech.ebu.ch/loudness}.
22926
22927 The filter accepts the following options:
22928
22929 @table @option
22930
22931 @item video
22932 Activate the video output. The audio stream is passed unchanged whether this
22933 option is set or no. The video stream will be the first output stream if
22934 activated. Default is @code{0}.
22935
22936 @item size
22937 Set the video size. This option is for video only. For the syntax of this
22938 option, check the
22939 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22940 Default and minimum resolution is @code{640x480}.
22941
22942 @item meter
22943 Set the EBU scale meter. Default is @code{9}. Common values are @code{9} and
22944 @code{18}, respectively for EBU scale meter +9 and EBU scale meter +18. Any
22945 other integer value between this range is allowed.
22946
22947 @item metadata
22948 Set metadata injection. If set to @code{1}, the audio input will be segmented
22949 into 100ms output frames, each of them containing various loudness information
22950 in metadata.  All the metadata keys are prefixed with @code{lavfi.r128.}.
22951
22952 Default is @code{0}.
22953
22954 @item framelog
22955 Force the frame logging level.
22956
22957 Available values are:
22958 @table @samp
22959 @item info
22960 information logging level
22961 @item verbose
22962 verbose logging level
22963 @end table
22964
22965 By default, the logging level is set to @var{info}. If the @option{video} or
22966 the @option{metadata} options are set, it switches to @var{verbose}.
22967
22968 @item peak
22969 Set peak mode(s).
22970
22971 Available modes can be cumulated (the option is a @code{flag} type). Possible
22972 values are:
22973 @table @samp
22974 @item none
22975 Disable any peak mode (default).
22976 @item sample
22977 Enable sample-peak mode.
22978
22979 Simple peak mode looking for the higher sample value. It logs a message
22980 for sample-peak (identified by @code{SPK}).
22981 @item true
22982 Enable true-peak mode.
22983
22984 If enabled, the peak lookup is done on an over-sampled version of the input
22985 stream for better peak accuracy. It logs a message for true-peak.
22986 (identified by @code{TPK}) and true-peak per frame (identified by @code{FTPK}).
22987 This mode requires a build with @code{libswresample}.
22988 @end table
22989
22990 @item dualmono
22991 Treat mono input files as "dual mono". If a mono file is intended for playback
22992 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
22993 If set to @code{true}, this option will compensate for this effect.
22994 Multi-channel input files are not affected by this option.
22995
22996 @item panlaw
22997 Set a specific pan law to be used for the measurement of dual mono files.
22998 This parameter is optional, and has a default value of -3.01dB.
22999
23000 @item target
23001 Set a specific target level (in LUFS) used as relative zero in the visualization.
23002 This parameter is optional and has a default value of -23LUFS as specified
23003 by EBU R128. However, material published online may prefer a level of -16LUFS
23004 (e.g. for use with podcasts or video platforms).
23005
23006 @item gauge
23007 Set the value displayed by the gauge. Valid values are @code{momentary} and s
23008 @code{shortterm}. By default the momentary value will be used, but in certain
23009 scenarios it may be more useful to observe the short term value instead (e.g.
23010 live mixing).
23011
23012 @item scale
23013 Sets the display scale for the loudness. Valid parameters are @code{absolute}
23014 (in LUFS) or @code{relative} (LU) relative to the target. This only affects the
23015 video output, not the summary or continuous log output.
23016 @end table
23017
23018 @subsection Examples
23019
23020 @itemize
23021 @item
23022 Real-time graph using @command{ffplay}, with a EBU scale meter +18:
23023 @example
23024 ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
23025 @end example
23026
23027 @item
23028 Run an analysis with @command{ffmpeg}:
23029 @example
23030 ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
23031 @end example
23032 @end itemize
23033
23034 @section interleave, ainterleave
23035
23036 Temporally interleave frames from several inputs.
23037
23038 @code{interleave} works with video inputs, @code{ainterleave} with audio.
23039
23040 These filters read frames from several inputs and send the oldest
23041 queued frame to the output.
23042
23043 Input streams must have well defined, monotonically increasing frame
23044 timestamp values.
23045
23046 In order to submit one frame to output, these filters need to enqueue
23047 at least one frame for each input, so they cannot work in case one
23048 input is not yet terminated and will not receive incoming frames.
23049
23050 For example consider the case when one input is a @code{select} filter
23051 which always drops input frames. The @code{interleave} filter will keep
23052 reading from that input, but it will never be able to send new frames
23053 to output until the input sends an end-of-stream signal.
23054
23055 Also, depending on inputs synchronization, the filters will drop
23056 frames in case one input receives more frames than the other ones, and
23057 the queue is already filled.
23058
23059 These filters accept the following options:
23060
23061 @table @option
23062 @item nb_inputs, n
23063 Set the number of different inputs, it is 2 by default.
23064 @end table
23065
23066 @subsection Examples
23067
23068 @itemize
23069 @item
23070 Interleave frames belonging to different streams using @command{ffmpeg}:
23071 @example
23072 ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
23073 @end example
23074
23075 @item
23076 Add flickering blur effect:
23077 @example
23078 select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
23079 @end example
23080 @end itemize
23081
23082 @section metadata, ametadata
23083
23084 Manipulate frame metadata.
23085
23086 This filter accepts the following options:
23087
23088 @table @option
23089 @item mode
23090 Set mode of operation of the filter.
23091
23092 Can be one of the following:
23093
23094 @table @samp
23095 @item select
23096 If both @code{value} and @code{key} is set, select frames
23097 which have such metadata. If only @code{key} is set, select
23098 every frame that has such key in metadata.
23099
23100 @item add
23101 Add new metadata @code{key} and @code{value}. If key is already available
23102 do nothing.
23103
23104 @item modify
23105 Modify value of already present key.
23106
23107 @item delete
23108 If @code{value} is set, delete only keys that have such value.
23109 Otherwise, delete key. If @code{key} is not set, delete all metadata values in
23110 the frame.
23111
23112 @item print
23113 Print key and its value if metadata was found. If @code{key} is not set print all
23114 metadata values available in frame.
23115 @end table
23116
23117 @item key
23118 Set key used with all modes. Must be set for all modes except @code{print} and @code{delete}.
23119
23120 @item value
23121 Set metadata value which will be used. This option is mandatory for
23122 @code{modify} and @code{add} mode.
23123
23124 @item function
23125 Which function to use when comparing metadata value and @code{value}.
23126
23127 Can be one of following:
23128
23129 @table @samp
23130 @item same_str
23131 Values are interpreted as strings, returns true if metadata value is same as @code{value}.
23132
23133 @item starts_with
23134 Values are interpreted as strings, returns true if metadata value starts with
23135 the @code{value} option string.
23136
23137 @item less
23138 Values are interpreted as floats, returns true if metadata value is less than @code{value}.
23139
23140 @item equal
23141 Values are interpreted as floats, returns true if @code{value} is equal with metadata value.
23142
23143 @item greater
23144 Values are interpreted as floats, returns true if metadata value is greater than @code{value}.
23145
23146 @item expr
23147 Values are interpreted as floats, returns true if expression from option @code{expr}
23148 evaluates to true.
23149
23150 @item ends_with
23151 Values are interpreted as strings, returns true if metadata value ends with
23152 the @code{value} option string.
23153 @end table
23154
23155 @item expr
23156 Set expression which is used when @code{function} is set to @code{expr}.
23157 The expression is evaluated through the eval API and can contain the following
23158 constants:
23159
23160 @table @option
23161 @item VALUE1
23162 Float representation of @code{value} from metadata key.
23163
23164 @item VALUE2
23165 Float representation of @code{value} as supplied by user in @code{value} option.
23166 @end table
23167
23168 @item file
23169 If specified in @code{print} mode, output is written to the named file. Instead of
23170 plain filename any writable url can be specified. Filename ``-'' is a shorthand
23171 for standard output. If @code{file} option is not set, output is written to the log
23172 with AV_LOG_INFO loglevel.
23173
23174 @item direct
23175 Reduces buffering in print mode when output is written to a URL set using @var{file}.
23176
23177 @end table
23178
23179 @subsection Examples
23180
23181 @itemize
23182 @item
23183 Print all metadata values for frames with key @code{lavfi.signalstats.YDIF} with values
23184 between 0 and 1.
23185 @example
23186 signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
23187 @end example
23188 @item
23189 Print silencedetect output to file @file{metadata.txt}.
23190 @example
23191 silencedetect,ametadata=mode=print:file=metadata.txt
23192 @end example
23193 @item
23194 Direct all metadata to a pipe with file descriptor 4.
23195 @example
23196 metadata=mode=print:file='pipe\:4'
23197 @end example
23198 @end itemize
23199
23200 @section perms, aperms
23201
23202 Set read/write permissions for the output frames.
23203
23204 These filters are mainly aimed at developers to test direct path in the
23205 following filter in the filtergraph.
23206
23207 The filters accept the following options:
23208
23209 @table @option
23210 @item mode
23211 Select the permissions mode.
23212
23213 It accepts the following values:
23214 @table @samp
23215 @item none
23216 Do nothing. This is the default.
23217 @item ro
23218 Set all the output frames read-only.
23219 @item rw
23220 Set all the output frames directly writable.
23221 @item toggle
23222 Make the frame read-only if writable, and writable if read-only.
23223 @item random
23224 Set each output frame read-only or writable randomly.
23225 @end table
23226
23227 @item seed
23228 Set the seed for the @var{random} mode, must be an integer included between
23229 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
23230 @code{-1}, the filter will try to use a good random seed on a best effort
23231 basis.
23232 @end table
23233
23234 Note: in case of auto-inserted filter between the permission filter and the
23235 following one, the permission might not be received as expected in that
23236 following filter. Inserting a @ref{format} or @ref{aformat} filter before the
23237 perms/aperms filter can avoid this problem.
23238
23239 @section realtime, arealtime
23240
23241 Slow down filtering to match real time approximately.
23242
23243 These filters will pause the filtering for a variable amount of time to
23244 match the output rate with the input timestamps.
23245 They are similar to the @option{re} option to @code{ffmpeg}.
23246
23247 They accept the following options:
23248
23249 @table @option
23250 @item limit
23251 Time limit for the pauses. Any pause longer than that will be considered
23252 a timestamp discontinuity and reset the timer. Default is 2 seconds.
23253 @item speed
23254 Speed factor for processing. The value must be a float larger than zero.
23255 Values larger than 1.0 will result in faster than realtime processing,
23256 smaller will slow processing down. The @var{limit} is automatically adapted
23257 accordingly. Default is 1.0.
23258
23259 A processing speed faster than what is possible without these filters cannot
23260 be achieved.
23261 @end table
23262
23263 @anchor{select}
23264 @section select, aselect
23265
23266 Select frames to pass in output.
23267
23268 This filter accepts the following options:
23269
23270 @table @option
23271
23272 @item expr, e
23273 Set expression, which is evaluated for each input frame.
23274
23275 If the expression is evaluated to zero, the frame is discarded.
23276
23277 If the evaluation result is negative or NaN, the frame is sent to the
23278 first output; otherwise it is sent to the output with index
23279 @code{ceil(val)-1}, assuming that the input index starts from 0.
23280
23281 For example a value of @code{1.2} corresponds to the output with index
23282 @code{ceil(1.2)-1 = 2-1 = 1}, that is the second output.
23283
23284 @item outputs, n
23285 Set the number of outputs. The output to which to send the selected
23286 frame is based on the result of the evaluation. Default value is 1.
23287 @end table
23288
23289 The expression can contain the following constants:
23290
23291 @table @option
23292 @item n
23293 The (sequential) number of the filtered frame, starting from 0.
23294
23295 @item selected_n
23296 The (sequential) number of the selected frame, starting from 0.
23297
23298 @item prev_selected_n
23299 The sequential number of the last selected frame. It's NAN if undefined.
23300
23301 @item TB
23302 The timebase of the input timestamps.
23303
23304 @item pts
23305 The PTS (Presentation TimeStamp) of the filtered video frame,
23306 expressed in @var{TB} units. It's NAN if undefined.
23307
23308 @item t
23309 The PTS of the filtered video frame,
23310 expressed in seconds. It's NAN if undefined.
23311
23312 @item prev_pts
23313 The PTS of the previously filtered video frame. It's NAN if undefined.
23314
23315 @item prev_selected_pts
23316 The PTS of the last previously filtered video frame. It's NAN if undefined.
23317
23318 @item prev_selected_t
23319 The PTS of the last previously selected video frame, expressed in seconds. It's NAN if undefined.
23320
23321 @item start_pts
23322 The PTS of the first video frame in the video. It's NAN if undefined.
23323
23324 @item start_t
23325 The time of the first video frame in the video. It's NAN if undefined.
23326
23327 @item pict_type @emph{(video only)}
23328 The type of the filtered frame. It can assume one of the following
23329 values:
23330 @table @option
23331 @item I
23332 @item P
23333 @item B
23334 @item S
23335 @item SI
23336 @item SP
23337 @item BI
23338 @end table
23339
23340 @item interlace_type @emph{(video only)}
23341 The frame interlace type. It can assume one of the following values:
23342 @table @option
23343 @item PROGRESSIVE
23344 The frame is progressive (not interlaced).
23345 @item TOPFIRST
23346 The frame is top-field-first.
23347 @item BOTTOMFIRST
23348 The frame is bottom-field-first.
23349 @end table
23350
23351 @item consumed_sample_n @emph{(audio only)}
23352 the number of selected samples before the current frame
23353
23354 @item samples_n @emph{(audio only)}
23355 the number of samples in the current frame
23356
23357 @item sample_rate @emph{(audio only)}
23358 the input sample rate
23359
23360 @item key
23361 This is 1 if the filtered frame is a key-frame, 0 otherwise.
23362
23363 @item pos
23364 the position in the file of the filtered frame, -1 if the information
23365 is not available (e.g. for synthetic video)
23366
23367 @item scene @emph{(video only)}
23368 value between 0 and 1 to indicate a new scene; a low value reflects a low
23369 probability for the current frame to introduce a new scene, while a higher
23370 value means the current frame is more likely to be one (see the example below)
23371
23372 @item concatdec_select
23373 The concat demuxer can select only part of a concat input file by setting an
23374 inpoint and an outpoint, but the output packets may not be entirely contained
23375 in the selected interval. By using this variable, it is possible to skip frames
23376 generated by the concat demuxer which are not exactly contained in the selected
23377 interval.
23378
23379 This works by comparing the frame pts against the @var{lavf.concat.start_time}
23380 and the @var{lavf.concat.duration} packet metadata values which are also
23381 present in the decoded frames.
23382
23383 The @var{concatdec_select} variable is -1 if the frame pts is at least
23384 start_time and either the duration metadata is missing or the frame pts is less
23385 than start_time + duration, 0 otherwise, and NaN if the start_time metadata is
23386 missing.
23387
23388 That basically means that an input frame is selected if its pts is within the
23389 interval set by the concat demuxer.
23390
23391 @end table
23392
23393 The default value of the select expression is "1".
23394
23395 @subsection Examples
23396
23397 @itemize
23398 @item
23399 Select all frames in input:
23400 @example
23401 select
23402 @end example
23403
23404 The example above is the same as:
23405 @example
23406 select=1
23407 @end example
23408
23409 @item
23410 Skip all frames:
23411 @example
23412 select=0
23413 @end example
23414
23415 @item
23416 Select only I-frames:
23417 @example
23418 select='eq(pict_type\,I)'
23419 @end example
23420
23421 @item
23422 Select one frame every 100:
23423 @example
23424 select='not(mod(n\,100))'
23425 @end example
23426
23427 @item
23428 Select only frames contained in the 10-20 time interval:
23429 @example
23430 select=between(t\,10\,20)
23431 @end example
23432
23433 @item
23434 Select only I-frames contained in the 10-20 time interval:
23435 @example
23436 select=between(t\,10\,20)*eq(pict_type\,I)
23437 @end example
23438
23439 @item
23440 Select frames with a minimum distance of 10 seconds:
23441 @example
23442 select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
23443 @end example
23444
23445 @item
23446 Use aselect to select only audio frames with samples number > 100:
23447 @example
23448 aselect='gt(samples_n\,100)'
23449 @end example
23450
23451 @item
23452 Create a mosaic of the first scenes:
23453 @example
23454 ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
23455 @end example
23456
23457 Comparing @var{scene} against a value between 0.3 and 0.5 is generally a sane
23458 choice.
23459
23460 @item
23461 Send even and odd frames to separate outputs, and compose them:
23462 @example
23463 select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
23464 @end example
23465
23466 @item
23467 Select useful frames from an ffconcat file which is using inpoints and
23468 outpoints but where the source files are not intra frame only.
23469 @example
23470 ffmpeg -copyts -vsync 0 -segment_time_metadata 1 -i input.ffconcat -vf select=concatdec_select -af aselect=concatdec_select output.avi
23471 @end example
23472 @end itemize
23473
23474 @section sendcmd, asendcmd
23475
23476 Send commands to filters in the filtergraph.
23477
23478 These filters read commands to be sent to other filters in the
23479 filtergraph.
23480
23481 @code{sendcmd} must be inserted between two video filters,
23482 @code{asendcmd} must be inserted between two audio filters, but apart
23483 from that they act the same way.
23484
23485 The specification of commands can be provided in the filter arguments
23486 with the @var{commands} option, or in a file specified by the
23487 @var{filename} option.
23488
23489 These filters accept the following options:
23490 @table @option
23491 @item commands, c
23492 Set the commands to be read and sent to the other filters.
23493 @item filename, f
23494 Set the filename of the commands to be read and sent to the other
23495 filters.
23496 @end table
23497
23498 @subsection Commands syntax
23499
23500 A commands description consists of a sequence of interval
23501 specifications, comprising a list of commands to be executed when a
23502 particular event related to that interval occurs. The occurring event
23503 is typically the current frame time entering or leaving a given time
23504 interval.
23505
23506 An interval is specified by the following syntax:
23507 @example
23508 @var{START}[-@var{END}] @var{COMMANDS};
23509 @end example
23510
23511 The time interval is specified by the @var{START} and @var{END} times.
23512 @var{END} is optional and defaults to the maximum time.
23513
23514 The current frame time is considered within the specified interval if
23515 it is included in the interval [@var{START}, @var{END}), that is when
23516 the time is greater or equal to @var{START} and is lesser than
23517 @var{END}.
23518
23519 @var{COMMANDS} consists of a sequence of one or more command
23520 specifications, separated by ",", relating to that interval.  The
23521 syntax of a command specification is given by:
23522 @example
23523 [@var{FLAGS}] @var{TARGET} @var{COMMAND} @var{ARG}
23524 @end example
23525
23526 @var{FLAGS} is optional and specifies the type of events relating to
23527 the time interval which enable sending the specified command, and must
23528 be a non-null sequence of identifier flags separated by "+" or "|" and
23529 enclosed between "[" and "]".
23530
23531 The following flags are recognized:
23532 @table @option
23533 @item enter
23534 The command is sent when the current frame timestamp enters the
23535 specified interval. In other words, the command is sent when the
23536 previous frame timestamp was not in the given interval, and the
23537 current is.
23538
23539 @item leave
23540 The command is sent when the current frame timestamp leaves the
23541 specified interval. In other words, the command is sent when the
23542 previous frame timestamp was in the given interval, and the
23543 current is not.
23544 @end table
23545
23546 If @var{FLAGS} is not specified, a default value of @code{[enter]} is
23547 assumed.
23548
23549 @var{TARGET} specifies the target of the command, usually the name of
23550 the filter class or a specific filter instance name.
23551
23552 @var{COMMAND} specifies the name of the command for the target filter.
23553
23554 @var{ARG} is optional and specifies the optional list of argument for
23555 the given @var{COMMAND}.
23556
23557 Between one interval specification and another, whitespaces, or
23558 sequences of characters starting with @code{#} until the end of line,
23559 are ignored and can be used to annotate comments.
23560
23561 A simplified BNF description of the commands specification syntax
23562 follows:
23563 @example
23564 @var{COMMAND_FLAG}  ::= "enter" | "leave"
23565 @var{COMMAND_FLAGS} ::= @var{COMMAND_FLAG} [(+|"|")@var{COMMAND_FLAG}]
23566 @var{COMMAND}       ::= ["[" @var{COMMAND_FLAGS} "]"] @var{TARGET} @var{COMMAND} [@var{ARG}]
23567 @var{COMMANDS}      ::= @var{COMMAND} [,@var{COMMANDS}]
23568 @var{INTERVAL}      ::= @var{START}[-@var{END}] @var{COMMANDS}
23569 @var{INTERVALS}     ::= @var{INTERVAL}[;@var{INTERVALS}]
23570 @end example
23571
23572 @subsection Examples
23573
23574 @itemize
23575 @item
23576 Specify audio tempo change at second 4:
23577 @example
23578 asendcmd=c='4.0 atempo tempo 1.5',atempo
23579 @end example
23580
23581 @item
23582 Target a specific filter instance:
23583 @example
23584 asendcmd=c='4.0 atempo@@my tempo 1.5',atempo@@my
23585 @end example
23586
23587 @item
23588 Specify a list of drawtext and hue commands in a file.
23589 @example
23590 # show text in the interval 5-10
23591 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
23592          [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
23593
23594 # desaturate the image in the interval 15-20
23595 15.0-20.0 [enter] hue s 0,
23596           [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
23597           [leave] hue s 1,
23598           [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
23599
23600 # apply an exponential saturation fade-out effect, starting from time 25
23601 25 [enter] hue s exp(25-t)
23602 @end example
23603
23604 A filtergraph allowing to read and process the above command list
23605 stored in a file @file{test.cmd}, can be specified with:
23606 @example
23607 sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
23608 @end example
23609 @end itemize
23610
23611 @anchor{setpts}
23612 @section setpts, asetpts
23613
23614 Change the PTS (presentation timestamp) of the input frames.
23615
23616 @code{setpts} works on video frames, @code{asetpts} on audio frames.
23617
23618 This filter accepts the following options:
23619
23620 @table @option
23621
23622 @item expr
23623 The expression which is evaluated for each frame to construct its timestamp.
23624
23625 @end table
23626
23627 The expression is evaluated through the eval API and can contain the following
23628 constants:
23629
23630 @table @option
23631 @item FRAME_RATE, FR
23632 frame rate, only defined for constant frame-rate video
23633
23634 @item PTS
23635 The presentation timestamp in input
23636
23637 @item N
23638 The count of the input frame for video or the number of consumed samples,
23639 not including the current frame for audio, starting from 0.
23640
23641 @item NB_CONSUMED_SAMPLES
23642 The number of consumed samples, not including the current frame (only
23643 audio)
23644
23645 @item NB_SAMPLES, S
23646 The number of samples in the current frame (only audio)
23647
23648 @item SAMPLE_RATE, SR
23649 The audio sample rate.
23650
23651 @item STARTPTS
23652 The PTS of the first frame.
23653
23654 @item STARTT
23655 the time in seconds of the first frame
23656
23657 @item INTERLACED
23658 State whether the current frame is interlaced.
23659
23660 @item T
23661 the time in seconds of the current frame
23662
23663 @item POS
23664 original position in the file of the frame, or undefined if undefined
23665 for the current frame
23666
23667 @item PREV_INPTS
23668 The previous input PTS.
23669
23670 @item PREV_INT
23671 previous input time in seconds
23672
23673 @item PREV_OUTPTS
23674 The previous output PTS.
23675
23676 @item PREV_OUTT
23677 previous output time in seconds
23678
23679 @item RTCTIME
23680 The wallclock (RTC) time in microseconds. This is deprecated, use time(0)
23681 instead.
23682
23683 @item RTCSTART
23684 The wallclock (RTC) time at the start of the movie in microseconds.
23685
23686 @item TB
23687 The timebase of the input timestamps.
23688
23689 @end table
23690
23691 @subsection Examples
23692
23693 @itemize
23694 @item
23695 Start counting PTS from zero
23696 @example
23697 setpts=PTS-STARTPTS
23698 @end example
23699
23700 @item
23701 Apply fast motion effect:
23702 @example
23703 setpts=0.5*PTS
23704 @end example
23705
23706 @item
23707 Apply slow motion effect:
23708 @example
23709 setpts=2.0*PTS
23710 @end example
23711
23712 @item
23713 Set fixed rate of 25 frames per second:
23714 @example
23715 setpts=N/(25*TB)
23716 @end example
23717
23718 @item
23719 Set fixed rate 25 fps with some jitter:
23720 @example
23721 setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
23722 @end example
23723
23724 @item
23725 Apply an offset of 10 seconds to the input PTS:
23726 @example
23727 setpts=PTS+10/TB
23728 @end example
23729
23730 @item
23731 Generate timestamps from a "live source" and rebase onto the current timebase:
23732 @example
23733 setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
23734 @end example
23735
23736 @item
23737 Generate timestamps by counting samples:
23738 @example
23739 asetpts=N/SR/TB
23740 @end example
23741
23742 @end itemize
23743
23744 @section setrange
23745
23746 Force color range for the output video frame.
23747
23748 The @code{setrange} filter marks the color range property for the
23749 output frames. It does not change the input frame, but only sets the
23750 corresponding property, which affects how the frame is treated by
23751 following filters.
23752
23753 The filter accepts the following options:
23754
23755 @table @option
23756
23757 @item range
23758 Available values are:
23759
23760 @table @samp
23761 @item auto
23762 Keep the same color range property.
23763
23764 @item unspecified, unknown
23765 Set the color range as unspecified.
23766
23767 @item limited, tv, mpeg
23768 Set the color range as limited.
23769
23770 @item full, pc, jpeg
23771 Set the color range as full.
23772 @end table
23773 @end table
23774
23775 @section settb, asettb
23776
23777 Set the timebase to use for the output frames timestamps.
23778 It is mainly useful for testing timebase configuration.
23779
23780 It accepts the following parameters:
23781
23782 @table @option
23783
23784 @item expr, tb
23785 The expression which is evaluated into the output timebase.
23786
23787 @end table
23788
23789 The value for @option{tb} is an arithmetic expression representing a
23790 rational. The expression can contain the constants "AVTB" (the default
23791 timebase), "intb" (the input timebase) and "sr" (the sample rate,
23792 audio only). Default value is "intb".
23793
23794 @subsection Examples
23795
23796 @itemize
23797 @item
23798 Set the timebase to 1/25:
23799 @example
23800 settb=expr=1/25
23801 @end example
23802
23803 @item
23804 Set the timebase to 1/10:
23805 @example
23806 settb=expr=0.1
23807 @end example
23808
23809 @item
23810 Set the timebase to 1001/1000:
23811 @example
23812 settb=1+0.001
23813 @end example
23814
23815 @item
23816 Set the timebase to 2*intb:
23817 @example
23818 settb=2*intb
23819 @end example
23820
23821 @item
23822 Set the default timebase value:
23823 @example
23824 settb=AVTB
23825 @end example
23826 @end itemize
23827
23828 @section showcqt
23829 Convert input audio to a video output representing frequency spectrum
23830 logarithmically using Brown-Puckette constant Q transform algorithm with
23831 direct frequency domain coefficient calculation (but the transform itself
23832 is not really constant Q, instead the Q factor is actually variable/clamped),
23833 with musical tone scale, from E0 to D#10.
23834
23835 The filter accepts the following options:
23836
23837 @table @option
23838 @item size, s
23839 Specify the video size for the output. It must be even. For the syntax of this option,
23840 check the @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23841 Default value is @code{1920x1080}.
23842
23843 @item fps, rate, r
23844 Set the output frame rate. Default value is @code{25}.
23845
23846 @item bar_h
23847 Set the bargraph height. It must be even. Default value is @code{-1} which
23848 computes the bargraph height automatically.
23849
23850 @item axis_h
23851 Set the axis height. It must be even. Default value is @code{-1} which computes
23852 the axis height automatically.
23853
23854 @item sono_h
23855 Set the sonogram height. It must be even. Default value is @code{-1} which
23856 computes the sonogram height automatically.
23857
23858 @item fullhd
23859 Set the fullhd resolution. This option is deprecated, use @var{size}, @var{s}
23860 instead. Default value is @code{1}.
23861
23862 @item sono_v, volume
23863 Specify the sonogram volume expression. It can contain variables:
23864 @table @option
23865 @item bar_v
23866 the @var{bar_v} evaluated expression
23867 @item frequency, freq, f
23868 the frequency where it is evaluated
23869 @item timeclamp, tc
23870 the value of @var{timeclamp} option
23871 @end table
23872 and functions:
23873 @table @option
23874 @item a_weighting(f)
23875 A-weighting of equal loudness
23876 @item b_weighting(f)
23877 B-weighting of equal loudness
23878 @item c_weighting(f)
23879 C-weighting of equal loudness.
23880 @end table
23881 Default value is @code{16}.
23882
23883 @item bar_v, volume2
23884 Specify the bargraph volume expression. It can contain variables:
23885 @table @option
23886 @item sono_v
23887 the @var{sono_v} evaluated expression
23888 @item frequency, freq, f
23889 the frequency where it is evaluated
23890 @item timeclamp, tc
23891 the value of @var{timeclamp} option
23892 @end table
23893 and functions:
23894 @table @option
23895 @item a_weighting(f)
23896 A-weighting of equal loudness
23897 @item b_weighting(f)
23898 B-weighting of equal loudness
23899 @item c_weighting(f)
23900 C-weighting of equal loudness.
23901 @end table
23902 Default value is @code{sono_v}.
23903
23904 @item sono_g, gamma
23905 Specify the sonogram gamma. Lower gamma makes the spectrum more contrast,
23906 higher gamma makes the spectrum having more range. Default value is @code{3}.
23907 Acceptable range is @code{[1, 7]}.
23908
23909 @item bar_g, gamma2
23910 Specify the bargraph gamma. Default value is @code{1}. Acceptable range is
23911 @code{[1, 7]}.
23912
23913 @item bar_t
23914 Specify the bargraph transparency level. Lower value makes the bargraph sharper.
23915 Default value is @code{1}. Acceptable range is @code{[0, 1]}.
23916
23917 @item timeclamp, tc
23918 Specify the transform timeclamp. At low frequency, there is trade-off between
23919 accuracy in time domain and frequency domain. If timeclamp is lower,
23920 event in time domain is represented more accurately (such as fast bass drum),
23921 otherwise event in frequency domain is represented more accurately
23922 (such as bass guitar). Acceptable range is @code{[0.002, 1]}. Default value is @code{0.17}.
23923
23924 @item attack
23925 Set attack time in seconds. The default is @code{0} (disabled). Otherwise, it
23926 limits future samples by applying asymmetric windowing in time domain, useful
23927 when low latency is required. Accepted range is @code{[0, 1]}.
23928
23929 @item basefreq
23930 Specify the transform base frequency. Default value is @code{20.01523126408007475},
23931 which is frequency 50 cents below E0. Acceptable range is @code{[10, 100000]}.
23932
23933 @item endfreq
23934 Specify the transform end frequency. Default value is @code{20495.59681441799654},
23935 which is frequency 50 cents above D#10. Acceptable range is @code{[10, 100000]}.
23936
23937 @item coeffclamp
23938 This option is deprecated and ignored.
23939
23940 @item tlength
23941 Specify the transform length in time domain. Use this option to control accuracy
23942 trade-off between time domain and frequency domain at every frequency sample.
23943 It can contain variables:
23944 @table @option
23945 @item frequency, freq, f
23946 the frequency where it is evaluated
23947 @item timeclamp, tc
23948 the value of @var{timeclamp} option.
23949 @end table
23950 Default value is @code{384*tc/(384+tc*f)}.
23951
23952 @item count
23953 Specify the transform count for every video frame. Default value is @code{6}.
23954 Acceptable range is @code{[1, 30]}.
23955
23956 @item fcount
23957 Specify the transform count for every single pixel. Default value is @code{0},
23958 which makes it computed automatically. Acceptable range is @code{[0, 10]}.
23959
23960 @item fontfile
23961 Specify font file for use with freetype to draw the axis. If not specified,
23962 use embedded font. Note that drawing with font file or embedded font is not
23963 implemented with custom @var{basefreq} and @var{endfreq}, use @var{axisfile}
23964 option instead.
23965
23966 @item font
23967 Specify fontconfig pattern. This has lower priority than @var{fontfile}. The
23968 @code{:} in the pattern may be replaced by @code{|} to avoid unnecessary
23969 escaping.
23970
23971 @item fontcolor
23972 Specify font color expression. This is arithmetic expression that should return
23973 integer value 0xRRGGBB. It can contain variables:
23974 @table @option
23975 @item frequency, freq, f
23976 the frequency where it is evaluated
23977 @item timeclamp, tc
23978 the value of @var{timeclamp} option
23979 @end table
23980 and functions:
23981 @table @option
23982 @item midi(f)
23983 midi number of frequency f, some midi numbers: E0(16), C1(24), C2(36), A4(69)
23984 @item r(x), g(x), b(x)
23985 red, green, and blue value of intensity x.
23986 @end table
23987 Default value is @code{st(0, (midi(f)-59.5)/12);
23988 st(1, if(between(ld(0),0,1), 0.5-0.5*cos(2*PI*ld(0)), 0));
23989 r(1-ld(1)) + b(ld(1))}.
23990
23991 @item axisfile
23992 Specify image file to draw the axis. This option override @var{fontfile} and
23993 @var{fontcolor} option.
23994
23995 @item axis, text
23996 Enable/disable drawing text to the axis. If it is set to @code{0}, drawing to
23997 the axis is disabled, ignoring @var{fontfile} and @var{axisfile} option.
23998 Default value is @code{1}.
23999
24000 @item csp
24001 Set colorspace. The accepted values are:
24002 @table @samp
24003 @item unspecified
24004 Unspecified (default)
24005
24006 @item bt709
24007 BT.709
24008
24009 @item fcc
24010 FCC
24011
24012 @item bt470bg
24013 BT.470BG or BT.601-6 625
24014
24015 @item smpte170m
24016 SMPTE-170M or BT.601-6 525
24017
24018 @item smpte240m
24019 SMPTE-240M
24020
24021 @item bt2020ncl
24022 BT.2020 with non-constant luminance
24023
24024 @end table
24025
24026 @item cscheme
24027 Set spectrogram color scheme. This is list of floating point values with format
24028 @code{left_r|left_g|left_b|right_r|right_g|right_b}.
24029 The default is @code{1|0.5|0|0|0.5|1}.
24030
24031 @end table
24032
24033 @subsection Examples
24034
24035 @itemize
24036 @item
24037 Playing audio while showing the spectrum:
24038 @example
24039 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
24040 @end example
24041
24042 @item
24043 Same as above, but with frame rate 30 fps:
24044 @example
24045 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
24046 @end example
24047
24048 @item
24049 Playing at 1280x720:
24050 @example
24051 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
24052 @end example
24053
24054 @item
24055 Disable sonogram display:
24056 @example
24057 sono_h=0
24058 @end example
24059
24060 @item
24061 A1 and its harmonics: A1, A2, (near)E3, A3:
24062 @example
24063 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),
24064                  asplit[a][out1]; [a] showcqt [out0]'
24065 @end example
24066
24067 @item
24068 Same as above, but with more accuracy in frequency domain:
24069 @example
24070 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),
24071                  asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]'
24072 @end example
24073
24074 @item
24075 Custom volume:
24076 @example
24077 bar_v=10:sono_v=bar_v*a_weighting(f)
24078 @end example
24079
24080 @item
24081 Custom gamma, now spectrum is linear to the amplitude.
24082 @example
24083 bar_g=2:sono_g=2
24084 @end example
24085
24086 @item
24087 Custom tlength equation:
24088 @example
24089 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)))'
24090 @end example
24091
24092 @item
24093 Custom fontcolor and fontfile, C-note is colored green, others are colored blue:
24094 @example
24095 fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
24096 @end example
24097
24098 @item
24099 Custom font using fontconfig:
24100 @example
24101 font='Courier New,Monospace,mono|bold'
24102 @end example
24103
24104 @item
24105 Custom frequency range with custom axis using image file:
24106 @example
24107 axisfile=myaxis.png:basefreq=40:endfreq=10000
24108 @end example
24109 @end itemize
24110
24111 @section showfreqs
24112
24113 Convert input audio to video output representing the audio power spectrum.
24114 Audio amplitude is on Y-axis while frequency is on X-axis.
24115
24116 The filter accepts the following options:
24117
24118 @table @option
24119 @item size, s
24120 Specify size of video. For the syntax of this option, check the
24121 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24122 Default is @code{1024x512}.
24123
24124 @item mode
24125 Set display mode.
24126 This set how each frequency bin will be represented.
24127
24128 It accepts the following values:
24129 @table @samp
24130 @item line
24131 @item bar
24132 @item dot
24133 @end table
24134 Default is @code{bar}.
24135
24136 @item ascale
24137 Set amplitude scale.
24138
24139 It accepts the following values:
24140 @table @samp
24141 @item lin
24142 Linear scale.
24143
24144 @item sqrt
24145 Square root scale.
24146
24147 @item cbrt
24148 Cubic root scale.
24149
24150 @item log
24151 Logarithmic scale.
24152 @end table
24153 Default is @code{log}.
24154
24155 @item fscale
24156 Set frequency scale.
24157
24158 It accepts the following values:
24159 @table @samp
24160 @item lin
24161 Linear scale.
24162
24163 @item log
24164 Logarithmic scale.
24165
24166 @item rlog
24167 Reverse logarithmic scale.
24168 @end table
24169 Default is @code{lin}.
24170
24171 @item win_size
24172 Set window size. Allowed range is from 16 to 65536.
24173
24174 Default is @code{2048}
24175
24176 @item win_func
24177 Set windowing function.
24178
24179 It accepts the following values:
24180 @table @samp
24181 @item rect
24182 @item bartlett
24183 @item hanning
24184 @item hamming
24185 @item blackman
24186 @item welch
24187 @item flattop
24188 @item bharris
24189 @item bnuttall
24190 @item bhann
24191 @item sine
24192 @item nuttall
24193 @item lanczos
24194 @item gauss
24195 @item tukey
24196 @item dolph
24197 @item cauchy
24198 @item parzen
24199 @item poisson
24200 @item bohman
24201 @end table
24202 Default is @code{hanning}.
24203
24204 @item overlap
24205 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
24206 which means optimal overlap for selected window function will be picked.
24207
24208 @item averaging
24209 Set time averaging. Setting this to 0 will display current maximal peaks.
24210 Default is @code{1}, which means time averaging is disabled.
24211
24212 @item colors
24213 Specify list of colors separated by space or by '|' which will be used to
24214 draw channel frequencies. Unrecognized or missing colors will be replaced
24215 by white color.
24216
24217 @item cmode
24218 Set channel display mode.
24219
24220 It accepts the following values:
24221 @table @samp
24222 @item combined
24223 @item separate
24224 @end table
24225 Default is @code{combined}.
24226
24227 @item minamp
24228 Set minimum amplitude used in @code{log} amplitude scaler.
24229
24230 @end table
24231
24232 @section showspatial
24233
24234 Convert stereo input audio to a video output, representing the spatial relationship
24235 between two channels.
24236
24237 The filter accepts the following options:
24238
24239 @table @option
24240 @item size, s
24241 Specify the video size for the output. For the syntax of this option, check the
24242 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24243 Default value is @code{512x512}.
24244
24245 @item win_size
24246 Set window size. Allowed range is from @var{1024} to @var{65536}. Default size is @var{4096}.
24247
24248 @item win_func
24249 Set window function.
24250
24251 It accepts the following values:
24252 @table @samp
24253 @item rect
24254 @item bartlett
24255 @item hann
24256 @item hanning
24257 @item hamming
24258 @item blackman
24259 @item welch
24260 @item flattop
24261 @item bharris
24262 @item bnuttall
24263 @item bhann
24264 @item sine
24265 @item nuttall
24266 @item lanczos
24267 @item gauss
24268 @item tukey
24269 @item dolph
24270 @item cauchy
24271 @item parzen
24272 @item poisson
24273 @item bohman
24274 @end table
24275
24276 Default value is @code{hann}.
24277
24278 @item overlap
24279 Set ratio of overlap window. Default value is @code{0.5}.
24280 When value is @code{1} overlap is set to recommended size for specific
24281 window function currently used.
24282 @end table
24283
24284 @anchor{showspectrum}
24285 @section showspectrum
24286
24287 Convert input audio to a video output, representing the audio frequency
24288 spectrum.
24289
24290 The filter accepts the following options:
24291
24292 @table @option
24293 @item size, s
24294 Specify the video size for the output. For the syntax of this option, check the
24295 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24296 Default value is @code{640x512}.
24297
24298 @item slide
24299 Specify how the spectrum should slide along the window.
24300
24301 It accepts the following values:
24302 @table @samp
24303 @item replace
24304 the samples start again on the left when they reach the right
24305 @item scroll
24306 the samples scroll from right to left
24307 @item fullframe
24308 frames are only produced when the samples reach the right
24309 @item rscroll
24310 the samples scroll from left to right
24311 @end table
24312
24313 Default value is @code{replace}.
24314
24315 @item mode
24316 Specify display mode.
24317
24318 It accepts the following values:
24319 @table @samp
24320 @item combined
24321 all channels are displayed in the same row
24322 @item separate
24323 all channels are displayed in separate rows
24324 @end table
24325
24326 Default value is @samp{combined}.
24327
24328 @item color
24329 Specify display color mode.
24330
24331 It accepts the following values:
24332 @table @samp
24333 @item channel
24334 each channel is displayed in a separate color
24335 @item intensity
24336 each channel is displayed using the same color scheme
24337 @item rainbow
24338 each channel is displayed using the rainbow color scheme
24339 @item moreland
24340 each channel is displayed using the moreland color scheme
24341 @item nebulae
24342 each channel is displayed using the nebulae color scheme
24343 @item fire
24344 each channel is displayed using the fire color scheme
24345 @item fiery
24346 each channel is displayed using the fiery color scheme
24347 @item fruit
24348 each channel is displayed using the fruit color scheme
24349 @item cool
24350 each channel is displayed using the cool color scheme
24351 @item magma
24352 each channel is displayed using the magma color scheme
24353 @item green
24354 each channel is displayed using the green color scheme
24355 @item viridis
24356 each channel is displayed using the viridis color scheme
24357 @item plasma
24358 each channel is displayed using the plasma color scheme
24359 @item cividis
24360 each channel is displayed using the cividis color scheme
24361 @item terrain
24362 each channel is displayed using the terrain color scheme
24363 @end table
24364
24365 Default value is @samp{channel}.
24366
24367 @item scale
24368 Specify scale used for calculating intensity color values.
24369
24370 It accepts the following values:
24371 @table @samp
24372 @item lin
24373 linear
24374 @item sqrt
24375 square root, default
24376 @item cbrt
24377 cubic root
24378 @item log
24379 logarithmic
24380 @item 4thrt
24381 4th root
24382 @item 5thrt
24383 5th root
24384 @end table
24385
24386 Default value is @samp{sqrt}.
24387
24388 @item fscale
24389 Specify frequency scale.
24390
24391 It accepts the following values:
24392 @table @samp
24393 @item lin
24394 linear
24395 @item log
24396 logarithmic
24397 @end table
24398
24399 Default value is @samp{lin}.
24400
24401 @item saturation
24402 Set saturation modifier for displayed colors. Negative values provide
24403 alternative color scheme. @code{0} is no saturation at all.
24404 Saturation must be in [-10.0, 10.0] range.
24405 Default value is @code{1}.
24406
24407 @item win_func
24408 Set window function.
24409
24410 It accepts the following values:
24411 @table @samp
24412 @item rect
24413 @item bartlett
24414 @item hann
24415 @item hanning
24416 @item hamming
24417 @item blackman
24418 @item welch
24419 @item flattop
24420 @item bharris
24421 @item bnuttall
24422 @item bhann
24423 @item sine
24424 @item nuttall
24425 @item lanczos
24426 @item gauss
24427 @item tukey
24428 @item dolph
24429 @item cauchy
24430 @item parzen
24431 @item poisson
24432 @item bohman
24433 @end table
24434
24435 Default value is @code{hann}.
24436
24437 @item orientation
24438 Set orientation of time vs frequency axis. Can be @code{vertical} or
24439 @code{horizontal}. Default is @code{vertical}.
24440
24441 @item overlap
24442 Set ratio of overlap window. Default value is @code{0}.
24443 When value is @code{1} overlap is set to recommended size for specific
24444 window function currently used.
24445
24446 @item gain
24447 Set scale gain for calculating intensity color values.
24448 Default value is @code{1}.
24449
24450 @item data
24451 Set which data to display. Can be @code{magnitude}, default or @code{phase}.
24452
24453 @item rotation
24454 Set color rotation, must be in [-1.0, 1.0] range.
24455 Default value is @code{0}.
24456
24457 @item start
24458 Set start frequency from which to display spectrogram. Default is @code{0}.
24459
24460 @item stop
24461 Set stop frequency to which to display spectrogram. Default is @code{0}.
24462
24463 @item fps
24464 Set upper frame rate limit. Default is @code{auto}, unlimited.
24465
24466 @item legend
24467 Draw time and frequency axes and legends. Default is disabled.
24468 @end table
24469
24470 The usage is very similar to the showwaves filter; see the examples in that
24471 section.
24472
24473 @subsection Examples
24474
24475 @itemize
24476 @item
24477 Large window with logarithmic color scaling:
24478 @example
24479 showspectrum=s=1280x480:scale=log
24480 @end example
24481
24482 @item
24483 Complete example for a colored and sliding spectrum per channel using @command{ffplay}:
24484 @example
24485 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
24486              [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
24487 @end example
24488 @end itemize
24489
24490 @section showspectrumpic
24491
24492 Convert input audio to a single video frame, representing the audio frequency
24493 spectrum.
24494
24495 The filter accepts the following options:
24496
24497 @table @option
24498 @item size, s
24499 Specify the video size for the output. For the syntax of this option, check the
24500 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24501 Default value is @code{4096x2048}.
24502
24503 @item mode
24504 Specify display mode.
24505
24506 It accepts the following values:
24507 @table @samp
24508 @item combined
24509 all channels are displayed in the same row
24510 @item separate
24511 all channels are displayed in separate rows
24512 @end table
24513 Default value is @samp{combined}.
24514
24515 @item color
24516 Specify display color mode.
24517
24518 It accepts the following values:
24519 @table @samp
24520 @item channel
24521 each channel is displayed in a separate color
24522 @item intensity
24523 each channel is displayed using the same color scheme
24524 @item rainbow
24525 each channel is displayed using the rainbow color scheme
24526 @item moreland
24527 each channel is displayed using the moreland color scheme
24528 @item nebulae
24529 each channel is displayed using the nebulae color scheme
24530 @item fire
24531 each channel is displayed using the fire color scheme
24532 @item fiery
24533 each channel is displayed using the fiery color scheme
24534 @item fruit
24535 each channel is displayed using the fruit color scheme
24536 @item cool
24537 each channel is displayed using the cool color scheme
24538 @item magma
24539 each channel is displayed using the magma color scheme
24540 @item green
24541 each channel is displayed using the green color scheme
24542 @item viridis
24543 each channel is displayed using the viridis color scheme
24544 @item plasma
24545 each channel is displayed using the plasma color scheme
24546 @item cividis
24547 each channel is displayed using the cividis color scheme
24548 @item terrain
24549 each channel is displayed using the terrain color scheme
24550 @end table
24551 Default value is @samp{intensity}.
24552
24553 @item scale
24554 Specify scale used for calculating intensity color values.
24555
24556 It accepts the following values:
24557 @table @samp
24558 @item lin
24559 linear
24560 @item sqrt
24561 square root, default
24562 @item cbrt
24563 cubic root
24564 @item log
24565 logarithmic
24566 @item 4thrt
24567 4th root
24568 @item 5thrt
24569 5th root
24570 @end table
24571 Default value is @samp{log}.
24572
24573 @item fscale
24574 Specify frequency scale.
24575
24576 It accepts the following values:
24577 @table @samp
24578 @item lin
24579 linear
24580 @item log
24581 logarithmic
24582 @end table
24583
24584 Default value is @samp{lin}.
24585
24586 @item saturation
24587 Set saturation modifier for displayed colors. Negative values provide
24588 alternative color scheme. @code{0} is no saturation at all.
24589 Saturation must be in [-10.0, 10.0] range.
24590 Default value is @code{1}.
24591
24592 @item win_func
24593 Set window function.
24594
24595 It accepts the following values:
24596 @table @samp
24597 @item rect
24598 @item bartlett
24599 @item hann
24600 @item hanning
24601 @item hamming
24602 @item blackman
24603 @item welch
24604 @item flattop
24605 @item bharris
24606 @item bnuttall
24607 @item bhann
24608 @item sine
24609 @item nuttall
24610 @item lanczos
24611 @item gauss
24612 @item tukey
24613 @item dolph
24614 @item cauchy
24615 @item parzen
24616 @item poisson
24617 @item bohman
24618 @end table
24619 Default value is @code{hann}.
24620
24621 @item orientation
24622 Set orientation of time vs frequency axis. Can be @code{vertical} or
24623 @code{horizontal}. Default is @code{vertical}.
24624
24625 @item gain
24626 Set scale gain for calculating intensity color values.
24627 Default value is @code{1}.
24628
24629 @item legend
24630 Draw time and frequency axes and legends. Default is enabled.
24631
24632 @item rotation
24633 Set color rotation, must be in [-1.0, 1.0] range.
24634 Default value is @code{0}.
24635
24636 @item start
24637 Set start frequency from which to display spectrogram. Default is @code{0}.
24638
24639 @item stop
24640 Set stop frequency to which to display spectrogram. Default is @code{0}.
24641 @end table
24642
24643 @subsection Examples
24644
24645 @itemize
24646 @item
24647 Extract an audio spectrogram of a whole audio track
24648 in a 1024x1024 picture using @command{ffmpeg}:
24649 @example
24650 ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
24651 @end example
24652 @end itemize
24653
24654 @section showvolume
24655
24656 Convert input audio volume to a video output.
24657
24658 The filter accepts the following options:
24659
24660 @table @option
24661 @item rate, r
24662 Set video rate.
24663
24664 @item b
24665 Set border width, allowed range is [0, 5]. Default is 1.
24666
24667 @item w
24668 Set channel width, allowed range is [80, 8192]. Default is 400.
24669
24670 @item h
24671 Set channel height, allowed range is [1, 900]. Default is 20.
24672
24673 @item f
24674 Set fade, allowed range is [0, 1]. Default is 0.95.
24675
24676 @item c
24677 Set volume color expression.
24678
24679 The expression can use the following variables:
24680
24681 @table @option
24682 @item VOLUME
24683 Current max volume of channel in dB.
24684
24685 @item PEAK
24686 Current peak.
24687
24688 @item CHANNEL
24689 Current channel number, starting from 0.
24690 @end table
24691
24692 @item t
24693 If set, displays channel names. Default is enabled.
24694
24695 @item v
24696 If set, displays volume values. Default is enabled.
24697
24698 @item o
24699 Set orientation, can be horizontal: @code{h} or vertical: @code{v},
24700 default is @code{h}.
24701
24702 @item s
24703 Set step size, allowed range is [0, 5]. Default is 0, which means
24704 step is disabled.
24705
24706 @item p
24707 Set background opacity, allowed range is [0, 1]. Default is 0.
24708
24709 @item m
24710 Set metering mode, can be peak: @code{p} or rms: @code{r},
24711 default is @code{p}.
24712
24713 @item ds
24714 Set display scale, can be linear: @code{lin} or log: @code{log},
24715 default is @code{lin}.
24716
24717 @item dm
24718 In second.
24719 If set to > 0., display a line for the max level
24720 in the previous seconds.
24721 default is disabled: @code{0.}
24722
24723 @item dmc
24724 The color of the max line. Use when @code{dm} option is set to > 0.
24725 default is: @code{orange}
24726 @end table
24727
24728 @section showwaves
24729
24730 Convert input audio to a video output, representing the samples waves.
24731
24732 The filter accepts the following options:
24733
24734 @table @option
24735 @item size, s
24736 Specify the video size for the output. For the syntax of this option, check the
24737 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24738 Default value is @code{600x240}.
24739
24740 @item mode
24741 Set display mode.
24742
24743 Available values are:
24744 @table @samp
24745 @item point
24746 Draw a point for each sample.
24747
24748 @item line
24749 Draw a vertical line for each sample.
24750
24751 @item p2p
24752 Draw a point for each sample and a line between them.
24753
24754 @item cline
24755 Draw a centered vertical line for each sample.
24756 @end table
24757
24758 Default value is @code{point}.
24759
24760 @item n
24761 Set the number of samples which are printed on the same column. A
24762 larger value will decrease the frame rate. Must be a positive
24763 integer. This option can be set only if the value for @var{rate}
24764 is not explicitly specified.
24765
24766 @item rate, r
24767 Set the (approximate) output frame rate. This is done by setting the
24768 option @var{n}. Default value is "25".
24769
24770 @item split_channels
24771 Set if channels should be drawn separately or overlap. Default value is 0.
24772
24773 @item colors
24774 Set colors separated by '|' which are going to be used for drawing of each channel.
24775
24776 @item scale
24777 Set amplitude scale.
24778
24779 Available values are:
24780 @table @samp
24781 @item lin
24782 Linear.
24783
24784 @item log
24785 Logarithmic.
24786
24787 @item sqrt
24788 Square root.
24789
24790 @item cbrt
24791 Cubic root.
24792 @end table
24793
24794 Default is linear.
24795
24796 @item draw
24797 Set the draw mode. This is mostly useful to set for high @var{n}.
24798
24799 Available values are:
24800 @table @samp
24801 @item scale
24802 Scale pixel values for each drawn sample.
24803
24804 @item full
24805 Draw every sample directly.
24806 @end table
24807
24808 Default value is @code{scale}.
24809 @end table
24810
24811 @subsection Examples
24812
24813 @itemize
24814 @item
24815 Output the input file audio and the corresponding video representation
24816 at the same time:
24817 @example
24818 amovie=a.mp3,asplit[out0],showwaves[out1]
24819 @end example
24820
24821 @item
24822 Create a synthetic signal and show it with showwaves, forcing a
24823 frame rate of 30 frames per second:
24824 @example
24825 aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
24826 @end example
24827 @end itemize
24828
24829 @section showwavespic
24830
24831 Convert input audio to a single video frame, representing the samples waves.
24832
24833 The filter accepts the following options:
24834
24835 @table @option
24836 @item size, s
24837 Specify the video size for the output. For the syntax of this option, check the
24838 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24839 Default value is @code{600x240}.
24840
24841 @item split_channels
24842 Set if channels should be drawn separately or overlap. Default value is 0.
24843
24844 @item colors
24845 Set colors separated by '|' which are going to be used for drawing of each channel.
24846
24847 @item scale
24848 Set amplitude scale.
24849
24850 Available values are:
24851 @table @samp
24852 @item lin
24853 Linear.
24854
24855 @item log
24856 Logarithmic.
24857
24858 @item sqrt
24859 Square root.
24860
24861 @item cbrt
24862 Cubic root.
24863 @end table
24864
24865 Default is linear.
24866
24867 @item draw
24868 Set the draw mode.
24869
24870 Available values are:
24871 @table @samp
24872 @item scale
24873 Scale pixel values for each drawn sample.
24874
24875 @item full
24876 Draw every sample directly.
24877 @end table
24878
24879 Default value is @code{scale}.
24880 @end table
24881
24882 @subsection Examples
24883
24884 @itemize
24885 @item
24886 Extract a channel split representation of the wave form of a whole audio track
24887 in a 1024x800 picture using @command{ffmpeg}:
24888 @example
24889 ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
24890 @end example
24891 @end itemize
24892
24893 @section sidedata, asidedata
24894
24895 Delete frame side data, or select frames based on it.
24896
24897 This filter accepts the following options:
24898
24899 @table @option
24900 @item mode
24901 Set mode of operation of the filter.
24902
24903 Can be one of the following:
24904
24905 @table @samp
24906 @item select
24907 Select every frame with side data of @code{type}.
24908
24909 @item delete
24910 Delete side data of @code{type}. If @code{type} is not set, delete all side
24911 data in the frame.
24912
24913 @end table
24914
24915 @item type
24916 Set side data type used with all modes. Must be set for @code{select} mode. For
24917 the list of frame side data types, refer to the @code{AVFrameSideDataType} enum
24918 in @file{libavutil/frame.h}. For example, to choose
24919 @code{AV_FRAME_DATA_PANSCAN} side data, you must specify @code{PANSCAN}.
24920
24921 @end table
24922
24923 @section spectrumsynth
24924
24925 Synthesize audio from 2 input video spectrums, first input stream represents
24926 magnitude across time and second represents phase across time.
24927 The filter will transform from frequency domain as displayed in videos back
24928 to time domain as presented in audio output.
24929
24930 This filter is primarily created for reversing processed @ref{showspectrum}
24931 filter outputs, but can synthesize sound from other spectrograms too.
24932 But in such case results are going to be poor if the phase data is not
24933 available, because in such cases phase data need to be recreated, usually
24934 it's just recreated from random noise.
24935 For best results use gray only output (@code{channel} color mode in
24936 @ref{showspectrum} filter) and @code{log} scale for magnitude video and
24937 @code{lin} scale for phase video. To produce phase, for 2nd video, use
24938 @code{data} option. Inputs videos should generally use @code{fullframe}
24939 slide mode as that saves resources needed for decoding video.
24940
24941 The filter accepts the following options:
24942
24943 @table @option
24944 @item sample_rate
24945 Specify sample rate of output audio, the sample rate of audio from which
24946 spectrum was generated may differ.
24947
24948 @item channels
24949 Set number of channels represented in input video spectrums.
24950
24951 @item scale
24952 Set scale which was used when generating magnitude input spectrum.
24953 Can be @code{lin} or @code{log}. Default is @code{log}.
24954
24955 @item slide
24956 Set slide which was used when generating inputs spectrums.
24957 Can be @code{replace}, @code{scroll}, @code{fullframe} or @code{rscroll}.
24958 Default is @code{fullframe}.
24959
24960 @item win_func
24961 Set window function used for resynthesis.
24962
24963 @item overlap
24964 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
24965 which means optimal overlap for selected window function will be picked.
24966
24967 @item orientation
24968 Set orientation of input videos. Can be @code{vertical} or @code{horizontal}.
24969 Default is @code{vertical}.
24970 @end table
24971
24972 @subsection Examples
24973
24974 @itemize
24975 @item
24976 First create magnitude and phase videos from audio, assuming audio is stereo with 44100 sample rate,
24977 then resynthesize videos back to audio with spectrumsynth:
24978 @example
24979 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
24980 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
24981 ffmpeg -i magnitude.nut -i phase.nut -lavfi spectrumsynth=channels=2:sample_rate=44100:win_func=hann:overlap=0.875:slide=fullframe output.flac
24982 @end example
24983 @end itemize
24984
24985 @section split, asplit
24986
24987 Split input into several identical outputs.
24988
24989 @code{asplit} works with audio input, @code{split} with video.
24990
24991 The filter accepts a single parameter which specifies the number of outputs. If
24992 unspecified, it defaults to 2.
24993
24994 @subsection Examples
24995
24996 @itemize
24997 @item
24998 Create two separate outputs from the same input:
24999 @example
25000 [in] split [out0][out1]
25001 @end example
25002
25003 @item
25004 To create 3 or more outputs, you need to specify the number of
25005 outputs, like in:
25006 @example
25007 [in] asplit=3 [out0][out1][out2]
25008 @end example
25009
25010 @item
25011 Create two separate outputs from the same input, one cropped and
25012 one padded:
25013 @example
25014 [in] split [splitout1][splitout2];
25015 [splitout1] crop=100:100:0:0    [cropout];
25016 [splitout2] pad=200:200:100:100 [padout];
25017 @end example
25018
25019 @item
25020 Create 5 copies of the input audio with @command{ffmpeg}:
25021 @example
25022 ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
25023 @end example
25024 @end itemize
25025
25026 @section zmq, azmq
25027
25028 Receive commands sent through a libzmq client, and forward them to
25029 filters in the filtergraph.
25030
25031 @code{zmq} and @code{azmq} work as a pass-through filters. @code{zmq}
25032 must be inserted between two video filters, @code{azmq} between two
25033 audio filters. Both are capable to send messages to any filter type.
25034
25035 To enable these filters you need to install the libzmq library and
25036 headers and configure FFmpeg with @code{--enable-libzmq}.
25037
25038 For more information about libzmq see:
25039 @url{http://www.zeromq.org/}
25040
25041 The @code{zmq} and @code{azmq} filters work as a libzmq server, which
25042 receives messages sent through a network interface defined by the
25043 @option{bind_address} (or the abbreviation "@option{b}") option.
25044 Default value of this option is @file{tcp://localhost:5555}. You may
25045 want to alter this value to your needs, but do not forget to escape any
25046 ':' signs (see @ref{filtergraph escaping}).
25047
25048 The received message must be in the form:
25049 @example
25050 @var{TARGET} @var{COMMAND} [@var{ARG}]
25051 @end example
25052
25053 @var{TARGET} specifies the target of the command, usually the name of
25054 the filter class or a specific filter instance name. The default
25055 filter instance name uses the pattern @samp{Parsed_<filter_name>_<index>},
25056 but you can override this by using the @samp{filter_name@@id} syntax
25057 (see @ref{Filtergraph syntax}).
25058
25059 @var{COMMAND} specifies the name of the command for the target filter.
25060
25061 @var{ARG} is optional and specifies the optional argument list for the
25062 given @var{COMMAND}.
25063
25064 Upon reception, the message is processed and the corresponding command
25065 is injected into the filtergraph. Depending on the result, the filter
25066 will send a reply to the client, adopting the format:
25067 @example
25068 @var{ERROR_CODE} @var{ERROR_REASON}
25069 @var{MESSAGE}
25070 @end example
25071
25072 @var{MESSAGE} is optional.
25073
25074 @subsection Examples
25075
25076 Look at @file{tools/zmqsend} for an example of a zmq client which can
25077 be used to send commands processed by these filters.
25078
25079 Consider the following filtergraph generated by @command{ffplay}.
25080 In this example the last overlay filter has an instance name. All other
25081 filters will have default instance names.
25082
25083 @example
25084 ffplay -dumpgraph 1 -f lavfi "
25085 color=s=100x100:c=red  [l];
25086 color=s=100x100:c=blue [r];
25087 nullsrc=s=200x100, zmq [bg];
25088 [bg][l]   overlay     [bg+l];
25089 [bg+l][r] overlay@@my=x=100 "
25090 @end example
25091
25092 To change the color of the left side of the video, the following
25093 command can be used:
25094 @example
25095 echo Parsed_color_0 c yellow | tools/zmqsend
25096 @end example
25097
25098 To change the right side:
25099 @example
25100 echo Parsed_color_1 c pink | tools/zmqsend
25101 @end example
25102
25103 To change the position of the right side:
25104 @example
25105 echo overlay@@my x 150 | tools/zmqsend
25106 @end example
25107
25108
25109 @c man end MULTIMEDIA FILTERS
25110
25111 @chapter Multimedia Sources
25112 @c man begin MULTIMEDIA SOURCES
25113
25114 Below is a description of the currently available multimedia sources.
25115
25116 @section amovie
25117
25118 This is the same as @ref{movie} source, except it selects an audio
25119 stream by default.
25120
25121 @anchor{movie}
25122 @section movie
25123
25124 Read audio and/or video stream(s) from a movie container.
25125
25126 It accepts the following parameters:
25127
25128 @table @option
25129 @item filename
25130 The name of the resource to read (not necessarily a file; it can also be a
25131 device or a stream accessed through some protocol).
25132
25133 @item format_name, f
25134 Specifies the format assumed for the movie to read, and can be either
25135 the name of a container or an input device. If not specified, the
25136 format is guessed from @var{movie_name} or by probing.
25137
25138 @item seek_point, sp
25139 Specifies the seek point in seconds. The frames will be output
25140 starting from this seek point. The parameter is evaluated with
25141 @code{av_strtod}, so the numerical value may be suffixed by an IS
25142 postfix. The default value is "0".
25143
25144 @item streams, s
25145 Specifies the streams to read. Several streams can be specified,
25146 separated by "+". The source will then have as many outputs, in the
25147 same order. The syntax is explained in the @ref{Stream specifiers,,"Stream specifiers"
25148 section in the ffmpeg manual,ffmpeg}. Two special names, "dv" and "da" specify
25149 respectively the default (best suited) video and audio stream. Default
25150 is "dv", or "da" if the filter is called as "amovie".
25151
25152 @item stream_index, si
25153 Specifies the index of the video stream to read. If the value is -1,
25154 the most suitable video stream will be automatically selected. The default
25155 value is "-1". Deprecated. If the filter is called "amovie", it will select
25156 audio instead of video.
25157
25158 @item loop
25159 Specifies how many times to read the stream in sequence.
25160 If the value is 0, the stream will be looped infinitely.
25161 Default value is "1".
25162
25163 Note that when the movie is looped the source timestamps are not
25164 changed, so it will generate non monotonically increasing timestamps.
25165
25166 @item discontinuity
25167 Specifies the time difference between frames above which the point is
25168 considered a timestamp discontinuity which is removed by adjusting the later
25169 timestamps.
25170 @end table
25171
25172 It allows overlaying a second video on top of the main input of
25173 a filtergraph, as shown in this graph:
25174 @example
25175 input -----------> deltapts0 --> overlay --> output
25176                                     ^
25177                                     |
25178 movie --> scale--> deltapts1 -------+
25179 @end example
25180 @subsection Examples
25181
25182 @itemize
25183 @item
25184 Skip 3.2 seconds from the start of the AVI file in.avi, and overlay it
25185 on top of the input labelled "in":
25186 @example
25187 movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
25188 [in] setpts=PTS-STARTPTS [main];
25189 [main][over] overlay=16:16 [out]
25190 @end example
25191
25192 @item
25193 Read from a video4linux2 device, and overlay it on top of the input
25194 labelled "in":
25195 @example
25196 movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
25197 [in] setpts=PTS-STARTPTS [main];
25198 [main][over] overlay=16:16 [out]
25199 @end example
25200
25201 @item
25202 Read the first video stream and the audio stream with id 0x81 from
25203 dvd.vob; the video is connected to the pad named "video" and the audio is
25204 connected to the pad named "audio":
25205 @example
25206 movie=dvd.vob:s=v:0+#0x81 [video] [audio]
25207 @end example
25208 @end itemize
25209
25210 @subsection Commands
25211
25212 Both movie and amovie support the following commands:
25213 @table @option
25214 @item seek
25215 Perform seek using "av_seek_frame".
25216 The syntax is: seek @var{stream_index}|@var{timestamp}|@var{flags}
25217 @itemize
25218 @item
25219 @var{stream_index}: If stream_index is -1, a default
25220 stream is selected, and @var{timestamp} is automatically converted
25221 from AV_TIME_BASE units to the stream specific time_base.
25222 @item
25223 @var{timestamp}: Timestamp in AVStream.time_base units
25224 or, if no stream is specified, in AV_TIME_BASE units.
25225 @item
25226 @var{flags}: Flags which select direction and seeking mode.
25227 @end itemize
25228
25229 @item get_duration
25230 Get movie duration in AV_TIME_BASE units.
25231
25232 @end table
25233
25234 @c man end MULTIMEDIA SOURCES