]> git.sesse.net Git - ffmpeg/blob - doc/filters.texi
035094d8f81955a442ac37a087a22bb45a6345b7
[ffmpeg] / doc / filters.texi
1 @chapter Filtering Introduction
2 @c man begin FILTERING INTRODUCTION
3
4 Filtering in FFmpeg is enabled through the libavfilter library.
5
6 In libavfilter, a filter can have multiple inputs and multiple
7 outputs.
8 To illustrate the sorts of things that are possible, we consider the
9 following filtergraph.
10
11 @verbatim
12                 [main]
13 input --> split ---------------------> overlay --> output
14             |                             ^
15             |[tmp]                  [flip]|
16             +-----> crop --> vflip -------+
17 @end verbatim
18
19 This filtergraph splits the input stream in two streams, then sends one
20 stream through the crop filter and the vflip filter, before merging it
21 back with the other stream by overlaying it on top. You can use the
22 following command to achieve this:
23
24 @example
25 ffmpeg -i INPUT -vf "split [main][tmp]; [tmp] crop=iw:ih/2:0:0, vflip [flip]; [main][flip] overlay=0:H/2" OUTPUT
26 @end example
27
28 The result will be that the top half of the video is mirrored
29 onto the bottom half of the output video.
30
31 Filters in the same linear chain are separated by commas, and distinct
32 linear chains of filters are separated by semicolons. In our example,
33 @var{crop,vflip} are in one linear chain, @var{split} and
34 @var{overlay} are separately in another. The points where the linear
35 chains join are labelled by names enclosed in square brackets. In the
36 example, the split filter generates two outputs that are associated to
37 the labels @var{[main]} and @var{[tmp]}.
38
39 The stream sent to the second output of @var{split}, labelled as
40 @var{[tmp]}, is processed through the @var{crop} filter, which crops
41 away the lower half part of the video, and then vertically flipped. The
42 @var{overlay} filter takes in input the first unchanged output of the
43 split filter (which was labelled as @var{[main]}), and overlay on its
44 lower half the output generated by the @var{crop,vflip} filterchain.
45
46 Some filters take in input a list of parameters: they are specified
47 after the filter name and an equal sign, and are separated from each other
48 by a colon.
49
50 There exist so-called @var{source filters} that do not have an
51 audio/video input, and @var{sink filters} that will not have audio/video
52 output.
53
54 @c man end FILTERING INTRODUCTION
55
56 @chapter graph2dot
57 @c man begin GRAPH2DOT
58
59 The @file{graph2dot} program included in the FFmpeg @file{tools}
60 directory can be used to parse a filtergraph description and issue a
61 corresponding textual representation in the dot language.
62
63 Invoke the command:
64 @example
65 graph2dot -h
66 @end example
67
68 to see how to use @file{graph2dot}.
69
70 You can then pass the dot description to the @file{dot} program (from
71 the graphviz suite of programs) and obtain a graphical representation
72 of the filtergraph.
73
74 For example the sequence of commands:
75 @example
76 echo @var{GRAPH_DESCRIPTION} | \
77 tools/graph2dot -o graph.tmp && \
78 dot -Tpng graph.tmp -o graph.png && \
79 display graph.png
80 @end example
81
82 can be used to create and display an image representing the graph
83 described by the @var{GRAPH_DESCRIPTION} string. Note that this string must be
84 a complete self-contained graph, with its inputs and outputs explicitly defined.
85 For example if your command line is of the form:
86 @example
87 ffmpeg -i infile -vf scale=640:360 outfile
88 @end example
89 your @var{GRAPH_DESCRIPTION} string will need to be of the form:
90 @example
91 nullsrc,scale=640:360,nullsink
92 @end example
93 you may also need to set the @var{nullsrc} parameters and add a @var{format}
94 filter in order to simulate a specific input file.
95
96 @c man end GRAPH2DOT
97
98 @chapter Filtergraph description
99 @c man begin FILTERGRAPH DESCRIPTION
100
101 A filtergraph is a directed graph of connected filters. It can contain
102 cycles, and there can be multiple links between a pair of
103 filters. Each link has one input pad on one side connecting it to one
104 filter from which it takes its input, and one output pad on the other
105 side connecting it to one filter accepting its output.
106
107 Each filter in a filtergraph is an instance of a filter class
108 registered in the application, which defines the features and the
109 number of input and output pads of the filter.
110
111 A filter with no input pads is called a "source", and a filter with no
112 output pads is called a "sink".
113
114 @anchor{Filtergraph syntax}
115 @section Filtergraph syntax
116
117 A filtergraph has a textual representation, which is recognized by the
118 @option{-filter}/@option{-vf}/@option{-af} and
119 @option{-filter_complex} options in @command{ffmpeg} and
120 @option{-vf}/@option{-af} in @command{ffplay}, and by the
121 @code{avfilter_graph_parse_ptr()} function defined in
122 @file{libavfilter/avfilter.h}.
123
124 A filterchain consists of a sequence of connected filters, each one
125 connected to the previous one in the sequence. A filterchain is
126 represented by a list of ","-separated filter descriptions.
127
128 A filtergraph consists of a sequence of filterchains. A sequence of
129 filterchains is represented by a list of ";"-separated filterchain
130 descriptions.
131
132 A filter is represented by a string of the form:
133 [@var{in_link_1}]...[@var{in_link_N}]@var{filter_name}@@@var{id}=@var{arguments}[@var{out_link_1}]...[@var{out_link_M}]
134
135 @var{filter_name} is the name of the filter class of which the
136 described filter is an instance of, and has to be the name of one of
137 the filter classes registered in the program optionally followed by "@@@var{id}".
138 The name of the filter class is optionally followed by a string
139 "=@var{arguments}".
140
141 @var{arguments} is a string which contains the parameters used to
142 initialize the filter instance. It may have one of two forms:
143 @itemize
144
145 @item
146 A ':'-separated list of @var{key=value} pairs.
147
148 @item
149 A ':'-separated list of @var{value}. In this case, the keys are assumed to be
150 the option names in the order they are declared. E.g. the @code{fade} filter
151 declares three options in this order -- @option{type}, @option{start_frame} and
152 @option{nb_frames}. Then the parameter list @var{in:0:30} means that the value
153 @var{in} is assigned to the option @option{type}, @var{0} to
154 @option{start_frame} and @var{30} to @option{nb_frames}.
155
156 @item
157 A ':'-separated list of mixed direct @var{value} and long @var{key=value}
158 pairs. The direct @var{value} must precede the @var{key=value} pairs, and
159 follow the same constraints order of the previous point. The following
160 @var{key=value} pairs can be set in any preferred order.
161
162 @end itemize
163
164 If the option value itself is a list of items (e.g. the @code{format} filter
165 takes a list of pixel formats), the items in the list are usually separated by
166 @samp{|}.
167
168 The list of arguments can be quoted using the character @samp{'} as initial
169 and ending mark, and the character @samp{\} for escaping the characters
170 within the quoted text; otherwise the argument string is considered
171 terminated when the next special character (belonging to the set
172 @samp{[]=;,}) is encountered.
173
174 The name and arguments of the filter are optionally preceded and
175 followed by a list of link labels.
176 A link label allows one to name a link and associate it to a filter output
177 or input pad. The preceding labels @var{in_link_1}
178 ... @var{in_link_N}, are associated to the filter input pads,
179 the following labels @var{out_link_1} ... @var{out_link_M}, are
180 associated to the output pads.
181
182 When two link labels with the same name are found in the
183 filtergraph, a link between the corresponding input and output pad is
184 created.
185
186 If an output pad is not labelled, it is linked by default to the first
187 unlabelled input pad of the next filter in the filterchain.
188 For example in the filterchain
189 @example
190 nullsrc, split[L1], [L2]overlay, nullsink
191 @end example
192 the split filter instance has two output pads, and the overlay filter
193 instance two input pads. The first output pad of split is labelled
194 "L1", the first input pad of overlay is labelled "L2", and the second
195 output pad of split is linked to the second input pad of overlay,
196 which are both unlabelled.
197
198 In a filter description, if the input label of the first filter is not
199 specified, "in" is assumed; if the output label of the last filter is not
200 specified, "out" is assumed.
201
202 In a complete filterchain all the unlabelled filter input and output
203 pads must be connected. A filtergraph is considered valid if all the
204 filter input and output pads of all the filterchains are connected.
205
206 Libavfilter will automatically insert @ref{scale} filters where format
207 conversion is required. It is possible to specify swscale flags
208 for those automatically inserted scalers by prepending
209 @code{sws_flags=@var{flags};}
210 to the filtergraph description.
211
212 Here is a BNF description of the filtergraph syntax:
213 @example
214 @var{NAME}             ::= sequence of alphanumeric characters and '_'
215 @var{FILTER_NAME}      ::= @var{NAME}["@@"@var{NAME}]
216 @var{LINKLABEL}        ::= "[" @var{NAME} "]"
217 @var{LINKLABELS}       ::= @var{LINKLABEL} [@var{LINKLABELS}]
218 @var{FILTER_ARGUMENTS} ::= sequence of chars (possibly quoted)
219 @var{FILTER}           ::= [@var{LINKLABELS}] @var{FILTER_NAME} ["=" @var{FILTER_ARGUMENTS}] [@var{LINKLABELS}]
220 @var{FILTERCHAIN}      ::= @var{FILTER} [,@var{FILTERCHAIN}]
221 @var{FILTERGRAPH}      ::= [sws_flags=@var{flags};] @var{FILTERCHAIN} [;@var{FILTERGRAPH}]
222 @end example
223
224 @anchor{filtergraph escaping}
225 @section Notes on filtergraph escaping
226
227 Filtergraph description composition entails several levels of
228 escaping. See @ref{quoting_and_escaping,,the "Quoting and escaping"
229 section in the ffmpeg-utils(1) manual,ffmpeg-utils} for more
230 information about the employed escaping procedure.
231
232 A first level escaping affects the content of each filter option
233 value, which may contain the special character @code{:} used to
234 separate values, or one of the escaping characters @code{\'}.
235
236 A second level escaping affects the whole filter description, which
237 may contain the escaping characters @code{\'} or the special
238 characters @code{[],;} used by the filtergraph description.
239
240 Finally, when you specify a filtergraph on a shell commandline, you
241 need to perform a third level escaping for the shell special
242 characters contained within it.
243
244 For example, consider the following string to be embedded in
245 the @ref{drawtext} filter description @option{text} value:
246 @example
247 this is a 'string': may contain one, or more, special characters
248 @end example
249
250 This string contains the @code{'} special escaping character, and the
251 @code{:} special character, so it needs to be escaped in this way:
252 @example
253 text=this is a \'string\'\: may contain one, or more, special characters
254 @end example
255
256 A second level of escaping is required when embedding the filter
257 description in a filtergraph description, in order to escape all the
258 filtergraph special characters. Thus the example above becomes:
259 @example
260 drawtext=text=this is a \\\'string\\\'\\: may contain one\, or more\, special characters
261 @end example
262 (note that in addition to the @code{\'} escaping special characters,
263 also @code{,} needs to be escaped).
264
265 Finally an additional level of escaping is needed when writing the
266 filtergraph description in a shell command, which depends on the
267 escaping rules of the adopted shell. For example, assuming that
268 @code{\} is special and needs to be escaped with another @code{\}, the
269 previous string will finally result in:
270 @example
271 -vf "drawtext=text=this is a \\\\\\'string\\\\\\'\\\\: may contain one\\, or more\\, special characters"
272 @end example
273
274 @chapter Timeline editing
275
276 Some filters support a generic @option{enable} option. For the filters
277 supporting timeline editing, this option can be set to an expression which is
278 evaluated before sending a frame to the filter. If the evaluation is non-zero,
279 the filter will be enabled, otherwise the frame will be sent unchanged to the
280 next filter in the filtergraph.
281
282 The expression accepts the following values:
283 @table @samp
284 @item t
285 timestamp expressed in seconds, NAN if the input timestamp is unknown
286
287 @item n
288 sequential number of the input frame, starting from 0
289
290 @item pos
291 the position in the file of the input frame, NAN if unknown
292
293 @item w
294 @item h
295 width and height of the input frame if video
296 @end table
297
298 Additionally, these filters support an @option{enable} command that can be used
299 to re-define the expression.
300
301 Like any other filtering option, the @option{enable} option follows the same
302 rules.
303
304 For example, to enable a blur filter (@ref{smartblur}) from 10 seconds to 3
305 minutes, and a @ref{curves} filter starting at 3 seconds:
306 @example
307 smartblur = enable='between(t,10,3*60)',
308 curves    = enable='gte(t,3)' : preset=cross_process
309 @end example
310
311 See @code{ffmpeg -filters} to view which filters have timeline support.
312
313 @c man end FILTERGRAPH DESCRIPTION
314
315 @anchor{commands}
316 @chapter Changing options at runtime with a command
317
318 Some options can be changed during the operation of the filter using
319 a command. These options are marked 'T' on the output of
320 @command{ffmpeg} @option{-h filter=<name of filter>}.
321 The name of the command is the name of the option and the argument is
322 the new value.
323
324 @anchor{framesync}
325 @chapter Options for filters with several inputs (framesync)
326 @c man begin OPTIONS FOR FILTERS WITH SEVERAL INPUTS
327
328 Some filters with several inputs support a common set of options.
329 These options can only be set by name, not with the short notation.
330
331 @table @option
332 @item eof_action
333 The action to take when EOF is encountered on the secondary input; it accepts
334 one of the following values:
335
336 @table @option
337 @item repeat
338 Repeat the last frame (the default).
339 @item endall
340 End both streams.
341 @item pass
342 Pass the main input through.
343 @end table
344
345 @item shortest
346 If set to 1, force the output to terminate when the shortest input
347 terminates. Default value is 0.
348
349 @item repeatlast
350 If set to 1, force the filter to extend the last frame of secondary streams
351 until the end of the primary stream. A value of 0 disables this behavior.
352 Default value is 1.
353 @end table
354
355 @c man end OPTIONS FOR FILTERS WITH SEVERAL INPUTS
356
357 @chapter Audio Filters
358 @c man begin AUDIO FILTERS
359
360 When you configure your FFmpeg build, you can disable any of the
361 existing filters using @code{--disable-filters}.
362 The configure output will show the audio filters included in your
363 build.
364
365 Below is a description of the currently available audio filters.
366
367 @section acompressor
368
369 A compressor is mainly used to reduce the dynamic range of a signal.
370 Especially modern music is mostly compressed at a high ratio to
371 improve the overall loudness. It's done to get the highest attention
372 of a listener, "fatten" the sound and bring more "power" to the track.
373 If a signal is compressed too much it may sound dull or "dead"
374 afterwards or it may start to "pump" (which could be a powerful effect
375 but can also destroy a track completely).
376 The right compression is the key to reach a professional sound and is
377 the high art of mixing and mastering. Because of its complex settings
378 it may take a long time to get the right feeling for this kind of effect.
379
380 Compression is done by detecting the volume above a chosen level
381 @code{threshold} and dividing it by the factor set with @code{ratio}.
382 So if you set the threshold to -12dB and your signal reaches -6dB a ratio
383 of 2:1 will result in a signal at -9dB. Because an exact manipulation of
384 the signal would cause distortion of the waveform the reduction can be
385 levelled over the time. This is done by setting "Attack" and "Release".
386 @code{attack} determines how long the signal has to rise above the threshold
387 before any reduction will occur and @code{release} sets the time the signal
388 has to fall below the threshold to reduce the reduction again. Shorter signals
389 than the chosen attack time will be left untouched.
390 The overall reduction of the signal can be made up afterwards with the
391 @code{makeup} setting. So compressing the peaks of a signal about 6dB and
392 raising the makeup to this level results in a signal twice as loud than the
393 source. To gain a softer entry in the compression the @code{knee} flattens the
394 hard edge at the threshold in the range of the chosen decibels.
395
396 The filter accepts the following options:
397
398 @table @option
399 @item level_in
400 Set input gain. Default is 1. Range is between 0.015625 and 64.
401
402 @item mode
403 Set mode of compressor operation. Can be @code{upward} or @code{downward}.
404 Default is @code{downward}.
405
406 @item threshold
407 If a signal of stream rises above this level it will affect the gain
408 reduction.
409 By default it is 0.125. Range is between 0.00097563 and 1.
410
411 @item ratio
412 Set a ratio by which the signal is reduced. 1:2 means that if the level
413 rose 4dB above the threshold, it will be only 2dB above after the reduction.
414 Default is 2. Range is between 1 and 20.
415
416 @item attack
417 Amount of milliseconds the signal has to rise above the threshold before gain
418 reduction starts. Default is 20. Range is between 0.01 and 2000.
419
420 @item release
421 Amount of milliseconds the signal has to fall below the threshold before
422 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
423
424 @item makeup
425 Set the amount by how much signal will be amplified after processing.
426 Default is 1. Range is from 1 to 64.
427
428 @item knee
429 Curve the sharp knee around the threshold to enter gain reduction more softly.
430 Default is 2.82843. Range is between 1 and 8.
431
432 @item link
433 Choose if the @code{average} level between all channels of input stream
434 or the louder(@code{maximum}) channel of input stream affects the
435 reduction. Default is @code{average}.
436
437 @item detection
438 Should the exact signal be taken in case of @code{peak} or an RMS one in case
439 of @code{rms}. Default is @code{rms} which is mostly smoother.
440
441 @item mix
442 How much to use compressed signal in output. Default is 1.
443 Range is between 0 and 1.
444 @end table
445
446 @section acontrast
447 Simple audio dynamic range compression/expansion filter.
448
449 The filter accepts the following options:
450
451 @table @option
452 @item contrast
453 Set contrast. Default is 33. Allowed range is between 0 and 100.
454 @end table
455
456 @section acopy
457
458 Copy the input audio source unchanged to the output. This is mainly useful for
459 testing purposes.
460
461 @section acrossfade
462
463 Apply cross fade from one input audio stream to another input audio stream.
464 The cross fade is applied for specified duration near the end of first stream.
465
466 The filter accepts the following options:
467
468 @table @option
469 @item nb_samples, ns
470 Specify the number of samples for which the cross fade effect has to last.
471 At the end of the cross fade effect the first input audio will be completely
472 silent. Default is 44100.
473
474 @item duration, d
475 Specify the duration of the cross fade effect. See
476 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
477 for the accepted syntax.
478 By default the duration is determined by @var{nb_samples}.
479 If set this option is used instead of @var{nb_samples}.
480
481 @item overlap, o
482 Should first stream end overlap with second stream start. Default is enabled.
483
484 @item curve1
485 Set curve for cross fade transition for first stream.
486
487 @item curve2
488 Set curve for cross fade transition for second stream.
489
490 For description of available curve types see @ref{afade} filter description.
491 @end table
492
493 @subsection Examples
494
495 @itemize
496 @item
497 Cross fade from one input to another:
498 @example
499 ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:c1=exp:c2=exp output.flac
500 @end example
501
502 @item
503 Cross fade from one input to another but without overlapping:
504 @example
505 ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:o=0:c1=exp:c2=exp output.flac
506 @end example
507 @end itemize
508
509 @section acrossover
510 Split audio stream into several bands.
511
512 This filter splits audio stream into two or more frequency ranges.
513 Summing all streams back will give flat output.
514
515 The filter accepts the following options:
516
517 @table @option
518 @item split
519 Set split frequencies. Those must be positive and increasing.
520
521 @item order
522 Set filter order, can be @var{2nd}, @var{4th} or @var{8th}.
523 Default is @var{4th}.
524 @end table
525
526 @section acrusher
527
528 Reduce audio bit resolution.
529
530 This filter is bit crusher with enhanced functionality. A bit crusher
531 is used to audibly reduce number of bits an audio signal is sampled
532 with. This doesn't change the bit depth at all, it just produces the
533 effect. Material reduced in bit depth sounds more harsh and "digital".
534 This filter is able to even round to continuous values instead of discrete
535 bit depths.
536 Additionally it has a D/C offset which results in different crushing of
537 the lower and the upper half of the signal.
538 An Anti-Aliasing setting is able to produce "softer" crushing sounds.
539
540 Another feature of this filter is the logarithmic mode.
541 This setting switches from linear distances between bits to logarithmic ones.
542 The result is a much more "natural" sounding crusher which doesn't gate low
543 signals for example. The human ear has a logarithmic perception,
544 so this kind of crushing is much more pleasant.
545 Logarithmic crushing is also able to get anti-aliased.
546
547 The filter accepts the following options:
548
549 @table @option
550 @item level_in
551 Set level in.
552
553 @item level_out
554 Set level out.
555
556 @item bits
557 Set bit reduction.
558
559 @item mix
560 Set mixing amount.
561
562 @item mode
563 Can be linear: @code{lin} or logarithmic: @code{log}.
564
565 @item dc
566 Set DC.
567
568 @item aa
569 Set anti-aliasing.
570
571 @item samples
572 Set sample reduction.
573
574 @item lfo
575 Enable LFO. By default disabled.
576
577 @item lforange
578 Set LFO range.
579
580 @item lforate
581 Set LFO rate.
582 @end table
583
584 @section acue
585
586 Delay audio filtering until a given wallclock timestamp. See the @ref{cue}
587 filter.
588
589 @section adeclick
590 Remove impulsive noise from input audio.
591
592 Samples detected as impulsive noise are replaced by interpolated samples using
593 autoregressive modelling.
594
595 @table @option
596 @item w
597 Set window size, in milliseconds. Allowed range is from @code{10} to
598 @code{100}. Default value is @code{55} milliseconds.
599 This sets size of window which will be processed at once.
600
601 @item o
602 Set window overlap, in percentage of window size. Allowed range is from
603 @code{50} to @code{95}. Default value is @code{75} percent.
604 Setting this to a very high value increases impulsive noise removal but makes
605 whole process much slower.
606
607 @item a
608 Set autoregression order, in percentage of window size. Allowed range is from
609 @code{0} to @code{25}. Default value is @code{2} percent. This option also
610 controls quality of interpolated samples using neighbour good samples.
611
612 @item t
613 Set threshold value. Allowed range is from @code{1} to @code{100}.
614 Default value is @code{2}.
615 This controls the strength of impulsive noise which is going to be removed.
616 The lower value, the more samples will be detected as impulsive noise.
617
618 @item b
619 Set burst fusion, in percentage of window size. Allowed range is @code{0} to
620 @code{10}. Default value is @code{2}.
621 If any two samples detected as noise are spaced less than this value then any
622 sample between those two samples will be also detected as noise.
623
624 @item m
625 Set overlap method.
626
627 It accepts the following values:
628 @table @option
629 @item a
630 Select overlap-add method. Even not interpolated samples are slightly
631 changed with this method.
632
633 @item s
634 Select overlap-save method. Not interpolated samples remain unchanged.
635 @end table
636
637 Default value is @code{a}.
638 @end table
639
640 @section adeclip
641 Remove clipped samples from input audio.
642
643 Samples detected as clipped are replaced by interpolated samples using
644 autoregressive modelling.
645
646 @table @option
647 @item w
648 Set window size, in milliseconds. Allowed range is from @code{10} to @code{100}.
649 Default value is @code{55} milliseconds.
650 This sets size of window which will be processed at once.
651
652 @item o
653 Set window overlap, in percentage of window size. Allowed range is from @code{50}
654 to @code{95}. Default value is @code{75} percent.
655
656 @item a
657 Set autoregression order, in percentage of window size. Allowed range is from
658 @code{0} to @code{25}. Default value is @code{8} percent. This option also controls
659 quality of interpolated samples using neighbour good samples.
660
661 @item t
662 Set threshold value. Allowed range is from @code{1} to @code{100}.
663 Default value is @code{10}. Higher values make clip detection less aggressive.
664
665 @item n
666 Set size of histogram used to detect clips. Allowed range is from @code{100} to @code{9999}.
667 Default value is @code{1000}. Higher values make clip detection less aggressive.
668
669 @item m
670 Set overlap method.
671
672 It accepts the following values:
673 @table @option
674 @item a
675 Select overlap-add method. Even not interpolated samples are slightly changed
676 with this method.
677
678 @item s
679 Select overlap-save method. Not interpolated samples remain unchanged.
680 @end table
681
682 Default value is @code{a}.
683 @end table
684
685 @section adelay
686
687 Delay one or more audio channels.
688
689 Samples in delayed channel are filled with silence.
690
691 The filter accepts the following option:
692
693 @table @option
694 @item delays
695 Set list of delays in milliseconds for each channel separated by '|'.
696 Unused delays will be silently ignored. If number of given delays is
697 smaller than number of channels all remaining channels will not be delayed.
698 If you want to delay exact number of samples, append 'S' to number.
699 If you want instead to delay in seconds, append 's' to number.
700
701 @item all
702 Use last set delay for all remaining channels. By default is disabled.
703 This option if enabled changes how option @code{delays} is interpreted.
704 @end table
705
706 @subsection Examples
707
708 @itemize
709 @item
710 Delay first channel by 1.5 seconds, the third channel by 0.5 seconds and leave
711 the second channel (and any other channels that may be present) unchanged.
712 @example
713 adelay=1500|0|500
714 @end example
715
716 @item
717 Delay second channel by 500 samples, the third channel by 700 samples and leave
718 the first channel (and any other channels that may be present) unchanged.
719 @example
720 adelay=0|500S|700S
721 @end example
722
723 @item
724 Delay all channels by same number of samples:
725 @example
726 adelay=delays=64S:all=1
727 @end example
728 @end itemize
729
730 @section aderivative, aintegral
731
732 Compute derivative/integral of audio stream.
733
734 Applying both filters one after another produces original audio.
735
736 @section aecho
737
738 Apply echoing to the input audio.
739
740 Echoes are reflected sound and can occur naturally amongst mountains
741 (and sometimes large buildings) when talking or shouting; digital echo
742 effects emulate this behaviour and are often used to help fill out the
743 sound of a single instrument or vocal. The time difference between the
744 original signal and the reflection is the @code{delay}, and the
745 loudness of the reflected signal is the @code{decay}.
746 Multiple echoes can have different delays and decays.
747
748 A description of the accepted parameters follows.
749
750 @table @option
751 @item in_gain
752 Set input gain of reflected signal. Default is @code{0.6}.
753
754 @item out_gain
755 Set output gain of reflected signal. Default is @code{0.3}.
756
757 @item delays
758 Set list of time intervals in milliseconds between original signal and reflections
759 separated by '|'. Allowed range for each @code{delay} is @code{(0 - 90000.0]}.
760 Default is @code{1000}.
761
762 @item decays
763 Set list of loudness of reflected signals separated by '|'.
764 Allowed range for each @code{decay} is @code{(0 - 1.0]}.
765 Default is @code{0.5}.
766 @end table
767
768 @subsection Examples
769
770 @itemize
771 @item
772 Make it sound as if there are twice as many instruments as are actually playing:
773 @example
774 aecho=0.8:0.88:60:0.4
775 @end example
776
777 @item
778 If delay is very short, then it sounds like a (metallic) robot playing music:
779 @example
780 aecho=0.8:0.88:6:0.4
781 @end example
782
783 @item
784 A longer delay will sound like an open air concert in the mountains:
785 @example
786 aecho=0.8:0.9:1000:0.3
787 @end example
788
789 @item
790 Same as above but with one more mountain:
791 @example
792 aecho=0.8:0.9:1000|1800:0.3|0.25
793 @end example
794 @end itemize
795
796 @section aemphasis
797 Audio emphasis filter creates or restores material directly taken from LPs or
798 emphased CDs with different filter curves. E.g. to store music on vinyl the
799 signal has to be altered by a filter first to even out the disadvantages of
800 this recording medium.
801 Once the material is played back the inverse filter has to be applied to
802 restore the distortion of the frequency response.
803
804 The filter accepts the following options:
805
806 @table @option
807 @item level_in
808 Set input gain.
809
810 @item level_out
811 Set output gain.
812
813 @item mode
814 Set filter mode. For restoring material use @code{reproduction} mode, otherwise
815 use @code{production} mode. Default is @code{reproduction} mode.
816
817 @item type
818 Set filter type. Selects medium. Can be one of the following:
819
820 @table @option
821 @item col
822 select Columbia.
823 @item emi
824 select EMI.
825 @item bsi
826 select BSI (78RPM).
827 @item riaa
828 select RIAA.
829 @item cd
830 select Compact Disc (CD).
831 @item 50fm
832 select 50µs (FM).
833 @item 75fm
834 select 75µs (FM).
835 @item 50kf
836 select 50µs (FM-KF).
837 @item 75kf
838 select 75µs (FM-KF).
839 @end table
840 @end table
841
842 @section aeval
843
844 Modify an audio signal according to the specified expressions.
845
846 This filter accepts one or more expressions (one for each channel),
847 which are evaluated and used to modify a corresponding audio signal.
848
849 It accepts the following parameters:
850
851 @table @option
852 @item exprs
853 Set the '|'-separated expressions list for each separate channel. If
854 the number of input channels is greater than the number of
855 expressions, the last specified expression is used for the remaining
856 output channels.
857
858 @item channel_layout, c
859 Set output channel layout. If not specified, the channel layout is
860 specified by the number of expressions. If set to @samp{same}, it will
861 use by default the same input channel layout.
862 @end table
863
864 Each expression in @var{exprs} can contain the following constants and functions:
865
866 @table @option
867 @item ch
868 channel number of the current expression
869
870 @item n
871 number of the evaluated sample, starting from 0
872
873 @item s
874 sample rate
875
876 @item t
877 time of the evaluated sample expressed in seconds
878
879 @item nb_in_channels
880 @item nb_out_channels
881 input and output number of channels
882
883 @item val(CH)
884 the value of input channel with number @var{CH}
885 @end table
886
887 Note: this filter is slow. For faster processing you should use a
888 dedicated filter.
889
890 @subsection Examples
891
892 @itemize
893 @item
894 Half volume:
895 @example
896 aeval=val(ch)/2:c=same
897 @end example
898
899 @item
900 Invert phase of the second channel:
901 @example
902 aeval=val(0)|-val(1)
903 @end example
904 @end itemize
905
906 @anchor{afade}
907 @section afade
908
909 Apply fade-in/out effect to input audio.
910
911 A description of the accepted parameters follows.
912
913 @table @option
914 @item type, t
915 Specify the effect type, can be either @code{in} for fade-in, or
916 @code{out} for a fade-out effect. Default is @code{in}.
917
918 @item start_sample, ss
919 Specify the number of the start sample for starting to apply the fade
920 effect. Default is 0.
921
922 @item nb_samples, ns
923 Specify the number of samples for which the fade effect has to last. At
924 the end of the fade-in effect the output audio will have the same
925 volume as the input audio, at the end of the fade-out transition
926 the output audio will be silence. Default is 44100.
927
928 @item start_time, st
929 Specify the start time of the fade effect. Default is 0.
930 The value must be specified as a time duration; see
931 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
932 for the accepted syntax.
933 If set this option is used instead of @var{start_sample}.
934
935 @item duration, d
936 Specify the duration of the fade effect. See
937 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
938 for the accepted syntax.
939 At the end of the fade-in effect the output audio will have the same
940 volume as the input audio, at the end of the fade-out transition
941 the output audio will be silence.
942 By default the duration is determined by @var{nb_samples}.
943 If set this option is used instead of @var{nb_samples}.
944
945 @item curve
946 Set curve for fade transition.
947
948 It accepts the following values:
949 @table @option
950 @item tri
951 select triangular, linear slope (default)
952 @item qsin
953 select quarter of sine wave
954 @item hsin
955 select half of sine wave
956 @item esin
957 select exponential sine wave
958 @item log
959 select logarithmic
960 @item ipar
961 select inverted parabola
962 @item qua
963 select quadratic
964 @item cub
965 select cubic
966 @item squ
967 select square root
968 @item cbr
969 select cubic root
970 @item par
971 select parabola
972 @item exp
973 select exponential
974 @item iqsin
975 select inverted quarter of sine wave
976 @item ihsin
977 select inverted half of sine wave
978 @item dese
979 select double-exponential seat
980 @item desi
981 select double-exponential sigmoid
982 @item losi
983 select logistic sigmoid
984 @item nofade
985 no fade applied
986 @end table
987 @end table
988
989 @subsection Examples
990
991 @itemize
992 @item
993 Fade in first 15 seconds of audio:
994 @example
995 afade=t=in:ss=0:d=15
996 @end example
997
998 @item
999 Fade out last 25 seconds of a 900 seconds audio:
1000 @example
1001 afade=t=out:st=875:d=25
1002 @end example
1003 @end itemize
1004
1005 @section afftdn
1006 Denoise audio samples with FFT.
1007
1008 A description of the accepted parameters follows.
1009
1010 @table @option
1011 @item nr
1012 Set the noise reduction in dB, allowed range is 0.01 to 97.
1013 Default value is 12 dB.
1014
1015 @item nf
1016 Set the noise floor in dB, allowed range is -80 to -20.
1017 Default value is -50 dB.
1018
1019 @item nt
1020 Set the noise type.
1021
1022 It accepts the following values:
1023 @table @option
1024 @item w
1025 Select white noise.
1026
1027 @item v
1028 Select vinyl noise.
1029
1030 @item s
1031 Select shellac noise.
1032
1033 @item c
1034 Select custom noise, defined in @code{bn} option.
1035
1036 Default value is white noise.
1037 @end table
1038
1039 @item bn
1040 Set custom band noise for every one of 15 bands.
1041 Bands are separated by ' ' or '|'.
1042
1043 @item rf
1044 Set the residual floor in dB, allowed range is -80 to -20.
1045 Default value is -38 dB.
1046
1047 @item tn
1048 Enable noise tracking. By default is disabled.
1049 With this enabled, noise floor is automatically adjusted.
1050
1051 @item tr
1052 Enable residual tracking. By default is disabled.
1053
1054 @item om
1055 Set the output mode.
1056
1057 It accepts the following values:
1058 @table @option
1059 @item i
1060 Pass input unchanged.
1061
1062 @item o
1063 Pass noise filtered out.
1064
1065 @item n
1066 Pass only noise.
1067
1068 Default value is @var{o}.
1069 @end table
1070 @end table
1071
1072 @subsection Commands
1073
1074 This filter supports the following commands:
1075 @table @option
1076 @item sample_noise, sn
1077 Start or stop measuring noise profile.
1078 Syntax for the command is : "start" or "stop" string.
1079 After measuring noise profile is stopped it will be
1080 automatically applied in filtering.
1081
1082 @item noise_reduction, nr
1083 Change noise reduction. Argument is single float number.
1084 Syntax for the command is : "@var{noise_reduction}"
1085
1086 @item noise_floor, nf
1087 Change noise floor. Argument is single float number.
1088 Syntax for the command is : "@var{noise_floor}"
1089
1090 @item output_mode, om
1091 Change output mode operation.
1092 Syntax for the command is : "i", "o" or "n" string.
1093 @end table
1094
1095 @section afftfilt
1096 Apply arbitrary expressions to samples in frequency domain.
1097
1098 @table @option
1099 @item real
1100 Set frequency domain real expression for each separate channel separated
1101 by '|'. Default is "re".
1102 If the number of input channels is greater than the number of
1103 expressions, the last specified expression is used for the remaining
1104 output channels.
1105
1106 @item imag
1107 Set frequency domain imaginary expression for each separate channel
1108 separated by '|'. Default is "im".
1109
1110 Each expression in @var{real} and @var{imag} can contain the following
1111 constants and functions:
1112
1113 @table @option
1114 @item sr
1115 sample rate
1116
1117 @item b
1118 current frequency bin number
1119
1120 @item nb
1121 number of available bins
1122
1123 @item ch
1124 channel number of the current expression
1125
1126 @item chs
1127 number of channels
1128
1129 @item pts
1130 current frame pts
1131
1132 @item re
1133 current real part of frequency bin of current channel
1134
1135 @item im
1136 current imaginary part of frequency bin of current channel
1137
1138 @item real(b, ch)
1139 Return the value of real part of frequency bin at location (@var{bin},@var{channel})
1140
1141 @item imag(b, ch)
1142 Return the value of imaginary part of frequency bin at location (@var{bin},@var{channel})
1143 @end table
1144
1145 @item win_size
1146 Set window size. Allowed range is from 16 to 131072.
1147 Default is @code{4096}
1148
1149 @item win_func
1150 Set window function. Default is @code{hann}.
1151
1152 @item overlap
1153 Set window overlap. If set to 1, the recommended overlap for selected
1154 window function will be picked. Default is @code{0.75}.
1155 @end table
1156
1157 @subsection Examples
1158
1159 @itemize
1160 @item
1161 Leave almost only low frequencies in audio:
1162 @example
1163 afftfilt="'real=re * (1-clip((b/nb)*b,0,1))':imag='im * (1-clip((b/nb)*b,0,1))'"
1164 @end example
1165
1166 @item
1167 Apply robotize effect:
1168 @example
1169 afftfilt="real='hypot(re,im)*sin(0)':imag='hypot(re,im)*cos(0)':win_size=512:overlap=0.75"
1170 @end example
1171
1172 @item
1173 Apply whisper effect:
1174 @example
1175 afftfilt="real='hypot(re,im)*cos((random(0)*2-1)*2*3.14)':imag='hypot(re,im)*sin((random(1)*2-1)*2*3.14)':win_size=128:overlap=0.8"
1176 @end example
1177 @end itemize
1178
1179 @anchor{afir}
1180 @section afir
1181
1182 Apply an arbitrary Frequency Impulse Response filter.
1183
1184 This filter is designed for applying long FIR filters,
1185 up to 60 seconds long.
1186
1187 It can be used as component for digital crossover filters,
1188 room equalization, cross talk cancellation, wavefield synthesis,
1189 auralization, ambiophonics, ambisonics and spatialization.
1190
1191 This filter uses the second stream as FIR coefficients.
1192 If the second stream holds a single channel, it will be used
1193 for all input channels in the first stream, otherwise
1194 the number of channels in the second stream must be same as
1195 the number of channels in the first stream.
1196
1197 It accepts the following parameters:
1198
1199 @table @option
1200 @item dry
1201 Set dry gain. This sets input gain.
1202
1203 @item wet
1204 Set wet gain. This sets final output gain.
1205
1206 @item length
1207 Set Impulse Response filter length. Default is 1, which means whole IR is processed.
1208
1209 @item gtype
1210 Enable applying gain measured from power of IR.
1211
1212 Set which approach to use for auto gain measurement.
1213
1214 @table @option
1215 @item none
1216 Do not apply any gain.
1217
1218 @item peak
1219 select peak gain, very conservative approach. This is default value.
1220
1221 @item dc
1222 select DC gain, limited application.
1223
1224 @item gn
1225 select gain to noise approach, this is most popular one.
1226 @end table
1227
1228 @item irgain
1229 Set gain to be applied to IR coefficients before filtering.
1230 Allowed range is 0 to 1. This gain is applied after any gain applied with @var{gtype} option.
1231
1232 @item irfmt
1233 Set format of IR stream. Can be @code{mono} or @code{input}.
1234 Default is @code{input}.
1235
1236 @item maxir
1237 Set max allowed Impulse Response filter duration in seconds. Default is 30 seconds.
1238 Allowed range is 0.1 to 60 seconds.
1239
1240 @item response
1241 Show IR frequency response, magnitude(magenta), phase(green) and group delay(yellow) in additional video stream.
1242 By default it is disabled.
1243
1244 @item channel
1245 Set for which IR channel to display frequency response. By default is first channel
1246 displayed. This option is used only when @var{response} is enabled.
1247
1248 @item size
1249 Set video stream size. This option is used only when @var{response} is enabled.
1250
1251 @item rate
1252 Set video stream frame rate. This option is used only when @var{response} is enabled.
1253
1254 @item minp
1255 Set minimal partition size used for convolution. Default is @var{8192}.
1256 Allowed range is from @var{8} to @var{32768}.
1257 Lower values decreases latency at cost of higher CPU usage.
1258
1259 @item maxp
1260 Set maximal partition size used for convolution. Default is @var{8192}.
1261 Allowed range is from @var{8} to @var{32768}.
1262 Lower values may increase CPU usage.
1263 @end table
1264
1265 @subsection Examples
1266
1267 @itemize
1268 @item
1269 Apply reverb to stream using mono IR file as second input, complete command using ffmpeg:
1270 @example
1271 ffmpeg -i input.wav -i middle_tunnel_1way_mono.wav -lavfi afir output.wav
1272 @end example
1273 @end itemize
1274
1275 @anchor{aformat}
1276 @section aformat
1277
1278 Set output format constraints for the input audio. The framework will
1279 negotiate the most appropriate format to minimize conversions.
1280
1281 It accepts the following parameters:
1282 @table @option
1283
1284 @item sample_fmts
1285 A '|'-separated list of requested sample formats.
1286
1287 @item sample_rates
1288 A '|'-separated list of requested sample rates.
1289
1290 @item channel_layouts
1291 A '|'-separated list of requested channel layouts.
1292
1293 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1294 for the required syntax.
1295 @end table
1296
1297 If a parameter is omitted, all values are allowed.
1298
1299 Force the output to either unsigned 8-bit or signed 16-bit stereo
1300 @example
1301 aformat=sample_fmts=u8|s16:channel_layouts=stereo
1302 @end example
1303
1304 @section agate
1305
1306 A gate is mainly used to reduce lower parts of a signal. This kind of signal
1307 processing reduces disturbing noise between useful signals.
1308
1309 Gating is done by detecting the volume below a chosen level @var{threshold}
1310 and dividing it by the factor set with @var{ratio}. The bottom of the noise
1311 floor is set via @var{range}. Because an exact manipulation of the signal
1312 would cause distortion of the waveform the reduction can be levelled over
1313 time. This is done by setting @var{attack} and @var{release}.
1314
1315 @var{attack} determines how long the signal has to fall below the threshold
1316 before any reduction will occur and @var{release} sets the time the signal
1317 has to rise above the threshold to reduce the reduction again.
1318 Shorter signals than the chosen attack time will be left untouched.
1319
1320 @table @option
1321 @item level_in
1322 Set input level before filtering.
1323 Default is 1. Allowed range is from 0.015625 to 64.
1324
1325 @item mode
1326 Set the mode of operation. Can be @code{upward} or @code{downward}.
1327 Default is @code{downward}. If set to @code{upward} mode, higher parts of signal
1328 will be amplified, expanding dynamic range in upward direction.
1329 Otherwise, in case of @code{downward} lower parts of signal will be reduced.
1330
1331 @item range
1332 Set the level of gain reduction when the signal is below the threshold.
1333 Default is 0.06125. Allowed range is from 0 to 1.
1334 Setting this to 0 disables reduction and then filter behaves like expander.
1335
1336 @item threshold
1337 If a signal rises above this level the gain reduction is released.
1338 Default is 0.125. Allowed range is from 0 to 1.
1339
1340 @item ratio
1341 Set a ratio by which the signal is reduced.
1342 Default is 2. Allowed range is from 1 to 9000.
1343
1344 @item attack
1345 Amount of milliseconds the signal has to rise above the threshold before gain
1346 reduction stops.
1347 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
1348
1349 @item release
1350 Amount of milliseconds the signal has to fall below the threshold before the
1351 reduction is increased again. Default is 250 milliseconds.
1352 Allowed range is from 0.01 to 9000.
1353
1354 @item makeup
1355 Set amount of amplification of signal after processing.
1356 Default is 1. Allowed range is from 1 to 64.
1357
1358 @item knee
1359 Curve the sharp knee around the threshold to enter gain reduction more softly.
1360 Default is 2.828427125. Allowed range is from 1 to 8.
1361
1362 @item detection
1363 Choose if exact signal should be taken for detection or an RMS like one.
1364 Default is @code{rms}. Can be @code{peak} or @code{rms}.
1365
1366 @item link
1367 Choose if the average level between all channels or the louder channel affects
1368 the reduction.
1369 Default is @code{average}. Can be @code{average} or @code{maximum}.
1370 @end table
1371
1372 @section aiir
1373
1374 Apply an arbitrary Infinite Impulse Response filter.
1375
1376 It accepts the following parameters:
1377
1378 @table @option
1379 @item z
1380 Set numerator/zeros coefficients.
1381
1382 @item p
1383 Set denominator/poles coefficients.
1384
1385 @item k
1386 Set channels gains.
1387
1388 @item dry_gain
1389 Set input gain.
1390
1391 @item wet_gain
1392 Set output gain.
1393
1394 @item f
1395 Set coefficients format.
1396
1397 @table @samp
1398 @item tf
1399 transfer function
1400 @item zp
1401 Z-plane zeros/poles, cartesian (default)
1402 @item pr
1403 Z-plane zeros/poles, polar radians
1404 @item pd
1405 Z-plane zeros/poles, polar degrees
1406 @end table
1407
1408 @item r
1409 Set kind of processing.
1410 Can be @code{d} - direct or @code{s} - serial cascading. Default is @code{s}.
1411
1412 @item e
1413 Set filtering precision.
1414
1415 @table @samp
1416 @item dbl
1417 double-precision floating-point (default)
1418 @item flt
1419 single-precision floating-point
1420 @item i32
1421 32-bit integers
1422 @item i16
1423 16-bit integers
1424 @end table
1425
1426 @item mix
1427 How much to use filtered signal in output. Default is 1.
1428 Range is between 0 and 1.
1429
1430 @item response
1431 Show IR frequency response, magnitude(magenta), phase(green) and group delay(yellow) in additional video stream.
1432 By default it is disabled.
1433
1434 @item channel
1435 Set for which IR channel to display frequency response. By default is first channel
1436 displayed. This option is used only when @var{response} is enabled.
1437
1438 @item size
1439 Set video stream size. This option is used only when @var{response} is enabled.
1440 @end table
1441
1442 Coefficients in @code{tf} format are separated by spaces and are in ascending
1443 order.
1444
1445 Coefficients in @code{zp} format are separated by spaces and order of coefficients
1446 doesn't matter. Coefficients in @code{zp} format are complex numbers with @var{i}
1447 imaginary unit.
1448
1449 Different coefficients and gains can be provided for every channel, in such case
1450 use '|' to separate coefficients or gains. Last provided coefficients will be
1451 used for all remaining channels.
1452
1453 @subsection Examples
1454
1455 @itemize
1456 @item
1457 Apply 2 pole elliptic notch at around 5000Hz for 48000 Hz sample rate:
1458 @example
1459 aiir=k=1:z=7.957584807809675810E-1 -2.575128568908332300 3.674839853930788710 -2.57512875289799137 7.957586296317130880E-1:p=1 -2.86950072432325953 3.63022088054647218 -2.28075678147272232 6.361362326477423500E-1:f=tf:r=d
1460 @end example
1461
1462 @item
1463 Same as above but in @code{zp} format:
1464 @example
1465 aiir=k=0.79575848078096756:z=0.80918701+0.58773007i 0.80918701-0.58773007i 0.80884700+0.58784055i 0.80884700-0.58784055i:p=0.63892345+0.59951235i 0.63892345-0.59951235i 0.79582691+0.44198673i 0.79582691-0.44198673i:f=zp:r=s
1466 @end example
1467 @end itemize
1468
1469 @section alimiter
1470
1471 The limiter prevents an input signal from rising over a desired threshold.
1472 This limiter uses lookahead technology to prevent your signal from distorting.
1473 It means that there is a small delay after the signal is processed. Keep in mind
1474 that the delay it produces is the attack time you set.
1475
1476 The filter accepts the following options:
1477
1478 @table @option
1479 @item level_in
1480 Set input gain. Default is 1.
1481
1482 @item level_out
1483 Set output gain. Default is 1.
1484
1485 @item limit
1486 Don't let signals above this level pass the limiter. Default is 1.
1487
1488 @item attack
1489 The limiter will reach its attenuation level in this amount of time in
1490 milliseconds. Default is 5 milliseconds.
1491
1492 @item release
1493 Come back from limiting to attenuation 1.0 in this amount of milliseconds.
1494 Default is 50 milliseconds.
1495
1496 @item asc
1497 When gain reduction is always needed ASC takes care of releasing to an
1498 average reduction level rather than reaching a reduction of 0 in the release
1499 time.
1500
1501 @item asc_level
1502 Select how much the release time is affected by ASC, 0 means nearly no changes
1503 in release time while 1 produces higher release times.
1504
1505 @item level
1506 Auto level output signal. Default is enabled.
1507 This normalizes audio back to 0dB if enabled.
1508 @end table
1509
1510 Depending on picked setting it is recommended to upsample input 2x or 4x times
1511 with @ref{aresample} before applying this filter.
1512
1513 @section allpass
1514
1515 Apply a two-pole all-pass filter with central frequency (in Hz)
1516 @var{frequency}, and filter-width @var{width}.
1517 An all-pass filter changes the audio's frequency to phase relationship
1518 without changing its frequency to amplitude relationship.
1519
1520 The filter accepts the following options:
1521
1522 @table @option
1523 @item frequency, f
1524 Set frequency in Hz.
1525
1526 @item width_type, t
1527 Set method to specify band-width of filter.
1528 @table @option
1529 @item h
1530 Hz
1531 @item q
1532 Q-Factor
1533 @item o
1534 octave
1535 @item s
1536 slope
1537 @item k
1538 kHz
1539 @end table
1540
1541 @item width, w
1542 Specify the band-width of a filter in width_type units.
1543
1544 @item mix, m
1545 How much to use filtered signal in output. Default is 1.
1546 Range is between 0 and 1.
1547
1548 @item channels, c
1549 Specify which channels to filter, by default all available are filtered.
1550 @end table
1551
1552 @subsection Commands
1553
1554 This filter supports the following commands:
1555 @table @option
1556 @item frequency, f
1557 Change allpass frequency.
1558 Syntax for the command is : "@var{frequency}"
1559
1560 @item width_type, t
1561 Change allpass width_type.
1562 Syntax for the command is : "@var{width_type}"
1563
1564 @item width, w
1565 Change allpass width.
1566 Syntax for the command is : "@var{width}"
1567
1568 @item mix, m
1569 Change allpass mix.
1570 Syntax for the command is : "@var{mix}"
1571 @end table
1572
1573 @section aloop
1574
1575 Loop audio samples.
1576
1577 The filter accepts the following options:
1578
1579 @table @option
1580 @item loop
1581 Set the number of loops. Setting this value to -1 will result in infinite loops.
1582 Default is 0.
1583
1584 @item size
1585 Set maximal number of samples. Default is 0.
1586
1587 @item start
1588 Set first sample of loop. Default is 0.
1589 @end table
1590
1591 @anchor{amerge}
1592 @section amerge
1593
1594 Merge two or more audio streams into a single multi-channel stream.
1595
1596 The filter accepts the following options:
1597
1598 @table @option
1599
1600 @item inputs
1601 Set the number of inputs. Default is 2.
1602
1603 @end table
1604
1605 If the channel layouts of the inputs are disjoint, and therefore compatible,
1606 the channel layout of the output will be set accordingly and the channels
1607 will be reordered as necessary. If the channel layouts of the inputs are not
1608 disjoint, the output will have all the channels of the first input then all
1609 the channels of the second input, in that order, and the channel layout of
1610 the output will be the default value corresponding to the total number of
1611 channels.
1612
1613 For example, if the first input is in 2.1 (FL+FR+LF) and the second input
1614 is FC+BL+BR, then the output will be in 5.1, with the channels in the
1615 following order: a1, a2, b1, a3, b2, b3 (a1 is the first channel of the
1616 first input, b1 is the first channel of the second input).
1617
1618 On the other hand, if both input are in stereo, the output channels will be
1619 in the default order: a1, a2, b1, b2, and the channel layout will be
1620 arbitrarily set to 4.0, which may or may not be the expected value.
1621
1622 All inputs must have the same sample rate, and format.
1623
1624 If inputs do not have the same duration, the output will stop with the
1625 shortest.
1626
1627 @subsection Examples
1628
1629 @itemize
1630 @item
1631 Merge two mono files into a stereo stream:
1632 @example
1633 amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
1634 @end example
1635
1636 @item
1637 Multiple merges assuming 1 video stream and 6 audio streams in @file{input.mkv}:
1638 @example
1639 ffmpeg -i input.mkv -filter_complex "[0:1][0:2][0:3][0:4][0:5][0:6] amerge=inputs=6" -c:a pcm_s16le output.mkv
1640 @end example
1641 @end itemize
1642
1643 @section amix
1644
1645 Mixes multiple audio inputs into a single output.
1646
1647 Note that this filter only supports float samples (the @var{amerge}
1648 and @var{pan} audio filters support many formats). If the @var{amix}
1649 input has integer samples then @ref{aresample} will be automatically
1650 inserted to perform the conversion to float samples.
1651
1652 For example
1653 @example
1654 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
1655 @end example
1656 will mix 3 input audio streams to a single output with the same duration as the
1657 first input and a dropout transition time of 3 seconds.
1658
1659 It accepts the following parameters:
1660 @table @option
1661
1662 @item inputs
1663 The number of inputs. If unspecified, it defaults to 2.
1664
1665 @item duration
1666 How to determine the end-of-stream.
1667 @table @option
1668
1669 @item longest
1670 The duration of the longest input. (default)
1671
1672 @item shortest
1673 The duration of the shortest input.
1674
1675 @item first
1676 The duration of the first input.
1677
1678 @end table
1679
1680 @item dropout_transition
1681 The transition time, in seconds, for volume renormalization when an input
1682 stream ends. The default value is 2 seconds.
1683
1684 @item weights
1685 Specify weight of each input audio stream as sequence.
1686 Each weight is separated by space. By default all inputs have same weight.
1687 @end table
1688
1689 @section amultiply
1690
1691 Multiply first audio stream with second audio stream and store result
1692 in output audio stream. Multiplication is done by multiplying each
1693 sample from first stream with sample at same position from second stream.
1694
1695 With this element-wise multiplication one can create amplitude fades and
1696 amplitude modulations.
1697
1698 @section anequalizer
1699
1700 High-order parametric multiband equalizer for each channel.
1701
1702 It accepts the following parameters:
1703 @table @option
1704 @item params
1705
1706 This option string is in format:
1707 "c@var{chn} f=@var{cf} w=@var{w} g=@var{g} t=@var{f} | ..."
1708 Each equalizer band is separated by '|'.
1709
1710 @table @option
1711 @item chn
1712 Set channel number to which equalization will be applied.
1713 If input doesn't have that channel the entry is ignored.
1714
1715 @item f
1716 Set central frequency for band.
1717 If input doesn't have that frequency the entry is ignored.
1718
1719 @item w
1720 Set band width in hertz.
1721
1722 @item g
1723 Set band gain in dB.
1724
1725 @item t
1726 Set filter type for band, optional, can be:
1727
1728 @table @samp
1729 @item 0
1730 Butterworth, this is default.
1731
1732 @item 1
1733 Chebyshev type 1.
1734
1735 @item 2
1736 Chebyshev type 2.
1737 @end table
1738 @end table
1739
1740 @item curves
1741 With this option activated frequency response of anequalizer is displayed
1742 in video stream.
1743
1744 @item size
1745 Set video stream size. Only useful if curves option is activated.
1746
1747 @item mgain
1748 Set max gain that will be displayed. Only useful if curves option is activated.
1749 Setting this to a reasonable value makes it possible to display gain which is derived from
1750 neighbour bands which are too close to each other and thus produce higher gain
1751 when both are activated.
1752
1753 @item fscale
1754 Set frequency scale used to draw frequency response in video output.
1755 Can be linear or logarithmic. Default is logarithmic.
1756
1757 @item colors
1758 Set color for each channel curve which is going to be displayed in video stream.
1759 This is list of color names separated by space or by '|'.
1760 Unrecognised or missing colors will be replaced by white color.
1761 @end table
1762
1763 @subsection Examples
1764
1765 @itemize
1766 @item
1767 Lower gain by 10 of central frequency 200Hz and width 100 Hz
1768 for first 2 channels using Chebyshev type 1 filter:
1769 @example
1770 anequalizer=c0 f=200 w=100 g=-10 t=1|c1 f=200 w=100 g=-10 t=1
1771 @end example
1772 @end itemize
1773
1774 @subsection Commands
1775
1776 This filter supports the following commands:
1777 @table @option
1778 @item change
1779 Alter existing filter parameters.
1780 Syntax for the commands is : "@var{fN}|f=@var{freq}|w=@var{width}|g=@var{gain}"
1781
1782 @var{fN} is existing filter number, starting from 0, if no such filter is available
1783 error is returned.
1784 @var{freq} set new frequency parameter.
1785 @var{width} set new width parameter in herz.
1786 @var{gain} set new gain parameter in dB.
1787
1788 Full filter invocation with asendcmd may look like this:
1789 asendcmd=c='4.0 anequalizer change 0|f=200|w=50|g=1',anequalizer=...
1790 @end table
1791
1792 @section anlmdn
1793
1794 Reduce broadband noise in audio samples using Non-Local Means algorithm.
1795
1796 Each sample is adjusted by looking for other samples with similar contexts. This
1797 context similarity is defined by comparing their surrounding patches of size
1798 @option{p}. Patches are searched in an area of @option{r} around the sample.
1799
1800 The filter accepts the following options:
1801
1802 @table @option
1803 @item s
1804 Set denoising strength. Allowed range is from 0.00001 to 10. Default value is 0.00001.
1805
1806 @item p
1807 Set patch radius duration. Allowed range is from 1 to 100 milliseconds.
1808 Default value is 2 milliseconds.
1809
1810 @item r
1811 Set research radius duration. Allowed range is from 2 to 300 milliseconds.
1812 Default value is 6 milliseconds.
1813
1814 @item o
1815 Set the output mode.
1816
1817 It accepts the following values:
1818 @table @option
1819 @item i
1820 Pass input unchanged.
1821
1822 @item o
1823 Pass noise filtered out.
1824
1825 @item n
1826 Pass only noise.
1827
1828 Default value is @var{o}.
1829 @end table
1830
1831 @item m
1832 Set smooth factor. Default value is @var{11}. Allowed range is from @var{1} to @var{15}.
1833 @end table
1834
1835 @subsection Commands
1836
1837 This filter supports the following commands:
1838 @table @option
1839 @item s
1840 Change denoise strength. Argument is single float number.
1841 Syntax for the command is : "@var{s}"
1842
1843 @item o
1844 Change output mode.
1845 Syntax for the command is : "i", "o" or "n" string.
1846 @end table
1847
1848 @section anlms
1849 Apply Normalized Least-Mean-Squares algorithm to the first audio stream using the second audio stream.
1850
1851 This adaptive filter is used to mimic a desired filter by finding the filter coefficients that
1852 relate to producing the least mean square of the error signal (difference between the desired,
1853 2nd input audio stream and the actual signal, the 1st input audio stream).
1854
1855 A description of the accepted options follows.
1856
1857 @table @option
1858 @item order
1859 Set filter order.
1860
1861 @item mu
1862 Set filter mu.
1863
1864 @item eps
1865 Set the filter eps.
1866
1867 @item leakage
1868 Set the filter leakage.
1869
1870 @item out_mode
1871 It accepts the following values:
1872 @table @option
1873 @item i
1874 Pass the 1st input.
1875
1876 @item d
1877 Pass the 2nd input.
1878
1879 @item o
1880 Pass filtered samples.
1881
1882 @item n
1883 Pass difference between desired and filtered samples.
1884
1885 Default value is @var{o}.
1886 @end table
1887 @end table
1888
1889 @subsection Examples
1890
1891 @itemize
1892 @item
1893 One of many usages of this filter is noise reduction, input audio is filtered
1894 with same samples that are delayed by fixed amount, one such example for stereo audio is:
1895 @example
1896 asplit[a][b],[a]adelay=32S|32S[a],[b][a]anlms=order=128:leakage=0.0005:mu=.5:out_mode=o
1897 @end example
1898 @end itemize
1899
1900 @subsection Commands
1901
1902 This filter supports the same commands as options, excluding option @code{order}.
1903
1904 @section anull
1905
1906 Pass the audio source unchanged to the output.
1907
1908 @section apad
1909
1910 Pad the end of an audio stream with silence.
1911
1912 This can be used together with @command{ffmpeg} @option{-shortest} to
1913 extend audio streams to the same length as the video stream.
1914
1915 A description of the accepted options follows.
1916
1917 @table @option
1918 @item packet_size
1919 Set silence packet size. Default value is 4096.
1920
1921 @item pad_len
1922 Set the number of samples of silence to add to the end. After the
1923 value is reached, the stream is terminated. This option is mutually
1924 exclusive with @option{whole_len}.
1925
1926 @item whole_len
1927 Set the minimum total number of samples in the output audio stream. If
1928 the value is longer than the input audio length, silence is added to
1929 the end, until the value is reached. This option is mutually exclusive
1930 with @option{pad_len}.
1931
1932 @item pad_dur
1933 Specify the duration of samples of silence to add. See
1934 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1935 for the accepted syntax. Used only if set to non-zero value.
1936
1937 @item whole_dur
1938 Specify the minimum total duration in the output audio stream. See
1939 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1940 for the accepted syntax. Used only if set to non-zero value. If the value is longer than
1941 the input audio length, silence is added to the end, until the value is reached.
1942 This option is mutually exclusive with @option{pad_dur}
1943 @end table
1944
1945 If neither the @option{pad_len} nor the @option{whole_len} nor @option{pad_dur}
1946 nor @option{whole_dur} option is set, the filter will add silence to the end of
1947 the input stream indefinitely.
1948
1949 @subsection Examples
1950
1951 @itemize
1952 @item
1953 Add 1024 samples of silence to the end of the input:
1954 @example
1955 apad=pad_len=1024
1956 @end example
1957
1958 @item
1959 Make sure the audio output will contain at least 10000 samples, pad
1960 the input with silence if required:
1961 @example
1962 apad=whole_len=10000
1963 @end example
1964
1965 @item
1966 Use @command{ffmpeg} to pad the audio input with silence, so that the
1967 video stream will always result the shortest and will be converted
1968 until the end in the output file when using the @option{shortest}
1969 option:
1970 @example
1971 ffmpeg -i VIDEO -i AUDIO -filter_complex "[1:0]apad" -shortest OUTPUT
1972 @end example
1973 @end itemize
1974
1975 @section aphaser
1976 Add a phasing effect to the input audio.
1977
1978 A phaser filter creates series of peaks and troughs in the frequency spectrum.
1979 The position of the peaks and troughs are modulated so that they vary over time, creating a sweeping effect.
1980
1981 A description of the accepted parameters follows.
1982
1983 @table @option
1984 @item in_gain
1985 Set input gain. Default is 0.4.
1986
1987 @item out_gain
1988 Set output gain. Default is 0.74
1989
1990 @item delay
1991 Set delay in milliseconds. Default is 3.0.
1992
1993 @item decay
1994 Set decay. Default is 0.4.
1995
1996 @item speed
1997 Set modulation speed in Hz. Default is 0.5.
1998
1999 @item type
2000 Set modulation type. Default is triangular.
2001
2002 It accepts the following values:
2003 @table @samp
2004 @item triangular, t
2005 @item sinusoidal, s
2006 @end table
2007 @end table
2008
2009 @section apulsator
2010
2011 Audio pulsator is something between an autopanner and a tremolo.
2012 But it can produce funny stereo effects as well. Pulsator changes the volume
2013 of the left and right channel based on a LFO (low frequency oscillator) with
2014 different waveforms and shifted phases.
2015 This filter have the ability to define an offset between left and right
2016 channel. An offset of 0 means that both LFO shapes match each other.
2017 The left and right channel are altered equally - a conventional tremolo.
2018 An offset of 50% means that the shape of the right channel is exactly shifted
2019 in phase (or moved backwards about half of the frequency) - pulsator acts as
2020 an autopanner. At 1 both curves match again. Every setting in between moves the
2021 phase shift gapless between all stages and produces some "bypassing" sounds with
2022 sine and triangle waveforms. The more you set the offset near 1 (starting from
2023 the 0.5) the faster the signal passes from the left to the right speaker.
2024
2025 The filter accepts the following options:
2026
2027 @table @option
2028 @item level_in
2029 Set input gain. By default it is 1. Range is [0.015625 - 64].
2030
2031 @item level_out
2032 Set output gain. By default it is 1. Range is [0.015625 - 64].
2033
2034 @item mode
2035 Set waveform shape the LFO will use. Can be one of: sine, triangle, square,
2036 sawup or sawdown. Default is sine.
2037
2038 @item amount
2039 Set modulation. Define how much of original signal is affected by the LFO.
2040
2041 @item offset_l
2042 Set left channel offset. Default is 0. Allowed range is [0 - 1].
2043
2044 @item offset_r
2045 Set right channel offset. Default is 0.5. Allowed range is [0 - 1].
2046
2047 @item width
2048 Set pulse width. Default is 1. Allowed range is [0 - 2].
2049
2050 @item timing
2051 Set possible timing mode. Can be one of: bpm, ms or hz. Default is hz.
2052
2053 @item bpm
2054 Set bpm. Default is 120. Allowed range is [30 - 300]. Only used if timing
2055 is set to bpm.
2056
2057 @item ms
2058 Set ms. Default is 500. Allowed range is [10 - 2000]. Only used if timing
2059 is set to ms.
2060
2061 @item hz
2062 Set frequency in Hz. Default is 2. Allowed range is [0.01 - 100]. Only used
2063 if timing is set to hz.
2064 @end table
2065
2066 @anchor{aresample}
2067 @section aresample
2068
2069 Resample the input audio to the specified parameters, using the
2070 libswresample library. If none are specified then the filter will
2071 automatically convert between its input and output.
2072
2073 This filter is also able to stretch/squeeze the audio data to make it match
2074 the timestamps or to inject silence / cut out audio to make it match the
2075 timestamps, do a combination of both or do neither.
2076
2077 The filter accepts the syntax
2078 [@var{sample_rate}:]@var{resampler_options}, where @var{sample_rate}
2079 expresses a sample rate and @var{resampler_options} is a list of
2080 @var{key}=@var{value} pairs, separated by ":". See the
2081 @ref{Resampler Options,,"Resampler Options" section in the
2082 ffmpeg-resampler(1) manual,ffmpeg-resampler}
2083 for the complete list of supported options.
2084
2085 @subsection Examples
2086
2087 @itemize
2088 @item
2089 Resample the input audio to 44100Hz:
2090 @example
2091 aresample=44100
2092 @end example
2093
2094 @item
2095 Stretch/squeeze samples to the given timestamps, with a maximum of 1000
2096 samples per second compensation:
2097 @example
2098 aresample=async=1000
2099 @end example
2100 @end itemize
2101
2102 @section areverse
2103
2104 Reverse an audio clip.
2105
2106 Warning: This filter requires memory to buffer the entire clip, so trimming
2107 is suggested.
2108
2109 @subsection Examples
2110
2111 @itemize
2112 @item
2113 Take the first 5 seconds of a clip, and reverse it.
2114 @example
2115 atrim=end=5,areverse
2116 @end example
2117 @end itemize
2118
2119 @section arnndn
2120
2121 Reduce noise from speech using Recurrent Neural Networks.
2122
2123 This filter accepts the following options:
2124
2125 @table @option
2126 @item model, m
2127 Set train model file to load. This option is always required.
2128 @end table
2129
2130 @section asetnsamples
2131
2132 Set the number of samples per each output audio frame.
2133
2134 The last output packet may contain a different number of samples, as
2135 the filter will flush all the remaining samples when the input audio
2136 signals its end.
2137
2138 The filter accepts the following options:
2139
2140 @table @option
2141
2142 @item nb_out_samples, n
2143 Set the number of frames per each output audio frame. The number is
2144 intended as the number of samples @emph{per each channel}.
2145 Default value is 1024.
2146
2147 @item pad, p
2148 If set to 1, the filter will pad the last audio frame with zeroes, so
2149 that the last frame will contain the same number of samples as the
2150 previous ones. Default value is 1.
2151 @end table
2152
2153 For example, to set the number of per-frame samples to 1234 and
2154 disable padding for the last frame, use:
2155 @example
2156 asetnsamples=n=1234:p=0
2157 @end example
2158
2159 @section asetrate
2160
2161 Set the sample rate without altering the PCM data.
2162 This will result in a change of speed and pitch.
2163
2164 The filter accepts the following options:
2165
2166 @table @option
2167 @item sample_rate, r
2168 Set the output sample rate. Default is 44100 Hz.
2169 @end table
2170
2171 @section ashowinfo
2172
2173 Show a line containing various information for each input audio frame.
2174 The input audio is not modified.
2175
2176 The shown line contains a sequence of key/value pairs of the form
2177 @var{key}:@var{value}.
2178
2179 The following values are shown in the output:
2180
2181 @table @option
2182 @item n
2183 The (sequential) number of the input frame, starting from 0.
2184
2185 @item pts
2186 The presentation timestamp of the input frame, in time base units; the time base
2187 depends on the filter input pad, and is usually 1/@var{sample_rate}.
2188
2189 @item pts_time
2190 The presentation timestamp of the input frame in seconds.
2191
2192 @item pos
2193 position of the frame in the input stream, -1 if this information in
2194 unavailable and/or meaningless (for example in case of synthetic audio)
2195
2196 @item fmt
2197 The sample format.
2198
2199 @item chlayout
2200 The channel layout.
2201
2202 @item rate
2203 The sample rate for the audio frame.
2204
2205 @item nb_samples
2206 The number of samples (per channel) in the frame.
2207
2208 @item checksum
2209 The Adler-32 checksum (printed in hexadecimal) of the audio data. For planar
2210 audio, the data is treated as if all the planes were concatenated.
2211
2212 @item plane_checksums
2213 A list of Adler-32 checksums for each data plane.
2214 @end table
2215
2216 @section asoftclip
2217 Apply audio soft clipping.
2218
2219 Soft clipping is a type of distortion effect where the amplitude of a signal is saturated
2220 along a smooth curve, rather than the abrupt shape of hard-clipping.
2221
2222 This filter accepts the following options:
2223
2224 @table @option
2225 @item type
2226 Set type of soft-clipping.
2227
2228 It accepts the following values:
2229 @table @option
2230 @item tanh
2231 @item atan
2232 @item cubic
2233 @item exp
2234 @item alg
2235 @item quintic
2236 @item sin
2237 @end table
2238
2239 @item param
2240 Set additional parameter which controls sigmoid function.
2241 @end table
2242
2243 @section asr
2244 Automatic Speech Recognition
2245
2246 This filter uses PocketSphinx for speech recognition. To enable
2247 compilation of this filter, you need to configure FFmpeg with
2248 @code{--enable-pocketsphinx}.
2249
2250 It accepts the following options:
2251
2252 @table @option
2253 @item rate
2254 Set sampling rate of input audio. Defaults is @code{16000}.
2255 This need to match speech models, otherwise one will get poor results.
2256
2257 @item hmm
2258 Set dictionary containing acoustic model files.
2259
2260 @item dict
2261 Set pronunciation dictionary.
2262
2263 @item lm
2264 Set language model file.
2265
2266 @item lmctl
2267 Set language model set.
2268
2269 @item lmname
2270 Set which language model to use.
2271
2272 @item logfn
2273 Set output for log messages.
2274 @end table
2275
2276 The filter exports recognized speech as the frame metadata @code{lavfi.asr.text}.
2277
2278 @anchor{astats}
2279 @section astats
2280
2281 Display time domain statistical information about the audio channels.
2282 Statistics are calculated and displayed for each audio channel and,
2283 where applicable, an overall figure is also given.
2284
2285 It accepts the following option:
2286 @table @option
2287 @item length
2288 Short window length in seconds, used for peak and trough RMS measurement.
2289 Default is @code{0.05} (50 milliseconds). Allowed range is @code{[0.01 - 10]}.
2290
2291 @item metadata
2292
2293 Set metadata injection. All the metadata keys are prefixed with @code{lavfi.astats.X},
2294 where @code{X} is channel number starting from 1 or string @code{Overall}. Default is
2295 disabled.
2296
2297 Available keys for each channel are:
2298 DC_offset
2299 Min_level
2300 Max_level
2301 Min_difference
2302 Max_difference
2303 Mean_difference
2304 RMS_difference
2305 Peak_level
2306 RMS_peak
2307 RMS_trough
2308 Crest_factor
2309 Flat_factor
2310 Peak_count
2311 Bit_depth
2312 Dynamic_range
2313 Zero_crossings
2314 Zero_crossings_rate
2315 Number_of_NaNs
2316 Number_of_Infs
2317 Number_of_denormals
2318
2319 and for Overall:
2320 DC_offset
2321 Min_level
2322 Max_level
2323 Min_difference
2324 Max_difference
2325 Mean_difference
2326 RMS_difference
2327 Peak_level
2328 RMS_level
2329 RMS_peak
2330 RMS_trough
2331 Flat_factor
2332 Peak_count
2333 Bit_depth
2334 Number_of_samples
2335 Number_of_NaNs
2336 Number_of_Infs
2337 Number_of_denormals
2338
2339 For example full key look like this @code{lavfi.astats.1.DC_offset} or
2340 this @code{lavfi.astats.Overall.Peak_count}.
2341
2342 For description what each key means read below.
2343
2344 @item reset
2345 Set number of frame after which stats are going to be recalculated.
2346 Default is disabled.
2347
2348 @item measure_perchannel
2349 Select the entries which need to be measured per channel. The metadata keys can
2350 be used as flags, default is @option{all} which measures everything.
2351 @option{none} disables all per channel measurement.
2352
2353 @item measure_overall
2354 Select the entries which need to be measured overall. The metadata keys can
2355 be used as flags, default is @option{all} which measures everything.
2356 @option{none} disables all overall measurement.
2357
2358 @end table
2359
2360 A description of each shown parameter follows:
2361
2362 @table @option
2363 @item DC offset
2364 Mean amplitude displacement from zero.
2365
2366 @item Min level
2367 Minimal sample level.
2368
2369 @item Max level
2370 Maximal sample level.
2371
2372 @item Min difference
2373 Minimal difference between two consecutive samples.
2374
2375 @item Max difference
2376 Maximal difference between two consecutive samples.
2377
2378 @item Mean difference
2379 Mean difference between two consecutive samples.
2380 The average of each difference between two consecutive samples.
2381
2382 @item RMS difference
2383 Root Mean Square difference between two consecutive samples.
2384
2385 @item Peak level dB
2386 @item RMS level dB
2387 Standard peak and RMS level measured in dBFS.
2388
2389 @item RMS peak dB
2390 @item RMS trough dB
2391 Peak and trough values for RMS level measured over a short window.
2392
2393 @item Crest factor
2394 Standard ratio of peak to RMS level (note: not in dB).
2395
2396 @item Flat factor
2397 Flatness (i.e. consecutive samples with the same value) of the signal at its peak levels
2398 (i.e. either @var{Min level} or @var{Max level}).
2399
2400 @item Peak count
2401 Number of occasions (not the number of samples) that the signal attained either
2402 @var{Min level} or @var{Max level}.
2403
2404 @item Bit depth
2405 Overall bit depth of audio. Number of bits used for each sample.
2406
2407 @item Dynamic range
2408 Measured dynamic range of audio in dB.
2409
2410 @item Zero crossings
2411 Number of points where the waveform crosses the zero level axis.
2412
2413 @item Zero crossings rate
2414 Rate of Zero crossings and number of audio samples.
2415 @end table
2416
2417 @section atempo
2418
2419 Adjust audio tempo.
2420
2421 The filter accepts exactly one parameter, the audio tempo. If not
2422 specified then the filter will assume nominal 1.0 tempo. Tempo must
2423 be in the [0.5, 100.0] range.
2424
2425 Note that tempo greater than 2 will skip some samples rather than
2426 blend them in.  If for any reason this is a concern it is always
2427 possible to daisy-chain several instances of atempo to achieve the
2428 desired product tempo.
2429
2430 @subsection Examples
2431
2432 @itemize
2433 @item
2434 Slow down audio to 80% tempo:
2435 @example
2436 atempo=0.8
2437 @end example
2438
2439 @item
2440 To speed up audio to 300% tempo:
2441 @example
2442 atempo=3
2443 @end example
2444
2445 @item
2446 To speed up audio to 300% tempo by daisy-chaining two atempo instances:
2447 @example
2448 atempo=sqrt(3),atempo=sqrt(3)
2449 @end example
2450 @end itemize
2451
2452 @subsection Commands
2453
2454 This filter supports the following commands:
2455 @table @option
2456 @item tempo
2457 Change filter tempo scale factor.
2458 Syntax for the command is : "@var{tempo}"
2459 @end table
2460
2461 @section atrim
2462
2463 Trim the input so that the output contains one continuous subpart of the input.
2464
2465 It accepts the following parameters:
2466 @table @option
2467 @item start
2468 Timestamp (in seconds) of the start of the section to keep. I.e. the audio
2469 sample with the timestamp @var{start} will be the first sample in the output.
2470
2471 @item end
2472 Specify time of the first audio sample that will be dropped, i.e. the
2473 audio sample immediately preceding the one with the timestamp @var{end} will be
2474 the last sample in the output.
2475
2476 @item start_pts
2477 Same as @var{start}, except this option sets the start timestamp in samples
2478 instead of seconds.
2479
2480 @item end_pts
2481 Same as @var{end}, except this option sets the end timestamp in samples instead
2482 of seconds.
2483
2484 @item duration
2485 The maximum duration of the output in seconds.
2486
2487 @item start_sample
2488 The number of the first sample that should be output.
2489
2490 @item end_sample
2491 The number of the first sample that should be dropped.
2492 @end table
2493
2494 @option{start}, @option{end}, and @option{duration} are expressed as time
2495 duration specifications; see
2496 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}.
2497
2498 Note that the first two sets of the start/end options and the @option{duration}
2499 option look at the frame timestamp, while the _sample options simply count the
2500 samples that pass through the filter. So start/end_pts and start/end_sample will
2501 give different results when the timestamps are wrong, inexact or do not start at
2502 zero. Also note that this filter does not modify the timestamps. If you wish
2503 to have the output timestamps start at zero, insert the asetpts filter after the
2504 atrim filter.
2505
2506 If multiple start or end options are set, this filter tries to be greedy and
2507 keep all samples that match at least one of the specified constraints. To keep
2508 only the part that matches all the constraints at once, chain multiple atrim
2509 filters.
2510
2511 The defaults are such that all the input is kept. So it is possible to set e.g.
2512 just the end values to keep everything before the specified time.
2513
2514 Examples:
2515 @itemize
2516 @item
2517 Drop everything except the second minute of input:
2518 @example
2519 ffmpeg -i INPUT -af atrim=60:120
2520 @end example
2521
2522 @item
2523 Keep only the first 1000 samples:
2524 @example
2525 ffmpeg -i INPUT -af atrim=end_sample=1000
2526 @end example
2527
2528 @end itemize
2529
2530 @section bandpass
2531
2532 Apply a two-pole Butterworth band-pass filter with central
2533 frequency @var{frequency}, and (3dB-point) band-width width.
2534 The @var{csg} option selects a constant skirt gain (peak gain = Q)
2535 instead of the default: constant 0dB peak gain.
2536 The filter roll off at 6dB per octave (20dB per decade).
2537
2538 The filter accepts the following options:
2539
2540 @table @option
2541 @item frequency, f
2542 Set the filter's central frequency. Default is @code{3000}.
2543
2544 @item csg
2545 Constant skirt gain if set to 1. Defaults to 0.
2546
2547 @item width_type, t
2548 Set method to specify band-width of filter.
2549 @table @option
2550 @item h
2551 Hz
2552 @item q
2553 Q-Factor
2554 @item o
2555 octave
2556 @item s
2557 slope
2558 @item k
2559 kHz
2560 @end table
2561
2562 @item width, w
2563 Specify the band-width of a filter in width_type units.
2564
2565 @item mix, m
2566 How much to use filtered signal in output. Default is 1.
2567 Range is between 0 and 1.
2568
2569 @item channels, c
2570 Specify which channels to filter, by default all available are filtered.
2571 @end table
2572
2573 @subsection Commands
2574
2575 This filter supports the following commands:
2576 @table @option
2577 @item frequency, f
2578 Change bandpass frequency.
2579 Syntax for the command is : "@var{frequency}"
2580
2581 @item width_type, t
2582 Change bandpass width_type.
2583 Syntax for the command is : "@var{width_type}"
2584
2585 @item width, w
2586 Change bandpass width.
2587 Syntax for the command is : "@var{width}"
2588
2589 @item mix, m
2590 Change bandpass mix.
2591 Syntax for the command is : "@var{mix}"
2592 @end table
2593
2594 @section bandreject
2595
2596 Apply a two-pole Butterworth band-reject filter with central
2597 frequency @var{frequency}, and (3dB-point) band-width @var{width}.
2598 The filter roll off at 6dB per octave (20dB per decade).
2599
2600 The filter accepts the following options:
2601
2602 @table @option
2603 @item frequency, f
2604 Set the filter's central frequency. Default is @code{3000}.
2605
2606 @item width_type, t
2607 Set method to specify band-width of filter.
2608 @table @option
2609 @item h
2610 Hz
2611 @item q
2612 Q-Factor
2613 @item o
2614 octave
2615 @item s
2616 slope
2617 @item k
2618 kHz
2619 @end table
2620
2621 @item width, w
2622 Specify the band-width of a filter in width_type units.
2623
2624 @item mix, m
2625 How much to use filtered signal in output. Default is 1.
2626 Range is between 0 and 1.
2627
2628 @item channels, c
2629 Specify which channels to filter, by default all available are filtered.
2630 @end table
2631
2632 @subsection Commands
2633
2634 This filter supports the following commands:
2635 @table @option
2636 @item frequency, f
2637 Change bandreject frequency.
2638 Syntax for the command is : "@var{frequency}"
2639
2640 @item width_type, t
2641 Change bandreject width_type.
2642 Syntax for the command is : "@var{width_type}"
2643
2644 @item width, w
2645 Change bandreject width.
2646 Syntax for the command is : "@var{width}"
2647
2648 @item mix, m
2649 Change bandreject mix.
2650 Syntax for the command is : "@var{mix}"
2651 @end table
2652
2653 @section bass, lowshelf
2654
2655 Boost or cut the bass (lower) frequencies of the audio using a two-pole
2656 shelving filter with a response similar to that of a standard
2657 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
2658
2659 The filter accepts the following options:
2660
2661 @table @option
2662 @item gain, g
2663 Give the gain at 0 Hz. Its useful range is about -20
2664 (for a large cut) to +20 (for a large boost).
2665 Beware of clipping when using a positive gain.
2666
2667 @item frequency, f
2668 Set the filter's central frequency and so can be used
2669 to extend or reduce the frequency range to be boosted or cut.
2670 The default value is @code{100} Hz.
2671
2672 @item width_type, t
2673 Set method to specify band-width of filter.
2674 @table @option
2675 @item h
2676 Hz
2677 @item q
2678 Q-Factor
2679 @item o
2680 octave
2681 @item s
2682 slope
2683 @item k
2684 kHz
2685 @end table
2686
2687 @item width, w
2688 Determine how steep is the filter's shelf transition.
2689
2690 @item mix, m
2691 How much to use filtered signal in output. Default is 1.
2692 Range is between 0 and 1.
2693
2694 @item channels, c
2695 Specify which channels to filter, by default all available are filtered.
2696 @end table
2697
2698 @subsection Commands
2699
2700 This filter supports the following commands:
2701 @table @option
2702 @item frequency, f
2703 Change bass frequency.
2704 Syntax for the command is : "@var{frequency}"
2705
2706 @item width_type, t
2707 Change bass width_type.
2708 Syntax for the command is : "@var{width_type}"
2709
2710 @item width, w
2711 Change bass width.
2712 Syntax for the command is : "@var{width}"
2713
2714 @item gain, g
2715 Change bass gain.
2716 Syntax for the command is : "@var{gain}"
2717
2718 @item mix, m
2719 Change bass mix.
2720 Syntax for the command is : "@var{mix}"
2721 @end table
2722
2723 @section biquad
2724
2725 Apply a biquad IIR filter with the given coefficients.
2726 Where @var{b0}, @var{b1}, @var{b2} and @var{a0}, @var{a1}, @var{a2}
2727 are the numerator and denominator coefficients respectively.
2728 and @var{channels}, @var{c} specify which channels to filter, by default all
2729 available are filtered.
2730
2731 @subsection Commands
2732
2733 This filter supports the following commands:
2734 @table @option
2735 @item a0
2736 @item a1
2737 @item a2
2738 @item b0
2739 @item b1
2740 @item b2
2741 Change biquad parameter.
2742 Syntax for the command is : "@var{value}"
2743
2744 @item mix, m
2745 How much to use filtered signal in output. Default is 1.
2746 Range is between 0 and 1.
2747 @end table
2748
2749 @section bs2b
2750 Bauer stereo to binaural transformation, which improves headphone listening of
2751 stereo audio records.
2752
2753 To enable compilation of this filter you need to configure FFmpeg with
2754 @code{--enable-libbs2b}.
2755
2756 It accepts the following parameters:
2757 @table @option
2758
2759 @item profile
2760 Pre-defined crossfeed level.
2761 @table @option
2762
2763 @item default
2764 Default level (fcut=700, feed=50).
2765
2766 @item cmoy
2767 Chu Moy circuit (fcut=700, feed=60).
2768
2769 @item jmeier
2770 Jan Meier circuit (fcut=650, feed=95).
2771
2772 @end table
2773
2774 @item fcut
2775 Cut frequency (in Hz).
2776
2777 @item feed
2778 Feed level (in Hz).
2779
2780 @end table
2781
2782 @section channelmap
2783
2784 Remap input channels to new locations.
2785
2786 It accepts the following parameters:
2787 @table @option
2788 @item map
2789 Map channels from input to output. The argument is a '|'-separated list of
2790 mappings, each in the @code{@var{in_channel}-@var{out_channel}} or
2791 @var{in_channel} form. @var{in_channel} can be either the name of the input
2792 channel (e.g. FL for front left) or its index in the input channel layout.
2793 @var{out_channel} is the name of the output channel or its index in the output
2794 channel layout. If @var{out_channel} is not given then it is implicitly an
2795 index, starting with zero and increasing by one for each mapping.
2796
2797 @item channel_layout
2798 The channel layout of the output stream.
2799 @end table
2800
2801 If no mapping is present, the filter will implicitly map input channels to
2802 output channels, preserving indices.
2803
2804 @subsection Examples
2805
2806 @itemize
2807 @item
2808 For example, assuming a 5.1+downmix input MOV file,
2809 @example
2810 ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
2811 @end example
2812 will create an output WAV file tagged as stereo from the downmix channels of
2813 the input.
2814
2815 @item
2816 To fix a 5.1 WAV improperly encoded in AAC's native channel order
2817 @example
2818 ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
2819 @end example
2820 @end itemize
2821
2822 @section channelsplit
2823
2824 Split each channel from an input audio stream into a separate output stream.
2825
2826 It accepts the following parameters:
2827 @table @option
2828 @item channel_layout
2829 The channel layout of the input stream. The default is "stereo".
2830 @item channels
2831 A channel layout describing the channels to be extracted as separate output streams
2832 or "all" to extract each input channel as a separate stream. The default is "all".
2833
2834 Choosing channels not present in channel layout in the input will result in an error.
2835 @end table
2836
2837 @subsection Examples
2838
2839 @itemize
2840 @item
2841 For example, assuming a stereo input MP3 file,
2842 @example
2843 ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
2844 @end example
2845 will create an output Matroska file with two audio streams, one containing only
2846 the left channel and the other the right channel.
2847
2848 @item
2849 Split a 5.1 WAV file into per-channel files:
2850 @example
2851 ffmpeg -i in.wav -filter_complex
2852 'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
2853 -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
2854 front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
2855 side_right.wav
2856 @end example
2857
2858 @item
2859 Extract only LFE from a 5.1 WAV file:
2860 @example
2861 ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1:channels=LFE[LFE]'
2862 -map '[LFE]' lfe.wav
2863 @end example
2864 @end itemize
2865
2866 @section chorus
2867 Add a chorus effect to the audio.
2868
2869 Can make a single vocal sound like a chorus, but can also be applied to instrumentation.
2870
2871 Chorus resembles an echo effect with a short delay, but whereas with echo the delay is
2872 constant, with chorus, it is varied using using sinusoidal or triangular modulation.
2873 The modulation depth defines the range the modulated delay is played before or after
2874 the delay. Hence the delayed sound will sound slower or faster, that is the delayed
2875 sound tuned around the original one, like in a chorus where some vocals are slightly
2876 off key.
2877
2878 It accepts the following parameters:
2879 @table @option
2880 @item in_gain
2881 Set input gain. Default is 0.4.
2882
2883 @item out_gain
2884 Set output gain. Default is 0.4.
2885
2886 @item delays
2887 Set delays. A typical delay is around 40ms to 60ms.
2888
2889 @item decays
2890 Set decays.
2891
2892 @item speeds
2893 Set speeds.
2894
2895 @item depths
2896 Set depths.
2897 @end table
2898
2899 @subsection Examples
2900
2901 @itemize
2902 @item
2903 A single delay:
2904 @example
2905 chorus=0.7:0.9:55:0.4:0.25:2
2906 @end example
2907
2908 @item
2909 Two delays:
2910 @example
2911 chorus=0.6:0.9:50|60:0.4|0.32:0.25|0.4:2|1.3
2912 @end example
2913
2914 @item
2915 Fuller sounding chorus with three delays:
2916 @example
2917 chorus=0.5:0.9:50|60|40:0.4|0.32|0.3:0.25|0.4|0.3:2|2.3|1.3
2918 @end example
2919 @end itemize
2920
2921 @section compand
2922 Compress or expand the audio's dynamic range.
2923
2924 It accepts the following parameters:
2925
2926 @table @option
2927
2928 @item attacks
2929 @item decays
2930 A list of times in seconds for each channel over which the instantaneous level
2931 of the input signal is averaged to determine its volume. @var{attacks} refers to
2932 increase of volume and @var{decays} refers to decrease of volume. For most
2933 situations, the attack time (response to the audio getting louder) should be
2934 shorter than the decay time, because the human ear is more sensitive to sudden
2935 loud audio than sudden soft audio. A typical value for attack is 0.3 seconds and
2936 a typical value for decay is 0.8 seconds.
2937 If specified number of attacks & decays is lower than number of channels, the last
2938 set attack/decay will be used for all remaining channels.
2939
2940 @item points
2941 A list of points for the transfer function, specified in dB relative to the
2942 maximum possible signal amplitude. Each key points list must be defined using
2943 the following syntax: @code{x0/y0|x1/y1|x2/y2|....} or
2944 @code{x0/y0 x1/y1 x2/y2 ....}
2945
2946 The input values must be in strictly increasing order but the transfer function
2947 does not have to be monotonically rising. The point @code{0/0} is assumed but
2948 may be overridden (by @code{0/out-dBn}). Typical values for the transfer
2949 function are @code{-70/-70|-60/-20|1/0}.
2950
2951 @item soft-knee
2952 Set the curve radius in dB for all joints. It defaults to 0.01.
2953
2954 @item gain
2955 Set the additional gain in dB to be applied at all points on the transfer
2956 function. This allows for easy adjustment of the overall gain.
2957 It defaults to 0.
2958
2959 @item volume
2960 Set an initial volume, in dB, to be assumed for each channel when filtering
2961 starts. This permits the user to supply a nominal level initially, so that, for
2962 example, a very large gain is not applied to initial signal levels before the
2963 companding has begun to operate. A typical value for audio which is initially
2964 quiet is -90 dB. It defaults to 0.
2965
2966 @item delay
2967 Set a delay, in seconds. The input audio is analyzed immediately, but audio is
2968 delayed before being fed to the volume adjuster. Specifying a delay
2969 approximately equal to the attack/decay times allows the filter to effectively
2970 operate in predictive rather than reactive mode. It defaults to 0.
2971
2972 @end table
2973
2974 @subsection Examples
2975
2976 @itemize
2977 @item
2978 Make music with both quiet and loud passages suitable for listening to in a
2979 noisy environment:
2980 @example
2981 compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
2982 @end example
2983
2984 Another example for audio with whisper and explosion parts:
2985 @example
2986 compand=0|0:1|1:-90/-900|-70/-70|-30/-9|0/-3:6:0:0:0
2987 @end example
2988
2989 @item
2990 A noise gate for when the noise is at a lower level than the signal:
2991 @example
2992 compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1
2993 @end example
2994
2995 @item
2996 Here is another noise gate, this time for when the noise is at a higher level
2997 than the signal (making it, in some ways, similar to squelch):
2998 @example
2999 compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1
3000 @end example
3001
3002 @item
3003 2:1 compression starting at -6dB:
3004 @example
3005 compand=points=-80/-80|-6/-6|0/-3.8|20/3.5
3006 @end example
3007
3008 @item
3009 2:1 compression starting at -9dB:
3010 @example
3011 compand=points=-80/-80|-9/-9|0/-5.3|20/2.9
3012 @end example
3013
3014 @item
3015 2:1 compression starting at -12dB:
3016 @example
3017 compand=points=-80/-80|-12/-12|0/-6.8|20/1.9
3018 @end example
3019
3020 @item
3021 2:1 compression starting at -18dB:
3022 @example
3023 compand=points=-80/-80|-18/-18|0/-9.8|20/0.7
3024 @end example
3025
3026 @item
3027 3:1 compression starting at -15dB:
3028 @example
3029 compand=points=-80/-80|-15/-15|0/-10.8|20/-5.2
3030 @end example
3031
3032 @item
3033 Compressor/Gate:
3034 @example
3035 compand=points=-80/-105|-62/-80|-15.4/-15.4|0/-12|20/-7.6
3036 @end example
3037
3038 @item
3039 Expander:
3040 @example
3041 compand=attacks=0:points=-80/-169|-54/-80|-49.5/-64.6|-41.1/-41.1|-25.8/-15|-10.8/-4.5|0/0|20/8.3
3042 @end example
3043
3044 @item
3045 Hard limiter at -6dB:
3046 @example
3047 compand=attacks=0:points=-80/-80|-6/-6|20/-6
3048 @end example
3049
3050 @item
3051 Hard limiter at -12dB:
3052 @example
3053 compand=attacks=0:points=-80/-80|-12/-12|20/-12
3054 @end example
3055
3056 @item
3057 Hard noise gate at -35 dB:
3058 @example
3059 compand=attacks=0:points=-80/-115|-35.1/-80|-35/-35|20/20
3060 @end example
3061
3062 @item
3063 Soft limiter:
3064 @example
3065 compand=attacks=0:points=-80/-80|-12.4/-12.4|-6/-8|0/-6.8|20/-2.8
3066 @end example
3067 @end itemize
3068
3069 @section compensationdelay
3070
3071 Compensation Delay Line is a metric based delay to compensate differing
3072 positions of microphones or speakers.
3073
3074 For example, you have recorded guitar with two microphones placed in
3075 different locations. Because the front of sound wave has fixed speed in
3076 normal conditions, the phasing of microphones can vary and depends on
3077 their location and interposition. The best sound mix can be achieved when
3078 these microphones are in phase (synchronized). Note that a distance of
3079 ~30 cm between microphones makes one microphone capture the signal in
3080 antiphase to the other microphone. That makes the final mix sound moody.
3081 This filter helps to solve phasing problems by adding different delays
3082 to each microphone track and make them synchronized.
3083
3084 The best result can be reached when you take one track as base and
3085 synchronize other tracks one by one with it.
3086 Remember that synchronization/delay tolerance depends on sample rate, too.
3087 Higher sample rates will give more tolerance.
3088
3089 The filter accepts the following parameters:
3090
3091 @table @option
3092 @item mm
3093 Set millimeters distance. This is compensation distance for fine tuning.
3094 Default is 0.
3095
3096 @item cm
3097 Set cm distance. This is compensation distance for tightening distance setup.
3098 Default is 0.
3099
3100 @item m
3101 Set meters distance. This is compensation distance for hard distance setup.
3102 Default is 0.
3103
3104 @item dry
3105 Set dry amount. Amount of unprocessed (dry) signal.
3106 Default is 0.
3107
3108 @item wet
3109 Set wet amount. Amount of processed (wet) signal.
3110 Default is 1.
3111
3112 @item temp
3113 Set temperature in degrees Celsius. This is the temperature of the environment.
3114 Default is 20.
3115 @end table
3116
3117 @section crossfeed
3118 Apply headphone crossfeed filter.
3119
3120 Crossfeed is the process of blending the left and right channels of stereo
3121 audio recording.
3122 It is mainly used to reduce extreme stereo separation of low frequencies.
3123
3124 The intent is to produce more speaker like sound to the listener.
3125
3126 The filter accepts the following options:
3127
3128 @table @option
3129 @item strength
3130 Set strength of crossfeed. Default is 0.2. Allowed range is from 0 to 1.
3131 This sets gain of low shelf filter for side part of stereo image.
3132 Default is -6dB. Max allowed is -30db when strength is set to 1.
3133
3134 @item range
3135 Set soundstage wideness. Default is 0.5. Allowed range is from 0 to 1.
3136 This sets cut off frequency of low shelf filter. Default is cut off near
3137 1550 Hz. With range set to 1 cut off frequency is set to 2100 Hz.
3138
3139 @item level_in
3140 Set input gain. Default is 0.9.
3141
3142 @item level_out
3143 Set output gain. Default is 1.
3144 @end table
3145
3146 @section crystalizer
3147 Simple algorithm to expand audio dynamic range.
3148
3149 The filter accepts the following options:
3150
3151 @table @option
3152 @item i
3153 Sets the intensity of effect (default: 2.0). Must be in range between 0.0
3154 (unchanged sound) to 10.0 (maximum effect).
3155
3156 @item c
3157 Enable clipping. By default is enabled.
3158 @end table
3159
3160 @section dcshift
3161 Apply a DC shift to the audio.
3162
3163 This can be useful to remove a DC offset (caused perhaps by a hardware problem
3164 in the recording chain) from the audio. The effect of a DC offset is reduced
3165 headroom and hence volume. The @ref{astats} filter can be used to determine if
3166 a signal has a DC offset.
3167
3168 @table @option
3169 @item shift
3170 Set the DC shift, allowed range is [-1, 1]. It indicates the amount to shift
3171 the audio.
3172
3173 @item limitergain
3174 Optional. It should have a value much less than 1 (e.g. 0.05 or 0.02) and is
3175 used to prevent clipping.
3176 @end table
3177
3178 @section deesser
3179
3180 Apply de-essing to the audio samples.
3181
3182 @table @option
3183 @item i
3184 Set intensity for triggering de-essing. Allowed range is from 0 to 1.
3185 Default is 0.
3186
3187 @item m
3188 Set amount of ducking on treble part of sound. Allowed range is from 0 to 1.
3189 Default is 0.5.
3190
3191 @item f
3192 How much of original frequency content to keep when de-essing. Allowed range is from 0 to 1.
3193 Default is 0.5.
3194
3195 @item s
3196 Set the output mode.
3197
3198 It accepts the following values:
3199 @table @option
3200 @item i
3201 Pass input unchanged.
3202
3203 @item o
3204 Pass ess filtered out.
3205
3206 @item e
3207 Pass only ess.
3208
3209 Default value is @var{o}.
3210 @end table
3211
3212 @end table
3213
3214 @section drmeter
3215 Measure audio dynamic range.
3216
3217 DR values of 14 and higher is found in very dynamic material. DR of 8 to 13
3218 is found in transition material. And anything less that 8 have very poor dynamics
3219 and is very compressed.
3220
3221 The filter accepts the following options:
3222
3223 @table @option
3224 @item length
3225 Set window length in seconds used to split audio into segments of equal length.
3226 Default is 3 seconds.
3227 @end table
3228
3229 @section dynaudnorm
3230 Dynamic Audio Normalizer.
3231
3232 This filter applies a certain amount of gain to the input audio in order
3233 to bring its peak magnitude to a target level (e.g. 0 dBFS). However, in
3234 contrast to more "simple" normalization algorithms, the Dynamic Audio
3235 Normalizer *dynamically* re-adjusts the gain factor to the input audio.
3236 This allows for applying extra gain to the "quiet" sections of the audio
3237 while avoiding distortions or clipping the "loud" sections. In other words:
3238 The Dynamic Audio Normalizer will "even out" the volume of quiet and loud
3239 sections, in the sense that the volume of each section is brought to the
3240 same target level. Note, however, that the Dynamic Audio Normalizer achieves
3241 this goal *without* applying "dynamic range compressing". It will retain 100%
3242 of the dynamic range *within* each section of the audio file.
3243
3244 @table @option
3245 @item framelen, f
3246 Set the frame length in milliseconds. In range from 10 to 8000 milliseconds.
3247 Default is 500 milliseconds.
3248 The Dynamic Audio Normalizer processes the input audio in small chunks,
3249 referred to as frames. This is required, because a peak magnitude has no
3250 meaning for just a single sample value. Instead, we need to determine the
3251 peak magnitude for a contiguous sequence of sample values. While a "standard"
3252 normalizer would simply use the peak magnitude of the complete file, the
3253 Dynamic Audio Normalizer determines the peak magnitude individually for each
3254 frame. The length of a frame is specified in milliseconds. By default, the
3255 Dynamic Audio Normalizer uses a frame length of 500 milliseconds, which has
3256 been found to give good results with most files.
3257 Note that the exact frame length, in number of samples, will be determined
3258 automatically, based on the sampling rate of the individual input audio file.
3259
3260 @item gausssize, g
3261 Set the Gaussian filter window size. In range from 3 to 301, must be odd
3262 number. Default is 31.
3263 Probably the most important parameter of the Dynamic Audio Normalizer is the
3264 @code{window size} of the Gaussian smoothing filter. The filter's window size
3265 is specified in frames, centered around the current frame. For the sake of
3266 simplicity, this must be an odd number. Consequently, the default value of 31
3267 takes into account the current frame, as well as the 15 preceding frames and
3268 the 15 subsequent frames. Using a larger window results in a stronger
3269 smoothing effect and thus in less gain variation, i.e. slower gain
3270 adaptation. Conversely, using a smaller window results in a weaker smoothing
3271 effect and thus in more gain variation, i.e. faster gain adaptation.
3272 In other words, the more you increase this value, the more the Dynamic Audio
3273 Normalizer will behave like a "traditional" normalization filter. On the
3274 contrary, the more you decrease this value, the more the Dynamic Audio
3275 Normalizer will behave like a dynamic range compressor.
3276
3277 @item peak, p
3278 Set the target peak value. This specifies the highest permissible magnitude
3279 level for the normalized audio input. This filter will try to approach the
3280 target peak magnitude as closely as possible, but at the same time it also
3281 makes sure that the normalized signal will never exceed the peak magnitude.
3282 A frame's maximum local gain factor is imposed directly by the target peak
3283 magnitude. The default value is 0.95 and thus leaves a headroom of 5%*.
3284 It is not recommended to go above this value.
3285
3286 @item maxgain, m
3287 Set the maximum gain factor. In range from 1.0 to 100.0. Default is 10.0.
3288 The Dynamic Audio Normalizer determines the maximum possible (local) gain
3289 factor for each input frame, i.e. the maximum gain factor that does not
3290 result in clipping or distortion. The maximum gain factor is determined by
3291 the frame's highest magnitude sample. However, the Dynamic Audio Normalizer
3292 additionally bounds the frame's maximum gain factor by a predetermined
3293 (global) maximum gain factor. This is done in order to avoid excessive gain
3294 factors in "silent" or almost silent frames. By default, the maximum gain
3295 factor is 10.0, For most inputs the default value should be sufficient and
3296 it usually is not recommended to increase this value. Though, for input
3297 with an extremely low overall volume level, it may be necessary to allow even
3298 higher gain factors. Note, however, that the Dynamic Audio Normalizer does
3299 not simply apply a "hard" threshold (i.e. cut off values above the threshold).
3300 Instead, a "sigmoid" threshold function will be applied. This way, the
3301 gain factors will smoothly approach the threshold value, but never exceed that
3302 value.
3303
3304 @item targetrms, r
3305 Set the target RMS. In range from 0.0 to 1.0. Default is 0.0 - disabled.
3306 By default, the Dynamic Audio Normalizer performs "peak" normalization.
3307 This means that the maximum local gain factor for each frame is defined
3308 (only) by the frame's highest magnitude sample. This way, the samples can
3309 be amplified as much as possible without exceeding the maximum signal
3310 level, i.e. without clipping. Optionally, however, the Dynamic Audio
3311 Normalizer can also take into account the frame's root mean square,
3312 abbreviated RMS. In electrical engineering, the RMS is commonly used to
3313 determine the power of a time-varying signal. It is therefore considered
3314 that the RMS is a better approximation of the "perceived loudness" than
3315 just looking at the signal's peak magnitude. Consequently, by adjusting all
3316 frames to a constant RMS value, a uniform "perceived loudness" can be
3317 established. If a target RMS value has been specified, a frame's local gain
3318 factor is defined as the factor that would result in exactly that RMS value.
3319 Note, however, that the maximum local gain factor is still restricted by the
3320 frame's highest magnitude sample, in order to prevent clipping.
3321
3322 @item coupling, n
3323 Enable channels coupling. By default is enabled.
3324 By default, the Dynamic Audio Normalizer will amplify all channels by the same
3325 amount. This means the same gain factor will be applied to all channels, i.e.
3326 the maximum possible gain factor is determined by the "loudest" channel.
3327 However, in some recordings, it may happen that the volume of the different
3328 channels is uneven, e.g. one channel may be "quieter" than the other one(s).
3329 In this case, this option can be used to disable the channel coupling. This way,
3330 the gain factor will be determined independently for each channel, depending
3331 only on the individual channel's highest magnitude sample. This allows for
3332 harmonizing the volume of the different channels.
3333
3334 @item correctdc, c
3335 Enable DC bias correction. By default is disabled.
3336 An audio signal (in the time domain) is a sequence of sample values.
3337 In the Dynamic Audio Normalizer these sample values are represented in the
3338 -1.0 to 1.0 range, regardless of the original input format. Normally, the
3339 audio signal, or "waveform", should be centered around the zero point.
3340 That means if we calculate the mean value of all samples in a file, or in a
3341 single frame, then the result should be 0.0 or at least very close to that
3342 value. If, however, there is a significant deviation of the mean value from
3343 0.0, in either positive or negative direction, this is referred to as a
3344 DC bias or DC offset. Since a DC bias is clearly undesirable, the Dynamic
3345 Audio Normalizer provides optional DC bias correction.
3346 With DC bias correction enabled, the Dynamic Audio Normalizer will determine
3347 the mean value, or "DC correction" offset, of each input frame and subtract
3348 that value from all of the frame's sample values which ensures those samples
3349 are centered around 0.0 again. Also, in order to avoid "gaps" at the frame
3350 boundaries, the DC correction offset values will be interpolated smoothly
3351 between neighbouring frames.
3352
3353 @item altboundary, b
3354 Enable alternative boundary mode. By default is disabled.
3355 The Dynamic Audio Normalizer takes into account a certain neighbourhood
3356 around each frame. This includes the preceding frames as well as the
3357 subsequent frames. However, for the "boundary" frames, located at the very
3358 beginning and at the very end of the audio file, not all neighbouring
3359 frames are available. In particular, for the first few frames in the audio
3360 file, the preceding frames are not known. And, similarly, for the last few
3361 frames in the audio file, the subsequent frames are not known. Thus, the
3362 question arises which gain factors should be assumed for the missing frames
3363 in the "boundary" region. The Dynamic Audio Normalizer implements two modes
3364 to deal with this situation. The default boundary mode assumes a gain factor
3365 of exactly 1.0 for the missing frames, resulting in a smooth "fade in" and
3366 "fade out" at the beginning and at the end of the input, respectively.
3367
3368 @item compress, s
3369 Set the compress factor. In range from 0.0 to 30.0. Default is 0.0.
3370 By default, the Dynamic Audio Normalizer does not apply "traditional"
3371 compression. This means that signal peaks will not be pruned and thus the
3372 full dynamic range will be retained within each local neighbourhood. However,
3373 in some cases it may be desirable to combine the Dynamic Audio Normalizer's
3374 normalization algorithm with a more "traditional" compression.
3375 For this purpose, the Dynamic Audio Normalizer provides an optional compression
3376 (thresholding) function. If (and only if) the compression feature is enabled,
3377 all input frames will be processed by a soft knee thresholding function prior
3378 to the actual normalization process. Put simply, the thresholding function is
3379 going to prune all samples whose magnitude exceeds a certain threshold value.
3380 However, the Dynamic Audio Normalizer does not simply apply a fixed threshold
3381 value. Instead, the threshold value will be adjusted for each individual
3382 frame.
3383 In general, smaller parameters result in stronger compression, and vice versa.
3384 Values below 3.0 are not recommended, because audible distortion may appear.
3385 @end table
3386
3387 @section earwax
3388
3389 Make audio easier to listen to on headphones.
3390
3391 This filter adds `cues' to 44.1kHz stereo (i.e. audio CD format) audio
3392 so that when listened to on headphones the stereo image is moved from
3393 inside your head (standard for headphones) to outside and in front of
3394 the listener (standard for speakers).
3395
3396 Ported from SoX.
3397
3398 @section equalizer
3399
3400 Apply a two-pole peaking equalisation (EQ) filter. With this
3401 filter, the signal-level at and around a selected frequency can
3402 be increased or decreased, whilst (unlike bandpass and bandreject
3403 filters) that at all other frequencies is unchanged.
3404
3405 In order to produce complex equalisation curves, this filter can
3406 be given several times, each with a different central frequency.
3407
3408 The filter accepts the following options:
3409
3410 @table @option
3411 @item frequency, f
3412 Set the filter's central frequency in Hz.
3413
3414 @item width_type, t
3415 Set method to specify band-width of filter.
3416 @table @option
3417 @item h
3418 Hz
3419 @item q
3420 Q-Factor
3421 @item o
3422 octave
3423 @item s
3424 slope
3425 @item k
3426 kHz
3427 @end table
3428
3429 @item width, w
3430 Specify the band-width of a filter in width_type units.
3431
3432 @item gain, g
3433 Set the required gain or attenuation in dB.
3434 Beware of clipping when using a positive gain.
3435
3436 @item mix, m
3437 How much to use filtered signal in output. Default is 1.
3438 Range is between 0 and 1.
3439
3440 @item channels, c
3441 Specify which channels to filter, by default all available are filtered.
3442 @end table
3443
3444 @subsection Examples
3445 @itemize
3446 @item
3447 Attenuate 10 dB at 1000 Hz, with a bandwidth of 200 Hz:
3448 @example
3449 equalizer=f=1000:t=h:width=200:g=-10
3450 @end example
3451
3452 @item
3453 Apply 2 dB gain at 1000 Hz with Q 1 and attenuate 5 dB at 100 Hz with Q 2:
3454 @example
3455 equalizer=f=1000:t=q:w=1:g=2,equalizer=f=100:t=q:w=2:g=-5
3456 @end example
3457 @end itemize
3458
3459 @subsection Commands
3460
3461 This filter supports the following commands:
3462 @table @option
3463 @item frequency, f
3464 Change equalizer frequency.
3465 Syntax for the command is : "@var{frequency}"
3466
3467 @item width_type, t
3468 Change equalizer width_type.
3469 Syntax for the command is : "@var{width_type}"
3470
3471 @item width, w
3472 Change equalizer width.
3473 Syntax for the command is : "@var{width}"
3474
3475 @item gain, g
3476 Change equalizer gain.
3477 Syntax for the command is : "@var{gain}"
3478
3479 @item mix, m
3480 Change equalizer mix.
3481 Syntax for the command is : "@var{mix}"
3482 @end table
3483
3484 @section extrastereo
3485
3486 Linearly increases the difference between left and right channels which
3487 adds some sort of "live" effect to playback.
3488
3489 The filter accepts the following options:
3490
3491 @table @option
3492 @item m
3493 Sets the difference coefficient (default: 2.5). 0.0 means mono sound
3494 (average of both channels), with 1.0 sound will be unchanged, with
3495 -1.0 left and right channels will be swapped.
3496
3497 @item c
3498 Enable clipping. By default is enabled.
3499 @end table
3500
3501 @section firequalizer
3502 Apply FIR Equalization using arbitrary frequency response.
3503
3504 The filter accepts the following option:
3505
3506 @table @option
3507 @item gain
3508 Set gain curve equation (in dB). The expression can contain variables:
3509 @table @option
3510 @item f
3511 the evaluated frequency
3512 @item sr
3513 sample rate
3514 @item ch
3515 channel number, set to 0 when multichannels evaluation is disabled
3516 @item chid
3517 channel id, see libavutil/channel_layout.h, set to the first channel id when
3518 multichannels evaluation is disabled
3519 @item chs
3520 number of channels
3521 @item chlayout
3522 channel_layout, see libavutil/channel_layout.h
3523
3524 @end table
3525 and functions:
3526 @table @option
3527 @item gain_interpolate(f)
3528 interpolate gain on frequency f based on gain_entry
3529 @item cubic_interpolate(f)
3530 same as gain_interpolate, but smoother
3531 @end table
3532 This option is also available as command. Default is @code{gain_interpolate(f)}.
3533
3534 @item gain_entry
3535 Set gain entry for gain_interpolate function. The expression can
3536 contain functions:
3537 @table @option
3538 @item entry(f, g)
3539 store gain entry at frequency f with value g
3540 @end table
3541 This option is also available as command.
3542
3543 @item delay
3544 Set filter delay in seconds. Higher value means more accurate.
3545 Default is @code{0.01}.
3546
3547 @item accuracy
3548 Set filter accuracy in Hz. Lower value means more accurate.
3549 Default is @code{5}.
3550
3551 @item wfunc
3552 Set window function. Acceptable values are:
3553 @table @option
3554 @item rectangular
3555 rectangular window, useful when gain curve is already smooth
3556 @item hann
3557 hann window (default)
3558 @item hamming
3559 hamming window
3560 @item blackman
3561 blackman window
3562 @item nuttall3
3563 3-terms continuous 1st derivative nuttall window
3564 @item mnuttall3
3565 minimum 3-terms discontinuous nuttall window
3566 @item nuttall
3567 4-terms continuous 1st derivative nuttall window
3568 @item bnuttall
3569 minimum 4-terms discontinuous nuttall (blackman-nuttall) window
3570 @item bharris
3571 blackman-harris window
3572 @item tukey
3573 tukey window
3574 @end table
3575
3576 @item fixed
3577 If enabled, use fixed number of audio samples. This improves speed when
3578 filtering with large delay. Default is disabled.
3579
3580 @item multi
3581 Enable multichannels evaluation on gain. Default is disabled.
3582
3583 @item zero_phase
3584 Enable zero phase mode by subtracting timestamp to compensate delay.
3585 Default is disabled.
3586
3587 @item scale
3588 Set scale used by gain. Acceptable values are:
3589 @table @option
3590 @item linlin
3591 linear frequency, linear gain
3592 @item linlog
3593 linear frequency, logarithmic (in dB) gain (default)
3594 @item loglin
3595 logarithmic (in octave scale where 20 Hz is 0) frequency, linear gain
3596 @item loglog
3597 logarithmic frequency, logarithmic gain
3598 @end table
3599
3600 @item dumpfile
3601 Set file for dumping, suitable for gnuplot.
3602
3603 @item dumpscale
3604 Set scale for dumpfile. Acceptable values are same with scale option.
3605 Default is linlog.
3606
3607 @item fft2
3608 Enable 2-channel convolution using complex FFT. This improves speed significantly.
3609 Default is disabled.
3610
3611 @item min_phase
3612 Enable minimum phase impulse response. Default is disabled.
3613 @end table
3614
3615 @subsection Examples
3616 @itemize
3617 @item
3618 lowpass at 1000 Hz:
3619 @example
3620 firequalizer=gain='if(lt(f,1000), 0, -INF)'
3621 @end example
3622 @item
3623 lowpass at 1000 Hz with gain_entry:
3624 @example
3625 firequalizer=gain_entry='entry(1000,0); entry(1001, -INF)'
3626 @end example
3627 @item
3628 custom equalization:
3629 @example
3630 firequalizer=gain_entry='entry(100,0); entry(400, -4); entry(1000, -6); entry(2000, 0)'
3631 @end example
3632 @item
3633 higher delay with zero phase to compensate delay:
3634 @example
3635 firequalizer=delay=0.1:fixed=on:zero_phase=on
3636 @end example
3637 @item
3638 lowpass on left channel, highpass on right channel:
3639 @example
3640 firequalizer=gain='if(eq(chid,1), gain_interpolate(f), if(eq(chid,2), gain_interpolate(1e6+f), 0))'
3641 :gain_entry='entry(1000, 0); entry(1001,-INF); entry(1e6+1000,0)':multi=on
3642 @end example
3643 @end itemize
3644
3645 @section flanger
3646 Apply a flanging effect to the audio.
3647
3648 The filter accepts the following options:
3649
3650 @table @option
3651 @item delay
3652 Set base delay in milliseconds. Range from 0 to 30. Default value is 0.
3653
3654 @item depth
3655 Set added sweep delay in milliseconds. Range from 0 to 10. Default value is 2.
3656
3657 @item regen
3658 Set percentage regeneration (delayed signal feedback). Range from -95 to 95.
3659 Default value is 0.
3660
3661 @item width
3662 Set percentage of delayed signal mixed with original. Range from 0 to 100.
3663 Default value is 71.
3664
3665 @item speed
3666 Set sweeps per second (Hz). Range from 0.1 to 10. Default value is 0.5.
3667
3668 @item shape
3669 Set swept wave shape, can be @var{triangular} or @var{sinusoidal}.
3670 Default value is @var{sinusoidal}.
3671
3672 @item phase
3673 Set swept wave percentage-shift for multi channel. Range from 0 to 100.
3674 Default value is 25.
3675
3676 @item interp
3677 Set delay-line interpolation, @var{linear} or @var{quadratic}.
3678 Default is @var{linear}.
3679 @end table
3680
3681 @section haas
3682 Apply Haas effect to audio.
3683
3684 Note that this makes most sense to apply on mono signals.
3685 With this filter applied to mono signals it give some directionality and
3686 stretches its stereo image.
3687
3688 The filter accepts the following options:
3689
3690 @table @option
3691 @item level_in
3692 Set input level. By default is @var{1}, or 0dB
3693
3694 @item level_out
3695 Set output level. By default is @var{1}, or 0dB.
3696
3697 @item side_gain
3698 Set gain applied to side part of signal. By default is @var{1}.
3699
3700 @item middle_source
3701 Set kind of middle source. Can be one of the following:
3702
3703 @table @samp
3704 @item left
3705 Pick left channel.
3706
3707 @item right
3708 Pick right channel.
3709
3710 @item mid
3711 Pick middle part signal of stereo image.
3712
3713 @item side
3714 Pick side part signal of stereo image.
3715 @end table
3716
3717 @item middle_phase
3718 Change middle phase. By default is disabled.
3719
3720 @item left_delay
3721 Set left channel delay. By default is @var{2.05} milliseconds.
3722
3723 @item left_balance
3724 Set left channel balance. By default is @var{-1}.
3725
3726 @item left_gain
3727 Set left channel gain. By default is @var{1}.
3728
3729 @item left_phase
3730 Change left phase. By default is disabled.
3731
3732 @item right_delay
3733 Set right channel delay. By defaults is @var{2.12} milliseconds.
3734
3735 @item right_balance
3736 Set right channel balance. By default is @var{1}.
3737
3738 @item right_gain
3739 Set right channel gain. By default is @var{1}.
3740
3741 @item right_phase
3742 Change right phase. By default is enabled.
3743 @end table
3744
3745 @section hdcd
3746
3747 Decodes High Definition Compatible Digital (HDCD) data. A 16-bit PCM stream with
3748 embedded HDCD codes is expanded into a 20-bit PCM stream.
3749
3750 The filter supports the Peak Extend and Low-level Gain Adjustment features
3751 of HDCD, and detects the Transient Filter flag.
3752
3753 @example
3754 ffmpeg -i HDCD16.flac -af hdcd OUT24.flac
3755 @end example
3756
3757 When using the filter with wav, note the default encoding for wav is 16-bit,
3758 so the resulting 20-bit stream will be truncated back to 16-bit. Use something
3759 like @command{-acodec pcm_s24le} after the filter to get 24-bit PCM output.
3760 @example
3761 ffmpeg -i HDCD16.wav -af hdcd OUT16.wav
3762 ffmpeg -i HDCD16.wav -af hdcd -c:a pcm_s24le OUT24.wav
3763 @end example
3764
3765 The filter accepts the following options:
3766
3767 @table @option
3768 @item disable_autoconvert
3769 Disable any automatic format conversion or resampling in the filter graph.
3770
3771 @item process_stereo
3772 Process the stereo channels together. If target_gain does not match between
3773 channels, consider it invalid and use the last valid target_gain.
3774
3775 @item cdt_ms
3776 Set the code detect timer period in ms.
3777
3778 @item force_pe
3779 Always extend peaks above -3dBFS even if PE isn't signaled.
3780
3781 @item analyze_mode
3782 Replace audio with a solid tone and adjust the amplitude to signal some
3783 specific aspect of the decoding process. The output file can be loaded in
3784 an audio editor alongside the original to aid analysis.
3785
3786 @code{analyze_mode=pe:force_pe=true} can be used to see all samples above the PE level.
3787
3788 Modes are:
3789 @table @samp
3790 @item 0, off
3791 Disabled
3792 @item 1, lle
3793 Gain adjustment level at each sample
3794 @item 2, pe
3795 Samples where peak extend occurs
3796 @item 3, cdt
3797 Samples where the code detect timer is active
3798 @item 4, tgm
3799 Samples where the target gain does not match between channels
3800 @end table
3801 @end table
3802
3803 @section headphone
3804
3805 Apply head-related transfer functions (HRTFs) to create virtual
3806 loudspeakers around the user for binaural listening via headphones.
3807 The HRIRs are provided via additional streams, for each channel
3808 one stereo input stream is needed.
3809
3810 The filter accepts the following options:
3811
3812 @table @option
3813 @item map
3814 Set mapping of input streams for convolution.
3815 The argument is a '|'-separated list of channel names in order as they
3816 are given as additional stream inputs for filter.
3817 This also specify number of input streams. Number of input streams
3818 must be not less than number of channels in first stream plus one.
3819
3820 @item gain
3821 Set gain applied to audio. Value is in dB. Default is 0.
3822
3823 @item type
3824 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
3825 processing audio in time domain which is slow.
3826 @var{freq} is processing audio in frequency domain which is fast.
3827 Default is @var{freq}.
3828
3829 @item lfe
3830 Set custom gain for LFE channels. Value is in dB. Default is 0.
3831
3832 @item size
3833 Set size of frame in number of samples which will be processed at once.
3834 Default value is @var{1024}. Allowed range is from 1024 to 96000.
3835
3836 @item hrir
3837 Set format of hrir stream.
3838 Default value is @var{stereo}. Alternative value is @var{multich}.
3839 If value is set to @var{stereo}, number of additional streams should
3840 be greater or equal to number of input channels in first input stream.
3841 Also each additional stream should have stereo number of channels.
3842 If value is set to @var{multich}, number of additional streams should
3843 be exactly one. Also number of input channels of additional stream
3844 should be equal or greater than twice number of channels of first input
3845 stream.
3846 @end table
3847
3848 @subsection Examples
3849
3850 @itemize
3851 @item
3852 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
3853 each amovie filter use stereo file with IR coefficients as input.
3854 The files give coefficients for each position of virtual loudspeaker:
3855 @example
3856 ffmpeg -i input.wav
3857 -filter_complex "amovie=azi_270_ele_0_DFC.wav[sr];amovie=azi_90_ele_0_DFC.wav[sl];amovie=azi_225_ele_0_DFC.wav[br];amovie=azi_135_ele_0_DFC.wav[bl];amovie=azi_0_ele_0_DFC.wav,asplit[fc][lfe];amovie=azi_35_ele_0_DFC.wav[fl];amovie=azi_325_ele_0_DFC.wav[fr];[0:a][fl][fr][fc][lfe][bl][br][sl][sr]headphone=FL|FR|FC|LFE|BL|BR|SL|SR"
3858 output.wav
3859 @end example
3860
3861 @item
3862 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
3863 but now in @var{multich} @var{hrir} format.
3864 @example
3865 ffmpeg -i input.wav -filter_complex "amovie=minp.wav[hrirs];[0:a][hrirs]headphone=map=FL|FR|FC|LFE|BL|BR|SL|SR:hrir=multich"
3866 output.wav
3867 @end example
3868 @end itemize
3869
3870 @section highpass
3871
3872 Apply a high-pass filter with 3dB point frequency.
3873 The filter can be either single-pole, or double-pole (the default).
3874 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
3875
3876 The filter accepts the following options:
3877
3878 @table @option
3879 @item frequency, f
3880 Set frequency in Hz. Default is 3000.
3881
3882 @item poles, p
3883 Set number of poles. Default is 2.
3884
3885 @item width_type, t
3886 Set method to specify band-width of filter.
3887 @table @option
3888 @item h
3889 Hz
3890 @item q
3891 Q-Factor
3892 @item o
3893 octave
3894 @item s
3895 slope
3896 @item k
3897 kHz
3898 @end table
3899
3900 @item width, w
3901 Specify the band-width of a filter in width_type units.
3902 Applies only to double-pole filter.
3903 The default is 0.707q and gives a Butterworth response.
3904
3905 @item mix, m
3906 How much to use filtered signal in output. Default is 1.
3907 Range is between 0 and 1.
3908
3909 @item channels, c
3910 Specify which channels to filter, by default all available are filtered.
3911 @end table
3912
3913 @subsection Commands
3914
3915 This filter supports the following commands:
3916 @table @option
3917 @item frequency, f
3918 Change highpass frequency.
3919 Syntax for the command is : "@var{frequency}"
3920
3921 @item width_type, t
3922 Change highpass width_type.
3923 Syntax for the command is : "@var{width_type}"
3924
3925 @item width, w
3926 Change highpass width.
3927 Syntax for the command is : "@var{width}"
3928
3929 @item mix, m
3930 Change highpass mix.
3931 Syntax for the command is : "@var{mix}"
3932 @end table
3933
3934 @section join
3935
3936 Join multiple input streams into one multi-channel stream.
3937
3938 It accepts the following parameters:
3939 @table @option
3940
3941 @item inputs
3942 The number of input streams. It defaults to 2.
3943
3944 @item channel_layout
3945 The desired output channel layout. It defaults to stereo.
3946
3947 @item map
3948 Map channels from inputs to output. The argument is a '|'-separated list of
3949 mappings, each in the @code{@var{input_idx}.@var{in_channel}-@var{out_channel}}
3950 form. @var{input_idx} is the 0-based index of the input stream. @var{in_channel}
3951 can be either the name of the input channel (e.g. FL for front left) or its
3952 index in the specified input stream. @var{out_channel} is the name of the output
3953 channel.
3954 @end table
3955
3956 The filter will attempt to guess the mappings when they are not specified
3957 explicitly. It does so by first trying to find an unused matching input channel
3958 and if that fails it picks the first unused input channel.
3959
3960 Join 3 inputs (with properly set channel layouts):
3961 @example
3962 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
3963 @end example
3964
3965 Build a 5.1 output from 6 single-channel streams:
3966 @example
3967 ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
3968 'join=inputs=6:channel_layout=5.1:map=0.0-FL|1.0-FR|2.0-FC|3.0-SL|4.0-SR|5.0-LFE'
3969 out
3970 @end example
3971
3972 @section ladspa
3973
3974 Load a LADSPA (Linux Audio Developer's Simple Plugin API) plugin.
3975
3976 To enable compilation of this filter you need to configure FFmpeg with
3977 @code{--enable-ladspa}.
3978
3979 @table @option
3980 @item file, f
3981 Specifies the name of LADSPA plugin library to load. If the environment
3982 variable @env{LADSPA_PATH} is defined, the LADSPA plugin is searched in
3983 each one of the directories specified by the colon separated list in
3984 @env{LADSPA_PATH}, otherwise in the standard LADSPA paths, which are in
3985 this order: @file{HOME/.ladspa/lib/}, @file{/usr/local/lib/ladspa/},
3986 @file{/usr/lib/ladspa/}.
3987
3988 @item plugin, p
3989 Specifies the plugin within the library. Some libraries contain only
3990 one plugin, but others contain many of them. If this is not set filter
3991 will list all available plugins within the specified library.
3992
3993 @item controls, c
3994 Set the '|' separated list of controls which are zero or more floating point
3995 values that determine the behavior of the loaded plugin (for example delay,
3996 threshold or gain).
3997 Controls need to be defined using the following syntax:
3998 c0=@var{value0}|c1=@var{value1}|c2=@var{value2}|..., where
3999 @var{valuei} is the value set on the @var{i}-th control.
4000 Alternatively they can be also defined using the following syntax:
4001 @var{value0}|@var{value1}|@var{value2}|..., where
4002 @var{valuei} is the value set on the @var{i}-th control.
4003 If @option{controls} is set to @code{help}, all available controls and
4004 their valid ranges are printed.
4005
4006 @item sample_rate, s
4007 Specify the sample rate, default to 44100. Only used if plugin have
4008 zero inputs.
4009
4010 @item nb_samples, n
4011 Set the number of samples per channel per each output frame, default
4012 is 1024. Only used if plugin have zero inputs.
4013
4014 @item duration, d
4015 Set the minimum duration of the sourced audio. See
4016 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4017 for the accepted syntax.
4018 Note that the resulting duration may be greater than the specified duration,
4019 as the generated audio is always cut at the end of a complete frame.
4020 If not specified, or the expressed duration is negative, the audio is
4021 supposed to be generated forever.
4022 Only used if plugin have zero inputs.
4023
4024 @end table
4025
4026 @subsection Examples
4027
4028 @itemize
4029 @item
4030 List all available plugins within amp (LADSPA example plugin) library:
4031 @example
4032 ladspa=file=amp
4033 @end example
4034
4035 @item
4036 List all available controls and their valid ranges for @code{vcf_notch}
4037 plugin from @code{VCF} library:
4038 @example
4039 ladspa=f=vcf:p=vcf_notch:c=help
4040 @end example
4041
4042 @item
4043 Simulate low quality audio equipment using @code{Computer Music Toolkit} (CMT)
4044 plugin library:
4045 @example
4046 ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
4047 @end example
4048
4049 @item
4050 Add reverberation to the audio using TAP-plugins
4051 (Tom's Audio Processing plugins):
4052 @example
4053 ladspa=file=tap_reverb:tap_reverb
4054 @end example
4055
4056 @item
4057 Generate white noise, with 0.2 amplitude:
4058 @example
4059 ladspa=file=cmt:noise_source_white:c=c0=.2
4060 @end example
4061
4062 @item
4063 Generate 20 bpm clicks using plugin @code{C* Click - Metronome} from the
4064 @code{C* Audio Plugin Suite} (CAPS) library:
4065 @example
4066 ladspa=file=caps:Click:c=c1=20'
4067 @end example
4068
4069 @item
4070 Apply @code{C* Eq10X2 - Stereo 10-band equaliser} effect:
4071 @example
4072 ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
4073 @end example
4074
4075 @item
4076 Increase volume by 20dB using fast lookahead limiter from Steve Harris
4077 @code{SWH Plugins} collection:
4078 @example
4079 ladspa=fast_lookahead_limiter_1913:fastLookaheadLimiter:20|0|2
4080 @end example
4081
4082 @item
4083 Attenuate low frequencies using Multiband EQ from Steve Harris
4084 @code{SWH Plugins} collection:
4085 @example
4086 ladspa=mbeq_1197:mbeq:-24|-24|-24|0|0|0|0|0|0|0|0|0|0|0|0
4087 @end example
4088
4089 @item
4090 Reduce stereo image using @code{Narrower} from the @code{C* Audio Plugin Suite}
4091 (CAPS) library:
4092 @example
4093 ladspa=caps:Narrower
4094 @end example
4095
4096 @item
4097 Another white noise, now using @code{C* Audio Plugin Suite} (CAPS) library:
4098 @example
4099 ladspa=caps:White:.2
4100 @end example
4101
4102 @item
4103 Some fractal noise, using @code{C* Audio Plugin Suite} (CAPS) library:
4104 @example
4105 ladspa=caps:Fractal:c=c1=1
4106 @end example
4107
4108 @item
4109 Dynamic volume normalization using @code{VLevel} plugin:
4110 @example
4111 ladspa=vlevel-ladspa:vlevel_mono
4112 @end example
4113 @end itemize
4114
4115 @subsection Commands
4116
4117 This filter supports the following commands:
4118 @table @option
4119 @item cN
4120 Modify the @var{N}-th control value.
4121
4122 If the specified value is not valid, it is ignored and prior one is kept.
4123 @end table
4124
4125 @section loudnorm
4126
4127 EBU R128 loudness normalization. Includes both dynamic and linear normalization modes.
4128 Support for both single pass (livestreams, files) and double pass (files) modes.
4129 This algorithm can target IL, LRA, and maximum true peak. To accurately detect true peaks,
4130 the audio stream will be upsampled to 192 kHz unless the normalization mode is linear.
4131 Use the @code{-ar} option or @code{aresample} filter to explicitly set an output sample rate.
4132
4133 The filter accepts the following options:
4134
4135 @table @option
4136 @item I, i
4137 Set integrated loudness target.
4138 Range is -70.0 - -5.0. Default value is -24.0.
4139
4140 @item LRA, lra
4141 Set loudness range target.
4142 Range is 1.0 - 20.0. Default value is 7.0.
4143
4144 @item TP, tp
4145 Set maximum true peak.
4146 Range is -9.0 - +0.0. Default value is -2.0.
4147
4148 @item measured_I, measured_i
4149 Measured IL of input file.
4150 Range is -99.0 - +0.0.
4151
4152 @item measured_LRA, measured_lra
4153 Measured LRA of input file.
4154 Range is  0.0 - 99.0.
4155
4156 @item measured_TP, measured_tp
4157 Measured true peak of input file.
4158 Range is  -99.0 - +99.0.
4159
4160 @item measured_thresh
4161 Measured threshold of input file.
4162 Range is -99.0 - +0.0.
4163
4164 @item offset
4165 Set offset gain. Gain is applied before the true-peak limiter.
4166 Range is  -99.0 - +99.0. Default is +0.0.
4167
4168 @item linear
4169 Normalize linearly if possible.
4170 measured_I, measured_LRA, measured_TP, and measured_thresh must also
4171 to be specified in order to use this mode.
4172 Options are true or false. Default is true.
4173
4174 @item dual_mono
4175 Treat mono input files as "dual-mono". If a mono file is intended for playback
4176 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
4177 If set to @code{true}, this option will compensate for this effect.
4178 Multi-channel input files are not affected by this option.
4179 Options are true or false. Default is false.
4180
4181 @item print_format
4182 Set print format for stats. Options are summary, json, or none.
4183 Default value is none.
4184 @end table
4185
4186 @section lowpass
4187
4188 Apply a low-pass filter with 3dB point frequency.
4189 The filter can be either single-pole or double-pole (the default).
4190 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
4191
4192 The filter accepts the following options:
4193
4194 @table @option
4195 @item frequency, f
4196 Set frequency in Hz. Default is 500.
4197
4198 @item poles, p
4199 Set number of poles. Default is 2.
4200
4201 @item width_type, t
4202 Set method to specify band-width of filter.
4203 @table @option
4204 @item h
4205 Hz
4206 @item q
4207 Q-Factor
4208 @item o
4209 octave
4210 @item s
4211 slope
4212 @item k
4213 kHz
4214 @end table
4215
4216 @item width, w
4217 Specify the band-width of a filter in width_type units.
4218 Applies only to double-pole filter.
4219 The default is 0.707q and gives a Butterworth response.
4220
4221 @item mix, m
4222 How much to use filtered signal in output. Default is 1.
4223 Range is between 0 and 1.
4224
4225 @item channels, c
4226 Specify which channels to filter, by default all available are filtered.
4227 @end table
4228
4229 @subsection Examples
4230 @itemize
4231 @item
4232 Lowpass only LFE channel, it LFE is not present it does nothing:
4233 @example
4234 lowpass=c=LFE
4235 @end example
4236 @end itemize
4237
4238 @subsection Commands
4239
4240 This filter supports the following commands:
4241 @table @option
4242 @item frequency, f
4243 Change lowpass frequency.
4244 Syntax for the command is : "@var{frequency}"
4245
4246 @item width_type, t
4247 Change lowpass width_type.
4248 Syntax for the command is : "@var{width_type}"
4249
4250 @item width, w
4251 Change lowpass width.
4252 Syntax for the command is : "@var{width}"
4253
4254 @item mix, m
4255 Change lowpass mix.
4256 Syntax for the command is : "@var{mix}"
4257 @end table
4258
4259 @section lv2
4260
4261 Load a LV2 (LADSPA Version 2) plugin.
4262
4263 To enable compilation of this filter you need to configure FFmpeg with
4264 @code{--enable-lv2}.
4265
4266 @table @option
4267 @item plugin, p
4268 Specifies the plugin URI. You may need to escape ':'.
4269
4270 @item controls, c
4271 Set the '|' separated list of controls which are zero or more floating point
4272 values that determine the behavior of the loaded plugin (for example delay,
4273 threshold or gain).
4274 If @option{controls} is set to @code{help}, all available controls and
4275 their valid ranges are printed.
4276
4277 @item sample_rate, s
4278 Specify the sample rate, default to 44100. Only used if plugin have
4279 zero inputs.
4280
4281 @item nb_samples, n
4282 Set the number of samples per channel per each output frame, default
4283 is 1024. Only used if plugin have zero inputs.
4284
4285 @item duration, d
4286 Set the minimum duration of the sourced audio. See
4287 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4288 for the accepted syntax.
4289 Note that the resulting duration may be greater than the specified duration,
4290 as the generated audio is always cut at the end of a complete frame.
4291 If not specified, or the expressed duration is negative, the audio is
4292 supposed to be generated forever.
4293 Only used if plugin have zero inputs.
4294 @end table
4295
4296 @subsection Examples
4297
4298 @itemize
4299 @item
4300 Apply bass enhancer plugin from Calf:
4301 @example
4302 lv2=p=http\\\\://calf.sourceforge.net/plugins/BassEnhancer:c=amount=2
4303 @end example
4304
4305 @item
4306 Apply vinyl plugin from Calf:
4307 @example
4308 lv2=p=http\\\\://calf.sourceforge.net/plugins/Vinyl:c=drone=0.2|aging=0.5
4309 @end example
4310
4311 @item
4312 Apply bit crusher plugin from ArtyFX:
4313 @example
4314 lv2=p=http\\\\://www.openavproductions.com/artyfx#bitta:c=crush=0.3
4315 @end example
4316 @end itemize
4317
4318 @section mcompand
4319 Multiband Compress or expand the audio's dynamic range.
4320
4321 The input audio is divided into bands using 4th order Linkwitz-Riley IIRs.
4322 This is akin to the crossover of a loudspeaker, and results in flat frequency
4323 response when absent compander action.
4324
4325 It accepts the following parameters:
4326
4327 @table @option
4328 @item args
4329 This option syntax is:
4330 attack,decay,[attack,decay..] soft-knee points crossover_frequency [delay [initial_volume [gain]]] | attack,decay ...
4331 For explanation of each item refer to compand filter documentation.
4332 @end table
4333
4334 @anchor{pan}
4335 @section pan
4336
4337 Mix channels with specific gain levels. The filter accepts the output
4338 channel layout followed by a set of channels definitions.
4339
4340 This filter is also designed to efficiently remap the channels of an audio
4341 stream.
4342
4343 The filter accepts parameters of the form:
4344 "@var{l}|@var{outdef}|@var{outdef}|..."
4345
4346 @table @option
4347 @item l
4348 output channel layout or number of channels
4349
4350 @item outdef
4351 output channel specification, of the form:
4352 "@var{out_name}=[@var{gain}*]@var{in_name}[(+-)[@var{gain}*]@var{in_name}...]"
4353
4354 @item out_name
4355 output channel to define, either a channel name (FL, FR, etc.) or a channel
4356 number (c0, c1, etc.)
4357
4358 @item gain
4359 multiplicative coefficient for the channel, 1 leaving the volume unchanged
4360
4361 @item in_name
4362 input channel to use, see out_name for details; it is not possible to mix
4363 named and numbered input channels
4364 @end table
4365
4366 If the `=' in a channel specification is replaced by `<', then the gains for
4367 that specification will be renormalized so that the total is 1, thus
4368 avoiding clipping noise.
4369
4370 @subsection Mixing examples
4371
4372 For example, if you want to down-mix from stereo to mono, but with a bigger
4373 factor for the left channel:
4374 @example
4375 pan=1c|c0=0.9*c0+0.1*c1
4376 @end example
4377
4378 A customized down-mix to stereo that works automatically for 3-, 4-, 5- and
4379 7-channels surround:
4380 @example
4381 pan=stereo| FL < FL + 0.5*FC + 0.6*BL + 0.6*SL | FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
4382 @end example
4383
4384 Note that @command{ffmpeg} integrates a default down-mix (and up-mix) system
4385 that should be preferred (see "-ac" option) unless you have very specific
4386 needs.
4387
4388 @subsection Remapping examples
4389
4390 The channel remapping will be effective if, and only if:
4391
4392 @itemize
4393 @item gain coefficients are zeroes or ones,
4394 @item only one input per channel output,
4395 @end itemize
4396
4397 If all these conditions are satisfied, the filter will notify the user ("Pure
4398 channel mapping detected"), and use an optimized and lossless method to do the
4399 remapping.
4400
4401 For example, if you have a 5.1 source and want a stereo audio stream by
4402 dropping the extra channels:
4403 @example
4404 pan="stereo| c0=FL | c1=FR"
4405 @end example
4406
4407 Given the same source, you can also switch front left and front right channels
4408 and keep the input channel layout:
4409 @example
4410 pan="5.1| c0=c1 | c1=c0 | c2=c2 | c3=c3 | c4=c4 | c5=c5"
4411 @end example
4412
4413 If the input is a stereo audio stream, you can mute the front left channel (and
4414 still keep the stereo channel layout) with:
4415 @example
4416 pan="stereo|c1=c1"
4417 @end example
4418
4419 Still with a stereo audio stream input, you can copy the right channel in both
4420 front left and right:
4421 @example
4422 pan="stereo| c0=FR | c1=FR"
4423 @end example
4424
4425 @section replaygain
4426
4427 ReplayGain scanner filter. This filter takes an audio stream as an input and
4428 outputs it unchanged.
4429 At end of filtering it displays @code{track_gain} and @code{track_peak}.
4430
4431 @section resample
4432
4433 Convert the audio sample format, sample rate and channel layout. It is
4434 not meant to be used directly.
4435
4436 @section rubberband
4437 Apply time-stretching and pitch-shifting with librubberband.
4438
4439 To enable compilation of this filter, you need to configure FFmpeg with
4440 @code{--enable-librubberband}.
4441
4442 The filter accepts the following options:
4443
4444 @table @option
4445 @item tempo
4446 Set tempo scale factor.
4447
4448 @item pitch
4449 Set pitch scale factor.
4450
4451 @item transients
4452 Set transients detector.
4453 Possible values are:
4454 @table @var
4455 @item crisp
4456 @item mixed
4457 @item smooth
4458 @end table
4459
4460 @item detector
4461 Set detector.
4462 Possible values are:
4463 @table @var
4464 @item compound
4465 @item percussive
4466 @item soft
4467 @end table
4468
4469 @item phase
4470 Set phase.
4471 Possible values are:
4472 @table @var
4473 @item laminar
4474 @item independent
4475 @end table
4476
4477 @item window
4478 Set processing window size.
4479 Possible values are:
4480 @table @var
4481 @item standard
4482 @item short
4483 @item long
4484 @end table
4485
4486 @item smoothing
4487 Set smoothing.
4488 Possible values are:
4489 @table @var
4490 @item off
4491 @item on
4492 @end table
4493
4494 @item formant
4495 Enable formant preservation when shift pitching.
4496 Possible values are:
4497 @table @var
4498 @item shifted
4499 @item preserved
4500 @end table
4501
4502 @item pitchq
4503 Set pitch quality.
4504 Possible values are:
4505 @table @var
4506 @item quality
4507 @item speed
4508 @item consistency
4509 @end table
4510
4511 @item channels
4512 Set channels.
4513 Possible values are:
4514 @table @var
4515 @item apart
4516 @item together
4517 @end table
4518 @end table
4519
4520 @subsection Commands
4521
4522 This filter supports the following commands:
4523 @table @option
4524 @item tempo
4525 Change filter tempo scale factor.
4526 Syntax for the command is : "@var{tempo}"
4527
4528 @item pitch
4529 Change filter pitch scale factor.
4530 Syntax for the command is : "@var{pitch}"
4531 @end table
4532
4533 @section sidechaincompress
4534
4535 This filter acts like normal compressor but has the ability to compress
4536 detected signal using second input signal.
4537 It needs two input streams and returns one output stream.
4538 First input stream will be processed depending on second stream signal.
4539 The filtered signal then can be filtered with other filters in later stages of
4540 processing. See @ref{pan} and @ref{amerge} filter.
4541
4542 The filter accepts the following options:
4543
4544 @table @option
4545 @item level_in
4546 Set input gain. Default is 1. Range is between 0.015625 and 64.
4547
4548 @item mode
4549 Set mode of compressor operation. Can be @code{upward} or @code{downward}.
4550 Default is @code{downward}.
4551
4552 @item threshold
4553 If a signal of second stream raises above this level it will affect the gain
4554 reduction of first stream.
4555 By default is 0.125. Range is between 0.00097563 and 1.
4556
4557 @item ratio
4558 Set a ratio about which the signal is reduced. 1:2 means that if the level
4559 raised 4dB above the threshold, it will be only 2dB above after the reduction.
4560 Default is 2. Range is between 1 and 20.
4561
4562 @item attack
4563 Amount of milliseconds the signal has to rise above the threshold before gain
4564 reduction starts. Default is 20. Range is between 0.01 and 2000.
4565
4566 @item release
4567 Amount of milliseconds the signal has to fall below the threshold before
4568 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
4569
4570 @item makeup
4571 Set the amount by how much signal will be amplified after processing.
4572 Default is 1. Range is from 1 to 64.
4573
4574 @item knee
4575 Curve the sharp knee around the threshold to enter gain reduction more softly.
4576 Default is 2.82843. Range is between 1 and 8.
4577
4578 @item link
4579 Choose if the @code{average} level between all channels of side-chain stream
4580 or the louder(@code{maximum}) channel of side-chain stream affects the
4581 reduction. Default is @code{average}.
4582
4583 @item detection
4584 Should the exact signal be taken in case of @code{peak} or an RMS one in case
4585 of @code{rms}. Default is @code{rms} which is mainly smoother.
4586
4587 @item level_sc
4588 Set sidechain gain. Default is 1. Range is between 0.015625 and 64.
4589
4590 @item mix
4591 How much to use compressed signal in output. Default is 1.
4592 Range is between 0 and 1.
4593 @end table
4594
4595 @subsection Examples
4596
4597 @itemize
4598 @item
4599 Full ffmpeg example taking 2 audio inputs, 1st input to be compressed
4600 depending on the signal of 2nd input and later compressed signal to be
4601 merged with 2nd input:
4602 @example
4603 ffmpeg -i main.flac -i sidechain.flac -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress[compr];[compr][mix]amerge"
4604 @end example
4605 @end itemize
4606
4607 @section sidechaingate
4608
4609 A sidechain gate acts like a normal (wideband) gate but has the ability to
4610 filter the detected signal before sending it to the gain reduction stage.
4611 Normally a gate uses the full range signal to detect a level above the
4612 threshold.
4613 For example: If you cut all lower frequencies from your sidechain signal
4614 the gate will decrease the volume of your track only if not enough highs
4615 appear. With this technique you are able to reduce the resonation of a
4616 natural drum or remove "rumbling" of muted strokes from a heavily distorted
4617 guitar.
4618 It needs two input streams and returns one output stream.
4619 First input stream will be processed depending on second stream signal.
4620
4621 The filter accepts the following options:
4622
4623 @table @option
4624 @item level_in
4625 Set input level before filtering.
4626 Default is 1. Allowed range is from 0.015625 to 64.
4627
4628 @item mode
4629 Set the mode of operation. Can be @code{upward} or @code{downward}.
4630 Default is @code{downward}. If set to @code{upward} mode, higher parts of signal
4631 will be amplified, expanding dynamic range in upward direction.
4632 Otherwise, in case of @code{downward} lower parts of signal will be reduced.
4633
4634 @item range
4635 Set the level of gain reduction when the signal is below the threshold.
4636 Default is 0.06125. Allowed range is from 0 to 1.
4637 Setting this to 0 disables reduction and then filter behaves like expander.
4638
4639 @item threshold
4640 If a signal rises above this level the gain reduction is released.
4641 Default is 0.125. Allowed range is from 0 to 1.
4642
4643 @item ratio
4644 Set a ratio about which the signal is reduced.
4645 Default is 2. Allowed range is from 1 to 9000.
4646
4647 @item attack
4648 Amount of milliseconds the signal has to rise above the threshold before gain
4649 reduction stops.
4650 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
4651
4652 @item release
4653 Amount of milliseconds the signal has to fall below the threshold before the
4654 reduction is increased again. Default is 250 milliseconds.
4655 Allowed range is from 0.01 to 9000.
4656
4657 @item makeup
4658 Set amount of amplification of signal after processing.
4659 Default is 1. Allowed range is from 1 to 64.
4660
4661 @item knee
4662 Curve the sharp knee around the threshold to enter gain reduction more softly.
4663 Default is 2.828427125. Allowed range is from 1 to 8.
4664
4665 @item detection
4666 Choose if exact signal should be taken for detection or an RMS like one.
4667 Default is rms. Can be peak or rms.
4668
4669 @item link
4670 Choose if the average level between all channels or the louder channel affects
4671 the reduction.
4672 Default is average. Can be average or maximum.
4673
4674 @item level_sc
4675 Set sidechain gain. Default is 1. Range is from 0.015625 to 64.
4676 @end table
4677
4678 @section silencedetect
4679
4680 Detect silence in an audio stream.
4681
4682 This filter logs a message when it detects that the input audio volume is less
4683 or equal to a noise tolerance value for a duration greater or equal to the
4684 minimum detected noise duration.
4685
4686 The printed times and duration are expressed in seconds. The
4687 @code{lavfi.silence_start} or @code{lavfi.silence_start.X} metadata key
4688 is set on the first frame whose timestamp equals or exceeds the detection
4689 duration and it contains the timestamp of the first frame of the silence.
4690
4691 The @code{lavfi.silence_duration} or @code{lavfi.silence_duration.X}
4692 and @code{lavfi.silence_end} or @code{lavfi.silence_end.X} metadata
4693 keys are set on the first frame after the silence. If @option{mono} is
4694 enabled, and each channel is evaluated separately, the @code{.X}
4695 suffixed keys are used, and @code{X} corresponds to the channel number.
4696
4697 The filter accepts the following options:
4698
4699 @table @option
4700 @item noise, n
4701 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
4702 specified value) or amplitude ratio. Default is -60dB, or 0.001.
4703
4704 @item duration, d
4705 Set silence duration until notification (default is 2 seconds). See
4706 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4707 for the accepted syntax.
4708
4709 @item mono, m
4710 Process each channel separately, instead of combined. By default is disabled.
4711 @end table
4712
4713 @subsection Examples
4714
4715 @itemize
4716 @item
4717 Detect 5 seconds of silence with -50dB noise tolerance:
4718 @example
4719 silencedetect=n=-50dB:d=5
4720 @end example
4721
4722 @item
4723 Complete example with @command{ffmpeg} to detect silence with 0.0001 noise
4724 tolerance in @file{silence.mp3}:
4725 @example
4726 ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
4727 @end example
4728 @end itemize
4729
4730 @section silenceremove
4731
4732 Remove silence from the beginning, middle or end of the audio.
4733
4734 The filter accepts the following options:
4735
4736 @table @option
4737 @item start_periods
4738 This value is used to indicate if audio should be trimmed at beginning of
4739 the audio. A value of zero indicates no silence should be trimmed from the
4740 beginning. When specifying a non-zero value, it trims audio up until it
4741 finds non-silence. Normally, when trimming silence from beginning of audio
4742 the @var{start_periods} will be @code{1} but it can be increased to higher
4743 values to trim all audio up to specific count of non-silence periods.
4744 Default value is @code{0}.
4745
4746 @item start_duration
4747 Specify the amount of time that non-silence must be detected before it stops
4748 trimming audio. By increasing the duration, bursts of noises can be treated
4749 as silence and trimmed off. Default value is @code{0}.
4750
4751 @item start_threshold
4752 This indicates what sample value should be treated as silence. For digital
4753 audio, a value of @code{0} may be fine but for audio recorded from analog,
4754 you may wish to increase the value to account for background noise.
4755 Can be specified in dB (in case "dB" is appended to the specified value)
4756 or amplitude ratio. Default value is @code{0}.
4757
4758 @item start_silence
4759 Specify max duration of silence at beginning that will be kept after
4760 trimming. Default is 0, which is equal to trimming all samples detected
4761 as silence.
4762
4763 @item start_mode
4764 Specify mode of detection of silence end in start of multi-channel audio.
4765 Can be @var{any} or @var{all}. Default is @var{any}.
4766 With @var{any}, any sample that is detected as non-silence will cause
4767 stopped trimming of silence.
4768 With @var{all}, only if all channels are detected as non-silence will cause
4769 stopped trimming of silence.
4770
4771 @item stop_periods
4772 Set the count for trimming silence from the end of audio.
4773 To remove silence from the middle of a file, specify a @var{stop_periods}
4774 that is negative. This value is then treated as a positive value and is
4775 used to indicate the effect should restart processing as specified by
4776 @var{start_periods}, making it suitable for removing periods of silence
4777 in the middle of the audio.
4778 Default value is @code{0}.
4779
4780 @item stop_duration
4781 Specify a duration of silence that must exist before audio is not copied any
4782 more. By specifying a higher duration, silence that is wanted can be left in
4783 the audio.
4784 Default value is @code{0}.
4785
4786 @item stop_threshold
4787 This is the same as @option{start_threshold} but for trimming silence from
4788 the end of audio.
4789 Can be specified in dB (in case "dB" is appended to the specified value)
4790 or amplitude ratio. Default value is @code{0}.
4791
4792 @item stop_silence
4793 Specify max duration of silence at end that will be kept after
4794 trimming. Default is 0, which is equal to trimming all samples detected
4795 as silence.
4796
4797 @item stop_mode
4798 Specify mode of detection of silence start in end of multi-channel audio.
4799 Can be @var{any} or @var{all}. Default is @var{any}.
4800 With @var{any}, any sample that is detected as non-silence will cause
4801 stopped trimming of silence.
4802 With @var{all}, only if all channels are detected as non-silence will cause
4803 stopped trimming of silence.
4804
4805 @item detection
4806 Set how is silence detected. Can be @code{rms} or @code{peak}. Second is faster
4807 and works better with digital silence which is exactly 0.
4808 Default value is @code{rms}.
4809
4810 @item window
4811 Set duration in number of seconds used to calculate size of window in number
4812 of samples for detecting silence.
4813 Default value is @code{0.02}. Allowed range is from @code{0} to @code{10}.
4814 @end table
4815
4816 @subsection Examples
4817
4818 @itemize
4819 @item
4820 The following example shows how this filter can be used to start a recording
4821 that does not contain the delay at the start which usually occurs between
4822 pressing the record button and the start of the performance:
4823 @example
4824 silenceremove=start_periods=1:start_duration=5:start_threshold=0.02
4825 @end example
4826
4827 @item
4828 Trim all silence encountered from beginning to end where there is more than 1
4829 second of silence in audio:
4830 @example
4831 silenceremove=stop_periods=-1:stop_duration=1:stop_threshold=-90dB
4832 @end example
4833
4834 @item
4835 Trim all digital silence samples, using peak detection, from beginning to end
4836 where there is more than 0 samples of digital silence in audio and digital
4837 silence is detected in all channels at same positions in stream:
4838 @example
4839 silenceremove=window=0:detection=peak:stop_mode=all:start_mode=all:stop_periods=-1:stop_threshold=0
4840 @end example
4841 @end itemize
4842
4843 @section sofalizer
4844
4845 SOFAlizer uses head-related transfer functions (HRTFs) to create virtual
4846 loudspeakers around the user for binaural listening via headphones (audio
4847 formats up to 9 channels supported).
4848 The HRTFs are stored in SOFA files (see @url{http://www.sofacoustics.org/} for a database).
4849 SOFAlizer is developed at the Acoustics Research Institute (ARI) of the
4850 Austrian Academy of Sciences.
4851
4852 To enable compilation of this filter you need to configure FFmpeg with
4853 @code{--enable-libmysofa}.
4854
4855 The filter accepts the following options:
4856
4857 @table @option
4858 @item sofa
4859 Set the SOFA file used for rendering.
4860
4861 @item gain
4862 Set gain applied to audio. Value is in dB. Default is 0.
4863
4864 @item rotation
4865 Set rotation of virtual loudspeakers in deg. Default is 0.
4866
4867 @item elevation
4868 Set elevation of virtual speakers in deg. Default is 0.
4869
4870 @item radius
4871 Set distance in meters between loudspeakers and the listener with near-field
4872 HRTFs. Default is 1.
4873
4874 @item type
4875 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
4876 processing audio in time domain which is slow.
4877 @var{freq} is processing audio in frequency domain which is fast.
4878 Default is @var{freq}.
4879
4880 @item speakers
4881 Set custom positions of virtual loudspeakers. Syntax for this option is:
4882 <CH> <AZIM> <ELEV>[|<CH> <AZIM> <ELEV>|...].
4883 Each virtual loudspeaker is described with short channel name following with
4884 azimuth and elevation in degrees.
4885 Each virtual loudspeaker description is separated by '|'.
4886 For example to override front left and front right channel positions use:
4887 'speakers=FL 45 15|FR 345 15'.
4888 Descriptions with unrecognised channel names are ignored.
4889
4890 @item lfegain
4891 Set custom gain for LFE channels. Value is in dB. Default is 0.
4892
4893 @item framesize
4894 Set custom frame size in number of samples. Default is 1024.
4895 Allowed range is from 1024 to 96000. Only used if option @samp{type}
4896 is set to @var{freq}.
4897
4898 @item normalize
4899 Should all IRs be normalized upon importing SOFA file.
4900 By default is enabled.
4901
4902 @item interpolate
4903 Should nearest IRs be interpolated with neighbor IRs if exact position
4904 does not match. By default is disabled.
4905
4906 @item minphase
4907 Minphase all IRs upon loading of SOFA file. By default is disabled.
4908
4909 @item anglestep
4910 Set neighbor search angle step. Only used if option @var{interpolate} is enabled.
4911
4912 @item radstep
4913 Set neighbor search radius step. Only used if option @var{interpolate} is enabled.
4914 @end table
4915
4916 @subsection Examples
4917
4918 @itemize
4919 @item
4920 Using ClubFritz6 sofa file:
4921 @example
4922 sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=1
4923 @end example
4924
4925 @item
4926 Using ClubFritz12 sofa file and bigger radius with small rotation:
4927 @example
4928 sofalizer=sofa=/path/to/ClubFritz12.sofa:type=freq:radius=2:rotation=5
4929 @end example
4930
4931 @item
4932 Similar as above but with custom speaker positions for front left, front right, back left and back right
4933 and also with custom gain:
4934 @example
4935 "sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=2:speakers=FL 45|FR 315|BL 135|BR 225:gain=28"
4936 @end example
4937 @end itemize
4938
4939 @section stereotools
4940
4941 This filter has some handy utilities to manage stereo signals, for converting
4942 M/S stereo recordings to L/R signal while having control over the parameters
4943 or spreading the stereo image of master track.
4944
4945 The filter accepts the following options:
4946
4947 @table @option
4948 @item level_in
4949 Set input level before filtering for both channels. Defaults is 1.
4950 Allowed range is from 0.015625 to 64.
4951
4952 @item level_out
4953 Set output level after filtering for both channels. Defaults is 1.
4954 Allowed range is from 0.015625 to 64.
4955
4956 @item balance_in
4957 Set input balance between both channels. Default is 0.
4958 Allowed range is from -1 to 1.
4959
4960 @item balance_out
4961 Set output balance between both channels. Default is 0.
4962 Allowed range is from -1 to 1.
4963
4964 @item softclip
4965 Enable softclipping. Results in analog distortion instead of harsh digital 0dB
4966 clipping. Disabled by default.
4967
4968 @item mutel
4969 Mute the left channel. Disabled by default.
4970
4971 @item muter
4972 Mute the right channel. Disabled by default.
4973
4974 @item phasel
4975 Change the phase of the left channel. Disabled by default.
4976
4977 @item phaser
4978 Change the phase of the right channel. Disabled by default.
4979
4980 @item mode
4981 Set stereo mode. Available values are:
4982
4983 @table @samp
4984 @item lr>lr
4985 Left/Right to Left/Right, this is default.
4986
4987 @item lr>ms
4988 Left/Right to Mid/Side.
4989
4990 @item ms>lr
4991 Mid/Side to Left/Right.
4992
4993 @item lr>ll
4994 Left/Right to Left/Left.
4995
4996 @item lr>rr
4997 Left/Right to Right/Right.
4998
4999 @item lr>l+r
5000 Left/Right to Left + Right.
5001
5002 @item lr>rl
5003 Left/Right to Right/Left.
5004
5005 @item ms>ll
5006 Mid/Side to Left/Left.
5007
5008 @item ms>rr
5009 Mid/Side to Right/Right.
5010 @end table
5011
5012 @item slev
5013 Set level of side signal. Default is 1.
5014 Allowed range is from 0.015625 to 64.
5015
5016 @item sbal
5017 Set balance of side signal. Default is 0.
5018 Allowed range is from -1 to 1.
5019
5020 @item mlev
5021 Set level of the middle signal. Default is 1.
5022 Allowed range is from 0.015625 to 64.
5023
5024 @item mpan
5025 Set middle signal pan. Default is 0. Allowed range is from -1 to 1.
5026
5027 @item base
5028 Set stereo base between mono and inversed channels. Default is 0.
5029 Allowed range is from -1 to 1.
5030
5031 @item delay
5032 Set delay in milliseconds how much to delay left from right channel and
5033 vice versa. Default is 0. Allowed range is from -20 to 20.
5034
5035 @item sclevel
5036 Set S/C level. Default is 1. Allowed range is from 1 to 100.
5037
5038 @item phase
5039 Set the stereo phase in degrees. Default is 0. Allowed range is from 0 to 360.
5040
5041 @item bmode_in, bmode_out
5042 Set balance mode for balance_in/balance_out option.
5043
5044 Can be one of the following:
5045
5046 @table @samp
5047 @item balance
5048 Classic balance mode. Attenuate one channel at time.
5049 Gain is raised up to 1.
5050
5051 @item amplitude
5052 Similar as classic mode above but gain is raised up to 2.
5053
5054 @item power
5055 Equal power distribution, from -6dB to +6dB range.
5056 @end table
5057 @end table
5058
5059 @subsection Examples
5060
5061 @itemize
5062 @item
5063 Apply karaoke like effect:
5064 @example
5065 stereotools=mlev=0.015625
5066 @end example
5067
5068 @item
5069 Convert M/S signal to L/R:
5070 @example
5071 "stereotools=mode=ms>lr"
5072 @end example
5073 @end itemize
5074
5075 @section stereowiden
5076
5077 This filter enhance the stereo effect by suppressing signal common to both
5078 channels and by delaying the signal of left into right and vice versa,
5079 thereby widening the stereo effect.
5080
5081 The filter accepts the following options:
5082
5083 @table @option
5084 @item delay
5085 Time in milliseconds of the delay of left signal into right and vice versa.
5086 Default is 20 milliseconds.
5087
5088 @item feedback
5089 Amount of gain in delayed signal into right and vice versa. Gives a delay
5090 effect of left signal in right output and vice versa which gives widening
5091 effect. Default is 0.3.
5092
5093 @item crossfeed
5094 Cross feed of left into right with inverted phase. This helps in suppressing
5095 the mono. If the value is 1 it will cancel all the signal common to both
5096 channels. Default is 0.3.
5097
5098 @item drymix
5099 Set level of input signal of original channel. Default is 0.8.
5100 @end table
5101
5102 @section superequalizer
5103 Apply 18 band equalizer.
5104
5105 The filter accepts the following options:
5106 @table @option
5107 @item 1b
5108 Set 65Hz band gain.
5109 @item 2b
5110 Set 92Hz band gain.
5111 @item 3b
5112 Set 131Hz band gain.
5113 @item 4b
5114 Set 185Hz band gain.
5115 @item 5b
5116 Set 262Hz band gain.
5117 @item 6b
5118 Set 370Hz band gain.
5119 @item 7b
5120 Set 523Hz band gain.
5121 @item 8b
5122 Set 740Hz band gain.
5123 @item 9b
5124 Set 1047Hz band gain.
5125 @item 10b
5126 Set 1480Hz band gain.
5127 @item 11b
5128 Set 2093Hz band gain.
5129 @item 12b
5130 Set 2960Hz band gain.
5131 @item 13b
5132 Set 4186Hz band gain.
5133 @item 14b
5134 Set 5920Hz band gain.
5135 @item 15b
5136 Set 8372Hz band gain.
5137 @item 16b
5138 Set 11840Hz band gain.
5139 @item 17b
5140 Set 16744Hz band gain.
5141 @item 18b
5142 Set 20000Hz band gain.
5143 @end table
5144
5145 @section surround
5146 Apply audio surround upmix filter.
5147
5148 This filter allows to produce multichannel output from audio stream.
5149
5150 The filter accepts the following options:
5151
5152 @table @option
5153 @item chl_out
5154 Set output channel layout. By default, this is @var{5.1}.
5155
5156 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5157 for the required syntax.
5158
5159 @item chl_in
5160 Set input channel layout. By default, this is @var{stereo}.
5161
5162 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5163 for the required syntax.
5164
5165 @item level_in
5166 Set input volume level. By default, this is @var{1}.
5167
5168 @item level_out
5169 Set output volume level. By default, this is @var{1}.
5170
5171 @item lfe
5172 Enable LFE channel output if output channel layout has it. By default, this is enabled.
5173
5174 @item lfe_low
5175 Set LFE low cut off frequency. By default, this is @var{128} Hz.
5176
5177 @item lfe_high
5178 Set LFE high cut off frequency. By default, this is @var{256} Hz.
5179
5180 @item lfe_mode
5181 Set LFE mode, can be @var{add} or @var{sub}. Default is @var{add}.
5182 In @var{add} mode, LFE channel is created from input audio and added to output.
5183 In @var{sub} mode, LFE channel is created from input audio and added to output but
5184 also all non-LFE output channels are subtracted with output LFE channel.
5185
5186 @item angle
5187 Set angle of stereo surround transform, Allowed range is from @var{0} to @var{360}.
5188 Default is @var{90}.
5189
5190 @item fc_in
5191 Set front center input volume. By default, this is @var{1}.
5192
5193 @item fc_out
5194 Set front center output volume. By default, this is @var{1}.
5195
5196 @item fl_in
5197 Set front left input volume. By default, this is @var{1}.
5198
5199 @item fl_out
5200 Set front left output volume. By default, this is @var{1}.
5201
5202 @item fr_in
5203 Set front right input volume. By default, this is @var{1}.
5204
5205 @item fr_out
5206 Set front right output volume. By default, this is @var{1}.
5207
5208 @item sl_in
5209 Set side left input volume. By default, this is @var{1}.
5210
5211 @item sl_out
5212 Set side left output volume. By default, this is @var{1}.
5213
5214 @item sr_in
5215 Set side right input volume. By default, this is @var{1}.
5216
5217 @item sr_out
5218 Set side right output volume. By default, this is @var{1}.
5219
5220 @item bl_in
5221 Set back left input volume. By default, this is @var{1}.
5222
5223 @item bl_out
5224 Set back left output volume. By default, this is @var{1}.
5225
5226 @item br_in
5227 Set back right input volume. By default, this is @var{1}.
5228
5229 @item br_out
5230 Set back right output volume. By default, this is @var{1}.
5231
5232 @item bc_in
5233 Set back center input volume. By default, this is @var{1}.
5234
5235 @item bc_out
5236 Set back center output volume. By default, this is @var{1}.
5237
5238 @item lfe_in
5239 Set LFE input volume. By default, this is @var{1}.
5240
5241 @item lfe_out
5242 Set LFE output volume. By default, this is @var{1}.
5243
5244 @item allx
5245 Set spread usage of stereo image across X axis for all channels.
5246
5247 @item ally
5248 Set spread usage of stereo image across Y axis for all channels.
5249
5250 @item fcx, flx, frx, blx, brx, slx, srx, bcx
5251 Set spread usage of stereo image across X axis for each channel.
5252
5253 @item fcy, fly, fry, bly, bry, sly, sry, bcy
5254 Set spread usage of stereo image across Y axis for each channel.
5255
5256 @item win_size
5257 Set window size. Allowed range is from @var{1024} to @var{65536}. Default size is @var{4096}.
5258
5259 @item win_func
5260 Set window function.
5261
5262 It accepts the following values:
5263 @table @samp
5264 @item rect
5265 @item bartlett
5266 @item hann, hanning
5267 @item hamming
5268 @item blackman
5269 @item welch
5270 @item flattop
5271 @item bharris
5272 @item bnuttall
5273 @item bhann
5274 @item sine
5275 @item nuttall
5276 @item lanczos
5277 @item gauss
5278 @item tukey
5279 @item dolph
5280 @item cauchy
5281 @item parzen
5282 @item poisson
5283 @item bohman
5284 @end table
5285 Default is @code{hann}.
5286
5287 @item overlap
5288 Set window overlap. If set to 1, the recommended overlap for selected
5289 window function will be picked. Default is @code{0.5}.
5290 @end table
5291
5292 @section treble, highshelf
5293
5294 Boost or cut treble (upper) frequencies of the audio using a two-pole
5295 shelving filter with a response similar to that of a standard
5296 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
5297
5298 The filter accepts the following options:
5299
5300 @table @option
5301 @item gain, g
5302 Give the gain at whichever is the lower of ~22 kHz and the
5303 Nyquist frequency. Its useful range is about -20 (for a large cut)
5304 to +20 (for a large boost). Beware of clipping when using a positive gain.
5305
5306 @item frequency, f
5307 Set the filter's central frequency and so can be used
5308 to extend or reduce the frequency range to be boosted or cut.
5309 The default value is @code{3000} Hz.
5310
5311 @item width_type, t
5312 Set method to specify band-width of filter.
5313 @table @option
5314 @item h
5315 Hz
5316 @item q
5317 Q-Factor
5318 @item o
5319 octave
5320 @item s
5321 slope
5322 @item k
5323 kHz
5324 @end table
5325
5326 @item width, w
5327 Determine how steep is the filter's shelf transition.
5328
5329 @item mix, m
5330 How much to use filtered signal in output. Default is 1.
5331 Range is between 0 and 1.
5332
5333 @item channels, c
5334 Specify which channels to filter, by default all available are filtered.
5335 @end table
5336
5337 @subsection Commands
5338
5339 This filter supports the following commands:
5340 @table @option
5341 @item frequency, f
5342 Change treble frequency.
5343 Syntax for the command is : "@var{frequency}"
5344
5345 @item width_type, t
5346 Change treble width_type.
5347 Syntax for the command is : "@var{width_type}"
5348
5349 @item width, w
5350 Change treble width.
5351 Syntax for the command is : "@var{width}"
5352
5353 @item gain, g
5354 Change treble gain.
5355 Syntax for the command is : "@var{gain}"
5356
5357 @item mix, m
5358 Change treble mix.
5359 Syntax for the command is : "@var{mix}"
5360 @end table
5361
5362 @section tremolo
5363
5364 Sinusoidal amplitude modulation.
5365
5366 The filter accepts the following options:
5367
5368 @table @option
5369 @item f
5370 Modulation frequency in Hertz. Modulation frequencies in the subharmonic range
5371 (20 Hz or lower) will result in a tremolo effect.
5372 This filter may also be used as a ring modulator by specifying
5373 a modulation frequency higher than 20 Hz.
5374 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
5375
5376 @item d
5377 Depth of modulation as a percentage. Range is 0.0 - 1.0.
5378 Default value is 0.5.
5379 @end table
5380
5381 @section vibrato
5382
5383 Sinusoidal phase modulation.
5384
5385 The filter accepts the following options:
5386
5387 @table @option
5388 @item f
5389 Modulation frequency in Hertz.
5390 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
5391
5392 @item d
5393 Depth of modulation as a percentage. Range is 0.0 - 1.0.
5394 Default value is 0.5.
5395 @end table
5396
5397 @section volume
5398
5399 Adjust the input audio volume.
5400
5401 It accepts the following parameters:
5402 @table @option
5403
5404 @item volume
5405 Set audio volume expression.
5406
5407 Output values are clipped to the maximum value.
5408
5409 The output audio volume is given by the relation:
5410 @example
5411 @var{output_volume} = @var{volume} * @var{input_volume}
5412 @end example
5413
5414 The default value for @var{volume} is "1.0".
5415
5416 @item precision
5417 This parameter represents the mathematical precision.
5418
5419 It determines which input sample formats will be allowed, which affects the
5420 precision of the volume scaling.
5421
5422 @table @option
5423 @item fixed
5424 8-bit fixed-point; this limits input sample format to U8, S16, and S32.
5425 @item float
5426 32-bit floating-point; this limits input sample format to FLT. (default)
5427 @item double
5428 64-bit floating-point; this limits input sample format to DBL.
5429 @end table
5430
5431 @item replaygain
5432 Choose the behaviour on encountering ReplayGain side data in input frames.
5433
5434 @table @option
5435 @item drop
5436 Remove ReplayGain side data, ignoring its contents (the default).
5437
5438 @item ignore
5439 Ignore ReplayGain side data, but leave it in the frame.
5440
5441 @item track
5442 Prefer the track gain, if present.
5443
5444 @item album
5445 Prefer the album gain, if present.
5446 @end table
5447
5448 @item replaygain_preamp
5449 Pre-amplification gain in dB to apply to the selected replaygain gain.
5450
5451 Default value for @var{replaygain_preamp} is 0.0.
5452
5453 @item eval
5454 Set when the volume expression is evaluated.
5455
5456 It accepts the following values:
5457 @table @samp
5458 @item once
5459 only evaluate expression once during the filter initialization, or
5460 when the @samp{volume} command is sent
5461
5462 @item frame
5463 evaluate expression for each incoming frame
5464 @end table
5465
5466 Default value is @samp{once}.
5467 @end table
5468
5469 The volume expression can contain the following parameters.
5470
5471 @table @option
5472 @item n
5473 frame number (starting at zero)
5474 @item nb_channels
5475 number of channels
5476 @item nb_consumed_samples
5477 number of samples consumed by the filter
5478 @item nb_samples
5479 number of samples in the current frame
5480 @item pos
5481 original frame position in the file
5482 @item pts
5483 frame PTS
5484 @item sample_rate
5485 sample rate
5486 @item startpts
5487 PTS at start of stream
5488 @item startt
5489 time at start of stream
5490 @item t
5491 frame time
5492 @item tb
5493 timestamp timebase
5494 @item volume
5495 last set volume value
5496 @end table
5497
5498 Note that when @option{eval} is set to @samp{once} only the
5499 @var{sample_rate} and @var{tb} variables are available, all other
5500 variables will evaluate to NAN.
5501
5502 @subsection Commands
5503
5504 This filter supports the following commands:
5505 @table @option
5506 @item volume
5507 Modify the volume expression.
5508 The command accepts the same syntax of the corresponding option.
5509
5510 If the specified expression is not valid, it is kept at its current
5511 value.
5512 @item replaygain_noclip
5513 Prevent clipping by limiting the gain applied.
5514
5515 Default value for @var{replaygain_noclip} is 1.
5516
5517 @end table
5518
5519 @subsection Examples
5520
5521 @itemize
5522 @item
5523 Halve the input audio volume:
5524 @example
5525 volume=volume=0.5
5526 volume=volume=1/2
5527 volume=volume=-6.0206dB
5528 @end example
5529
5530 In all the above example the named key for @option{volume} can be
5531 omitted, for example like in:
5532 @example
5533 volume=0.5
5534 @end example
5535
5536 @item
5537 Increase input audio power by 6 decibels using fixed-point precision:
5538 @example
5539 volume=volume=6dB:precision=fixed
5540 @end example
5541
5542 @item
5543 Fade volume after time 10 with an annihilation period of 5 seconds:
5544 @example
5545 volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
5546 @end example
5547 @end itemize
5548
5549 @section volumedetect
5550
5551 Detect the volume of the input video.
5552
5553 The filter has no parameters. The input is not modified. Statistics about
5554 the volume will be printed in the log when the input stream end is reached.
5555
5556 In particular it will show the mean volume (root mean square), maximum
5557 volume (on a per-sample basis), and the beginning of a histogram of the
5558 registered volume values (from the maximum value to a cumulated 1/1000 of
5559 the samples).
5560
5561 All volumes are in decibels relative to the maximum PCM value.
5562
5563 @subsection Examples
5564
5565 Here is an excerpt of the output:
5566 @example
5567 [Parsed_volumedetect_0 @ 0xa23120] mean_volume: -27 dB
5568 [Parsed_volumedetect_0 @ 0xa23120] max_volume: -4 dB
5569 [Parsed_volumedetect_0 @ 0xa23120] histogram_4db: 6
5570 [Parsed_volumedetect_0 @ 0xa23120] histogram_5db: 62
5571 [Parsed_volumedetect_0 @ 0xa23120] histogram_6db: 286
5572 [Parsed_volumedetect_0 @ 0xa23120] histogram_7db: 1042
5573 [Parsed_volumedetect_0 @ 0xa23120] histogram_8db: 2551
5574 [Parsed_volumedetect_0 @ 0xa23120] histogram_9db: 4609
5575 [Parsed_volumedetect_0 @ 0xa23120] histogram_10db: 8409
5576 @end example
5577
5578 It means that:
5579 @itemize
5580 @item
5581 The mean square energy is approximately -27 dB, or 10^-2.7.
5582 @item
5583 The largest sample is at -4 dB, or more precisely between -4 dB and -5 dB.
5584 @item
5585 There are 6 samples at -4 dB, 62 at -5 dB, 286 at -6 dB, etc.
5586 @end itemize
5587
5588 In other words, raising the volume by +4 dB does not cause any clipping,
5589 raising it by +5 dB causes clipping for 6 samples, etc.
5590
5591 @c man end AUDIO FILTERS
5592
5593 @chapter Audio Sources
5594 @c man begin AUDIO SOURCES
5595
5596 Below is a description of the currently available audio sources.
5597
5598 @section abuffer
5599
5600 Buffer audio frames, and make them available to the filter chain.
5601
5602 This source is mainly intended for a programmatic use, in particular
5603 through the interface defined in @file{libavfilter/asrc_abuffer.h}.
5604
5605 It accepts the following parameters:
5606 @table @option
5607
5608 @item time_base
5609 The timebase which will be used for timestamps of submitted frames. It must be
5610 either a floating-point number or in @var{numerator}/@var{denominator} form.
5611
5612 @item sample_rate
5613 The sample rate of the incoming audio buffers.
5614
5615 @item sample_fmt
5616 The sample format of the incoming audio buffers.
5617 Either a sample format name or its corresponding integer representation from
5618 the enum AVSampleFormat in @file{libavutil/samplefmt.h}
5619
5620 @item channel_layout
5621 The channel layout of the incoming audio buffers.
5622 Either a channel layout name from channel_layout_map in
5623 @file{libavutil/channel_layout.c} or its corresponding integer representation
5624 from the AV_CH_LAYOUT_* macros in @file{libavutil/channel_layout.h}
5625
5626 @item channels
5627 The number of channels of the incoming audio buffers.
5628 If both @var{channels} and @var{channel_layout} are specified, then they
5629 must be consistent.
5630
5631 @end table
5632
5633 @subsection Examples
5634
5635 @example
5636 abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
5637 @end example
5638
5639 will instruct the source to accept planar 16bit signed stereo at 44100Hz.
5640 Since the sample format with name "s16p" corresponds to the number
5641 6 and the "stereo" channel layout corresponds to the value 0x3, this is
5642 equivalent to:
5643 @example
5644 abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
5645 @end example
5646
5647 @section aevalsrc
5648
5649 Generate an audio signal specified by an expression.
5650
5651 This source accepts in input one or more expressions (one for each
5652 channel), which are evaluated and used to generate a corresponding
5653 audio signal.
5654
5655 This source accepts the following options:
5656
5657 @table @option
5658 @item exprs
5659 Set the '|'-separated expressions list for each separate channel. In case the
5660 @option{channel_layout} option is not specified, the selected channel layout
5661 depends on the number of provided expressions. Otherwise the last
5662 specified expression is applied to the remaining output channels.
5663
5664 @item channel_layout, c
5665 Set the channel layout. The number of channels in the specified layout
5666 must be equal to the number of specified expressions.
5667
5668 @item duration, d
5669 Set the minimum duration of the sourced audio. See
5670 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5671 for the accepted syntax.
5672 Note that the resulting duration may be greater than the specified
5673 duration, as the generated audio is always cut at the end of a
5674 complete frame.
5675
5676 If not specified, or the expressed duration is negative, the audio is
5677 supposed to be generated forever.
5678
5679 @item nb_samples, n
5680 Set the number of samples per channel per each output frame,
5681 default to 1024.
5682
5683 @item sample_rate, s
5684 Specify the sample rate, default to 44100.
5685 @end table
5686
5687 Each expression in @var{exprs} can contain the following constants:
5688
5689 @table @option
5690 @item n
5691 number of the evaluated sample, starting from 0
5692
5693 @item t
5694 time of the evaluated sample expressed in seconds, starting from 0
5695
5696 @item s
5697 sample rate
5698
5699 @end table
5700
5701 @subsection Examples
5702
5703 @itemize
5704 @item
5705 Generate silence:
5706 @example
5707 aevalsrc=0
5708 @end example
5709
5710 @item
5711 Generate a sin signal with frequency of 440 Hz, set sample rate to
5712 8000 Hz:
5713 @example
5714 aevalsrc="sin(440*2*PI*t):s=8000"
5715 @end example
5716
5717 @item
5718 Generate a two channels signal, specify the channel layout (Front
5719 Center + Back Center) explicitly:
5720 @example
5721 aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
5722 @end example
5723
5724 @item
5725 Generate white noise:
5726 @example
5727 aevalsrc="-2+random(0)"
5728 @end example
5729
5730 @item
5731 Generate an amplitude modulated signal:
5732 @example
5733 aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
5734 @end example
5735
5736 @item
5737 Generate 2.5 Hz binaural beats on a 360 Hz carrier:
5738 @example
5739 aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
5740 @end example
5741
5742 @end itemize
5743
5744 @section anullsrc
5745
5746 The null audio source, return unprocessed audio frames. It is mainly useful
5747 as a template and to be employed in analysis / debugging tools, or as
5748 the source for filters which ignore the input data (for example the sox
5749 synth filter).
5750
5751 This source accepts the following options:
5752
5753 @table @option
5754
5755 @item channel_layout, cl
5756
5757 Specifies the channel layout, and can be either an integer or a string
5758 representing a channel layout. The default value of @var{channel_layout}
5759 is "stereo".
5760
5761 Check the channel_layout_map definition in
5762 @file{libavutil/channel_layout.c} for the mapping between strings and
5763 channel layout values.
5764
5765 @item sample_rate, r
5766 Specifies the sample rate, and defaults to 44100.
5767
5768 @item nb_samples, n
5769 Set the number of samples per requested frames.
5770
5771 @end table
5772
5773 @subsection Examples
5774
5775 @itemize
5776 @item
5777 Set the sample rate to 48000 Hz and the channel layout to AV_CH_LAYOUT_MONO.
5778 @example
5779 anullsrc=r=48000:cl=4
5780 @end example
5781
5782 @item
5783 Do the same operation with a more obvious syntax:
5784 @example
5785 anullsrc=r=48000:cl=mono
5786 @end example
5787 @end itemize
5788
5789 All the parameters need to be explicitly defined.
5790
5791 @section flite
5792
5793 Synthesize a voice utterance using the libflite library.
5794
5795 To enable compilation of this filter you need to configure FFmpeg with
5796 @code{--enable-libflite}.
5797
5798 Note that versions of the flite library prior to 2.0 are not thread-safe.
5799
5800 The filter accepts the following options:
5801
5802 @table @option
5803
5804 @item list_voices
5805 If set to 1, list the names of the available voices and exit
5806 immediately. Default value is 0.
5807
5808 @item nb_samples, n
5809 Set the maximum number of samples per frame. Default value is 512.
5810
5811 @item textfile
5812 Set the filename containing the text to speak.
5813
5814 @item text
5815 Set the text to speak.
5816
5817 @item voice, v
5818 Set the voice to use for the speech synthesis. Default value is
5819 @code{kal}. See also the @var{list_voices} option.
5820 @end table
5821
5822 @subsection Examples
5823
5824 @itemize
5825 @item
5826 Read from file @file{speech.txt}, and synthesize the text using the
5827 standard flite voice:
5828 @example
5829 flite=textfile=speech.txt
5830 @end example
5831
5832 @item
5833 Read the specified text selecting the @code{slt} voice:
5834 @example
5835 flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
5836 @end example
5837
5838 @item
5839 Input text to ffmpeg:
5840 @example
5841 ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
5842 @end example
5843
5844 @item
5845 Make @file{ffplay} speak the specified text, using @code{flite} and
5846 the @code{lavfi} device:
5847 @example
5848 ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
5849 @end example
5850 @end itemize
5851
5852 For more information about libflite, check:
5853 @url{http://www.festvox.org/flite/}
5854
5855 @section anoisesrc
5856
5857 Generate a noise audio signal.
5858
5859 The filter accepts the following options:
5860
5861 @table @option
5862 @item sample_rate, r
5863 Specify the sample rate. Default value is 48000 Hz.
5864
5865 @item amplitude, a
5866 Specify the amplitude (0.0 - 1.0) of the generated audio stream. Default value
5867 is 1.0.
5868
5869 @item duration, d
5870 Specify the duration of the generated audio stream. Not specifying this option
5871 results in noise with an infinite length.
5872
5873 @item color, colour, c
5874 Specify the color of noise. Available noise colors are white, pink, brown,
5875 blue and violet. Default color is white.
5876
5877 @item seed, s
5878 Specify a value used to seed the PRNG.
5879
5880 @item nb_samples, n
5881 Set the number of samples per each output frame, default is 1024.
5882 @end table
5883
5884 @subsection Examples
5885
5886 @itemize
5887
5888 @item
5889 Generate 60 seconds of pink noise, with a 44.1 kHz sampling rate and an amplitude of 0.5:
5890 @example
5891 anoisesrc=d=60:c=pink:r=44100:a=0.5
5892 @end example
5893 @end itemize
5894
5895 @section hilbert
5896
5897 Generate odd-tap Hilbert transform FIR coefficients.
5898
5899 The resulting stream can be used with @ref{afir} filter for phase-shifting
5900 the signal by 90 degrees.
5901
5902 This is used in many matrix coding schemes and for analytic signal generation.
5903 The process is often written as a multiplication by i (or j), the imaginary unit.
5904
5905 The filter accepts the following options:
5906
5907 @table @option
5908
5909 @item sample_rate, s
5910 Set sample rate, default is 44100.
5911
5912 @item taps, t
5913 Set length of FIR filter, default is 22051.
5914
5915 @item nb_samples, n
5916 Set number of samples per each frame.
5917
5918 @item win_func, w
5919 Set window function to be used when generating FIR coefficients.
5920 @end table
5921
5922 @section sinc
5923
5924 Generate a sinc kaiser-windowed low-pass, high-pass, band-pass, or band-reject FIR coefficients.
5925
5926 The resulting stream can be used with @ref{afir} filter for filtering the audio signal.
5927
5928 The filter accepts the following options:
5929
5930 @table @option
5931 @item sample_rate, r
5932 Set sample rate, default is 44100.
5933
5934 @item nb_samples, n
5935 Set number of samples per each frame. Default is 1024.
5936
5937 @item hp
5938 Set high-pass frequency. Default is 0.
5939
5940 @item lp
5941 Set low-pass frequency. Default is 0.
5942 If high-pass frequency is lower than low-pass frequency and low-pass frequency
5943 is higher than 0 then filter will create band-pass filter coefficients,
5944 otherwise band-reject filter coefficients.
5945
5946 @item phase
5947 Set filter phase response. Default is 50. Allowed range is from 0 to 100.
5948
5949 @item beta
5950 Set Kaiser window beta.
5951
5952 @item att
5953 Set stop-band attenuation. Default is 120dB, allowed range is from 40 to 180 dB.
5954
5955 @item round
5956 Enable rounding, by default is disabled.
5957
5958 @item hptaps
5959 Set number of taps for high-pass filter.
5960
5961 @item lptaps
5962 Set number of taps for low-pass filter.
5963 @end table
5964
5965 @section sine
5966
5967 Generate an audio signal made of a sine wave with amplitude 1/8.
5968
5969 The audio signal is bit-exact.
5970
5971 The filter accepts the following options:
5972
5973 @table @option
5974
5975 @item frequency, f
5976 Set the carrier frequency. Default is 440 Hz.
5977
5978 @item beep_factor, b
5979 Enable a periodic beep every second with frequency @var{beep_factor} times
5980 the carrier frequency. Default is 0, meaning the beep is disabled.
5981
5982 @item sample_rate, r
5983 Specify the sample rate, default is 44100.
5984
5985 @item duration, d
5986 Specify the duration of the generated audio stream.
5987
5988 @item samples_per_frame
5989 Set the number of samples per output frame.
5990
5991 The expression can contain the following constants:
5992
5993 @table @option
5994 @item n
5995 The (sequential) number of the output audio frame, starting from 0.
5996
5997 @item pts
5998 The PTS (Presentation TimeStamp) of the output audio frame,
5999 expressed in @var{TB} units.
6000
6001 @item t
6002 The PTS of the output audio frame, expressed in seconds.
6003
6004 @item TB
6005 The timebase of the output audio frames.
6006 @end table
6007
6008 Default is @code{1024}.
6009 @end table
6010
6011 @subsection Examples
6012
6013 @itemize
6014
6015 @item
6016 Generate a simple 440 Hz sine wave:
6017 @example
6018 sine
6019 @end example
6020
6021 @item
6022 Generate a 220 Hz sine wave with a 880 Hz beep each second, for 5 seconds:
6023 @example
6024 sine=220:4:d=5
6025 sine=f=220:b=4:d=5
6026 sine=frequency=220:beep_factor=4:duration=5
6027 @end example
6028
6029 @item
6030 Generate a 1 kHz sine wave following @code{1602,1601,1602,1601,1602} NTSC
6031 pattern:
6032 @example
6033 sine=1000:samples_per_frame='st(0,mod(n,5)); 1602-not(not(eq(ld(0),1)+eq(ld(0),3)))'
6034 @end example
6035 @end itemize
6036
6037 @c man end AUDIO SOURCES
6038
6039 @chapter Audio Sinks
6040 @c man begin AUDIO SINKS
6041
6042 Below is a description of the currently available audio sinks.
6043
6044 @section abuffersink
6045
6046 Buffer audio frames, and make them available to the end of filter chain.
6047
6048 This sink is mainly intended for programmatic use, in particular
6049 through the interface defined in @file{libavfilter/buffersink.h}
6050 or the options system.
6051
6052 It accepts a pointer to an AVABufferSinkContext structure, which
6053 defines the incoming buffers' formats, to be passed as the opaque
6054 parameter to @code{avfilter_init_filter} for initialization.
6055 @section anullsink
6056
6057 Null audio sink; do absolutely nothing with the input audio. It is
6058 mainly useful as a template and for use in analysis / debugging
6059 tools.
6060
6061 @c man end AUDIO SINKS
6062
6063 @chapter Video Filters
6064 @c man begin VIDEO FILTERS
6065
6066 When you configure your FFmpeg build, you can disable any of the
6067 existing filters using @code{--disable-filters}.
6068 The configure output will show the video filters included in your
6069 build.
6070
6071 Below is a description of the currently available video filters.
6072
6073 @section addroi
6074
6075 Mark a region of interest in a video frame.
6076
6077 The frame data is passed through unchanged, but metadata is attached
6078 to the frame indicating regions of interest which can affect the
6079 behaviour of later encoding.  Multiple regions can be marked by
6080 applying the filter multiple times.
6081
6082 @table @option
6083 @item x
6084 Region distance in pixels from the left edge of the frame.
6085 @item y
6086 Region distance in pixels from the top edge of the frame.
6087 @item w
6088 Region width in pixels.
6089 @item h
6090 Region height in pixels.
6091
6092 The parameters @var{x}, @var{y}, @var{w} and @var{h} are expressions,
6093 and may contain the following variables:
6094 @table @option
6095 @item iw
6096 Width of the input frame.
6097 @item ih
6098 Height of the input frame.
6099 @end table
6100
6101 @item qoffset
6102 Quantisation offset to apply within the region.
6103
6104 This must be a real value in the range -1 to +1.  A value of zero
6105 indicates no quality change.  A negative value asks for better quality
6106 (less quantisation), while a positive value asks for worse quality
6107 (greater quantisation).
6108
6109 The range is calibrated so that the extreme values indicate the
6110 largest possible offset - if the rest of the frame is encoded with the
6111 worst possible quality, an offset of -1 indicates that this region
6112 should be encoded with the best possible quality anyway.  Intermediate
6113 values are then interpolated in some codec-dependent way.
6114
6115 For example, in 10-bit H.264 the quantisation parameter varies between
6116 -12 and 51.  A typical qoffset value of -1/10 therefore indicates that
6117 this region should be encoded with a QP around one-tenth of the full
6118 range better than the rest of the frame.  So, if most of the frame
6119 were to be encoded with a QP of around 30, this region would get a QP
6120 of around 24 (an offset of approximately -1/10 * (51 - -12) = -6.3).
6121 An extreme value of -1 would indicate that this region should be
6122 encoded with the best possible quality regardless of the treatment of
6123 the rest of the frame - that is, should be encoded at a QP of -12.
6124 @item clear
6125 If set to true, remove any existing regions of interest marked on the
6126 frame before adding the new one.
6127 @end table
6128
6129 @subsection Examples
6130
6131 @itemize
6132 @item
6133 Mark the centre quarter of the frame as interesting.
6134 @example
6135 addroi=iw/4:ih/4:iw/2:ih/2:-1/10
6136 @end example
6137 @item
6138 Mark the 100-pixel-wide region on the left edge of the frame as very
6139 uninteresting (to be encoded at much lower quality than the rest of
6140 the frame).
6141 @example
6142 addroi=0:0:100:ih:+1/5
6143 @end example
6144 @end itemize
6145
6146 @section alphaextract
6147
6148 Extract the alpha component from the input as a grayscale video. This
6149 is especially useful with the @var{alphamerge} filter.
6150
6151 @section alphamerge
6152
6153 Add or replace the alpha component of the primary input with the
6154 grayscale value of a second input. This is intended for use with
6155 @var{alphaextract} to allow the transmission or storage of frame
6156 sequences that have alpha in a format that doesn't support an alpha
6157 channel.
6158
6159 For example, to reconstruct full frames from a normal YUV-encoded video
6160 and a separate video created with @var{alphaextract}, you might use:
6161 @example
6162 movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
6163 @end example
6164
6165 Since this filter is designed for reconstruction, it operates on frame
6166 sequences without considering timestamps, and terminates when either
6167 input reaches end of stream. This will cause problems if your encoding
6168 pipeline drops frames. If you're trying to apply an image as an
6169 overlay to a video stream, consider the @var{overlay} filter instead.
6170
6171 @section amplify
6172
6173 Amplify differences between current pixel and pixels of adjacent frames in
6174 same pixel location.
6175
6176 This filter accepts the following options:
6177
6178 @table @option
6179 @item radius
6180 Set frame radius. Default is 2. Allowed range is from 1 to 63.
6181 For example radius of 3 will instruct filter to calculate average of 7 frames.
6182
6183 @item factor
6184 Set factor to amplify difference. Default is 2. Allowed range is from 0 to 65535.
6185
6186 @item threshold
6187 Set threshold for difference amplification. Any difference greater or equal to
6188 this value will not alter source pixel. Default is 10.
6189 Allowed range is from 0 to 65535.
6190
6191 @item tolerance
6192 Set tolerance for difference amplification. Any difference lower to
6193 this value will not alter source pixel. Default is 0.
6194 Allowed range is from 0 to 65535.
6195
6196 @item low
6197 Set lower limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
6198 This option controls maximum possible value that will decrease source pixel value.
6199
6200 @item high
6201 Set high limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
6202 This option controls maximum possible value that will increase source pixel value.
6203
6204 @item planes
6205 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
6206 @end table
6207
6208 @subsection Commands
6209
6210 This filter supports the following @ref{commands} that corresponds to option of same name:
6211 @table @option
6212 @item factor
6213 @item threshold
6214 @item tolerance
6215 @item low
6216 @item high
6217 @item planes
6218 @end table
6219
6220 @section ass
6221
6222 Same as the @ref{subtitles} filter, except that it doesn't require libavcodec
6223 and libavformat to work. On the other hand, it is limited to ASS (Advanced
6224 Substation Alpha) subtitles files.
6225
6226 This filter accepts the following option in addition to the common options from
6227 the @ref{subtitles} filter:
6228
6229 @table @option
6230 @item shaping
6231 Set the shaping engine
6232
6233 Available values are:
6234 @table @samp
6235 @item auto
6236 The default libass shaping engine, which is the best available.
6237 @item simple
6238 Fast, font-agnostic shaper that can do only substitutions
6239 @item complex
6240 Slower shaper using OpenType for substitutions and positioning
6241 @end table
6242
6243 The default is @code{auto}.
6244 @end table
6245
6246 @section atadenoise
6247 Apply an Adaptive Temporal Averaging Denoiser to the video input.
6248
6249 The filter accepts the following options:
6250
6251 @table @option
6252 @item 0a
6253 Set threshold A for 1st plane. Default is 0.02.
6254 Valid range is 0 to 0.3.
6255
6256 @item 0b
6257 Set threshold B for 1st plane. Default is 0.04.
6258 Valid range is 0 to 5.
6259
6260 @item 1a
6261 Set threshold A for 2nd plane. Default is 0.02.
6262 Valid range is 0 to 0.3.
6263
6264 @item 1b
6265 Set threshold B for 2nd plane. Default is 0.04.
6266 Valid range is 0 to 5.
6267
6268 @item 2a
6269 Set threshold A for 3rd plane. Default is 0.02.
6270 Valid range is 0 to 0.3.
6271
6272 @item 2b
6273 Set threshold B for 3rd plane. Default is 0.04.
6274 Valid range is 0 to 5.
6275
6276 Threshold A is designed to react on abrupt changes in the input signal and
6277 threshold B is designed to react on continuous changes in the input signal.
6278
6279 @item s
6280 Set number of frames filter will use for averaging. Default is 9. Must be odd
6281 number in range [5, 129].
6282
6283 @item p
6284 Set what planes of frame filter will use for averaging. Default is all.
6285
6286 @item a
6287 Set what variant of algorithm filter will use for averaging. Default is @code{p} parallel.
6288 Alternatively can be set to @code{s} serial.
6289
6290 Parallel can be faster then serial, while other way around is never true.
6291 Parallel will abort early on first change being greater then thresholds, while serial
6292 will continue processing other side of frames if they are equal or bellow thresholds.
6293 @end table
6294
6295 @subsection Commands
6296 This filter supports same @ref{commands} as options except option @code{s}.
6297 The command accepts the same syntax of the corresponding option.
6298
6299 @section avgblur
6300
6301 Apply average blur filter.
6302
6303 The filter accepts the following options:
6304
6305 @table @option
6306 @item sizeX
6307 Set horizontal radius size.
6308
6309 @item planes
6310 Set which planes to filter. By default all planes are filtered.
6311
6312 @item sizeY
6313 Set vertical radius size, if zero it will be same as @code{sizeX}.
6314 Default is @code{0}.
6315 @end table
6316
6317 @subsection Commands
6318 This filter supports same commands as options.
6319 The command accepts the same syntax of the corresponding option.
6320
6321 If the specified expression is not valid, it is kept at its current
6322 value.
6323
6324 @section bbox
6325
6326 Compute the bounding box for the non-black pixels in the input frame
6327 luminance plane.
6328
6329 This filter computes the bounding box containing all the pixels with a
6330 luminance value greater than the minimum allowed value.
6331 The parameters describing the bounding box are printed on the filter
6332 log.
6333
6334 The filter accepts the following option:
6335
6336 @table @option
6337 @item min_val
6338 Set the minimal luminance value. Default is @code{16}.
6339 @end table
6340
6341 @section bilateral
6342 Apply bilateral filter, spatial smoothing while preserving edges.
6343
6344 The filter accepts the following options:
6345 @table @option
6346 @item sigmaS
6347 Set sigma of gaussian function to calculate spatial weight.
6348 Allowed range is 0 to 10. Default is 0.1.
6349
6350 @item sigmaR
6351 Set sigma of gaussian function to calculate range weight.
6352 Allowed range is 0 to 1. Default is 0.1.
6353
6354 @item planes
6355 Set planes to filter. Default is first only.
6356 @end table
6357
6358 @section bitplanenoise
6359
6360 Show and measure bit plane noise.
6361
6362 The filter accepts the following options:
6363
6364 @table @option
6365 @item bitplane
6366 Set which plane to analyze. Default is @code{1}.
6367
6368 @item filter
6369 Filter out noisy pixels from @code{bitplane} set above.
6370 Default is disabled.
6371 @end table
6372
6373 @section blackdetect
6374
6375 Detect video intervals that are (almost) completely black. Can be
6376 useful to detect chapter transitions, commercials, or invalid
6377 recordings. Output lines contains the time for the start, end and
6378 duration of the detected black interval expressed in seconds.
6379
6380 In order to display the output lines, you need to set the loglevel at
6381 least to the AV_LOG_INFO value.
6382
6383 The filter accepts the following options:
6384
6385 @table @option
6386 @item black_min_duration, d
6387 Set the minimum detected black duration expressed in seconds. It must
6388 be a non-negative floating point number.
6389
6390 Default value is 2.0.
6391
6392 @item picture_black_ratio_th, pic_th
6393 Set the threshold for considering a picture "black".
6394 Express the minimum value for the ratio:
6395 @example
6396 @var{nb_black_pixels} / @var{nb_pixels}
6397 @end example
6398
6399 for which a picture is considered black.
6400 Default value is 0.98.
6401
6402 @item pixel_black_th, pix_th
6403 Set the threshold for considering a pixel "black".
6404
6405 The threshold expresses the maximum pixel luminance value for which a
6406 pixel is considered "black". The provided value is scaled according to
6407 the following equation:
6408 @example
6409 @var{absolute_threshold} = @var{luminance_minimum_value} + @var{pixel_black_th} * @var{luminance_range_size}
6410 @end example
6411
6412 @var{luminance_range_size} and @var{luminance_minimum_value} depend on
6413 the input video format, the range is [0-255] for YUV full-range
6414 formats and [16-235] for YUV non full-range formats.
6415
6416 Default value is 0.10.
6417 @end table
6418
6419 The following example sets the maximum pixel threshold to the minimum
6420 value, and detects only black intervals of 2 or more seconds:
6421 @example
6422 blackdetect=d=2:pix_th=0.00
6423 @end example
6424
6425 @section blackframe
6426
6427 Detect frames that are (almost) completely black. Can be useful to
6428 detect chapter transitions or commercials. Output lines consist of
6429 the frame number of the detected frame, the percentage of blackness,
6430 the position in the file if known or -1 and the timestamp in seconds.
6431
6432 In order to display the output lines, you need to set the loglevel at
6433 least to the AV_LOG_INFO value.
6434
6435 This filter exports frame metadata @code{lavfi.blackframe.pblack}.
6436 The value represents the percentage of pixels in the picture that
6437 are below the threshold value.
6438
6439 It accepts the following parameters:
6440
6441 @table @option
6442
6443 @item amount
6444 The percentage of the pixels that have to be below the threshold; it defaults to
6445 @code{98}.
6446
6447 @item threshold, thresh
6448 The threshold below which a pixel value is considered black; it defaults to
6449 @code{32}.
6450
6451 @end table
6452
6453 @section blend, tblend
6454
6455 Blend two video frames into each other.
6456
6457 The @code{blend} filter takes two input streams and outputs one
6458 stream, the first input is the "top" layer and second input is
6459 "bottom" layer.  By default, the output terminates when the longest input terminates.
6460
6461 The @code{tblend} (time blend) filter takes two consecutive frames
6462 from one single stream, and outputs the result obtained by blending
6463 the new frame on top of the old frame.
6464
6465 A description of the accepted options follows.
6466
6467 @table @option
6468 @item c0_mode
6469 @item c1_mode
6470 @item c2_mode
6471 @item c3_mode
6472 @item all_mode
6473 Set blend mode for specific pixel component or all pixel components in case
6474 of @var{all_mode}. Default value is @code{normal}.
6475
6476 Available values for component modes are:
6477 @table @samp
6478 @item addition
6479 @item grainmerge
6480 @item and
6481 @item average
6482 @item burn
6483 @item darken
6484 @item difference
6485 @item grainextract
6486 @item divide
6487 @item dodge
6488 @item freeze
6489 @item exclusion
6490 @item extremity
6491 @item glow
6492 @item hardlight
6493 @item hardmix
6494 @item heat
6495 @item lighten
6496 @item linearlight
6497 @item multiply
6498 @item multiply128
6499 @item negation
6500 @item normal
6501 @item or
6502 @item overlay
6503 @item phoenix
6504 @item pinlight
6505 @item reflect
6506 @item screen
6507 @item softlight
6508 @item subtract
6509 @item vividlight
6510 @item xor
6511 @end table
6512
6513 @item c0_opacity
6514 @item c1_opacity
6515 @item c2_opacity
6516 @item c3_opacity
6517 @item all_opacity
6518 Set blend opacity for specific pixel component or all pixel components in case
6519 of @var{all_opacity}. Only used in combination with pixel component blend modes.
6520
6521 @item c0_expr
6522 @item c1_expr
6523 @item c2_expr
6524 @item c3_expr
6525 @item all_expr
6526 Set blend expression for specific pixel component or all pixel components in case
6527 of @var{all_expr}. Note that related mode options will be ignored if those are set.
6528
6529 The expressions can use the following variables:
6530
6531 @table @option
6532 @item N
6533 The sequential number of the filtered frame, starting from @code{0}.
6534
6535 @item X
6536 @item Y
6537 the coordinates of the current sample
6538
6539 @item W
6540 @item H
6541 the width and height of currently filtered plane
6542
6543 @item SW
6544 @item SH
6545 Width and height scale for the plane being filtered. It is the
6546 ratio between the dimensions of the current plane to the luma plane,
6547 e.g. for a @code{yuv420p} frame, the values are @code{1,1} for
6548 the luma plane and @code{0.5,0.5} for the chroma planes.
6549
6550 @item T
6551 Time of the current frame, expressed in seconds.
6552
6553 @item TOP, A
6554 Value of pixel component at current location for first video frame (top layer).
6555
6556 @item BOTTOM, B
6557 Value of pixel component at current location for second video frame (bottom layer).
6558 @end table
6559 @end table
6560
6561 The @code{blend} filter also supports the @ref{framesync} options.
6562
6563 @subsection Examples
6564
6565 @itemize
6566 @item
6567 Apply transition from bottom layer to top layer in first 10 seconds:
6568 @example
6569 blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
6570 @end example
6571
6572 @item
6573 Apply linear horizontal transition from top layer to bottom layer:
6574 @example
6575 blend=all_expr='A*(X/W)+B*(1-X/W)'
6576 @end example
6577
6578 @item
6579 Apply 1x1 checkerboard effect:
6580 @example
6581 blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
6582 @end example
6583
6584 @item
6585 Apply uncover left effect:
6586 @example
6587 blend=all_expr='if(gte(N*SW+X,W),A,B)'
6588 @end example
6589
6590 @item
6591 Apply uncover down effect:
6592 @example
6593 blend=all_expr='if(gte(Y-N*SH,0),A,B)'
6594 @end example
6595
6596 @item
6597 Apply uncover up-left effect:
6598 @example
6599 blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
6600 @end example
6601
6602 @item
6603 Split diagonally video and shows top and bottom layer on each side:
6604 @example
6605 blend=all_expr='if(gt(X,Y*(W/H)),A,B)'
6606 @end example
6607
6608 @item
6609 Display differences between the current and the previous frame:
6610 @example
6611 tblend=all_mode=grainextract
6612 @end example
6613 @end itemize
6614
6615 @section bm3d
6616
6617 Denoise frames using Block-Matching 3D algorithm.
6618
6619 The filter accepts the following options.
6620
6621 @table @option
6622 @item sigma
6623 Set denoising strength. Default value is 1.
6624 Allowed range is from 0 to 999.9.
6625 The denoising algorithm is very sensitive to sigma, so adjust it
6626 according to the source.
6627
6628 @item block
6629 Set local patch size. This sets dimensions in 2D.
6630
6631 @item bstep
6632 Set sliding step for processing blocks. Default value is 4.
6633 Allowed range is from 1 to 64.
6634 Smaller values allows processing more reference blocks and is slower.
6635
6636 @item group
6637 Set maximal number of similar blocks for 3rd dimension. Default value is 1.
6638 When set to 1, no block matching is done. Larger values allows more blocks
6639 in single group.
6640 Allowed range is from 1 to 256.
6641
6642 @item range
6643 Set radius for search block matching. Default is 9.
6644 Allowed range is from 1 to INT32_MAX.
6645
6646 @item mstep
6647 Set step between two search locations for block matching. Default is 1.
6648 Allowed range is from 1 to 64. Smaller is slower.
6649
6650 @item thmse
6651 Set threshold of mean square error for block matching. Valid range is 0 to
6652 INT32_MAX.
6653
6654 @item hdthr
6655 Set thresholding parameter for hard thresholding in 3D transformed domain.
6656 Larger values results in stronger hard-thresholding filtering in frequency
6657 domain.
6658
6659 @item estim
6660 Set filtering estimation mode. Can be @code{basic} or @code{final}.
6661 Default is @code{basic}.
6662
6663 @item ref
6664 If enabled, filter will use 2nd stream for block matching.
6665 Default is disabled for @code{basic} value of @var{estim} option,
6666 and always enabled if value of @var{estim} is @code{final}.
6667
6668 @item planes
6669 Set planes to filter. Default is all available except alpha.
6670 @end table
6671
6672 @subsection Examples
6673
6674 @itemize
6675 @item
6676 Basic filtering with bm3d:
6677 @example
6678 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic
6679 @end example
6680
6681 @item
6682 Same as above, but filtering only luma:
6683 @example
6684 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic:planes=1
6685 @end example
6686
6687 @item
6688 Same as above, but with both estimation modes:
6689 @example
6690 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
6691 @end example
6692
6693 @item
6694 Same as above, but prefilter with @ref{nlmeans} filter instead:
6695 @example
6696 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
6697 @end example
6698 @end itemize
6699
6700 @section boxblur
6701
6702 Apply a boxblur algorithm to the input video.
6703
6704 It accepts the following parameters:
6705
6706 @table @option
6707
6708 @item luma_radius, lr
6709 @item luma_power, lp
6710 @item chroma_radius, cr
6711 @item chroma_power, cp
6712 @item alpha_radius, ar
6713 @item alpha_power, ap
6714
6715 @end table
6716
6717 A description of the accepted options follows.
6718
6719 @table @option
6720 @item luma_radius, lr
6721 @item chroma_radius, cr
6722 @item alpha_radius, ar
6723 Set an expression for the box radius in pixels used for blurring the
6724 corresponding input plane.
6725
6726 The radius value must be a non-negative number, and must not be
6727 greater than the value of the expression @code{min(w,h)/2} for the
6728 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
6729 planes.
6730
6731 Default value for @option{luma_radius} is "2". If not specified,
6732 @option{chroma_radius} and @option{alpha_radius} default to the
6733 corresponding value set for @option{luma_radius}.
6734
6735 The expressions can contain the following constants:
6736 @table @option
6737 @item w
6738 @item h
6739 The input width and height in pixels.
6740
6741 @item cw
6742 @item ch
6743 The input chroma image width and height in pixels.
6744
6745 @item hsub
6746 @item vsub
6747 The horizontal and vertical chroma subsample values. For example, for the
6748 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
6749 @end table
6750
6751 @item luma_power, lp
6752 @item chroma_power, cp
6753 @item alpha_power, ap
6754 Specify how many times the boxblur filter is applied to the
6755 corresponding plane.
6756
6757 Default value for @option{luma_power} is 2. If not specified,
6758 @option{chroma_power} and @option{alpha_power} default to the
6759 corresponding value set for @option{luma_power}.
6760
6761 A value of 0 will disable the effect.
6762 @end table
6763
6764 @subsection Examples
6765
6766 @itemize
6767 @item
6768 Apply a boxblur filter with the luma, chroma, and alpha radii
6769 set to 2:
6770 @example
6771 boxblur=luma_radius=2:luma_power=1
6772 boxblur=2:1
6773 @end example
6774
6775 @item
6776 Set the luma radius to 2, and alpha and chroma radius to 0:
6777 @example
6778 boxblur=2:1:cr=0:ar=0
6779 @end example
6780
6781 @item
6782 Set the luma and chroma radii to a fraction of the video dimension:
6783 @example
6784 boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
6785 @end example
6786 @end itemize
6787
6788 @section bwdif
6789
6790 Deinterlace the input video ("bwdif" stands for "Bob Weaver
6791 Deinterlacing Filter").
6792
6793 Motion adaptive deinterlacing based on yadif with the use of w3fdif and cubic
6794 interpolation algorithms.
6795 It accepts the following parameters:
6796
6797 @table @option
6798 @item mode
6799 The interlacing mode to adopt. It accepts one of the following values:
6800
6801 @table @option
6802 @item 0, send_frame
6803 Output one frame for each frame.
6804 @item 1, send_field
6805 Output one frame for each field.
6806 @end table
6807
6808 The default value is @code{send_field}.
6809
6810 @item parity
6811 The picture field parity assumed for the input interlaced video. It accepts one
6812 of the following values:
6813
6814 @table @option
6815 @item 0, tff
6816 Assume the top field is first.
6817 @item 1, bff
6818 Assume the bottom field is first.
6819 @item -1, auto
6820 Enable automatic detection of field parity.
6821 @end table
6822
6823 The default value is @code{auto}.
6824 If the interlacing is unknown or the decoder does not export this information,
6825 top field first will be assumed.
6826
6827 @item deint
6828 Specify which frames to deinterlace. Accepts one of the following
6829 values:
6830
6831 @table @option
6832 @item 0, all
6833 Deinterlace all frames.
6834 @item 1, interlaced
6835 Only deinterlace frames marked as interlaced.
6836 @end table
6837
6838 The default value is @code{all}.
6839 @end table
6840
6841 @section chromahold
6842 Remove all color information for all colors except for certain one.
6843
6844 The filter accepts the following options:
6845
6846 @table @option
6847 @item color
6848 The color which will not be replaced with neutral chroma.
6849
6850 @item similarity
6851 Similarity percentage with the above color.
6852 0.01 matches only the exact key color, while 1.0 matches everything.
6853
6854 @item blend
6855 Blend percentage.
6856 0.0 makes pixels either fully gray, or not gray at all.
6857 Higher values result in more preserved color.
6858
6859 @item yuv
6860 Signals that the color passed is already in YUV instead of RGB.
6861
6862 Literal colors like "green" or "red" don't make sense with this enabled anymore.
6863 This can be used to pass exact YUV values as hexadecimal numbers.
6864 @end table
6865
6866 @section chromakey
6867 YUV colorspace color/chroma keying.
6868
6869 The filter accepts the following options:
6870
6871 @table @option
6872 @item color
6873 The color which will be replaced with transparency.
6874
6875 @item similarity
6876 Similarity percentage with the key color.
6877
6878 0.01 matches only the exact key color, while 1.0 matches everything.
6879
6880 @item blend
6881 Blend percentage.
6882
6883 0.0 makes pixels either fully transparent, or not transparent at all.
6884
6885 Higher values result in semi-transparent pixels, with a higher transparency
6886 the more similar the pixels color is to the key color.
6887
6888 @item yuv
6889 Signals that the color passed is already in YUV instead of RGB.
6890
6891 Literal colors like "green" or "red" don't make sense with this enabled anymore.
6892 This can be used to pass exact YUV values as hexadecimal numbers.
6893 @end table
6894
6895 @subsection Examples
6896
6897 @itemize
6898 @item
6899 Make every green pixel in the input image transparent:
6900 @example
6901 ffmpeg -i input.png -vf chromakey=green out.png
6902 @end example
6903
6904 @item
6905 Overlay a greenscreen-video on top of a static black background.
6906 @example
6907 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
6908 @end example
6909 @end itemize
6910
6911 @section chromashift
6912 Shift chroma pixels horizontally and/or vertically.
6913
6914 The filter accepts the following options:
6915 @table @option
6916 @item cbh
6917 Set amount to shift chroma-blue horizontally.
6918 @item cbv
6919 Set amount to shift chroma-blue vertically.
6920 @item crh
6921 Set amount to shift chroma-red horizontally.
6922 @item crv
6923 Set amount to shift chroma-red vertically.
6924 @item edge
6925 Set edge mode, can be @var{smear}, default, or @var{warp}.
6926 @end table
6927
6928 @section ciescope
6929
6930 Display CIE color diagram with pixels overlaid onto it.
6931
6932 The filter accepts the following options:
6933
6934 @table @option
6935 @item system
6936 Set color system.
6937
6938 @table @samp
6939 @item ntsc, 470m
6940 @item ebu, 470bg
6941 @item smpte
6942 @item 240m
6943 @item apple
6944 @item widergb
6945 @item cie1931
6946 @item rec709, hdtv
6947 @item uhdtv, rec2020
6948 @item dcip3
6949 @end table
6950
6951 @item cie
6952 Set CIE system.
6953
6954 @table @samp
6955 @item xyy
6956 @item ucs
6957 @item luv
6958 @end table
6959
6960 @item gamuts
6961 Set what gamuts to draw.
6962
6963 See @code{system} option for available values.
6964
6965 @item size, s
6966 Set ciescope size, by default set to 512.
6967
6968 @item intensity, i
6969 Set intensity used to map input pixel values to CIE diagram.
6970
6971 @item contrast
6972 Set contrast used to draw tongue colors that are out of active color system gamut.
6973
6974 @item corrgamma
6975 Correct gamma displayed on scope, by default enabled.
6976
6977 @item showwhite
6978 Show white point on CIE diagram, by default disabled.
6979
6980 @item gamma
6981 Set input gamma. Used only with XYZ input color space.
6982 @end table
6983
6984 @section codecview
6985
6986 Visualize information exported by some codecs.
6987
6988 Some codecs can export information through frames using side-data or other
6989 means. For example, some MPEG based codecs export motion vectors through the
6990 @var{export_mvs} flag in the codec @option{flags2} option.
6991
6992 The filter accepts the following option:
6993
6994 @table @option
6995 @item mv
6996 Set motion vectors to visualize.
6997
6998 Available flags for @var{mv} are:
6999
7000 @table @samp
7001 @item pf
7002 forward predicted MVs of P-frames
7003 @item bf
7004 forward predicted MVs of B-frames
7005 @item bb
7006 backward predicted MVs of B-frames
7007 @end table
7008
7009 @item qp
7010 Display quantization parameters using the chroma planes.
7011
7012 @item mv_type, mvt
7013 Set motion vectors type to visualize. Includes MVs from all frames unless specified by @var{frame_type} option.
7014
7015 Available flags for @var{mv_type} are:
7016
7017 @table @samp
7018 @item fp
7019 forward predicted MVs
7020 @item bp
7021 backward predicted MVs
7022 @end table
7023
7024 @item frame_type, ft
7025 Set frame type to visualize motion vectors of.
7026
7027 Available flags for @var{frame_type} are:
7028
7029 @table @samp
7030 @item if
7031 intra-coded frames (I-frames)
7032 @item pf
7033 predicted frames (P-frames)
7034 @item bf
7035 bi-directionally predicted frames (B-frames)
7036 @end table
7037 @end table
7038
7039 @subsection Examples
7040
7041 @itemize
7042 @item
7043 Visualize forward predicted MVs of all frames using @command{ffplay}:
7044 @example
7045 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp
7046 @end example
7047
7048 @item
7049 Visualize multi-directionals MVs of P and B-Frames using @command{ffplay}:
7050 @example
7051 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
7052 @end example
7053 @end itemize
7054
7055 @section colorbalance
7056 Modify intensity of primary colors (red, green and blue) of input frames.
7057
7058 The filter allows an input frame to be adjusted in the shadows, midtones or highlights
7059 regions for the red-cyan, green-magenta or blue-yellow balance.
7060
7061 A positive adjustment value shifts the balance towards the primary color, a negative
7062 value towards the complementary color.
7063
7064 The filter accepts the following options:
7065
7066 @table @option
7067 @item rs
7068 @item gs
7069 @item bs
7070 Adjust red, green and blue shadows (darkest pixels).
7071
7072 @item rm
7073 @item gm
7074 @item bm
7075 Adjust red, green and blue midtones (medium pixels).
7076
7077 @item rh
7078 @item gh
7079 @item bh
7080 Adjust red, green and blue highlights (brightest pixels).
7081
7082 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
7083
7084 @item pl
7085 Preserve lightness when changing color balance. Default is disabled.
7086 @end table
7087
7088 @subsection Examples
7089
7090 @itemize
7091 @item
7092 Add red color cast to shadows:
7093 @example
7094 colorbalance=rs=.3
7095 @end example
7096 @end itemize
7097
7098 @subsection Commands
7099
7100 This filter supports the all above options as @ref{commands}.
7101
7102 @section colorchannelmixer
7103
7104 Adjust video input frames by re-mixing color channels.
7105
7106 This filter modifies a color channel by adding the values associated to
7107 the other channels of the same pixels. For example if the value to
7108 modify is red, the output value will be:
7109 @example
7110 @var{red}=@var{red}*@var{rr} + @var{blue}*@var{rb} + @var{green}*@var{rg} + @var{alpha}*@var{ra}
7111 @end example
7112
7113 The filter accepts the following options:
7114
7115 @table @option
7116 @item rr
7117 @item rg
7118 @item rb
7119 @item ra
7120 Adjust contribution of input red, green, blue and alpha channels for output red channel.
7121 Default is @code{1} for @var{rr}, and @code{0} for @var{rg}, @var{rb} and @var{ra}.
7122
7123 @item gr
7124 @item gg
7125 @item gb
7126 @item ga
7127 Adjust contribution of input red, green, blue and alpha channels for output green channel.
7128 Default is @code{1} for @var{gg}, and @code{0} for @var{gr}, @var{gb} and @var{ga}.
7129
7130 @item br
7131 @item bg
7132 @item bb
7133 @item ba
7134 Adjust contribution of input red, green, blue and alpha channels for output blue channel.
7135 Default is @code{1} for @var{bb}, and @code{0} for @var{br}, @var{bg} and @var{ba}.
7136
7137 @item ar
7138 @item ag
7139 @item ab
7140 @item aa
7141 Adjust contribution of input red, green, blue and alpha channels for output alpha channel.
7142 Default is @code{1} for @var{aa}, and @code{0} for @var{ar}, @var{ag} and @var{ab}.
7143
7144 Allowed ranges for options are @code{[-2.0, 2.0]}.
7145 @end table
7146
7147 @subsection Examples
7148
7149 @itemize
7150 @item
7151 Convert source to grayscale:
7152 @example
7153 colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
7154 @end example
7155 @item
7156 Simulate sepia tones:
7157 @example
7158 colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
7159 @end example
7160 @end itemize
7161
7162 @subsection Commands
7163
7164 This filter supports the all above options as @ref{commands}.
7165
7166 @section colorkey
7167 RGB colorspace color keying.
7168
7169 The filter accepts the following options:
7170
7171 @table @option
7172 @item color
7173 The color which will be replaced with transparency.
7174
7175 @item similarity
7176 Similarity percentage with the key color.
7177
7178 0.01 matches only the exact key color, while 1.0 matches everything.
7179
7180 @item blend
7181 Blend percentage.
7182
7183 0.0 makes pixels either fully transparent, or not transparent at all.
7184
7185 Higher values result in semi-transparent pixels, with a higher transparency
7186 the more similar the pixels color is to the key color.
7187 @end table
7188
7189 @subsection Examples
7190
7191 @itemize
7192 @item
7193 Make every green pixel in the input image transparent:
7194 @example
7195 ffmpeg -i input.png -vf colorkey=green out.png
7196 @end example
7197
7198 @item
7199 Overlay a greenscreen-video on top of a static background image.
7200 @example
7201 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
7202 @end example
7203 @end itemize
7204
7205 @section colorhold
7206 Remove all color information for all RGB colors except for certain one.
7207
7208 The filter accepts the following options:
7209
7210 @table @option
7211 @item color
7212 The color which will not be replaced with neutral gray.
7213
7214 @item similarity
7215 Similarity percentage with the above color.
7216 0.01 matches only the exact key color, while 1.0 matches everything.
7217
7218 @item blend
7219 Blend percentage. 0.0 makes pixels fully gray.
7220 Higher values result in more preserved color.
7221 @end table
7222
7223 @section colorlevels
7224
7225 Adjust video input frames using levels.
7226
7227 The filter accepts the following options:
7228
7229 @table @option
7230 @item rimin
7231 @item gimin
7232 @item bimin
7233 @item aimin
7234 Adjust red, green, blue and alpha input black point.
7235 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
7236
7237 @item rimax
7238 @item gimax
7239 @item bimax
7240 @item aimax
7241 Adjust red, green, blue and alpha input white point.
7242 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{1}.
7243
7244 Input levels are used to lighten highlights (bright tones), darken shadows
7245 (dark tones), change the balance of bright and dark tones.
7246
7247 @item romin
7248 @item gomin
7249 @item bomin
7250 @item aomin
7251 Adjust red, green, blue and alpha output black point.
7252 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{0}.
7253
7254 @item romax
7255 @item gomax
7256 @item bomax
7257 @item aomax
7258 Adjust red, green, blue and alpha output white point.
7259 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{1}.
7260
7261 Output levels allows manual selection of a constrained output level range.
7262 @end table
7263
7264 @subsection Examples
7265
7266 @itemize
7267 @item
7268 Make video output darker:
7269 @example
7270 colorlevels=rimin=0.058:gimin=0.058:bimin=0.058
7271 @end example
7272
7273 @item
7274 Increase contrast:
7275 @example
7276 colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96
7277 @end example
7278
7279 @item
7280 Make video output lighter:
7281 @example
7282 colorlevels=rimax=0.902:gimax=0.902:bimax=0.902
7283 @end example
7284
7285 @item
7286 Increase brightness:
7287 @example
7288 colorlevels=romin=0.5:gomin=0.5:bomin=0.5
7289 @end example
7290 @end itemize
7291
7292 @section colormatrix
7293
7294 Convert color matrix.
7295
7296 The filter accepts the following options:
7297
7298 @table @option
7299 @item src
7300 @item dst
7301 Specify the source and destination color matrix. Both values must be
7302 specified.
7303
7304 The accepted values are:
7305 @table @samp
7306 @item bt709
7307 BT.709
7308
7309 @item fcc
7310 FCC
7311
7312 @item bt601
7313 BT.601
7314
7315 @item bt470
7316 BT.470
7317
7318 @item bt470bg
7319 BT.470BG
7320
7321 @item smpte170m
7322 SMPTE-170M
7323
7324 @item smpte240m
7325 SMPTE-240M
7326
7327 @item bt2020
7328 BT.2020
7329 @end table
7330 @end table
7331
7332 For example to convert from BT.601 to SMPTE-240M, use the command:
7333 @example
7334 colormatrix=bt601:smpte240m
7335 @end example
7336
7337 @section colorspace
7338
7339 Convert colorspace, transfer characteristics or color primaries.
7340 Input video needs to have an even size.
7341
7342 The filter accepts the following options:
7343
7344 @table @option
7345 @anchor{all}
7346 @item all
7347 Specify all color properties at once.
7348
7349 The accepted values are:
7350 @table @samp
7351 @item bt470m
7352 BT.470M
7353
7354 @item bt470bg
7355 BT.470BG
7356
7357 @item bt601-6-525
7358 BT.601-6 525
7359
7360 @item bt601-6-625
7361 BT.601-6 625
7362
7363 @item bt709
7364 BT.709
7365
7366 @item smpte170m
7367 SMPTE-170M
7368
7369 @item smpte240m
7370 SMPTE-240M
7371
7372 @item bt2020
7373 BT.2020
7374
7375 @end table
7376
7377 @anchor{space}
7378 @item space
7379 Specify output colorspace.
7380
7381 The accepted values are:
7382 @table @samp
7383 @item bt709
7384 BT.709
7385
7386 @item fcc
7387 FCC
7388
7389 @item bt470bg
7390 BT.470BG or BT.601-6 625
7391
7392 @item smpte170m
7393 SMPTE-170M or BT.601-6 525
7394
7395 @item smpte240m
7396 SMPTE-240M
7397
7398 @item ycgco
7399 YCgCo
7400
7401 @item bt2020ncl
7402 BT.2020 with non-constant luminance
7403
7404 @end table
7405
7406 @anchor{trc}
7407 @item trc
7408 Specify output transfer characteristics.
7409
7410 The accepted values are:
7411 @table @samp
7412 @item bt709
7413 BT.709
7414
7415 @item bt470m
7416 BT.470M
7417
7418 @item bt470bg
7419 BT.470BG
7420
7421 @item gamma22
7422 Constant gamma of 2.2
7423
7424 @item gamma28
7425 Constant gamma of 2.8
7426
7427 @item smpte170m
7428 SMPTE-170M, BT.601-6 625 or BT.601-6 525
7429
7430 @item smpte240m
7431 SMPTE-240M
7432
7433 @item srgb
7434 SRGB
7435
7436 @item iec61966-2-1
7437 iec61966-2-1
7438
7439 @item iec61966-2-4
7440 iec61966-2-4
7441
7442 @item xvycc
7443 xvycc
7444
7445 @item bt2020-10
7446 BT.2020 for 10-bits content
7447
7448 @item bt2020-12
7449 BT.2020 for 12-bits content
7450
7451 @end table
7452
7453 @anchor{primaries}
7454 @item primaries
7455 Specify output color primaries.
7456
7457 The accepted values are:
7458 @table @samp
7459 @item bt709
7460 BT.709
7461
7462 @item bt470m
7463 BT.470M
7464
7465 @item bt470bg
7466 BT.470BG or BT.601-6 625
7467
7468 @item smpte170m
7469 SMPTE-170M or BT.601-6 525
7470
7471 @item smpte240m
7472 SMPTE-240M
7473
7474 @item film
7475 film
7476
7477 @item smpte431
7478 SMPTE-431
7479
7480 @item smpte432
7481 SMPTE-432
7482
7483 @item bt2020
7484 BT.2020
7485
7486 @item jedec-p22
7487 JEDEC P22 phosphors
7488
7489 @end table
7490
7491 @anchor{range}
7492 @item range
7493 Specify output color range.
7494
7495 The accepted values are:
7496 @table @samp
7497 @item tv
7498 TV (restricted) range
7499
7500 @item mpeg
7501 MPEG (restricted) range
7502
7503 @item pc
7504 PC (full) range
7505
7506 @item jpeg
7507 JPEG (full) range
7508
7509 @end table
7510
7511 @item format
7512 Specify output color format.
7513
7514 The accepted values are:
7515 @table @samp
7516 @item yuv420p
7517 YUV 4:2:0 planar 8-bits
7518
7519 @item yuv420p10
7520 YUV 4:2:0 planar 10-bits
7521
7522 @item yuv420p12
7523 YUV 4:2:0 planar 12-bits
7524
7525 @item yuv422p
7526 YUV 4:2:2 planar 8-bits
7527
7528 @item yuv422p10
7529 YUV 4:2:2 planar 10-bits
7530
7531 @item yuv422p12
7532 YUV 4:2:2 planar 12-bits
7533
7534 @item yuv444p
7535 YUV 4:4:4 planar 8-bits
7536
7537 @item yuv444p10
7538 YUV 4:4:4 planar 10-bits
7539
7540 @item yuv444p12
7541 YUV 4:4:4 planar 12-bits
7542
7543 @end table
7544
7545 @item fast
7546 Do a fast conversion, which skips gamma/primary correction. This will take
7547 significantly less CPU, but will be mathematically incorrect. To get output
7548 compatible with that produced by the colormatrix filter, use fast=1.
7549
7550 @item dither
7551 Specify dithering mode.
7552
7553 The accepted values are:
7554 @table @samp
7555 @item none
7556 No dithering
7557
7558 @item fsb
7559 Floyd-Steinberg dithering
7560 @end table
7561
7562 @item wpadapt
7563 Whitepoint adaptation mode.
7564
7565 The accepted values are:
7566 @table @samp
7567 @item bradford
7568 Bradford whitepoint adaptation
7569
7570 @item vonkries
7571 von Kries whitepoint adaptation
7572
7573 @item identity
7574 identity whitepoint adaptation (i.e. no whitepoint adaptation)
7575 @end table
7576
7577 @item iall
7578 Override all input properties at once. Same accepted values as @ref{all}.
7579
7580 @item ispace
7581 Override input colorspace. Same accepted values as @ref{space}.
7582
7583 @item iprimaries
7584 Override input color primaries. Same accepted values as @ref{primaries}.
7585
7586 @item itrc
7587 Override input transfer characteristics. Same accepted values as @ref{trc}.
7588
7589 @item irange
7590 Override input color range. Same accepted values as @ref{range}.
7591
7592 @end table
7593
7594 The filter converts the transfer characteristics, color space and color
7595 primaries to the specified user values. The output value, if not specified,
7596 is set to a default value based on the "all" property. If that property is
7597 also not specified, the filter will log an error. The output color range and
7598 format default to the same value as the input color range and format. The
7599 input transfer characteristics, color space, color primaries and color range
7600 should be set on the input data. If any of these are missing, the filter will
7601 log an error and no conversion will take place.
7602
7603 For example to convert the input to SMPTE-240M, use the command:
7604 @example
7605 colorspace=smpte240m
7606 @end example
7607
7608 @section convolution
7609
7610 Apply convolution of 3x3, 5x5, 7x7 or horizontal/vertical up to 49 elements.
7611
7612 The filter accepts the following options:
7613
7614 @table @option
7615 @item 0m
7616 @item 1m
7617 @item 2m
7618 @item 3m
7619 Set matrix for each plane.
7620 Matrix is sequence of 9, 25 or 49 signed integers in @var{square} mode,
7621 and from 1 to 49 odd number of signed integers in @var{row} mode.
7622
7623 @item 0rdiv
7624 @item 1rdiv
7625 @item 2rdiv
7626 @item 3rdiv
7627 Set multiplier for calculated value for each plane.
7628 If unset or 0, it will be sum of all matrix elements.
7629
7630 @item 0bias
7631 @item 1bias
7632 @item 2bias
7633 @item 3bias
7634 Set bias for each plane. This value is added to the result of the multiplication.
7635 Useful for making the overall image brighter or darker. Default is 0.0.
7636
7637 @item 0mode
7638 @item 1mode
7639 @item 2mode
7640 @item 3mode
7641 Set matrix mode for each plane. Can be @var{square}, @var{row} or @var{column}.
7642 Default is @var{square}.
7643 @end table
7644
7645 @subsection Examples
7646
7647 @itemize
7648 @item
7649 Apply sharpen:
7650 @example
7651 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"
7652 @end example
7653
7654 @item
7655 Apply blur:
7656 @example
7657 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"
7658 @end example
7659
7660 @item
7661 Apply edge enhance:
7662 @example
7663 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"
7664 @end example
7665
7666 @item
7667 Apply edge detect:
7668 @example
7669 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"
7670 @end example
7671
7672 @item
7673 Apply laplacian edge detector which includes diagonals:
7674 @example
7675 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"
7676 @end example
7677
7678 @item
7679 Apply emboss:
7680 @example
7681 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"
7682 @end example
7683 @end itemize
7684
7685 @section convolve
7686
7687 Apply 2D convolution of video stream in frequency domain using second stream
7688 as impulse.
7689
7690 The filter accepts the following options:
7691
7692 @table @option
7693 @item planes
7694 Set which planes to process.
7695
7696 @item impulse
7697 Set which impulse video frames will be processed, can be @var{first}
7698 or @var{all}. Default is @var{all}.
7699 @end table
7700
7701 The @code{convolve} filter also supports the @ref{framesync} options.
7702
7703 @section copy
7704
7705 Copy the input video source unchanged to the output. This is mainly useful for
7706 testing purposes.
7707
7708 @anchor{coreimage}
7709 @section coreimage
7710 Video filtering on GPU using Apple's CoreImage API on OSX.
7711
7712 Hardware acceleration is based on an OpenGL context. Usually, this means it is
7713 processed by video hardware. However, software-based OpenGL implementations
7714 exist which means there is no guarantee for hardware processing. It depends on
7715 the respective OSX.
7716
7717 There are many filters and image generators provided by Apple that come with a
7718 large variety of options. The filter has to be referenced by its name along
7719 with its options.
7720
7721 The coreimage filter accepts the following options:
7722 @table @option
7723 @item list_filters
7724 List all available filters and generators along with all their respective
7725 options as well as possible minimum and maximum values along with the default
7726 values.
7727 @example
7728 list_filters=true
7729 @end example
7730
7731 @item filter
7732 Specify all filters by their respective name and options.
7733 Use @var{list_filters} to determine all valid filter names and options.
7734 Numerical options are specified by a float value and are automatically clamped
7735 to their respective value range.  Vector and color options have to be specified
7736 by a list of space separated float values. Character escaping has to be done.
7737 A special option name @code{default} is available to use default options for a
7738 filter.
7739
7740 It is required to specify either @code{default} or at least one of the filter options.
7741 All omitted options are used with their default values.
7742 The syntax of the filter string is as follows:
7743 @example
7744 filter=<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...][#<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...]][#...]
7745 @end example
7746
7747 @item output_rect
7748 Specify a rectangle where the output of the filter chain is copied into the
7749 input image. It is given by a list of space separated float values:
7750 @example
7751 output_rect=x\ y\ width\ height
7752 @end example
7753 If not given, the output rectangle equals the dimensions of the input image.
7754 The output rectangle is automatically cropped at the borders of the input
7755 image. Negative values are valid for each component.
7756 @example
7757 output_rect=25\ 25\ 100\ 100
7758 @end example
7759 @end table
7760
7761 Several filters can be chained for successive processing without GPU-HOST
7762 transfers allowing for fast processing of complex filter chains.
7763 Currently, only filters with zero (generators) or exactly one (filters) input
7764 image and one output image are supported. Also, transition filters are not yet
7765 usable as intended.
7766
7767 Some filters generate output images with additional padding depending on the
7768 respective filter kernel. The padding is automatically removed to ensure the
7769 filter output has the same size as the input image.
7770
7771 For image generators, the size of the output image is determined by the
7772 previous output image of the filter chain or the input image of the whole
7773 filterchain, respectively. The generators do not use the pixel information of
7774 this image to generate their output. However, the generated output is
7775 blended onto this image, resulting in partial or complete coverage of the
7776 output image.
7777
7778 The @ref{coreimagesrc} video source can be used for generating input images
7779 which are directly fed into the filter chain. By using it, providing input
7780 images by another video source or an input video is not required.
7781
7782 @subsection Examples
7783
7784 @itemize
7785
7786 @item
7787 List all filters available:
7788 @example
7789 coreimage=list_filters=true
7790 @end example
7791
7792 @item
7793 Use the CIBoxBlur filter with default options to blur an image:
7794 @example
7795 coreimage=filter=CIBoxBlur@@default
7796 @end example
7797
7798 @item
7799 Use a filter chain with CISepiaTone at default values and CIVignetteEffect with
7800 its center at 100x100 and a radius of 50 pixels:
7801 @example
7802 coreimage=filter=CIBoxBlur@@default#CIVignetteEffect@@inputCenter=100\ 100@@inputRadius=50
7803 @end example
7804
7805 @item
7806 Use nullsrc and CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
7807 given as complete and escaped command-line for Apple's standard bash shell:
7808 @example
7809 ffmpeg -f lavfi -i nullsrc=s=100x100,coreimage=filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
7810 @end example
7811 @end itemize
7812
7813 @section cover_rect
7814
7815 Cover a rectangular object
7816
7817 It accepts the following options:
7818
7819 @table @option
7820 @item cover
7821 Filepath of the optional cover image, needs to be in yuv420.
7822
7823 @item mode
7824 Set covering mode.
7825
7826 It accepts the following values:
7827 @table @samp
7828 @item cover
7829 cover it by the supplied image
7830 @item blur
7831 cover it by interpolating the surrounding pixels
7832 @end table
7833
7834 Default value is @var{blur}.
7835 @end table
7836
7837 @subsection Examples
7838
7839 @itemize
7840 @item
7841 Cover a rectangular object by the supplied image of a given video using @command{ffmpeg}:
7842 @example
7843 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
7844 @end example
7845 @end itemize
7846
7847 @section crop
7848
7849 Crop the input video to given dimensions.
7850
7851 It accepts the following parameters:
7852
7853 @table @option
7854 @item w, out_w
7855 The width of the output video. It defaults to @code{iw}.
7856 This expression is evaluated only once during the filter
7857 configuration, or when the @samp{w} or @samp{out_w} command is sent.
7858
7859 @item h, out_h
7860 The height of the output video. It defaults to @code{ih}.
7861 This expression is evaluated only once during the filter
7862 configuration, or when the @samp{h} or @samp{out_h} command is sent.
7863
7864 @item x
7865 The horizontal position, in the input video, of the left edge of the output
7866 video. It defaults to @code{(in_w-out_w)/2}.
7867 This expression is evaluated per-frame.
7868
7869 @item y
7870 The vertical position, in the input video, of the top edge of the output video.
7871 It defaults to @code{(in_h-out_h)/2}.
7872 This expression is evaluated per-frame.
7873
7874 @item keep_aspect
7875 If set to 1 will force the output display aspect ratio
7876 to be the same of the input, by changing the output sample aspect
7877 ratio. It defaults to 0.
7878
7879 @item exact
7880 Enable exact cropping. If enabled, subsampled videos will be cropped at exact
7881 width/height/x/y as specified and will not be rounded to nearest smaller value.
7882 It defaults to 0.
7883 @end table
7884
7885 The @var{out_w}, @var{out_h}, @var{x}, @var{y} parameters are
7886 expressions containing the following constants:
7887
7888 @table @option
7889 @item x
7890 @item y
7891 The computed values for @var{x} and @var{y}. They are evaluated for
7892 each new frame.
7893
7894 @item in_w
7895 @item in_h
7896 The input width and height.
7897
7898 @item iw
7899 @item ih
7900 These are the same as @var{in_w} and @var{in_h}.
7901
7902 @item out_w
7903 @item out_h
7904 The output (cropped) width and height.
7905
7906 @item ow
7907 @item oh
7908 These are the same as @var{out_w} and @var{out_h}.
7909
7910 @item a
7911 same as @var{iw} / @var{ih}
7912
7913 @item sar
7914 input sample aspect ratio
7915
7916 @item dar
7917 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
7918
7919 @item hsub
7920 @item vsub
7921 horizontal and vertical chroma subsample values. For example for the
7922 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
7923
7924 @item n
7925 The number of the input frame, starting from 0.
7926
7927 @item pos
7928 the position in the file of the input frame, NAN if unknown
7929
7930 @item t
7931 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
7932
7933 @end table
7934
7935 The expression for @var{out_w} may depend on the value of @var{out_h},
7936 and the expression for @var{out_h} may depend on @var{out_w}, but they
7937 cannot depend on @var{x} and @var{y}, as @var{x} and @var{y} are
7938 evaluated after @var{out_w} and @var{out_h}.
7939
7940 The @var{x} and @var{y} parameters specify the expressions for the
7941 position of the top-left corner of the output (non-cropped) area. They
7942 are evaluated for each frame. If the evaluated value is not valid, it
7943 is approximated to the nearest valid value.
7944
7945 The expression for @var{x} may depend on @var{y}, and the expression
7946 for @var{y} may depend on @var{x}.
7947
7948 @subsection Examples
7949
7950 @itemize
7951 @item
7952 Crop area with size 100x100 at position (12,34).
7953 @example
7954 crop=100:100:12:34
7955 @end example
7956
7957 Using named options, the example above becomes:
7958 @example
7959 crop=w=100:h=100:x=12:y=34
7960 @end example
7961
7962 @item
7963 Crop the central input area with size 100x100:
7964 @example
7965 crop=100:100
7966 @end example
7967
7968 @item
7969 Crop the central input area with size 2/3 of the input video:
7970 @example
7971 crop=2/3*in_w:2/3*in_h
7972 @end example
7973
7974 @item
7975 Crop the input video central square:
7976 @example
7977 crop=out_w=in_h
7978 crop=in_h
7979 @end example
7980
7981 @item
7982 Delimit the rectangle with the top-left corner placed at position
7983 100:100 and the right-bottom corner corresponding to the right-bottom
7984 corner of the input image.
7985 @example
7986 crop=in_w-100:in_h-100:100:100
7987 @end example
7988
7989 @item
7990 Crop 10 pixels from the left and right borders, and 20 pixels from
7991 the top and bottom borders
7992 @example
7993 crop=in_w-2*10:in_h-2*20
7994 @end example
7995
7996 @item
7997 Keep only the bottom right quarter of the input image:
7998 @example
7999 crop=in_w/2:in_h/2:in_w/2:in_h/2
8000 @end example
8001
8002 @item
8003 Crop height for getting Greek harmony:
8004 @example
8005 crop=in_w:1/PHI*in_w
8006 @end example
8007
8008 @item
8009 Apply trembling effect:
8010 @example
8011 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)
8012 @end example
8013
8014 @item
8015 Apply erratic camera effect depending on timestamp:
8016 @example
8017 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)"
8018 @end example
8019
8020 @item
8021 Set x depending on the value of y:
8022 @example
8023 crop=in_w/2:in_h/2:y:10+10*sin(n/10)
8024 @end example
8025 @end itemize
8026
8027 @subsection Commands
8028
8029 This filter supports the following commands:
8030 @table @option
8031 @item w, out_w
8032 @item h, out_h
8033 @item x
8034 @item y
8035 Set width/height of the output video and the horizontal/vertical position
8036 in the input video.
8037 The command accepts the same syntax of the corresponding option.
8038
8039 If the specified expression is not valid, it is kept at its current
8040 value.
8041 @end table
8042
8043 @section cropdetect
8044
8045 Auto-detect the crop size.
8046
8047 It calculates the necessary cropping parameters and prints the
8048 recommended parameters via the logging system. The detected dimensions
8049 correspond to the non-black area of the input video.
8050
8051 It accepts the following parameters:
8052
8053 @table @option
8054
8055 @item limit
8056 Set higher black value threshold, which can be optionally specified
8057 from nothing (0) to everything (255 for 8-bit based formats). An intensity
8058 value greater to the set value is considered non-black. It defaults to 24.
8059 You can also specify a value between 0.0 and 1.0 which will be scaled depending
8060 on the bitdepth of the pixel format.
8061
8062 @item round
8063 The value which the width/height should be divisible by. It defaults to
8064 16. The offset is automatically adjusted to center the video. Use 2 to
8065 get only even dimensions (needed for 4:2:2 video). 16 is best when
8066 encoding to most video codecs.
8067
8068 @item reset_count, reset
8069 Set the counter that determines after how many frames cropdetect will
8070 reset the previously detected largest video area and start over to
8071 detect the current optimal crop area. Default value is 0.
8072
8073 This can be useful when channel logos distort the video area. 0
8074 indicates 'never reset', and returns the largest area encountered during
8075 playback.
8076 @end table
8077
8078 @anchor{cue}
8079 @section cue
8080
8081 Delay video filtering until a given wallclock timestamp. The filter first
8082 passes on @option{preroll} amount of frames, then it buffers at most
8083 @option{buffer} amount of frames and waits for the cue. After reaching the cue
8084 it forwards the buffered frames and also any subsequent frames coming in its
8085 input.
8086
8087 The filter can be used synchronize the output of multiple ffmpeg processes for
8088 realtime output devices like decklink. By putting the delay in the filtering
8089 chain and pre-buffering frames the process can pass on data to output almost
8090 immediately after the target wallclock timestamp is reached.
8091
8092 Perfect frame accuracy cannot be guaranteed, but the result is good enough for
8093 some use cases.
8094
8095 @table @option
8096
8097 @item cue
8098 The cue timestamp expressed in a UNIX timestamp in microseconds. Default is 0.
8099
8100 @item preroll
8101 The duration of content to pass on as preroll expressed in seconds. Default is 0.
8102
8103 @item buffer
8104 The maximum duration of content to buffer before waiting for the cue expressed
8105 in seconds. Default is 0.
8106
8107 @end table
8108
8109 @anchor{curves}
8110 @section curves
8111
8112 Apply color adjustments using curves.
8113
8114 This filter is similar to the Adobe Photoshop and GIMP curves tools. Each
8115 component (red, green and blue) has its values defined by @var{N} key points
8116 tied from each other using a smooth curve. The x-axis represents the pixel
8117 values from the input frame, and the y-axis the new pixel values to be set for
8118 the output frame.
8119
8120 By default, a component curve is defined by the two points @var{(0;0)} and
8121 @var{(1;1)}. This creates a straight line where each original pixel value is
8122 "adjusted" to its own value, which means no change to the image.
8123
8124 The filter allows you to redefine these two points and add some more. A new
8125 curve (using a natural cubic spline interpolation) will be define to pass
8126 smoothly through all these new coordinates. The new defined points needs to be
8127 strictly increasing over the x-axis, and their @var{x} and @var{y} values must
8128 be in the @var{[0;1]} interval.  If the computed curves happened to go outside
8129 the vector spaces, the values will be clipped accordingly.
8130
8131 The filter accepts the following options:
8132
8133 @table @option
8134 @item preset
8135 Select one of the available color presets. This option can be used in addition
8136 to the @option{r}, @option{g}, @option{b} parameters; in this case, the later
8137 options takes priority on the preset values.
8138 Available presets are:
8139 @table @samp
8140 @item none
8141 @item color_negative
8142 @item cross_process
8143 @item darker
8144 @item increase_contrast
8145 @item lighter
8146 @item linear_contrast
8147 @item medium_contrast
8148 @item negative
8149 @item strong_contrast
8150 @item vintage
8151 @end table
8152 Default is @code{none}.
8153 @item master, m
8154 Set the master key points. These points will define a second pass mapping. It
8155 is sometimes called a "luminance" or "value" mapping. It can be used with
8156 @option{r}, @option{g}, @option{b} or @option{all} since it acts like a
8157 post-processing LUT.
8158 @item red, r
8159 Set the key points for the red component.
8160 @item green, g
8161 Set the key points for the green component.
8162 @item blue, b
8163 Set the key points for the blue component.
8164 @item all
8165 Set the key points for all components (not including master).
8166 Can be used in addition to the other key points component
8167 options. In this case, the unset component(s) will fallback on this
8168 @option{all} setting.
8169 @item psfile
8170 Specify a Photoshop curves file (@code{.acv}) to import the settings from.
8171 @item plot
8172 Save Gnuplot script of the curves in specified file.
8173 @end table
8174
8175 To avoid some filtergraph syntax conflicts, each key points list need to be
8176 defined using the following syntax: @code{x0/y0 x1/y1 x2/y2 ...}.
8177
8178 @subsection Examples
8179
8180 @itemize
8181 @item
8182 Increase slightly the middle level of blue:
8183 @example
8184 curves=blue='0/0 0.5/0.58 1/1'
8185 @end example
8186
8187 @item
8188 Vintage effect:
8189 @example
8190 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'
8191 @end example
8192 Here we obtain the following coordinates for each components:
8193 @table @var
8194 @item red
8195 @code{(0;0.11) (0.42;0.51) (1;0.95)}
8196 @item green
8197 @code{(0;0) (0.50;0.48) (1;1)}
8198 @item blue
8199 @code{(0;0.22) (0.49;0.44) (1;0.80)}
8200 @end table
8201
8202 @item
8203 The previous example can also be achieved with the associated built-in preset:
8204 @example
8205 curves=preset=vintage
8206 @end example
8207
8208 @item
8209 Or simply:
8210 @example
8211 curves=vintage
8212 @end example
8213
8214 @item
8215 Use a Photoshop preset and redefine the points of the green component:
8216 @example
8217 curves=psfile='MyCurvesPresets/purple.acv':green='0/0 0.45/0.53 1/1'
8218 @end example
8219
8220 @item
8221 Check out the curves of the @code{cross_process} profile using @command{ffmpeg}
8222 and @command{gnuplot}:
8223 @example
8224 ffmpeg -f lavfi -i color -vf curves=cross_process:plot=/tmp/curves.plt -frames:v 1 -f null -
8225 gnuplot -p /tmp/curves.plt
8226 @end example
8227 @end itemize
8228
8229 @section datascope
8230
8231 Video data analysis filter.
8232
8233 This filter shows hexadecimal pixel values of part of video.
8234
8235 The filter accepts the following options:
8236
8237 @table @option
8238 @item size, s
8239 Set output video size.
8240
8241 @item x
8242 Set x offset from where to pick pixels.
8243
8244 @item y
8245 Set y offset from where to pick pixels.
8246
8247 @item mode
8248 Set scope mode, can be one of the following:
8249 @table @samp
8250 @item mono
8251 Draw hexadecimal pixel values with white color on black background.
8252
8253 @item color
8254 Draw hexadecimal pixel values with input video pixel color on black
8255 background.
8256
8257 @item color2
8258 Draw hexadecimal pixel values on color background picked from input video,
8259 the text color is picked in such way so its always visible.
8260 @end table
8261
8262 @item axis
8263 Draw rows and columns numbers on left and top of video.
8264
8265 @item opacity
8266 Set background opacity.
8267 @end table
8268
8269 @section dctdnoiz
8270
8271 Denoise frames using 2D DCT (frequency domain filtering).
8272
8273 This filter is not designed for real time.
8274
8275 The filter accepts the following options:
8276
8277 @table @option
8278 @item sigma, s
8279 Set the noise sigma constant.
8280
8281 This @var{sigma} defines a hard threshold of @code{3 * sigma}; every DCT
8282 coefficient (absolute value) below this threshold with be dropped.
8283
8284 If you need a more advanced filtering, see @option{expr}.
8285
8286 Default is @code{0}.
8287
8288 @item overlap
8289 Set number overlapping pixels for each block. Since the filter can be slow, you
8290 may want to reduce this value, at the cost of a less effective filter and the
8291 risk of various artefacts.
8292
8293 If the overlapping value doesn't permit processing the whole input width or
8294 height, a warning will be displayed and according borders won't be denoised.
8295
8296 Default value is @var{blocksize}-1, which is the best possible setting.
8297
8298 @item expr, e
8299 Set the coefficient factor expression.
8300
8301 For each coefficient of a DCT block, this expression will be evaluated as a
8302 multiplier value for the coefficient.
8303
8304 If this is option is set, the @option{sigma} option will be ignored.
8305
8306 The absolute value of the coefficient can be accessed through the @var{c}
8307 variable.
8308
8309 @item n
8310 Set the @var{blocksize} using the number of bits. @code{1<<@var{n}} defines the
8311 @var{blocksize}, which is the width and height of the processed blocks.
8312
8313 The default value is @var{3} (8x8) and can be raised to @var{4} for a
8314 @var{blocksize} of 16x16. Note that changing this setting has huge consequences
8315 on the speed processing. Also, a larger block size does not necessarily means a
8316 better de-noising.
8317 @end table
8318
8319 @subsection Examples
8320
8321 Apply a denoise with a @option{sigma} of @code{4.5}:
8322 @example
8323 dctdnoiz=4.5
8324 @end example
8325
8326 The same operation can be achieved using the expression system:
8327 @example
8328 dctdnoiz=e='gte(c, 4.5*3)'
8329 @end example
8330
8331 Violent denoise using a block size of @code{16x16}:
8332 @example
8333 dctdnoiz=15:n=4
8334 @end example
8335
8336 @section deband
8337
8338 Remove banding artifacts from input video.
8339 It works by replacing banded pixels with average value of referenced pixels.
8340
8341 The filter accepts the following options:
8342
8343 @table @option
8344 @item 1thr
8345 @item 2thr
8346 @item 3thr
8347 @item 4thr
8348 Set banding detection threshold for each plane. Default is 0.02.
8349 Valid range is 0.00003 to 0.5.
8350 If difference between current pixel and reference pixel is less than threshold,
8351 it will be considered as banded.
8352
8353 @item range, r
8354 Banding detection range in pixels. Default is 16. If positive, random number
8355 in range 0 to set value will be used. If negative, exact absolute value
8356 will be used.
8357 The range defines square of four pixels around current pixel.
8358
8359 @item direction, d
8360 Set direction in radians from which four pixel will be compared. If positive,
8361 random direction from 0 to set direction will be picked. If negative, exact of
8362 absolute value will be picked. For example direction 0, -PI or -2*PI radians
8363 will pick only pixels on same row and -PI/2 will pick only pixels on same
8364 column.
8365
8366 @item blur, b
8367 If enabled, current pixel is compared with average value of all four
8368 surrounding pixels. The default is enabled. If disabled current pixel is
8369 compared with all four surrounding pixels. The pixel is considered banded
8370 if only all four differences with surrounding pixels are less than threshold.
8371
8372 @item coupling, c
8373 If enabled, current pixel is changed if and only if all pixel components are banded,
8374 e.g. banding detection threshold is triggered for all color components.
8375 The default is disabled.
8376 @end table
8377
8378 @section deblock
8379
8380 Remove blocking artifacts from input video.
8381
8382 The filter accepts the following options:
8383
8384 @table @option
8385 @item filter
8386 Set filter type, can be @var{weak} or @var{strong}. Default is @var{strong}.
8387 This controls what kind of deblocking is applied.
8388
8389 @item block
8390 Set size of block, allowed range is from 4 to 512. Default is @var{8}.
8391
8392 @item alpha
8393 @item beta
8394 @item gamma
8395 @item delta
8396 Set blocking detection thresholds. Allowed range is 0 to 1.
8397 Defaults are: @var{0.098} for @var{alpha} and @var{0.05} for the rest.
8398 Using higher threshold gives more deblocking strength.
8399 Setting @var{alpha} controls threshold detection at exact edge of block.
8400 Remaining options controls threshold detection near the edge. Each one for
8401 below/above or left/right. Setting any of those to @var{0} disables
8402 deblocking.
8403
8404 @item planes
8405 Set planes to filter. Default is to filter all available planes.
8406 @end table
8407
8408 @subsection Examples
8409
8410 @itemize
8411 @item
8412 Deblock using weak filter and block size of 4 pixels.
8413 @example
8414 deblock=filter=weak:block=4
8415 @end example
8416
8417 @item
8418 Deblock using strong filter, block size of 4 pixels and custom thresholds for
8419 deblocking more edges.
8420 @example
8421 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05
8422 @end example
8423
8424 @item
8425 Similar as above, but filter only first plane.
8426 @example
8427 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=1
8428 @end example
8429
8430 @item
8431 Similar as above, but filter only second and third plane.
8432 @example
8433 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=6
8434 @end example
8435 @end itemize
8436
8437 @anchor{decimate}
8438 @section decimate
8439
8440 Drop duplicated frames at regular intervals.
8441
8442 The filter accepts the following options:
8443
8444 @table @option
8445 @item cycle
8446 Set the number of frames from which one will be dropped. Setting this to
8447 @var{N} means one frame in every batch of @var{N} frames will be dropped.
8448 Default is @code{5}.
8449
8450 @item dupthresh
8451 Set the threshold for duplicate detection. If the difference metric for a frame
8452 is less than or equal to this value, then it is declared as duplicate. Default
8453 is @code{1.1}
8454
8455 @item scthresh
8456 Set scene change threshold. Default is @code{15}.
8457
8458 @item blockx
8459 @item blocky
8460 Set the size of the x and y-axis blocks used during metric calculations.
8461 Larger blocks give better noise suppression, but also give worse detection of
8462 small movements. Must be a power of two. Default is @code{32}.
8463
8464 @item ppsrc
8465 Mark main input as a pre-processed input and activate clean source input
8466 stream. This allows the input to be pre-processed with various filters to help
8467 the metrics calculation while keeping the frame selection lossless. When set to
8468 @code{1}, the first stream is for the pre-processed input, and the second
8469 stream is the clean source from where the kept frames are chosen. Default is
8470 @code{0}.
8471
8472 @item chroma
8473 Set whether or not chroma is considered in the metric calculations. Default is
8474 @code{1}.
8475 @end table
8476
8477 @section deconvolve
8478
8479 Apply 2D deconvolution of video stream in frequency domain using second stream
8480 as impulse.
8481
8482 The filter accepts the following options:
8483
8484 @table @option
8485 @item planes
8486 Set which planes to process.
8487
8488 @item impulse
8489 Set which impulse video frames will be processed, can be @var{first}
8490 or @var{all}. Default is @var{all}.
8491
8492 @item noise
8493 Set noise when doing divisions. Default is @var{0.0000001}. Useful when width
8494 and height are not same and not power of 2 or if stream prior to convolving
8495 had noise.
8496 @end table
8497
8498 The @code{deconvolve} filter also supports the @ref{framesync} options.
8499
8500 @section dedot
8501
8502 Reduce cross-luminance (dot-crawl) and cross-color (rainbows) from video.
8503
8504 It accepts the following options:
8505
8506 @table @option
8507 @item m
8508 Set mode of operation. Can be combination of @var{dotcrawl} for cross-luminance reduction and/or
8509 @var{rainbows} for cross-color reduction.
8510
8511 @item lt
8512 Set spatial luma threshold. Lower values increases reduction of cross-luminance.
8513
8514 @item tl
8515 Set tolerance for temporal luma. Higher values increases reduction of cross-luminance.
8516
8517 @item tc
8518 Set tolerance for chroma temporal variation. Higher values increases reduction of cross-color.
8519
8520 @item ct
8521 Set temporal chroma threshold. Lower values increases reduction of cross-color.
8522 @end table
8523
8524 @section deflate
8525
8526 Apply deflate effect to the video.
8527
8528 This filter replaces the pixel by the local(3x3) average by taking into account
8529 only values lower than the pixel.
8530
8531 It accepts the following options:
8532
8533 @table @option
8534 @item threshold0
8535 @item threshold1
8536 @item threshold2
8537 @item threshold3
8538 Limit the maximum change for each plane, default is 65535.
8539 If 0, plane will remain unchanged.
8540 @end table
8541
8542 @section deflicker
8543
8544 Remove temporal frame luminance variations.
8545
8546 It accepts the following options:
8547
8548 @table @option
8549 @item size, s
8550 Set moving-average filter size in frames. Default is 5. Allowed range is 2 - 129.
8551
8552 @item mode, m
8553 Set averaging mode to smooth temporal luminance variations.
8554
8555 Available values are:
8556 @table @samp
8557 @item am
8558 Arithmetic mean
8559
8560 @item gm
8561 Geometric mean
8562
8563 @item hm
8564 Harmonic mean
8565
8566 @item qm
8567 Quadratic mean
8568
8569 @item cm
8570 Cubic mean
8571
8572 @item pm
8573 Power mean
8574
8575 @item median
8576 Median
8577 @end table
8578
8579 @item bypass
8580 Do not actually modify frame. Useful when one only wants metadata.
8581 @end table
8582
8583 @section dejudder
8584
8585 Remove judder produced by partially interlaced telecined content.
8586
8587 Judder can be introduced, for instance, by @ref{pullup} filter. If the original
8588 source was partially telecined content then the output of @code{pullup,dejudder}
8589 will have a variable frame rate. May change the recorded frame rate of the
8590 container. Aside from that change, this filter will not affect constant frame
8591 rate video.
8592
8593 The option available in this filter is:
8594 @table @option
8595
8596 @item cycle
8597 Specify the length of the window over which the judder repeats.
8598
8599 Accepts any integer greater than 1. Useful values are:
8600 @table @samp
8601
8602 @item 4
8603 If the original was telecined from 24 to 30 fps (Film to NTSC).
8604
8605 @item 5
8606 If the original was telecined from 25 to 30 fps (PAL to NTSC).
8607
8608 @item 20
8609 If a mixture of the two.
8610 @end table
8611
8612 The default is @samp{4}.
8613 @end table
8614
8615 @section delogo
8616
8617 Suppress a TV station logo by a simple interpolation of the surrounding
8618 pixels. Just set a rectangle covering the logo and watch it disappear
8619 (and sometimes something even uglier appear - your mileage may vary).
8620
8621 It accepts the following parameters:
8622 @table @option
8623
8624 @item x
8625 @item y
8626 Specify the top left corner coordinates of the logo. They must be
8627 specified.
8628
8629 @item w
8630 @item h
8631 Specify the width and height of the logo to clear. They must be
8632 specified.
8633
8634 @item band, t
8635 Specify the thickness of the fuzzy edge of the rectangle (added to
8636 @var{w} and @var{h}). The default value is 1. This option is
8637 deprecated, setting higher values should no longer be necessary and
8638 is not recommended.
8639
8640 @item show
8641 When set to 1, a green rectangle is drawn on the screen to simplify
8642 finding the right @var{x}, @var{y}, @var{w}, and @var{h} parameters.
8643 The default value is 0.
8644
8645 The rectangle is drawn on the outermost pixels which will be (partly)
8646 replaced with interpolated values. The values of the next pixels
8647 immediately outside this rectangle in each direction will be used to
8648 compute the interpolated pixel values inside the rectangle.
8649
8650 @end table
8651
8652 @subsection Examples
8653
8654 @itemize
8655 @item
8656 Set a rectangle covering the area with top left corner coordinates 0,0
8657 and size 100x77, and a band of size 10:
8658 @example
8659 delogo=x=0:y=0:w=100:h=77:band=10
8660 @end example
8661
8662 @end itemize
8663
8664 @section derain
8665
8666 Remove the rain in the input image/video by applying the derain methods based on
8667 convolutional neural networks. Supported models:
8668
8669 @itemize
8670 @item
8671 Recurrent Squeeze-and-Excitation Context Aggregation Net (RESCAN).
8672 See @url{http://openaccess.thecvf.com/content_ECCV_2018/papers/Xia_Li_Recurrent_Squeeze-and-Excitation_Context_ECCV_2018_paper.pdf}.
8673 @end itemize
8674
8675 Training as well as model generation scripts are provided in
8676 the repository at @url{https://github.com/XueweiMeng/derain_filter.git}.
8677
8678 Native model files (.model) can be generated from TensorFlow model
8679 files (.pb) by using tools/python/convert.py
8680
8681 The filter accepts the following options:
8682
8683 @table @option
8684 @item filter_type
8685 Specify which filter to use. This option accepts the following values:
8686
8687 @table @samp
8688 @item derain
8689 Derain filter. To conduct derain filter, you need to use a derain model.
8690
8691 @item dehaze
8692 Dehaze filter. To conduct dehaze filter, you need to use a dehaze model.
8693 @end table
8694 Default value is @samp{derain}.
8695
8696 @item dnn_backend
8697 Specify which DNN backend to use for model loading and execution. This option accepts
8698 the following values:
8699
8700 @table @samp
8701 @item native
8702 Native implementation of DNN loading and execution.
8703
8704 @item tensorflow
8705 TensorFlow backend. To enable this backend you
8706 need to install the TensorFlow for C library (see
8707 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
8708 @code{--enable-libtensorflow}
8709 @end table
8710 Default value is @samp{native}.
8711
8712 @item model
8713 Set path to model file specifying network architecture and its parameters.
8714 Note that different backends use different file formats. TensorFlow and native
8715 backend can load files for only its format.
8716 @end table
8717
8718 @section deshake
8719
8720 Attempt to fix small changes in horizontal and/or vertical shift. This
8721 filter helps remove camera shake from hand-holding a camera, bumping a
8722 tripod, moving on a vehicle, etc.
8723
8724 The filter accepts the following options:
8725
8726 @table @option
8727
8728 @item x
8729 @item y
8730 @item w
8731 @item h
8732 Specify a rectangular area where to limit the search for motion
8733 vectors.
8734 If desired the search for motion vectors can be limited to a
8735 rectangular area of the frame defined by its top left corner, width
8736 and height. These parameters have the same meaning as the drawbox
8737 filter which can be used to visualise the position of the bounding
8738 box.
8739
8740 This is useful when simultaneous movement of subjects within the frame
8741 might be confused for camera motion by the motion vector search.
8742
8743 If any or all of @var{x}, @var{y}, @var{w} and @var{h} are set to -1
8744 then the full frame is used. This allows later options to be set
8745 without specifying the bounding box for the motion vector search.
8746
8747 Default - search the whole frame.
8748
8749 @item rx
8750 @item ry
8751 Specify the maximum extent of movement in x and y directions in the
8752 range 0-64 pixels. Default 16.
8753
8754 @item edge
8755 Specify how to generate pixels to fill blanks at the edge of the
8756 frame. Available values are:
8757 @table @samp
8758 @item blank, 0
8759 Fill zeroes at blank locations
8760 @item original, 1
8761 Original image at blank locations
8762 @item clamp, 2
8763 Extruded edge value at blank locations
8764 @item mirror, 3
8765 Mirrored edge at blank locations
8766 @end table
8767 Default value is @samp{mirror}.
8768
8769 @item blocksize
8770 Specify the blocksize to use for motion search. Range 4-128 pixels,
8771 default 8.
8772
8773 @item contrast
8774 Specify the contrast threshold for blocks. Only blocks with more than
8775 the specified contrast (difference between darkest and lightest
8776 pixels) will be considered. Range 1-255, default 125.
8777
8778 @item search
8779 Specify the search strategy. Available values are:
8780 @table @samp
8781 @item exhaustive, 0
8782 Set exhaustive search
8783 @item less, 1
8784 Set less exhaustive search.
8785 @end table
8786 Default value is @samp{exhaustive}.
8787
8788 @item filename
8789 If set then a detailed log of the motion search is written to the
8790 specified file.
8791
8792 @end table
8793
8794 @section despill
8795
8796 Remove unwanted contamination of foreground colors, caused by reflected color of
8797 greenscreen or bluescreen.
8798
8799 This filter accepts the following options:
8800
8801 @table @option
8802 @item type
8803 Set what type of despill to use.
8804
8805 @item mix
8806 Set how spillmap will be generated.
8807
8808 @item expand
8809 Set how much to get rid of still remaining spill.
8810
8811 @item red
8812 Controls amount of red in spill area.
8813
8814 @item green
8815 Controls amount of green in spill area.
8816 Should be -1 for greenscreen.
8817
8818 @item blue
8819 Controls amount of blue in spill area.
8820 Should be -1 for bluescreen.
8821
8822 @item brightness
8823 Controls brightness of spill area, preserving colors.
8824
8825 @item alpha
8826 Modify alpha from generated spillmap.
8827 @end table
8828
8829 @section detelecine
8830
8831 Apply an exact inverse of the telecine operation. It requires a predefined
8832 pattern specified using the pattern option which must be the same as that passed
8833 to the telecine filter.
8834
8835 This filter accepts the following options:
8836
8837 @table @option
8838 @item first_field
8839 @table @samp
8840 @item top, t
8841 top field first
8842 @item bottom, b
8843 bottom field first
8844 The default value is @code{top}.
8845 @end table
8846
8847 @item pattern
8848 A string of numbers representing the pulldown pattern you wish to apply.
8849 The default value is @code{23}.
8850
8851 @item start_frame
8852 A number representing position of the first frame with respect to the telecine
8853 pattern. This is to be used if the stream is cut. The default value is @code{0}.
8854 @end table
8855
8856 @section dilation
8857
8858 Apply dilation effect to the video.
8859
8860 This filter replaces the pixel by the local(3x3) maximum.
8861
8862 It accepts the following options:
8863
8864 @table @option
8865 @item threshold0
8866 @item threshold1
8867 @item threshold2
8868 @item threshold3
8869 Limit the maximum change for each plane, default is 65535.
8870 If 0, plane will remain unchanged.
8871
8872 @item coordinates
8873 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
8874 pixels are used.
8875
8876 Flags to local 3x3 coordinates maps like this:
8877
8878     1 2 3
8879     4   5
8880     6 7 8
8881 @end table
8882
8883 @section displace
8884
8885 Displace pixels as indicated by second and third input stream.
8886
8887 It takes three input streams and outputs one stream, the first input is the
8888 source, and second and third input are displacement maps.
8889
8890 The second input specifies how much to displace pixels along the
8891 x-axis, while the third input specifies how much to displace pixels
8892 along the y-axis.
8893 If one of displacement map streams terminates, last frame from that
8894 displacement map will be used.
8895
8896 Note that once generated, displacements maps can be reused over and over again.
8897
8898 A description of the accepted options follows.
8899
8900 @table @option
8901 @item edge
8902 Set displace behavior for pixels that are out of range.
8903
8904 Available values are:
8905 @table @samp
8906 @item blank
8907 Missing pixels are replaced by black pixels.
8908
8909 @item smear
8910 Adjacent pixels will spread out to replace missing pixels.
8911
8912 @item wrap
8913 Out of range pixels are wrapped so they point to pixels of other side.
8914
8915 @item mirror
8916 Out of range pixels will be replaced with mirrored pixels.
8917 @end table
8918 Default is @samp{smear}.
8919
8920 @end table
8921
8922 @subsection Examples
8923
8924 @itemize
8925 @item
8926 Add ripple effect to rgb input of video size hd720:
8927 @example
8928 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
8929 @end example
8930
8931 @item
8932 Add wave effect to rgb input of video size hd720:
8933 @example
8934 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
8935 @end example
8936 @end itemize
8937
8938 @section dnn_processing
8939
8940 Do image processing with deep neural networks. Currently only AVFrame with RGB24
8941 and BGR24 are supported, more formats will be added later.
8942
8943 The filter accepts the following options:
8944
8945 @table @option
8946 @item dnn_backend
8947 Specify which DNN backend to use for model loading and execution. This option accepts
8948 the following values:
8949
8950 @table @samp
8951 @item native
8952 Native implementation of DNN loading and execution.
8953
8954 @item tensorflow
8955 TensorFlow backend. To enable this backend you
8956 need to install the TensorFlow for C library (see
8957 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
8958 @code{--enable-libtensorflow}
8959 @end table
8960
8961 Default value is @samp{native}.
8962
8963 @item model
8964 Set path to model file specifying network architecture and its parameters.
8965 Note that different backends use different file formats. TensorFlow and native
8966 backend can load files for only its format.
8967
8968 Native model file (.model) can be generated from TensorFlow model file (.pb) by using tools/python/convert.py
8969
8970 @item input
8971 Set the input name of the dnn network.
8972
8973 @item output
8974 Set the output name of the dnn network.
8975
8976 @item fmt
8977 Set the pixel format for the Frame. Allowed values are @code{AV_PIX_FMT_RGB24}, and @code{AV_PIX_FMT_BGR24}.
8978 Default value is @code{AV_PIX_FMT_RGB24}.
8979
8980 @end table
8981
8982 @section drawbox
8983
8984 Draw a colored box on the input image.
8985
8986 It accepts the following parameters:
8987
8988 @table @option
8989 @item x
8990 @item y
8991 The expressions which specify the top left corner coordinates of the box. It defaults to 0.
8992
8993 @item width, w
8994 @item height, h
8995 The expressions which specify the width and height of the box; if 0 they are interpreted as
8996 the input width and height. It defaults to 0.
8997
8998 @item color, c
8999 Specify the color of the box to write. For the general syntax of this option,
9000 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
9001 value @code{invert} is used, the box edge color is the same as the
9002 video with inverted luma.
9003
9004 @item thickness, t
9005 The expression which sets the thickness of the box edge.
9006 A value of @code{fill} will create a filled box. Default value is @code{3}.
9007
9008 See below for the list of accepted constants.
9009
9010 @item replace
9011 Applicable if the input has alpha. With value @code{1}, the pixels of the painted box
9012 will overwrite the video's color and alpha pixels.
9013 Default is @code{0}, which composites the box onto the input, leaving the video's alpha intact.
9014 @end table
9015
9016 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
9017 following constants:
9018
9019 @table @option
9020 @item dar
9021 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
9022
9023 @item hsub
9024 @item vsub
9025 horizontal and vertical chroma subsample values. For example for the
9026 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
9027
9028 @item in_h, ih
9029 @item in_w, iw
9030 The input width and height.
9031
9032 @item sar
9033 The input sample aspect ratio.
9034
9035 @item x
9036 @item y
9037 The x and y offset coordinates where the box is drawn.
9038
9039 @item w
9040 @item h
9041 The width and height of the drawn box.
9042
9043 @item t
9044 The thickness of the drawn box.
9045
9046 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
9047 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
9048
9049 @end table
9050
9051 @subsection Examples
9052
9053 @itemize
9054 @item
9055 Draw a black box around the edge of the input image:
9056 @example
9057 drawbox
9058 @end example
9059
9060 @item
9061 Draw a box with color red and an opacity of 50%:
9062 @example
9063 drawbox=10:20:200:60:red@@0.5
9064 @end example
9065
9066 The previous example can be specified as:
9067 @example
9068 drawbox=x=10:y=20:w=200:h=60:color=red@@0.5
9069 @end example
9070
9071 @item
9072 Fill the box with pink color:
9073 @example
9074 drawbox=x=10:y=10:w=100:h=100:color=pink@@0.5:t=fill
9075 @end example
9076
9077 @item
9078 Draw a 2-pixel red 2.40:1 mask:
9079 @example
9080 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
9081 @end example
9082 @end itemize
9083
9084 @subsection Commands
9085 This filter supports same commands as options.
9086 The command accepts the same syntax of the corresponding option.
9087
9088 If the specified expression is not valid, it is kept at its current
9089 value.
9090
9091 @anchor{drawgraph}
9092 @section drawgraph
9093 Draw a graph using input video metadata.
9094
9095 It accepts the following parameters:
9096
9097 @table @option
9098 @item m1
9099 Set 1st frame metadata key from which metadata values will be used to draw a graph.
9100
9101 @item fg1
9102 Set 1st foreground color expression.
9103
9104 @item m2
9105 Set 2nd frame metadata key from which metadata values will be used to draw a graph.
9106
9107 @item fg2
9108 Set 2nd foreground color expression.
9109
9110 @item m3
9111 Set 3rd frame metadata key from which metadata values will be used to draw a graph.
9112
9113 @item fg3
9114 Set 3rd foreground color expression.
9115
9116 @item m4
9117 Set 4th frame metadata key from which metadata values will be used to draw a graph.
9118
9119 @item fg4
9120 Set 4th foreground color expression.
9121
9122 @item min
9123 Set minimal value of metadata value.
9124
9125 @item max
9126 Set maximal value of metadata value.
9127
9128 @item bg
9129 Set graph background color. Default is white.
9130
9131 @item mode
9132 Set graph mode.
9133
9134 Available values for mode is:
9135 @table @samp
9136 @item bar
9137 @item dot
9138 @item line
9139 @end table
9140
9141 Default is @code{line}.
9142
9143 @item slide
9144 Set slide mode.
9145
9146 Available values for slide is:
9147 @table @samp
9148 @item frame
9149 Draw new frame when right border is reached.
9150
9151 @item replace
9152 Replace old columns with new ones.
9153
9154 @item scroll
9155 Scroll from right to left.
9156
9157 @item rscroll
9158 Scroll from left to right.
9159
9160 @item picture
9161 Draw single picture.
9162 @end table
9163
9164 Default is @code{frame}.
9165
9166 @item size
9167 Set size of graph video. For the syntax of this option, check the
9168 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
9169 The default value is @code{900x256}.
9170
9171 The foreground color expressions can use the following variables:
9172 @table @option
9173 @item MIN
9174 Minimal value of metadata value.
9175
9176 @item MAX
9177 Maximal value of metadata value.
9178
9179 @item VAL
9180 Current metadata key value.
9181 @end table
9182
9183 The color is defined as 0xAABBGGRR.
9184 @end table
9185
9186 Example using metadata from @ref{signalstats} filter:
9187 @example
9188 signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255
9189 @end example
9190
9191 Example using metadata from @ref{ebur128} filter:
9192 @example
9193 ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-120:max=5
9194 @end example
9195
9196 @section drawgrid
9197
9198 Draw a grid on the input image.
9199
9200 It accepts the following parameters:
9201
9202 @table @option
9203 @item x
9204 @item y
9205 The expressions which specify the coordinates of some point of grid intersection (meant to configure offset). Both default to 0.
9206
9207 @item width, w
9208 @item height, h
9209 The expressions which specify the width and height of the grid cell, if 0 they are interpreted as the
9210 input width and height, respectively, minus @code{thickness}, so image gets
9211 framed. Default to 0.
9212
9213 @item color, c
9214 Specify the color of the grid. For the general syntax of this option,
9215 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
9216 value @code{invert} is used, the grid color is the same as the
9217 video with inverted luma.
9218
9219 @item thickness, t
9220 The expression which sets the thickness of the grid line. Default value is @code{1}.
9221
9222 See below for the list of accepted constants.
9223
9224 @item replace
9225 Applicable if the input has alpha. With @code{1} the pixels of the painted grid
9226 will overwrite the video's color and alpha pixels.
9227 Default is @code{0}, which composites the grid onto the input, leaving the video's alpha intact.
9228 @end table
9229
9230 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
9231 following constants:
9232
9233 @table @option
9234 @item dar
9235 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
9236
9237 @item hsub
9238 @item vsub
9239 horizontal and vertical chroma subsample values. For example for the
9240 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
9241
9242 @item in_h, ih
9243 @item in_w, iw
9244 The input grid cell width and height.
9245
9246 @item sar
9247 The input sample aspect ratio.
9248
9249 @item x
9250 @item y
9251 The x and y coordinates of some point of grid intersection (meant to configure offset).
9252
9253 @item w
9254 @item h
9255 The width and height of the drawn cell.
9256
9257 @item t
9258 The thickness of the drawn cell.
9259
9260 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
9261 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
9262
9263 @end table
9264
9265 @subsection Examples
9266
9267 @itemize
9268 @item
9269 Draw a grid with cell 100x100 pixels, thickness 2 pixels, with color red and an opacity of 50%:
9270 @example
9271 drawgrid=width=100:height=100:thickness=2:color=red@@0.5
9272 @end example
9273
9274 @item
9275 Draw a white 3x3 grid with an opacity of 50%:
9276 @example
9277 drawgrid=w=iw/3:h=ih/3:t=2:c=white@@0.5
9278 @end example
9279 @end itemize
9280
9281 @subsection Commands
9282 This filter supports same commands as options.
9283 The command accepts the same syntax of the corresponding option.
9284
9285 If the specified expression is not valid, it is kept at its current
9286 value.
9287
9288 @anchor{drawtext}
9289 @section drawtext
9290
9291 Draw a text string or text from a specified file on top of a video, using the
9292 libfreetype library.
9293
9294 To enable compilation of this filter, you need to configure FFmpeg with
9295 @code{--enable-libfreetype}.
9296 To enable default font fallback and the @var{font} option you need to
9297 configure FFmpeg with @code{--enable-libfontconfig}.
9298 To enable the @var{text_shaping} option, you need to configure FFmpeg with
9299 @code{--enable-libfribidi}.
9300
9301 @subsection Syntax
9302
9303 It accepts the following parameters:
9304
9305 @table @option
9306
9307 @item box
9308 Used to draw a box around text using the background color.
9309 The value must be either 1 (enable) or 0 (disable).
9310 The default value of @var{box} is 0.
9311
9312 @item boxborderw
9313 Set the width of the border to be drawn around the box using @var{boxcolor}.
9314 The default value of @var{boxborderw} is 0.
9315
9316 @item boxcolor
9317 The color to be used for drawing box around text. For the syntax of this
9318 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
9319
9320 The default value of @var{boxcolor} is "white".
9321
9322 @item line_spacing
9323 Set the line spacing in pixels of the border to be drawn around the box using @var{box}.
9324 The default value of @var{line_spacing} is 0.
9325
9326 @item borderw
9327 Set the width of the border to be drawn around the text using @var{bordercolor}.
9328 The default value of @var{borderw} is 0.
9329
9330 @item bordercolor
9331 Set the color to be used for drawing border around text. For the syntax of this
9332 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
9333
9334 The default value of @var{bordercolor} is "black".
9335
9336 @item expansion
9337 Select how the @var{text} is expanded. Can be either @code{none},
9338 @code{strftime} (deprecated) or
9339 @code{normal} (default). See the @ref{drawtext_expansion, Text expansion} section
9340 below for details.
9341
9342 @item basetime
9343 Set a start time for the count. Value is in microseconds. Only applied
9344 in the deprecated strftime expansion mode. To emulate in normal expansion
9345 mode use the @code{pts} function, supplying the start time (in seconds)
9346 as the second argument.
9347
9348 @item fix_bounds
9349 If true, check and fix text coords to avoid clipping.
9350
9351 @item fontcolor
9352 The color to be used for drawing fonts. For the syntax of this option, check
9353 the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
9354
9355 The default value of @var{fontcolor} is "black".
9356
9357 @item fontcolor_expr
9358 String which is expanded the same way as @var{text} to obtain dynamic
9359 @var{fontcolor} value. By default this option has empty value and is not
9360 processed. When this option is set, it overrides @var{fontcolor} option.
9361
9362 @item font
9363 The font family to be used for drawing text. By default Sans.
9364
9365 @item fontfile
9366 The font file to be used for drawing text. The path must be included.
9367 This parameter is mandatory if the fontconfig support is disabled.
9368
9369 @item alpha
9370 Draw the text applying alpha blending. The value can
9371 be a number between 0.0 and 1.0.
9372 The expression accepts the same variables @var{x, y} as well.
9373 The default value is 1.
9374 Please see @var{fontcolor_expr}.
9375
9376 @item fontsize
9377 The font size to be used for drawing text.
9378 The default value of @var{fontsize} is 16.
9379
9380 @item text_shaping
9381 If set to 1, attempt to shape the text (for example, reverse the order of
9382 right-to-left text and join Arabic characters) before drawing it.
9383 Otherwise, just draw the text exactly as given.
9384 By default 1 (if supported).
9385
9386 @item ft_load_flags
9387 The flags to be used for loading the fonts.
9388
9389 The flags map the corresponding flags supported by libfreetype, and are
9390 a combination of the following values:
9391 @table @var
9392 @item default
9393 @item no_scale
9394 @item no_hinting
9395 @item render
9396 @item no_bitmap
9397 @item vertical_layout
9398 @item force_autohint
9399 @item crop_bitmap
9400 @item pedantic
9401 @item ignore_global_advance_width
9402 @item no_recurse
9403 @item ignore_transform
9404 @item monochrome
9405 @item linear_design
9406 @item no_autohint
9407 @end table
9408
9409 Default value is "default".
9410
9411 For more information consult the documentation for the FT_LOAD_*
9412 libfreetype flags.
9413
9414 @item shadowcolor
9415 The color to be used for drawing a shadow behind the drawn text. For the
9416 syntax of this option, check the @ref{color syntax,,"Color" section in the
9417 ffmpeg-utils manual,ffmpeg-utils}.
9418
9419 The default value of @var{shadowcolor} is "black".
9420
9421 @item shadowx
9422 @item shadowy
9423 The x and y offsets for the text shadow position with respect to the
9424 position of the text. They can be either positive or negative
9425 values. The default value for both is "0".
9426
9427 @item start_number
9428 The starting frame number for the n/frame_num variable. The default value
9429 is "0".
9430
9431 @item tabsize
9432 The size in number of spaces to use for rendering the tab.
9433 Default value is 4.
9434
9435 @item timecode
9436 Set the initial timecode representation in "hh:mm:ss[:;.]ff"
9437 format. It can be used with or without text parameter. @var{timecode_rate}
9438 option must be specified.
9439
9440 @item timecode_rate, rate, r
9441 Set the timecode frame rate (timecode only). Value will be rounded to nearest
9442 integer. Minimum value is "1".
9443 Drop-frame timecode is supported for frame rates 30 & 60.
9444
9445 @item tc24hmax
9446 If set to 1, the output of the timecode option will wrap around at 24 hours.
9447 Default is 0 (disabled).
9448
9449 @item text
9450 The text string to be drawn. The text must be a sequence of UTF-8
9451 encoded characters.
9452 This parameter is mandatory if no file is specified with the parameter
9453 @var{textfile}.
9454
9455 @item textfile
9456 A text file containing text to be drawn. The text must be a sequence
9457 of UTF-8 encoded characters.
9458
9459 This parameter is mandatory if no text string is specified with the
9460 parameter @var{text}.
9461
9462 If both @var{text} and @var{textfile} are specified, an error is thrown.
9463
9464 @item reload
9465 If set to 1, the @var{textfile} will be reloaded before each frame.
9466 Be sure to update it atomically, or it may be read partially, or even fail.
9467
9468 @item x
9469 @item y
9470 The expressions which specify the offsets where text will be drawn
9471 within the video frame. They are relative to the top/left border of the
9472 output image.
9473
9474 The default value of @var{x} and @var{y} is "0".
9475
9476 See below for the list of accepted constants and functions.
9477 @end table
9478
9479 The parameters for @var{x} and @var{y} are expressions containing the
9480 following constants and functions:
9481
9482 @table @option
9483 @item dar
9484 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
9485
9486 @item hsub
9487 @item vsub
9488 horizontal and vertical chroma subsample values. For example for the
9489 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
9490
9491 @item line_h, lh
9492 the height of each text line
9493
9494 @item main_h, h, H
9495 the input height
9496
9497 @item main_w, w, W
9498 the input width
9499
9500 @item max_glyph_a, ascent
9501 the maximum distance from the baseline to the highest/upper grid
9502 coordinate used to place a glyph outline point, for all the rendered
9503 glyphs.
9504 It is a positive value, due to the grid's orientation with the Y axis
9505 upwards.
9506
9507 @item max_glyph_d, descent
9508 the maximum distance from the baseline to the lowest grid coordinate
9509 used to place a glyph outline point, for all the rendered glyphs.
9510 This is a negative value, due to the grid's orientation, with the Y axis
9511 upwards.
9512
9513 @item max_glyph_h
9514 maximum glyph height, that is the maximum height for all the glyphs
9515 contained in the rendered text, it is equivalent to @var{ascent} -
9516 @var{descent}.
9517
9518 @item max_glyph_w
9519 maximum glyph width, that is the maximum width for all the glyphs
9520 contained in the rendered text
9521
9522 @item n
9523 the number of input frame, starting from 0
9524
9525 @item rand(min, max)
9526 return a random number included between @var{min} and @var{max}
9527
9528 @item sar
9529 The input sample aspect ratio.
9530
9531 @item t
9532 timestamp expressed in seconds, NAN if the input timestamp is unknown
9533
9534 @item text_h, th
9535 the height of the rendered text
9536
9537 @item text_w, tw
9538 the width of the rendered text
9539
9540 @item x
9541 @item y
9542 the x and y offset coordinates where the text is drawn.
9543
9544 These parameters allow the @var{x} and @var{y} expressions to refer
9545 to each other, so you can for example specify @code{y=x/dar}.
9546
9547 @item pict_type
9548 A one character description of the current frame's picture type.
9549
9550 @item pkt_pos
9551 The current packet's position in the input file or stream
9552 (in bytes, from the start of the input). A value of -1 indicates
9553 this info is not available.
9554
9555 @item pkt_duration
9556 The current packet's duration, in seconds.
9557
9558 @item pkt_size
9559 The current packet's size (in bytes).
9560 @end table
9561
9562 @anchor{drawtext_expansion}
9563 @subsection Text expansion
9564
9565 If @option{expansion} is set to @code{strftime},
9566 the filter recognizes strftime() sequences in the provided text and
9567 expands them accordingly. Check the documentation of strftime(). This
9568 feature is deprecated.
9569
9570 If @option{expansion} is set to @code{none}, the text is printed verbatim.
9571
9572 If @option{expansion} is set to @code{normal} (which is the default),
9573 the following expansion mechanism is used.
9574
9575 The backslash character @samp{\}, followed by any character, always expands to
9576 the second character.
9577
9578 Sequences of the form @code{%@{...@}} are expanded. The text between the
9579 braces is a function name, possibly followed by arguments separated by ':'.
9580 If the arguments contain special characters or delimiters (':' or '@}'),
9581 they should be escaped.
9582
9583 Note that they probably must also be escaped as the value for the
9584 @option{text} option in the filter argument string and as the filter
9585 argument in the filtergraph description, and possibly also for the shell,
9586 that makes up to four levels of escaping; using a text file avoids these
9587 problems.
9588
9589 The following functions are available:
9590
9591 @table @command
9592
9593 @item expr, e
9594 The expression evaluation result.
9595
9596 It must take one argument specifying the expression to be evaluated,
9597 which accepts the same constants and functions as the @var{x} and
9598 @var{y} values. Note that not all constants should be used, for
9599 example the text size is not known when evaluating the expression, so
9600 the constants @var{text_w} and @var{text_h} will have an undefined
9601 value.
9602
9603 @item expr_int_format, eif
9604 Evaluate the expression's value and output as formatted integer.
9605
9606 The first argument is the expression to be evaluated, just as for the @var{expr} function.
9607 The second argument specifies the output format. Allowed values are @samp{x},
9608 @samp{X}, @samp{d} and @samp{u}. They are treated exactly as in the
9609 @code{printf} function.
9610 The third parameter is optional and sets the number of positions taken by the output.
9611 It can be used to add padding with zeros from the left.
9612
9613 @item gmtime
9614 The time at which the filter is running, expressed in UTC.
9615 It can accept an argument: a strftime() format string.
9616
9617 @item localtime
9618 The time at which the filter is running, expressed in the local time zone.
9619 It can accept an argument: a strftime() format string.
9620
9621 @item metadata
9622 Frame metadata. Takes one or two arguments.
9623
9624 The first argument is mandatory and specifies the metadata key.
9625
9626 The second argument is optional and specifies a default value, used when the
9627 metadata key is not found or empty.
9628
9629 Available metadata can be identified by inspecting entries
9630 starting with TAG included within each frame section
9631 printed by running @code{ffprobe -show_frames}.
9632
9633 String metadata generated in filters leading to
9634 the drawtext filter are also available.
9635
9636 @item n, frame_num
9637 The frame number, starting from 0.
9638
9639 @item pict_type
9640 A one character description of the current picture type.
9641
9642 @item pts
9643 The timestamp of the current frame.
9644 It can take up to three arguments.
9645
9646 The first argument is the format of the timestamp; it defaults to @code{flt}
9647 for seconds as a decimal number with microsecond accuracy; @code{hms} stands
9648 for a formatted @var{[-]HH:MM:SS.mmm} timestamp with millisecond accuracy.
9649 @code{gmtime} stands for the timestamp of the frame formatted as UTC time;
9650 @code{localtime} stands for the timestamp of the frame formatted as
9651 local time zone time.
9652
9653 The second argument is an offset added to the timestamp.
9654
9655 If the format is set to @code{hms}, a third argument @code{24HH} may be
9656 supplied to present the hour part of the formatted timestamp in 24h format
9657 (00-23).
9658
9659 If the format is set to @code{localtime} or @code{gmtime},
9660 a third argument may be supplied: a strftime() format string.
9661 By default, @var{YYYY-MM-DD HH:MM:SS} format will be used.
9662 @end table
9663
9664 @subsection Commands
9665
9666 This filter supports altering parameters via commands:
9667 @table @option
9668 @item reinit
9669 Alter existing filter parameters.
9670
9671 Syntax for the argument is the same as for filter invocation, e.g.
9672
9673 @example
9674 fontsize=56:fontcolor=green:text='Hello World'
9675 @end example
9676
9677 Full filter invocation with sendcmd would look like this:
9678
9679 @example
9680 sendcmd=c='56.0 drawtext reinit fontsize=56\:fontcolor=green\:text=Hello\\ World'
9681 @end example
9682 @end table
9683
9684 If the entire argument can't be parsed or applied as valid values then the filter will
9685 continue with its existing parameters.
9686
9687 @subsection Examples
9688
9689 @itemize
9690 @item
9691 Draw "Test Text" with font FreeSerif, using the default values for the
9692 optional parameters.
9693
9694 @example
9695 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
9696 @end example
9697
9698 @item
9699 Draw 'Test Text' with font FreeSerif of size 24 at position x=100
9700 and y=50 (counting from the top-left corner of the screen), text is
9701 yellow with a red box around it. Both the text and the box have an
9702 opacity of 20%.
9703
9704 @example
9705 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
9706           x=100: y=50: fontsize=24: fontcolor=yellow@@0.2: box=1: boxcolor=red@@0.2"
9707 @end example
9708
9709 Note that the double quotes are not necessary if spaces are not used
9710 within the parameter list.
9711
9712 @item
9713 Show the text at the center of the video frame:
9714 @example
9715 drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h)/2"
9716 @end example
9717
9718 @item
9719 Show the text at a random position, switching to a new position every 30 seconds:
9720 @example
9721 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)"
9722 @end example
9723
9724 @item
9725 Show a text line sliding from right to left in the last row of the video
9726 frame. The file @file{LONG_LINE} is assumed to contain a single line
9727 with no newlines.
9728 @example
9729 drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
9730 @end example
9731
9732 @item
9733 Show the content of file @file{CREDITS} off the bottom of the frame and scroll up.
9734 @example
9735 drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
9736 @end example
9737
9738 @item
9739 Draw a single green letter "g", at the center of the input video.
9740 The glyph baseline is placed at half screen height.
9741 @example
9742 drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
9743 @end example
9744
9745 @item
9746 Show text for 1 second every 3 seconds:
9747 @example
9748 drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'"
9749 @end example
9750
9751 @item
9752 Use fontconfig to set the font. Note that the colons need to be escaped.
9753 @example
9754 drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
9755 @end example
9756
9757 @item
9758 Print the date of a real-time encoding (see strftime(3)):
9759 @example
9760 drawtext='fontfile=FreeSans.ttf:text=%@{localtime\:%a %b %d %Y@}'
9761 @end example
9762
9763 @item
9764 Show text fading in and out (appearing/disappearing):
9765 @example
9766 #!/bin/sh
9767 DS=1.0 # display start
9768 DE=10.0 # display end
9769 FID=1.5 # fade in duration
9770 FOD=5 # fade out duration
9771 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 @}"
9772 @end example
9773
9774 @item
9775 Horizontally align multiple separate texts. Note that @option{max_glyph_a}
9776 and the @option{fontsize} value are included in the @option{y} offset.
9777 @example
9778 drawtext=fontfile=FreeSans.ttf:text=DOG:fontsize=24:x=10:y=20+24-max_glyph_a,
9779 drawtext=fontfile=FreeSans.ttf:text=cow:fontsize=24:x=80:y=20+24-max_glyph_a
9780 @end example
9781
9782 @end itemize
9783
9784 For more information about libfreetype, check:
9785 @url{http://www.freetype.org/}.
9786
9787 For more information about fontconfig, check:
9788 @url{http://freedesktop.org/software/fontconfig/fontconfig-user.html}.
9789
9790 For more information about libfribidi, check:
9791 @url{http://fribidi.org/}.
9792
9793 @section edgedetect
9794
9795 Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
9796
9797 The filter accepts the following options:
9798
9799 @table @option
9800 @item low
9801 @item high
9802 Set low and high threshold values used by the Canny thresholding
9803 algorithm.
9804
9805 The high threshold selects the "strong" edge pixels, which are then
9806 connected through 8-connectivity with the "weak" edge pixels selected
9807 by the low threshold.
9808
9809 @var{low} and @var{high} threshold values must be chosen in the range
9810 [0,1], and @var{low} should be lesser or equal to @var{high}.
9811
9812 Default value for @var{low} is @code{20/255}, and default value for @var{high}
9813 is @code{50/255}.
9814
9815 @item mode
9816 Define the drawing mode.
9817
9818 @table @samp
9819 @item wires
9820 Draw white/gray wires on black background.
9821
9822 @item colormix
9823 Mix the colors to create a paint/cartoon effect.
9824
9825 @item canny
9826 Apply Canny edge detector on all selected planes.
9827 @end table
9828 Default value is @var{wires}.
9829
9830 @item planes
9831 Select planes for filtering. By default all available planes are filtered.
9832 @end table
9833
9834 @subsection Examples
9835
9836 @itemize
9837 @item
9838 Standard edge detection with custom values for the hysteresis thresholding:
9839 @example
9840 edgedetect=low=0.1:high=0.4
9841 @end example
9842
9843 @item
9844 Painting effect without thresholding:
9845 @example
9846 edgedetect=mode=colormix:high=0
9847 @end example
9848 @end itemize
9849
9850 @section elbg
9851
9852 Apply a posterize effect using the ELBG (Enhanced LBG) algorithm.
9853
9854 For each input image, the filter will compute the optimal mapping from
9855 the input to the output given the codebook length, that is the number
9856 of distinct output colors.
9857
9858 This filter accepts the following options.
9859
9860 @table @option
9861 @item codebook_length, l
9862 Set codebook length. The value must be a positive integer, and
9863 represents the number of distinct output colors. Default value is 256.
9864
9865 @item nb_steps, n
9866 Set the maximum number of iterations to apply for computing the optimal
9867 mapping. The higher the value the better the result and the higher the
9868 computation time. Default value is 1.
9869
9870 @item seed, s
9871 Set a random seed, must be an integer included between 0 and
9872 UINT32_MAX. If not specified, or if explicitly set to -1, the filter
9873 will try to use a good random seed on a best effort basis.
9874
9875 @item pal8
9876 Set pal8 output pixel format. This option does not work with codebook
9877 length greater than 256.
9878 @end table
9879
9880 @section entropy
9881
9882 Measure graylevel entropy in histogram of color channels of video frames.
9883
9884 It accepts the following parameters:
9885
9886 @table @option
9887 @item mode
9888 Can be either @var{normal} or @var{diff}. Default is @var{normal}.
9889
9890 @var{diff} mode measures entropy of histogram delta values, absolute differences
9891 between neighbour histogram values.
9892 @end table
9893
9894 @section eq
9895 Set brightness, contrast, saturation and approximate gamma adjustment.
9896
9897 The filter accepts the following options:
9898
9899 @table @option
9900 @item contrast
9901 Set the contrast expression. The value must be a float value in range
9902 @code{-1000.0} to @code{1000.0}. The default value is "1".
9903
9904 @item brightness
9905 Set the brightness expression. The value must be a float value in
9906 range @code{-1.0} to @code{1.0}. The default value is "0".
9907
9908 @item saturation
9909 Set the saturation expression. The value must be a float in
9910 range @code{0.0} to @code{3.0}. The default value is "1".
9911
9912 @item gamma
9913 Set the gamma expression. The value must be a float in range
9914 @code{0.1} to @code{10.0}.  The default value is "1".
9915
9916 @item gamma_r
9917 Set the gamma expression for red. The value must be a float in
9918 range @code{0.1} to @code{10.0}. The default value is "1".
9919
9920 @item gamma_g
9921 Set the gamma expression for green. The value must be a float in range
9922 @code{0.1} to @code{10.0}. The default value is "1".
9923
9924 @item gamma_b
9925 Set the gamma expression for blue. The value must be a float in range
9926 @code{0.1} to @code{10.0}. The default value is "1".
9927
9928 @item gamma_weight
9929 Set the gamma weight expression. It can be used to reduce the effect
9930 of a high gamma value on bright image areas, e.g. keep them from
9931 getting overamplified and just plain white. The value must be a float
9932 in range @code{0.0} to @code{1.0}. A value of @code{0.0} turns the
9933 gamma correction all the way down while @code{1.0} leaves it at its
9934 full strength. Default is "1".
9935
9936 @item eval
9937 Set when the expressions for brightness, contrast, saturation and
9938 gamma expressions are evaluated.
9939
9940 It accepts the following values:
9941 @table @samp
9942 @item init
9943 only evaluate expressions once during the filter initialization or
9944 when a command is processed
9945
9946 @item frame
9947 evaluate expressions for each incoming frame
9948 @end table
9949
9950 Default value is @samp{init}.
9951 @end table
9952
9953 The expressions accept the following parameters:
9954 @table @option
9955 @item n
9956 frame count of the input frame starting from 0
9957
9958 @item pos
9959 byte position of the corresponding packet in the input file, NAN if
9960 unspecified
9961
9962 @item r
9963 frame rate of the input video, NAN if the input frame rate is unknown
9964
9965 @item t
9966 timestamp expressed in seconds, NAN if the input timestamp is unknown
9967 @end table
9968
9969 @subsection Commands
9970 The filter supports the following commands:
9971
9972 @table @option
9973 @item contrast
9974 Set the contrast expression.
9975
9976 @item brightness
9977 Set the brightness expression.
9978
9979 @item saturation
9980 Set the saturation expression.
9981
9982 @item gamma
9983 Set the gamma expression.
9984
9985 @item gamma_r
9986 Set the gamma_r expression.
9987
9988 @item gamma_g
9989 Set gamma_g expression.
9990
9991 @item gamma_b
9992 Set gamma_b expression.
9993
9994 @item gamma_weight
9995 Set gamma_weight expression.
9996
9997 The command accepts the same syntax of the corresponding option.
9998
9999 If the specified expression is not valid, it is kept at its current
10000 value.
10001
10002 @end table
10003
10004 @section erosion
10005
10006 Apply erosion effect to the video.
10007
10008 This filter replaces the pixel by the local(3x3) minimum.
10009
10010 It accepts the following options:
10011
10012 @table @option
10013 @item threshold0
10014 @item threshold1
10015 @item threshold2
10016 @item threshold3
10017 Limit the maximum change for each plane, default is 65535.
10018 If 0, plane will remain unchanged.
10019
10020 @item coordinates
10021 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
10022 pixels are used.
10023
10024 Flags to local 3x3 coordinates maps like this:
10025
10026     1 2 3
10027     4   5
10028     6 7 8
10029 @end table
10030
10031 @section extractplanes
10032
10033 Extract color channel components from input video stream into
10034 separate grayscale video streams.
10035
10036 The filter accepts the following option:
10037
10038 @table @option
10039 @item planes
10040 Set plane(s) to extract.
10041
10042 Available values for planes are:
10043 @table @samp
10044 @item y
10045 @item u
10046 @item v
10047 @item a
10048 @item r
10049 @item g
10050 @item b
10051 @end table
10052
10053 Choosing planes not available in the input will result in an error.
10054 That means you cannot select @code{r}, @code{g}, @code{b} planes
10055 with @code{y}, @code{u}, @code{v} planes at same time.
10056 @end table
10057
10058 @subsection Examples
10059
10060 @itemize
10061 @item
10062 Extract luma, u and v color channel component from input video frame
10063 into 3 grayscale outputs:
10064 @example
10065 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
10066 @end example
10067 @end itemize
10068
10069 @section fade
10070
10071 Apply a fade-in/out effect to the input video.
10072
10073 It accepts the following parameters:
10074
10075 @table @option
10076 @item type, t
10077 The effect type can be either "in" for a fade-in, or "out" for a fade-out
10078 effect.
10079 Default is @code{in}.
10080
10081 @item start_frame, s
10082 Specify the number of the frame to start applying the fade
10083 effect at. Default is 0.
10084
10085 @item nb_frames, n
10086 The number of frames that the fade effect lasts. At the end of the
10087 fade-in effect, the output video will have the same intensity as the input video.
10088 At the end of the fade-out transition, the output video will be filled with the
10089 selected @option{color}.
10090 Default is 25.
10091
10092 @item alpha
10093 If set to 1, fade only alpha channel, if one exists on the input.
10094 Default value is 0.
10095
10096 @item start_time, st
10097 Specify the timestamp (in seconds) of the frame to start to apply the fade
10098 effect. If both start_frame and start_time are specified, the fade will start at
10099 whichever comes last.  Default is 0.
10100
10101 @item duration, d
10102 The number of seconds for which the fade effect has to last. At the end of the
10103 fade-in effect the output video will have the same intensity as the input video,
10104 at the end of the fade-out transition the output video will be filled with the
10105 selected @option{color}.
10106 If both duration and nb_frames are specified, duration is used. Default is 0
10107 (nb_frames is used by default).
10108
10109 @item color, c
10110 Specify the color of the fade. Default is "black".
10111 @end table
10112
10113 @subsection Examples
10114
10115 @itemize
10116 @item
10117 Fade in the first 30 frames of video:
10118 @example
10119 fade=in:0:30
10120 @end example
10121
10122 The command above is equivalent to:
10123 @example
10124 fade=t=in:s=0:n=30
10125 @end example
10126
10127 @item
10128 Fade out the last 45 frames of a 200-frame video:
10129 @example
10130 fade=out:155:45
10131 fade=type=out:start_frame=155:nb_frames=45
10132 @end example
10133
10134 @item
10135 Fade in the first 25 frames and fade out the last 25 frames of a 1000-frame video:
10136 @example
10137 fade=in:0:25, fade=out:975:25
10138 @end example
10139
10140 @item
10141 Make the first 5 frames yellow, then fade in from frame 5-24:
10142 @example
10143 fade=in:5:20:color=yellow
10144 @end example
10145
10146 @item
10147 Fade in alpha over first 25 frames of video:
10148 @example
10149 fade=in:0:25:alpha=1
10150 @end example
10151
10152 @item
10153 Make the first 5.5 seconds black, then fade in for 0.5 seconds:
10154 @example
10155 fade=t=in:st=5.5:d=0.5
10156 @end example
10157
10158 @end itemize
10159
10160 @section fftdnoiz
10161 Denoise frames using 3D FFT (frequency domain filtering).
10162
10163 The filter accepts the following options:
10164
10165 @table @option
10166 @item sigma
10167 Set the noise sigma constant. This sets denoising strength.
10168 Default value is 1. Allowed range is from 0 to 30.
10169 Using very high sigma with low overlap may give blocking artifacts.
10170
10171 @item amount
10172 Set amount of denoising. By default all detected noise is reduced.
10173 Default value is 1. Allowed range is from 0 to 1.
10174
10175 @item block
10176 Set size of block, Default is 4, can be 3, 4, 5 or 6.
10177 Actual size of block in pixels is 2 to power of @var{block}, so by default
10178 block size in pixels is 2^4 which is 16.
10179
10180 @item overlap
10181 Set block overlap. Default is 0.5. Allowed range is from 0.2 to 0.8.
10182
10183 @item prev
10184 Set number of previous frames to use for denoising. By default is set to 0.
10185
10186 @item next
10187 Set number of next frames to to use for denoising. By default is set to 0.
10188
10189 @item planes
10190 Set planes which will be filtered, by default are all available filtered
10191 except alpha.
10192 @end table
10193
10194 @section fftfilt
10195 Apply arbitrary expressions to samples in frequency domain
10196
10197 @table @option
10198 @item dc_Y
10199 Adjust the dc value (gain) of the luma plane of the image. The filter
10200 accepts an integer value in range @code{0} to @code{1000}. The default
10201 value is set to @code{0}.
10202
10203 @item dc_U
10204 Adjust the dc value (gain) of the 1st chroma plane of the image. The
10205 filter accepts an integer value in range @code{0} to @code{1000}. The
10206 default value is set to @code{0}.
10207
10208 @item dc_V
10209 Adjust the dc value (gain) of the 2nd chroma plane of the image. The
10210 filter accepts an integer value in range @code{0} to @code{1000}. The
10211 default value is set to @code{0}.
10212
10213 @item weight_Y
10214 Set the frequency domain weight expression for the luma plane.
10215
10216 @item weight_U
10217 Set the frequency domain weight expression for the 1st chroma plane.
10218
10219 @item weight_V
10220 Set the frequency domain weight expression for the 2nd chroma plane.
10221
10222 @item eval
10223 Set when the expressions are evaluated.
10224
10225 It accepts the following values:
10226 @table @samp
10227 @item init
10228 Only evaluate expressions once during the filter initialization.
10229
10230 @item frame
10231 Evaluate expressions for each incoming frame.
10232 @end table
10233
10234 Default value is @samp{init}.
10235
10236 The filter accepts the following variables:
10237 @item X
10238 @item Y
10239 The coordinates of the current sample.
10240
10241 @item W
10242 @item H
10243 The width and height of the image.
10244
10245 @item N
10246 The number of input frame, starting from 0.
10247 @end table
10248
10249 @subsection Examples
10250
10251 @itemize
10252 @item
10253 High-pass:
10254 @example
10255 fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)'
10256 @end example
10257
10258 @item
10259 Low-pass:
10260 @example
10261 fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)'
10262 @end example
10263
10264 @item
10265 Sharpen:
10266 @example
10267 fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)'
10268 @end example
10269
10270 @item
10271 Blur:
10272 @example
10273 fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))'
10274 @end example
10275
10276 @end itemize
10277
10278 @section field
10279
10280 Extract a single field from an interlaced image using stride
10281 arithmetic to avoid wasting CPU time. The output frames are marked as
10282 non-interlaced.
10283
10284 The filter accepts the following options:
10285
10286 @table @option
10287 @item type
10288 Specify whether to extract the top (if the value is @code{0} or
10289 @code{top}) or the bottom field (if the value is @code{1} or
10290 @code{bottom}).
10291 @end table
10292
10293 @section fieldhint
10294
10295 Create new frames by copying the top and bottom fields from surrounding frames
10296 supplied as numbers by the hint file.
10297
10298 @table @option
10299 @item hint
10300 Set file containing hints: absolute/relative frame numbers.
10301
10302 There must be one line for each frame in a clip. Each line must contain two
10303 numbers separated by the comma, optionally followed by @code{-} or @code{+}.
10304 Numbers supplied on each line of file can not be out of [N-1,N+1] where N
10305 is current frame number for @code{absolute} mode or out of [-1, 1] range
10306 for @code{relative} mode. First number tells from which frame to pick up top
10307 field and second number tells from which frame to pick up bottom field.
10308
10309 If optionally followed by @code{+} output frame will be marked as interlaced,
10310 else if followed by @code{-} output frame will be marked as progressive, else
10311 it will be marked same as input frame.
10312 If optionally followed by @code{t} output frame will use only top field, or in
10313 case of @code{b} it will use only bottom field.
10314 If line starts with @code{#} or @code{;} that line is skipped.
10315
10316 @item mode
10317 Can be item @code{absolute} or @code{relative}. Default is @code{absolute}.
10318 @end table
10319
10320 Example of first several lines of @code{hint} file for @code{relative} mode:
10321 @example
10322 0,0 - # first frame
10323 1,0 - # second frame, use third's frame top field and second's frame bottom field
10324 1,0 - # third frame, use fourth's frame top field and third's frame bottom field
10325 1,0 -
10326 0,0 -
10327 0,0 -
10328 1,0 -
10329 1,0 -
10330 1,0 -
10331 0,0 -
10332 0,0 -
10333 1,0 -
10334 1,0 -
10335 1,0 -
10336 0,0 -
10337 @end example
10338
10339 @section fieldmatch
10340
10341 Field matching filter for inverse telecine. It is meant to reconstruct the
10342 progressive frames from a telecined stream. The filter does not drop duplicated
10343 frames, so to achieve a complete inverse telecine @code{fieldmatch} needs to be
10344 followed by a decimation filter such as @ref{decimate} in the filtergraph.
10345
10346 The separation of the field matching and the decimation is notably motivated by
10347 the possibility of inserting a de-interlacing filter fallback between the two.
10348 If the source has mixed telecined and real interlaced content,
10349 @code{fieldmatch} will not be able to match fields for the interlaced parts.
10350 But these remaining combed frames will be marked as interlaced, and thus can be
10351 de-interlaced by a later filter such as @ref{yadif} before decimation.
10352
10353 In addition to the various configuration options, @code{fieldmatch} can take an
10354 optional second stream, activated through the @option{ppsrc} option. If
10355 enabled, the frames reconstruction will be based on the fields and frames from
10356 this second stream. This allows the first input to be pre-processed in order to
10357 help the various algorithms of the filter, while keeping the output lossless
10358 (assuming the fields are matched properly). Typically, a field-aware denoiser,
10359 or brightness/contrast adjustments can help.
10360
10361 Note that this filter uses the same algorithms as TIVTC/TFM (AviSynth project)
10362 and VIVTC/VFM (VapourSynth project). The later is a light clone of TFM from
10363 which @code{fieldmatch} is based on. While the semantic and usage are very
10364 close, some behaviour and options names can differ.
10365
10366 The @ref{decimate} filter currently only works for constant frame rate input.
10367 If your input has mixed telecined (30fps) and progressive content with a lower
10368 framerate like 24fps use the following filterchain to produce the necessary cfr
10369 stream: @code{dejudder,fps=30000/1001,fieldmatch,decimate}.
10370
10371 The filter accepts the following options:
10372
10373 @table @option
10374 @item order
10375 Specify the assumed field order of the input stream. Available values are:
10376
10377 @table @samp
10378 @item auto
10379 Auto detect parity (use FFmpeg's internal parity value).
10380 @item bff
10381 Assume bottom field first.
10382 @item tff
10383 Assume top field first.
10384 @end table
10385
10386 Note that it is sometimes recommended not to trust the parity announced by the
10387 stream.
10388
10389 Default value is @var{auto}.
10390
10391 @item mode
10392 Set the matching mode or strategy to use. @option{pc} mode is the safest in the
10393 sense that it won't risk creating jerkiness due to duplicate frames when
10394 possible, but if there are bad edits or blended fields it will end up
10395 outputting combed frames when a good match might actually exist. On the other
10396 hand, @option{pcn_ub} mode is the most risky in terms of creating jerkiness,
10397 but will almost always find a good frame if there is one. The other values are
10398 all somewhere in between @option{pc} and @option{pcn_ub} in terms of risking
10399 jerkiness and creating duplicate frames versus finding good matches in sections
10400 with bad edits, orphaned fields, blended fields, etc.
10401
10402 More details about p/c/n/u/b are available in @ref{p/c/n/u/b meaning} section.
10403
10404 Available values are:
10405
10406 @table @samp
10407 @item pc
10408 2-way matching (p/c)
10409 @item pc_n
10410 2-way matching, and trying 3rd match if still combed (p/c + n)
10411 @item pc_u
10412 2-way matching, and trying 3rd match (same order) if still combed (p/c + u)
10413 @item pc_n_ub
10414 2-way matching, trying 3rd match if still combed, and trying 4th/5th matches if
10415 still combed (p/c + n + u/b)
10416 @item pcn
10417 3-way matching (p/c/n)
10418 @item pcn_ub
10419 3-way matching, and trying 4th/5th matches if all 3 of the original matches are
10420 detected as combed (p/c/n + u/b)
10421 @end table
10422
10423 The parenthesis at the end indicate the matches that would be used for that
10424 mode assuming @option{order}=@var{tff} (and @option{field} on @var{auto} or
10425 @var{top}).
10426
10427 In terms of speed @option{pc} mode is by far the fastest and @option{pcn_ub} is
10428 the slowest.
10429
10430 Default value is @var{pc_n}.
10431
10432 @item ppsrc
10433 Mark the main input stream as a pre-processed input, and enable the secondary
10434 input stream as the clean source to pick the fields from. See the filter
10435 introduction for more details. It is similar to the @option{clip2} feature from
10436 VFM/TFM.
10437
10438 Default value is @code{0} (disabled).
10439
10440 @item field
10441 Set the field to match from. It is recommended to set this to the same value as
10442 @option{order} unless you experience matching failures with that setting. In
10443 certain circumstances changing the field that is used to match from can have a
10444 large impact on matching performance. Available values are:
10445
10446 @table @samp
10447 @item auto
10448 Automatic (same value as @option{order}).
10449 @item bottom
10450 Match from the bottom field.
10451 @item top
10452 Match from the top field.
10453 @end table
10454
10455 Default value is @var{auto}.
10456
10457 @item mchroma
10458 Set whether or not chroma is included during the match comparisons. In most
10459 cases it is recommended to leave this enabled. You should set this to @code{0}
10460 only if your clip has bad chroma problems such as heavy rainbowing or other
10461 artifacts. Setting this to @code{0} could also be used to speed things up at
10462 the cost of some accuracy.
10463
10464 Default value is @code{1}.
10465
10466 @item y0
10467 @item y1
10468 These define an exclusion band which excludes the lines between @option{y0} and
10469 @option{y1} from being included in the field matching decision. An exclusion
10470 band can be used to ignore subtitles, a logo, or other things that may
10471 interfere with the matching. @option{y0} sets the starting scan line and
10472 @option{y1} sets the ending line; all lines in between @option{y0} and
10473 @option{y1} (including @option{y0} and @option{y1}) will be ignored. Setting
10474 @option{y0} and @option{y1} to the same value will disable the feature.
10475 @option{y0} and @option{y1} defaults to @code{0}.
10476
10477 @item scthresh
10478 Set the scene change detection threshold as a percentage of maximum change on
10479 the luma plane. Good values are in the @code{[8.0, 14.0]} range. Scene change
10480 detection is only relevant in case @option{combmatch}=@var{sc}.  The range for
10481 @option{scthresh} is @code{[0.0, 100.0]}.
10482
10483 Default value is @code{12.0}.
10484
10485 @item combmatch
10486 When @option{combatch} is not @var{none}, @code{fieldmatch} will take into
10487 account the combed scores of matches when deciding what match to use as the
10488 final match. Available values are:
10489
10490 @table @samp
10491 @item none
10492 No final matching based on combed scores.
10493 @item sc
10494 Combed scores are only used when a scene change is detected.
10495 @item full
10496 Use combed scores all the time.
10497 @end table
10498
10499 Default is @var{sc}.
10500
10501 @item combdbg
10502 Force @code{fieldmatch} to calculate the combed metrics for certain matches and
10503 print them. This setting is known as @option{micout} in TFM/VFM vocabulary.
10504 Available values are:
10505
10506 @table @samp
10507 @item none
10508 No forced calculation.
10509 @item pcn
10510 Force p/c/n calculations.
10511 @item pcnub
10512 Force p/c/n/u/b calculations.
10513 @end table
10514
10515 Default value is @var{none}.
10516
10517 @item cthresh
10518 This is the area combing threshold used for combed frame detection. This
10519 essentially controls how "strong" or "visible" combing must be to be detected.
10520 Larger values mean combing must be more visible and smaller values mean combing
10521 can be less visible or strong and still be detected. Valid settings are from
10522 @code{-1} (every pixel will be detected as combed) to @code{255} (no pixel will
10523 be detected as combed). This is basically a pixel difference value. A good
10524 range is @code{[8, 12]}.
10525
10526 Default value is @code{9}.
10527
10528 @item chroma
10529 Sets whether or not chroma is considered in the combed frame decision.  Only
10530 disable this if your source has chroma problems (rainbowing, etc.) that are
10531 causing problems for the combed frame detection with chroma enabled. Actually,
10532 using @option{chroma}=@var{0} is usually more reliable, except for the case
10533 where there is chroma only combing in the source.
10534
10535 Default value is @code{0}.
10536
10537 @item blockx
10538 @item blocky
10539 Respectively set the x-axis and y-axis size of the window used during combed
10540 frame detection. This has to do with the size of the area in which
10541 @option{combpel} pixels are required to be detected as combed for a frame to be
10542 declared combed. See the @option{combpel} parameter description for more info.
10543 Possible values are any number that is a power of 2 starting at 4 and going up
10544 to 512.
10545
10546 Default value is @code{16}.
10547
10548 @item combpel
10549 The number of combed pixels inside any of the @option{blocky} by
10550 @option{blockx} size blocks on the frame for the frame to be detected as
10551 combed. While @option{cthresh} controls how "visible" the combing must be, this
10552 setting controls "how much" combing there must be in any localized area (a
10553 window defined by the @option{blockx} and @option{blocky} settings) on the
10554 frame. Minimum value is @code{0} and maximum is @code{blocky x blockx} (at
10555 which point no frames will ever be detected as combed). This setting is known
10556 as @option{MI} in TFM/VFM vocabulary.
10557
10558 Default value is @code{80}.
10559 @end table
10560
10561 @anchor{p/c/n/u/b meaning}
10562 @subsection p/c/n/u/b meaning
10563
10564 @subsubsection p/c/n
10565
10566 We assume the following telecined stream:
10567
10568 @example
10569 Top fields:     1 2 2 3 4
10570 Bottom fields:  1 2 3 4 4
10571 @end example
10572
10573 The numbers correspond to the progressive frame the fields relate to. Here, the
10574 first two frames are progressive, the 3rd and 4th are combed, and so on.
10575
10576 When @code{fieldmatch} is configured to run a matching from bottom
10577 (@option{field}=@var{bottom}) this is how this input stream get transformed:
10578
10579 @example
10580 Input stream:
10581                 T     1 2 2 3 4
10582                 B     1 2 3 4 4   <-- matching reference
10583
10584 Matches:              c c n n c
10585
10586 Output stream:
10587                 T     1 2 3 4 4
10588                 B     1 2 3 4 4
10589 @end example
10590
10591 As a result of the field matching, we can see that some frames get duplicated.
10592 To perform a complete inverse telecine, you need to rely on a decimation filter
10593 after this operation. See for instance the @ref{decimate} filter.
10594
10595 The same operation now matching from top fields (@option{field}=@var{top})
10596 looks like this:
10597
10598 @example
10599 Input stream:
10600                 T     1 2 2 3 4   <-- matching reference
10601                 B     1 2 3 4 4
10602
10603 Matches:              c c p p c
10604
10605 Output stream:
10606                 T     1 2 2 3 4
10607                 B     1 2 2 3 4
10608 @end example
10609
10610 In these examples, we can see what @var{p}, @var{c} and @var{n} mean;
10611 basically, they refer to the frame and field of the opposite parity:
10612
10613 @itemize
10614 @item @var{p} matches the field of the opposite parity in the previous frame
10615 @item @var{c} matches the field of the opposite parity in the current frame
10616 @item @var{n} matches the field of the opposite parity in the next frame
10617 @end itemize
10618
10619 @subsubsection u/b
10620
10621 The @var{u} and @var{b} matching are a bit special in the sense that they match
10622 from the opposite parity flag. In the following examples, we assume that we are
10623 currently matching the 2nd frame (Top:2, bottom:2). According to the match, a
10624 'x' is placed above and below each matched fields.
10625
10626 With bottom matching (@option{field}=@var{bottom}):
10627 @example
10628 Match:           c         p           n          b          u
10629
10630                  x       x               x        x          x
10631   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
10632   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
10633                  x         x           x        x              x
10634
10635 Output frames:
10636                  2          1          2          2          2
10637                  2          2          2          1          3
10638 @end example
10639
10640 With top matching (@option{field}=@var{top}):
10641 @example
10642 Match:           c         p           n          b          u
10643
10644                  x         x           x        x              x
10645   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
10646   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
10647                  x       x               x        x          x
10648
10649 Output frames:
10650                  2          2          2          1          2
10651                  2          1          3          2          2
10652 @end example
10653
10654 @subsection Examples
10655
10656 Simple IVTC of a top field first telecined stream:
10657 @example
10658 fieldmatch=order=tff:combmatch=none, decimate
10659 @end example
10660
10661 Advanced IVTC, with fallback on @ref{yadif} for still combed frames:
10662 @example
10663 fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
10664 @end example
10665
10666 @section fieldorder
10667
10668 Transform the field order of the input video.
10669
10670 It accepts the following parameters:
10671
10672 @table @option
10673
10674 @item order
10675 The output field order. Valid values are @var{tff} for top field first or @var{bff}
10676 for bottom field first.
10677 @end table
10678
10679 The default value is @samp{tff}.
10680
10681 The transformation is done by shifting the picture content up or down
10682 by one line, and filling the remaining line with appropriate picture content.
10683 This method is consistent with most broadcast field order converters.
10684
10685 If the input video is not flagged as being interlaced, or it is already
10686 flagged as being of the required output field order, then this filter does
10687 not alter the incoming video.
10688
10689 It is very useful when converting to or from PAL DV material,
10690 which is bottom field first.
10691
10692 For example:
10693 @example
10694 ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
10695 @end example
10696
10697 @section fifo, afifo
10698
10699 Buffer input images and send them when they are requested.
10700
10701 It is mainly useful when auto-inserted by the libavfilter
10702 framework.
10703
10704 It does not take parameters.
10705
10706 @section fillborders
10707
10708 Fill borders of the input video, without changing video stream dimensions.
10709 Sometimes video can have garbage at the four edges and you may not want to
10710 crop video input to keep size multiple of some number.
10711
10712 This filter accepts the following options:
10713
10714 @table @option
10715 @item left
10716 Number of pixels to fill from left border.
10717
10718 @item right
10719 Number of pixels to fill from right border.
10720
10721 @item top
10722 Number of pixels to fill from top border.
10723
10724 @item bottom
10725 Number of pixels to fill from bottom border.
10726
10727 @item mode
10728 Set fill mode.
10729
10730 It accepts the following values:
10731 @table @samp
10732 @item smear
10733 fill pixels using outermost pixels
10734
10735 @item mirror
10736 fill pixels using mirroring
10737
10738 @item fixed
10739 fill pixels with constant value
10740 @end table
10741
10742 Default is @var{smear}.
10743
10744 @item color
10745 Set color for pixels in fixed mode. Default is @var{black}.
10746 @end table
10747
10748 @section find_rect
10749
10750 Find a rectangular object
10751
10752 It accepts the following options:
10753
10754 @table @option
10755 @item object
10756 Filepath of the object image, needs to be in gray8.
10757
10758 @item threshold
10759 Detection threshold, default is 0.5.
10760
10761 @item mipmaps
10762 Number of mipmaps, default is 3.
10763
10764 @item xmin, ymin, xmax, ymax
10765 Specifies the rectangle in which to search.
10766 @end table
10767
10768 @subsection Examples
10769
10770 @itemize
10771 @item
10772 Cover a rectangular object by the supplied image of a given video using @command{ffmpeg}:
10773 @example
10774 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
10775 @end example
10776 @end itemize
10777
10778 @section floodfill
10779
10780 Flood area with values of same pixel components with another values.
10781
10782 It accepts the following options:
10783 @table @option
10784 @item x
10785 Set pixel x coordinate.
10786
10787 @item y
10788 Set pixel y coordinate.
10789
10790 @item s0
10791 Set source #0 component value.
10792
10793 @item s1
10794 Set source #1 component value.
10795
10796 @item s2
10797 Set source #2 component value.
10798
10799 @item s3
10800 Set source #3 component value.
10801
10802 @item d0
10803 Set destination #0 component value.
10804
10805 @item d1
10806 Set destination #1 component value.
10807
10808 @item d2
10809 Set destination #2 component value.
10810
10811 @item d3
10812 Set destination #3 component value.
10813 @end table
10814
10815 @anchor{format}
10816 @section format
10817
10818 Convert the input video to one of the specified pixel formats.
10819 Libavfilter will try to pick one that is suitable as input to
10820 the next filter.
10821
10822 It accepts the following parameters:
10823 @table @option
10824
10825 @item pix_fmts
10826 A '|'-separated list of pixel format names, such as
10827 "pix_fmts=yuv420p|monow|rgb24".
10828
10829 @end table
10830
10831 @subsection Examples
10832
10833 @itemize
10834 @item
10835 Convert the input video to the @var{yuv420p} format
10836 @example
10837 format=pix_fmts=yuv420p
10838 @end example
10839
10840 Convert the input video to any of the formats in the list
10841 @example
10842 format=pix_fmts=yuv420p|yuv444p|yuv410p
10843 @end example
10844 @end itemize
10845
10846 @anchor{fps}
10847 @section fps
10848
10849 Convert the video to specified constant frame rate by duplicating or dropping
10850 frames as necessary.
10851
10852 It accepts the following parameters:
10853 @table @option
10854
10855 @item fps
10856 The desired output frame rate. The default is @code{25}.
10857
10858 @item start_time
10859 Assume the first PTS should be the given value, in seconds. This allows for
10860 padding/trimming at the start of stream. By default, no assumption is made
10861 about the first frame's expected PTS, so no padding or trimming is done.
10862 For example, this could be set to 0 to pad the beginning with duplicates of
10863 the first frame if a video stream starts after the audio stream or to trim any
10864 frames with a negative PTS.
10865
10866 @item round
10867 Timestamp (PTS) rounding method.
10868
10869 Possible values are:
10870 @table @option
10871 @item zero
10872 round towards 0
10873 @item inf
10874 round away from 0
10875 @item down
10876 round towards -infinity
10877 @item up
10878 round towards +infinity
10879 @item near
10880 round to nearest
10881 @end table
10882 The default is @code{near}.
10883
10884 @item eof_action
10885 Action performed when reading the last frame.
10886
10887 Possible values are:
10888 @table @option
10889 @item round
10890 Use same timestamp rounding method as used for other frames.
10891 @item pass
10892 Pass through last frame if input duration has not been reached yet.
10893 @end table
10894 The default is @code{round}.
10895
10896 @end table
10897
10898 Alternatively, the options can be specified as a flat string:
10899 @var{fps}[:@var{start_time}[:@var{round}]].
10900
10901 See also the @ref{setpts} filter.
10902
10903 @subsection Examples
10904
10905 @itemize
10906 @item
10907 A typical usage in order to set the fps to 25:
10908 @example
10909 fps=fps=25
10910 @end example
10911
10912 @item
10913 Sets the fps to 24, using abbreviation and rounding method to round to nearest:
10914 @example
10915 fps=fps=film:round=near
10916 @end example
10917 @end itemize
10918
10919 @section framepack
10920
10921 Pack two different video streams into a stereoscopic video, setting proper
10922 metadata on supported codecs. The two views should have the same size and
10923 framerate and processing will stop when the shorter video ends. Please note
10924 that you may conveniently adjust view properties with the @ref{scale} and
10925 @ref{fps} filters.
10926
10927 It accepts the following parameters:
10928 @table @option
10929
10930 @item format
10931 The desired packing format. Supported values are:
10932
10933 @table @option
10934
10935 @item sbs
10936 The views are next to each other (default).
10937
10938 @item tab
10939 The views are on top of each other.
10940
10941 @item lines
10942 The views are packed by line.
10943
10944 @item columns
10945 The views are packed by column.
10946
10947 @item frameseq
10948 The views are temporally interleaved.
10949
10950 @end table
10951
10952 @end table
10953
10954 Some examples:
10955
10956 @example
10957 # Convert left and right views into a frame-sequential video
10958 ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT
10959
10960 # Convert views into a side-by-side video with the same output resolution as the input
10961 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
10962 @end example
10963
10964 @section framerate
10965
10966 Change the frame rate by interpolating new video output frames from the source
10967 frames.
10968
10969 This filter is not designed to function correctly with interlaced media. If
10970 you wish to change the frame rate of interlaced media then you are required
10971 to deinterlace before this filter and re-interlace after this filter.
10972
10973 A description of the accepted options follows.
10974
10975 @table @option
10976 @item fps
10977 Specify the output frames per second. This option can also be specified
10978 as a value alone. The default is @code{50}.
10979
10980 @item interp_start
10981 Specify the start of a range where the output frame will be created as a
10982 linear interpolation of two frames. The range is [@code{0}-@code{255}],
10983 the default is @code{15}.
10984
10985 @item interp_end
10986 Specify the end of a range where the output frame will be created as a
10987 linear interpolation of two frames. The range is [@code{0}-@code{255}],
10988 the default is @code{240}.
10989
10990 @item scene
10991 Specify the level at which a scene change is detected as a value between
10992 0 and 100 to indicate a new scene; a low value reflects a low
10993 probability for the current frame to introduce a new scene, while a higher
10994 value means the current frame is more likely to be one.
10995 The default is @code{8.2}.
10996
10997 @item flags
10998 Specify flags influencing the filter process.
10999
11000 Available value for @var{flags} is:
11001
11002 @table @option
11003 @item scene_change_detect, scd
11004 Enable scene change detection using the value of the option @var{scene}.
11005 This flag is enabled by default.
11006 @end table
11007 @end table
11008
11009 @section framestep
11010
11011 Select one frame every N-th frame.
11012
11013 This filter accepts the following option:
11014 @table @option
11015 @item step
11016 Select frame after every @code{step} frames.
11017 Allowed values are positive integers higher than 0. Default value is @code{1}.
11018 @end table
11019
11020 @section freezedetect
11021
11022 Detect frozen video.
11023
11024 This filter logs a message and sets frame metadata when it detects that the
11025 input video has no significant change in content during a specified duration.
11026 Video freeze detection calculates the mean average absolute difference of all
11027 the components of video frames and compares it to a noise floor.
11028
11029 The printed times and duration are expressed in seconds. The
11030 @code{lavfi.freezedetect.freeze_start} metadata key is set on the first frame
11031 whose timestamp equals or exceeds the detection duration and it contains the
11032 timestamp of the first frame of the freeze. The
11033 @code{lavfi.freezedetect.freeze_duration} and
11034 @code{lavfi.freezedetect.freeze_end} metadata keys are set on the first frame
11035 after the freeze.
11036
11037 The filter accepts the following options:
11038
11039 @table @option
11040 @item noise, n
11041 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
11042 specified value) or as a difference ratio between 0 and 1. Default is -60dB, or
11043 0.001.
11044
11045 @item duration, d
11046 Set freeze duration until notification (default is 2 seconds).
11047 @end table
11048
11049 @anchor{frei0r}
11050 @section frei0r
11051
11052 Apply a frei0r effect to the input video.
11053
11054 To enable the compilation of this filter, you need to install the frei0r
11055 header and configure FFmpeg with @code{--enable-frei0r}.
11056
11057 It accepts the following parameters:
11058
11059 @table @option
11060
11061 @item filter_name
11062 The name of the frei0r effect to load. If the environment variable
11063 @env{FREI0R_PATH} is defined, the frei0r effect is searched for in each of the
11064 directories specified by the colon-separated list in @env{FREI0R_PATH}.
11065 Otherwise, the standard frei0r paths are searched, in this order:
11066 @file{HOME/.frei0r-1/lib/}, @file{/usr/local/lib/frei0r-1/},
11067 @file{/usr/lib/frei0r-1/}.
11068
11069 @item filter_params
11070 A '|'-separated list of parameters to pass to the frei0r effect.
11071
11072 @end table
11073
11074 A frei0r effect parameter can be a boolean (its value is either
11075 "y" or "n"), a double, a color (specified as
11076 @var{R}/@var{G}/@var{B}, where @var{R}, @var{G}, and @var{B} are floating point
11077 numbers between 0.0 and 1.0, inclusive) or a color description as specified in the
11078 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils},
11079 a position (specified as @var{X}/@var{Y}, where
11080 @var{X} and @var{Y} are floating point numbers) and/or a string.
11081
11082 The number and types of parameters depend on the loaded effect. If an
11083 effect parameter is not specified, the default value is set.
11084
11085 @subsection Examples
11086
11087 @itemize
11088 @item
11089 Apply the distort0r effect, setting the first two double parameters:
11090 @example
11091 frei0r=filter_name=distort0r:filter_params=0.5|0.01
11092 @end example
11093
11094 @item
11095 Apply the colordistance effect, taking a color as the first parameter:
11096 @example
11097 frei0r=colordistance:0.2/0.3/0.4
11098 frei0r=colordistance:violet
11099 frei0r=colordistance:0x112233
11100 @end example
11101
11102 @item
11103 Apply the perspective effect, specifying the top left and top right image
11104 positions:
11105 @example
11106 frei0r=perspective:0.2/0.2|0.8/0.2
11107 @end example
11108 @end itemize
11109
11110 For more information, see
11111 @url{http://frei0r.dyne.org}
11112
11113 @section fspp
11114
11115 Apply fast and simple postprocessing. It is a faster version of @ref{spp}.
11116
11117 It splits (I)DCT into horizontal/vertical passes. Unlike the simple post-
11118 processing filter, one of them is performed once per block, not per pixel.
11119 This allows for much higher speed.
11120
11121 The filter accepts the following options:
11122
11123 @table @option
11124 @item quality
11125 Set quality. This option defines the number of levels for averaging. It accepts
11126 an integer in the range 4-5. Default value is @code{4}.
11127
11128 @item qp
11129 Force a constant quantization parameter. It accepts an integer in range 0-63.
11130 If not set, the filter will use the QP from the video stream (if available).
11131
11132 @item strength
11133 Set filter strength. It accepts an integer in range -15 to 32. Lower values mean
11134 more details but also more artifacts, while higher values make the image smoother
11135 but also blurrier. Default value is @code{0} âˆ’ PSNR optimal.
11136
11137 @item use_bframe_qp
11138 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
11139 option may cause flicker since the B-Frames have often larger QP. Default is
11140 @code{0} (not enabled).
11141
11142 @end table
11143
11144 @section gblur
11145
11146 Apply Gaussian blur filter.
11147
11148 The filter accepts the following options:
11149
11150 @table @option
11151 @item sigma
11152 Set horizontal sigma, standard deviation of Gaussian blur. Default is @code{0.5}.
11153
11154 @item steps
11155 Set number of steps for Gaussian approximation. Default is @code{1}.
11156
11157 @item planes
11158 Set which planes to filter. By default all planes are filtered.
11159
11160 @item sigmaV
11161 Set vertical sigma, if negative it will be same as @code{sigma}.
11162 Default is @code{-1}.
11163 @end table
11164
11165 @subsection Commands
11166 This filter supports same commands as options.
11167 The command accepts the same syntax of the corresponding option.
11168
11169 If the specified expression is not valid, it is kept at its current
11170 value.
11171
11172 @section geq
11173
11174 Apply generic equation to each pixel.
11175
11176 The filter accepts the following options:
11177
11178 @table @option
11179 @item lum_expr, lum
11180 Set the luminance expression.
11181 @item cb_expr, cb
11182 Set the chrominance blue expression.
11183 @item cr_expr, cr
11184 Set the chrominance red expression.
11185 @item alpha_expr, a
11186 Set the alpha expression.
11187 @item red_expr, r
11188 Set the red expression.
11189 @item green_expr, g
11190 Set the green expression.
11191 @item blue_expr, b
11192 Set the blue expression.
11193 @end table
11194
11195 The colorspace is selected according to the specified options. If one
11196 of the @option{lum_expr}, @option{cb_expr}, or @option{cr_expr}
11197 options is specified, the filter will automatically select a YCbCr
11198 colorspace. If one of the @option{red_expr}, @option{green_expr}, or
11199 @option{blue_expr} options is specified, it will select an RGB
11200 colorspace.
11201
11202 If one of the chrominance expression is not defined, it falls back on the other
11203 one. If no alpha expression is specified it will evaluate to opaque value.
11204 If none of chrominance expressions are specified, they will evaluate
11205 to the luminance expression.
11206
11207 The expressions can use the following variables and functions:
11208
11209 @table @option
11210 @item N
11211 The sequential number of the filtered frame, starting from @code{0}.
11212
11213 @item X
11214 @item Y
11215 The coordinates of the current sample.
11216
11217 @item W
11218 @item H
11219 The width and height of the image.
11220
11221 @item SW
11222 @item SH
11223 Width and height scale depending on the currently filtered plane. It is the
11224 ratio between the corresponding luma plane number of pixels and the current
11225 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
11226 @code{0.5,0.5} for chroma planes.
11227
11228 @item T
11229 Time of the current frame, expressed in seconds.
11230
11231 @item p(x, y)
11232 Return the value of the pixel at location (@var{x},@var{y}) of the current
11233 plane.
11234
11235 @item lum(x, y)
11236 Return the value of the pixel at location (@var{x},@var{y}) of the luminance
11237 plane.
11238
11239 @item cb(x, y)
11240 Return the value of the pixel at location (@var{x},@var{y}) of the
11241 blue-difference chroma plane. Return 0 if there is no such plane.
11242
11243 @item cr(x, y)
11244 Return the value of the pixel at location (@var{x},@var{y}) of the
11245 red-difference chroma plane. Return 0 if there is no such plane.
11246
11247 @item r(x, y)
11248 @item g(x, y)
11249 @item b(x, y)
11250 Return the value of the pixel at location (@var{x},@var{y}) of the
11251 red/green/blue component. Return 0 if there is no such component.
11252
11253 @item alpha(x, y)
11254 Return the value of the pixel at location (@var{x},@var{y}) of the alpha
11255 plane. Return 0 if there is no such plane.
11256
11257 @item interpolation
11258 Set one of interpolation methods:
11259 @table @option
11260 @item nearest, n
11261 @item bilinear, b
11262 @end table
11263 Default is bilinear.
11264 @end table
11265
11266 For functions, if @var{x} and @var{y} are outside the area, the value will be
11267 automatically clipped to the closer edge.
11268
11269 @subsection Examples
11270
11271 @itemize
11272 @item
11273 Flip the image horizontally:
11274 @example
11275 geq=p(W-X\,Y)
11276 @end example
11277
11278 @item
11279 Generate a bidimensional sine wave, with angle @code{PI/3} and a
11280 wavelength of 100 pixels:
11281 @example
11282 geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
11283 @end example
11284
11285 @item
11286 Generate a fancy enigmatic moving light:
11287 @example
11288 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
11289 @end example
11290
11291 @item
11292 Generate a quick emboss effect:
11293 @example
11294 format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
11295 @end example
11296
11297 @item
11298 Modify RGB components depending on pixel position:
11299 @example
11300 geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
11301 @end example
11302
11303 @item
11304 Create a radial gradient that is the same size as the input (also see
11305 the @ref{vignette} filter):
11306 @example
11307 geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
11308 @end example
11309 @end itemize
11310
11311 @section gradfun
11312
11313 Fix the banding artifacts that are sometimes introduced into nearly flat
11314 regions by truncation to 8-bit color depth.
11315 Interpolate the gradients that should go where the bands are, and
11316 dither them.
11317
11318 It is designed for playback only.  Do not use it prior to
11319 lossy compression, because compression tends to lose the dither and
11320 bring back the bands.
11321
11322 It accepts the following parameters:
11323
11324 @table @option
11325
11326 @item strength
11327 The maximum amount by which the filter will change any one pixel. This is also
11328 the threshold for detecting nearly flat regions. Acceptable values range from
11329 .51 to 64; the default value is 1.2. Out-of-range values will be clipped to the
11330 valid range.
11331
11332 @item radius
11333 The neighborhood to fit the gradient to. A larger radius makes for smoother
11334 gradients, but also prevents the filter from modifying the pixels near detailed
11335 regions. Acceptable values are 8-32; the default value is 16. Out-of-range
11336 values will be clipped to the valid range.
11337
11338 @end table
11339
11340 Alternatively, the options can be specified as a flat string:
11341 @var{strength}[:@var{radius}]
11342
11343 @subsection Examples
11344
11345 @itemize
11346 @item
11347 Apply the filter with a @code{3.5} strength and radius of @code{8}:
11348 @example
11349 gradfun=3.5:8
11350 @end example
11351
11352 @item
11353 Specify radius, omitting the strength (which will fall-back to the default
11354 value):
11355 @example
11356 gradfun=radius=8
11357 @end example
11358
11359 @end itemize
11360
11361 @anchor{graphmonitor}
11362 @section graphmonitor
11363 Show various filtergraph stats.
11364
11365 With this filter one can debug complete filtergraph.
11366 Especially issues with links filling with queued frames.
11367
11368 The filter accepts the following options:
11369
11370 @table @option
11371 @item size, s
11372 Set video output size. Default is @var{hd720}.
11373
11374 @item opacity, o
11375 Set video opacity. Default is @var{0.9}. Allowed range is from @var{0} to @var{1}.
11376
11377 @item mode, m
11378 Set output mode, can be @var{fulll} or @var{compact}.
11379 In @var{compact} mode only filters with some queued frames have displayed stats.
11380
11381 @item flags, f
11382 Set flags which enable which stats are shown in video.
11383
11384 Available values for flags are:
11385 @table @samp
11386 @item queue
11387 Display number of queued frames in each link.
11388
11389 @item frame_count_in
11390 Display number of frames taken from filter.
11391
11392 @item frame_count_out
11393 Display number of frames given out from filter.
11394
11395 @item pts
11396 Display current filtered frame pts.
11397
11398 @item time
11399 Display current filtered frame time.
11400
11401 @item timebase
11402 Display time base for filter link.
11403
11404 @item format
11405 Display used format for filter link.
11406
11407 @item size
11408 Display video size or number of audio channels in case of audio used by filter link.
11409
11410 @item rate
11411 Display video frame rate or sample rate in case of audio used by filter link.
11412 @end table
11413
11414 @item rate, r
11415 Set upper limit for video rate of output stream, Default value is @var{25}.
11416 This guarantee that output video frame rate will not be higher than this value.
11417 @end table
11418
11419 @section greyedge
11420 A color constancy variation filter which estimates scene illumination via grey edge algorithm
11421 and corrects the scene colors accordingly.
11422
11423 See: @url{https://staff.science.uva.nl/th.gevers/pub/GeversTIP07.pdf}
11424
11425 The filter accepts the following options:
11426
11427 @table @option
11428 @item difford
11429 The order of differentiation to be applied on the scene. Must be chosen in the range
11430 [0,2] and default value is 1.
11431
11432 @item minknorm
11433 The Minkowski parameter to be used for calculating the Minkowski distance. Must
11434 be chosen in the range [0,20] and default value is 1. Set to 0 for getting
11435 max value instead of calculating Minkowski distance.
11436
11437 @item sigma
11438 The standard deviation of Gaussian blur to be applied on the scene. Must be
11439 chosen in the range [0,1024.0] and default value = 1. floor( @var{sigma} * break_off_sigma(3) )
11440 can't be equal to 0 if @var{difford} is greater than 0.
11441 @end table
11442
11443 @subsection Examples
11444 @itemize
11445
11446 @item
11447 Grey Edge:
11448 @example
11449 greyedge=difford=1:minknorm=5:sigma=2
11450 @end example
11451
11452 @item
11453 Max Edge:
11454 @example
11455 greyedge=difford=1:minknorm=0:sigma=2
11456 @end example
11457
11458 @end itemize
11459
11460 @anchor{haldclut}
11461 @section haldclut
11462
11463 Apply a Hald CLUT to a video stream.
11464
11465 First input is the video stream to process, and second one is the Hald CLUT.
11466 The Hald CLUT input can be a simple picture or a complete video stream.
11467
11468 The filter accepts the following options:
11469
11470 @table @option
11471 @item shortest
11472 Force termination when the shortest input terminates. Default is @code{0}.
11473 @item repeatlast
11474 Continue applying the last CLUT after the end of the stream. A value of
11475 @code{0} disable the filter after the last frame of the CLUT is reached.
11476 Default is @code{1}.
11477 @end table
11478
11479 @code{haldclut} also has the same interpolation options as @ref{lut3d} (both
11480 filters share the same internals).
11481
11482 This filter also supports the @ref{framesync} options.
11483
11484 More information about the Hald CLUT can be found on Eskil Steenberg's website
11485 (Hald CLUT author) at @url{http://www.quelsolaar.com/technology/clut.html}.
11486
11487 @subsection Workflow examples
11488
11489 @subsubsection Hald CLUT video stream
11490
11491 Generate an identity Hald CLUT stream altered with various effects:
11492 @example
11493 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
11494 @end example
11495
11496 Note: make sure you use a lossless codec.
11497
11498 Then use it with @code{haldclut} to apply it on some random stream:
11499 @example
11500 ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
11501 @end example
11502
11503 The Hald CLUT will be applied to the 10 first seconds (duration of
11504 @file{clut.nut}), then the latest picture of that CLUT stream will be applied
11505 to the remaining frames of the @code{mandelbrot} stream.
11506
11507 @subsubsection Hald CLUT with preview
11508
11509 A Hald CLUT is supposed to be a squared image of @code{Level*Level*Level} by
11510 @code{Level*Level*Level} pixels. For a given Hald CLUT, FFmpeg will select the
11511 biggest possible square starting at the top left of the picture. The remaining
11512 padding pixels (bottom or right) will be ignored. This area can be used to add
11513 a preview of the Hald CLUT.
11514
11515 Typically, the following generated Hald CLUT will be supported by the
11516 @code{haldclut} filter:
11517
11518 @example
11519 ffmpeg -f lavfi -i @ref{haldclutsrc}=8 -vf "
11520    pad=iw+320 [padded_clut];
11521    smptebars=s=320x256, split [a][b];
11522    [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
11523    [main][b] overlay=W-320" -frames:v 1 clut.png
11524 @end example
11525
11526 It contains the original and a preview of the effect of the CLUT: SMPTE color
11527 bars are displayed on the right-top, and below the same color bars processed by
11528 the color changes.
11529
11530 Then, the effect of this Hald CLUT can be visualized with:
11531 @example
11532 ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
11533 @end example
11534
11535 @section hflip
11536
11537 Flip the input video horizontally.
11538
11539 For example, to horizontally flip the input video with @command{ffmpeg}:
11540 @example
11541 ffmpeg -i in.avi -vf "hflip" out.avi
11542 @end example
11543
11544 @section histeq
11545 This filter applies a global color histogram equalization on a
11546 per-frame basis.
11547
11548 It can be used to correct video that has a compressed range of pixel
11549 intensities.  The filter redistributes the pixel intensities to
11550 equalize their distribution across the intensity range. It may be
11551 viewed as an "automatically adjusting contrast filter". This filter is
11552 useful only for correcting degraded or poorly captured source
11553 video.
11554
11555 The filter accepts the following options:
11556
11557 @table @option
11558 @item strength
11559 Determine the amount of equalization to be applied.  As the strength
11560 is reduced, the distribution of pixel intensities more-and-more
11561 approaches that of the input frame. The value must be a float number
11562 in the range [0,1] and defaults to 0.200.
11563
11564 @item intensity
11565 Set the maximum intensity that can generated and scale the output
11566 values appropriately.  The strength should be set as desired and then
11567 the intensity can be limited if needed to avoid washing-out. The value
11568 must be a float number in the range [0,1] and defaults to 0.210.
11569
11570 @item antibanding
11571 Set the antibanding level. If enabled the filter will randomly vary
11572 the luminance of output pixels by a small amount to avoid banding of
11573 the histogram. Possible values are @code{none}, @code{weak} or
11574 @code{strong}. It defaults to @code{none}.
11575 @end table
11576
11577 @section histogram
11578
11579 Compute and draw a color distribution histogram for the input video.
11580
11581 The computed histogram is a representation of the color component
11582 distribution in an image.
11583
11584 Standard histogram displays the color components distribution in an image.
11585 Displays color graph for each color component. Shows distribution of
11586 the Y, U, V, A or R, G, B components, depending on input format, in the
11587 current frame. Below each graph a color component scale meter is shown.
11588
11589 The filter accepts the following options:
11590
11591 @table @option
11592 @item level_height
11593 Set height of level. Default value is @code{200}.
11594 Allowed range is [50, 2048].
11595
11596 @item scale_height
11597 Set height of color scale. Default value is @code{12}.
11598 Allowed range is [0, 40].
11599
11600 @item display_mode
11601 Set display mode.
11602 It accepts the following values:
11603 @table @samp
11604 @item stack
11605 Per color component graphs are placed below each other.
11606
11607 @item parade
11608 Per color component graphs are placed side by side.
11609
11610 @item overlay
11611 Presents information identical to that in the @code{parade}, except
11612 that the graphs representing color components are superimposed directly
11613 over one another.
11614 @end table
11615 Default is @code{stack}.
11616
11617 @item levels_mode
11618 Set mode. Can be either @code{linear}, or @code{logarithmic}.
11619 Default is @code{linear}.
11620
11621 @item components
11622 Set what color components to display.
11623 Default is @code{7}.
11624
11625 @item fgopacity
11626 Set foreground opacity. Default is @code{0.7}.
11627
11628 @item bgopacity
11629 Set background opacity. Default is @code{0.5}.
11630 @end table
11631
11632 @subsection Examples
11633
11634 @itemize
11635
11636 @item
11637 Calculate and draw histogram:
11638 @example
11639 ffplay -i input -vf histogram
11640 @end example
11641
11642 @end itemize
11643
11644 @anchor{hqdn3d}
11645 @section hqdn3d
11646
11647 This is a high precision/quality 3d denoise filter. It aims to reduce
11648 image noise, producing smooth images and making still images really
11649 still. It should enhance compressibility.
11650
11651 It accepts the following optional parameters:
11652
11653 @table @option
11654 @item luma_spatial
11655 A non-negative floating point number which specifies spatial luma strength.
11656 It defaults to 4.0.
11657
11658 @item chroma_spatial
11659 A non-negative floating point number which specifies spatial chroma strength.
11660 It defaults to 3.0*@var{luma_spatial}/4.0.
11661
11662 @item luma_tmp
11663 A floating point number which specifies luma temporal strength. It defaults to
11664 6.0*@var{luma_spatial}/4.0.
11665
11666 @item chroma_tmp
11667 A floating point number which specifies chroma temporal strength. It defaults to
11668 @var{luma_tmp}*@var{chroma_spatial}/@var{luma_spatial}.
11669 @end table
11670
11671 @anchor{hwdownload}
11672 @section hwdownload
11673
11674 Download hardware frames to system memory.
11675
11676 The input must be in hardware frames, and the output a non-hardware format.
11677 Not all formats will be supported on the output - it may be necessary to insert
11678 an additional @option{format} filter immediately following in the graph to get
11679 the output in a supported format.
11680
11681 @section hwmap
11682
11683 Map hardware frames to system memory or to another device.
11684
11685 This filter has several different modes of operation; which one is used depends
11686 on the input and output formats:
11687 @itemize
11688 @item
11689 Hardware frame input, normal frame output
11690
11691 Map the input frames to system memory and pass them to the output.  If the
11692 original hardware frame is later required (for example, after overlaying
11693 something else on part of it), the @option{hwmap} filter can be used again
11694 in the next mode to retrieve it.
11695 @item
11696 Normal frame input, hardware frame output
11697
11698 If the input is actually a software-mapped hardware frame, then unmap it -
11699 that is, return the original hardware frame.
11700
11701 Otherwise, a device must be provided.  Create new hardware surfaces on that
11702 device for the output, then map them back to the software format at the input
11703 and give those frames to the preceding filter.  This will then act like the
11704 @option{hwupload} filter, but may be able to avoid an additional copy when
11705 the input is already in a compatible format.
11706 @item
11707 Hardware frame input and output
11708
11709 A device must be supplied for the output, either directly or with the
11710 @option{derive_device} option.  The input and output devices must be of
11711 different types and compatible - the exact meaning of this is
11712 system-dependent, but typically it means that they must refer to the same
11713 underlying hardware context (for example, refer to the same graphics card).
11714
11715 If the input frames were originally created on the output device, then unmap
11716 to retrieve the original frames.
11717
11718 Otherwise, map the frames to the output device - create new hardware frames
11719 on the output corresponding to the frames on the input.
11720 @end itemize
11721
11722 The following additional parameters are accepted:
11723
11724 @table @option
11725 @item mode
11726 Set the frame mapping mode.  Some combination of:
11727 @table @var
11728 @item read
11729 The mapped frame should be readable.
11730 @item write
11731 The mapped frame should be writeable.
11732 @item overwrite
11733 The mapping will always overwrite the entire frame.
11734
11735 This may improve performance in some cases, as the original contents of the
11736 frame need not be loaded.
11737 @item direct
11738 The mapping must not involve any copying.
11739
11740 Indirect mappings to copies of frames are created in some cases where either
11741 direct mapping is not possible or it would have unexpected properties.
11742 Setting this flag ensures that the mapping is direct and will fail if that is
11743 not possible.
11744 @end table
11745 Defaults to @var{read+write} if not specified.
11746
11747 @item derive_device @var{type}
11748 Rather than using the device supplied at initialisation, instead derive a new
11749 device of type @var{type} from the device the input frames exist on.
11750
11751 @item reverse
11752 In a hardware to hardware mapping, map in reverse - create frames in the sink
11753 and map them back to the source.  This may be necessary in some cases where
11754 a mapping in one direction is required but only the opposite direction is
11755 supported by the devices being used.
11756
11757 This option is dangerous - it may break the preceding filter in undefined
11758 ways if there are any additional constraints on that filter's output.
11759 Do not use it without fully understanding the implications of its use.
11760 @end table
11761
11762 @anchor{hwupload}
11763 @section hwupload
11764
11765 Upload system memory frames to hardware surfaces.
11766
11767 The device to upload to must be supplied when the filter is initialised.  If
11768 using ffmpeg, select the appropriate device with the @option{-filter_hw_device}
11769 option.
11770
11771 @anchor{hwupload_cuda}
11772 @section hwupload_cuda
11773
11774 Upload system memory frames to a CUDA device.
11775
11776 It accepts the following optional parameters:
11777
11778 @table @option
11779 @item device
11780 The number of the CUDA device to use
11781 @end table
11782
11783 @section hqx
11784
11785 Apply a high-quality magnification filter designed for pixel art. This filter
11786 was originally created by Maxim Stepin.
11787
11788 It accepts the following option:
11789
11790 @table @option
11791 @item n
11792 Set the scaling dimension: @code{2} for @code{hq2x}, @code{3} for
11793 @code{hq3x} and @code{4} for @code{hq4x}.
11794 Default is @code{3}.
11795 @end table
11796
11797 @section hstack
11798 Stack input videos horizontally.
11799
11800 All streams must be of same pixel format and of same height.
11801
11802 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
11803 to create same output.
11804
11805 The filter accepts the following option:
11806
11807 @table @option
11808 @item inputs
11809 Set number of input streams. Default is 2.
11810
11811 @item shortest
11812 If set to 1, force the output to terminate when the shortest input
11813 terminates. Default value is 0.
11814 @end table
11815
11816 @section hue
11817
11818 Modify the hue and/or the saturation of the input.
11819
11820 It accepts the following parameters:
11821
11822 @table @option
11823 @item h
11824 Specify the hue angle as a number of degrees. It accepts an expression,
11825 and defaults to "0".
11826
11827 @item s
11828 Specify the saturation in the [-10,10] range. It accepts an expression and
11829 defaults to "1".
11830
11831 @item H
11832 Specify the hue angle as a number of radians. It accepts an
11833 expression, and defaults to "0".
11834
11835 @item b
11836 Specify the brightness in the [-10,10] range. It accepts an expression and
11837 defaults to "0".
11838 @end table
11839
11840 @option{h} and @option{H} are mutually exclusive, and can't be
11841 specified at the same time.
11842
11843 The @option{b}, @option{h}, @option{H} and @option{s} option values are
11844 expressions containing the following constants:
11845
11846 @table @option
11847 @item n
11848 frame count of the input frame starting from 0
11849
11850 @item pts
11851 presentation timestamp of the input frame expressed in time base units
11852
11853 @item r
11854 frame rate of the input video, NAN if the input frame rate is unknown
11855
11856 @item t
11857 timestamp expressed in seconds, NAN if the input timestamp is unknown
11858
11859 @item tb
11860 time base of the input video
11861 @end table
11862
11863 @subsection Examples
11864
11865 @itemize
11866 @item
11867 Set the hue to 90 degrees and the saturation to 1.0:
11868 @example
11869 hue=h=90:s=1
11870 @end example
11871
11872 @item
11873 Same command but expressing the hue in radians:
11874 @example
11875 hue=H=PI/2:s=1
11876 @end example
11877
11878 @item
11879 Rotate hue and make the saturation swing between 0
11880 and 2 over a period of 1 second:
11881 @example
11882 hue="H=2*PI*t: s=sin(2*PI*t)+1"
11883 @end example
11884
11885 @item
11886 Apply a 3 seconds saturation fade-in effect starting at 0:
11887 @example
11888 hue="s=min(t/3\,1)"
11889 @end example
11890
11891 The general fade-in expression can be written as:
11892 @example
11893 hue="s=min(0\, max((t-START)/DURATION\, 1))"
11894 @end example
11895
11896 @item
11897 Apply a 3 seconds saturation fade-out effect starting at 5 seconds:
11898 @example
11899 hue="s=max(0\, min(1\, (8-t)/3))"
11900 @end example
11901
11902 The general fade-out expression can be written as:
11903 @example
11904 hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
11905 @end example
11906
11907 @end itemize
11908
11909 @subsection Commands
11910
11911 This filter supports the following commands:
11912 @table @option
11913 @item b
11914 @item s
11915 @item h
11916 @item H
11917 Modify the hue and/or the saturation and/or brightness of the input video.
11918 The command accepts the same syntax of the corresponding option.
11919
11920 If the specified expression is not valid, it is kept at its current
11921 value.
11922 @end table
11923
11924 @section hysteresis
11925
11926 Grow first stream into second stream by connecting components.
11927 This makes it possible to build more robust edge masks.
11928
11929 This filter accepts the following options:
11930
11931 @table @option
11932 @item planes
11933 Set which planes will be processed as bitmap, unprocessed planes will be
11934 copied from first stream.
11935 By default value 0xf, all planes will be processed.
11936
11937 @item threshold
11938 Set threshold which is used in filtering. If pixel component value is higher than
11939 this value filter algorithm for connecting components is activated.
11940 By default value is 0.
11941 @end table
11942
11943 @section idet
11944
11945 Detect video interlacing type.
11946
11947 This filter tries to detect if the input frames are interlaced, progressive,
11948 top or bottom field first. It will also try to detect fields that are
11949 repeated between adjacent frames (a sign of telecine).
11950
11951 Single frame detection considers only immediately adjacent frames when classifying each frame.
11952 Multiple frame detection incorporates the classification history of previous frames.
11953
11954 The filter will log these metadata values:
11955
11956 @table @option
11957 @item single.current_frame
11958 Detected type of current frame using single-frame detection. One of:
11959 ``tff'' (top field first), ``bff'' (bottom field first),
11960 ``progressive'', or ``undetermined''
11961
11962 @item single.tff
11963 Cumulative number of frames detected as top field first using single-frame detection.
11964
11965 @item multiple.tff
11966 Cumulative number of frames detected as top field first using multiple-frame detection.
11967
11968 @item single.bff
11969 Cumulative number of frames detected as bottom field first using single-frame detection.
11970
11971 @item multiple.current_frame
11972 Detected type of current frame using multiple-frame detection. One of:
11973 ``tff'' (top field first), ``bff'' (bottom field first),
11974 ``progressive'', or ``undetermined''
11975
11976 @item multiple.bff
11977 Cumulative number of frames detected as bottom field first using multiple-frame detection.
11978
11979 @item single.progressive
11980 Cumulative number of frames detected as progressive using single-frame detection.
11981
11982 @item multiple.progressive
11983 Cumulative number of frames detected as progressive using multiple-frame detection.
11984
11985 @item single.undetermined
11986 Cumulative number of frames that could not be classified using single-frame detection.
11987
11988 @item multiple.undetermined
11989 Cumulative number of frames that could not be classified using multiple-frame detection.
11990
11991 @item repeated.current_frame
11992 Which field in the current frame is repeated from the last. One of ``neither'', ``top'', or ``bottom''.
11993
11994 @item repeated.neither
11995 Cumulative number of frames with no repeated field.
11996
11997 @item repeated.top
11998 Cumulative number of frames with the top field repeated from the previous frame's top field.
11999
12000 @item repeated.bottom
12001 Cumulative number of frames with the bottom field repeated from the previous frame's bottom field.
12002 @end table
12003
12004 The filter accepts the following options:
12005
12006 @table @option
12007 @item intl_thres
12008 Set interlacing threshold.
12009 @item prog_thres
12010 Set progressive threshold.
12011 @item rep_thres
12012 Threshold for repeated field detection.
12013 @item half_life
12014 Number of frames after which a given frame's contribution to the
12015 statistics is halved (i.e., it contributes only 0.5 to its
12016 classification). The default of 0 means that all frames seen are given
12017 full weight of 1.0 forever.
12018 @item analyze_interlaced_flag
12019 When this is not 0 then idet will use the specified number of frames to determine
12020 if the interlaced flag is accurate, it will not count undetermined frames.
12021 If the flag is found to be accurate it will be used without any further
12022 computations, if it is found to be inaccurate it will be cleared without any
12023 further computations. This allows inserting the idet filter as a low computational
12024 method to clean up the interlaced flag
12025 @end table
12026
12027 @section il
12028
12029 Deinterleave or interleave fields.
12030
12031 This filter allows one to process interlaced images fields without
12032 deinterlacing them. Deinterleaving splits the input frame into 2
12033 fields (so called half pictures). Odd lines are moved to the top
12034 half of the output image, even lines to the bottom half.
12035 You can process (filter) them independently and then re-interleave them.
12036
12037 The filter accepts the following options:
12038
12039 @table @option
12040 @item luma_mode, l
12041 @item chroma_mode, c
12042 @item alpha_mode, a
12043 Available values for @var{luma_mode}, @var{chroma_mode} and
12044 @var{alpha_mode} are:
12045
12046 @table @samp
12047 @item none
12048 Do nothing.
12049
12050 @item deinterleave, d
12051 Deinterleave fields, placing one above the other.
12052
12053 @item interleave, i
12054 Interleave fields. Reverse the effect of deinterleaving.
12055 @end table
12056 Default value is @code{none}.
12057
12058 @item luma_swap, ls
12059 @item chroma_swap, cs
12060 @item alpha_swap, as
12061 Swap luma/chroma/alpha fields. Exchange even & odd lines. Default value is @code{0}.
12062 @end table
12063
12064 @section inflate
12065
12066 Apply inflate effect to the video.
12067
12068 This filter replaces the pixel by the local(3x3) average by taking into account
12069 only values higher than the pixel.
12070
12071 It accepts the following options:
12072
12073 @table @option
12074 @item threshold0
12075 @item threshold1
12076 @item threshold2
12077 @item threshold3
12078 Limit the maximum change for each plane, default is 65535.
12079 If 0, plane will remain unchanged.
12080 @end table
12081
12082 @section interlace
12083
12084 Simple interlacing filter from progressive contents. This interleaves upper (or
12085 lower) lines from odd frames with lower (or upper) lines from even frames,
12086 halving the frame rate and preserving image height.
12087
12088 @example
12089    Original        Original             New Frame
12090    Frame 'j'      Frame 'j+1'             (tff)
12091   ==========      ===========       ==================
12092     Line 0  -------------------->    Frame 'j' Line 0
12093     Line 1          Line 1  ---->   Frame 'j+1' Line 1
12094     Line 2 --------------------->    Frame 'j' Line 2
12095     Line 3          Line 3  ---->   Frame 'j+1' Line 3
12096      ...             ...                   ...
12097 New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
12098 @end example
12099
12100 It accepts the following optional parameters:
12101
12102 @table @option
12103 @item scan
12104 This determines whether the interlaced frame is taken from the even
12105 (tff - default) or odd (bff) lines of the progressive frame.
12106
12107 @item lowpass
12108 Vertical lowpass filter to avoid twitter interlacing and
12109 reduce moire patterns.
12110
12111 @table @samp
12112 @item 0, off
12113 Disable vertical lowpass filter
12114
12115 @item 1, linear
12116 Enable linear filter (default)
12117
12118 @item 2, complex
12119 Enable complex filter. This will slightly less reduce twitter and moire
12120 but better retain detail and subjective sharpness impression.
12121
12122 @end table
12123 @end table
12124
12125 @section kerndeint
12126
12127 Deinterlace input video by applying Donald Graft's adaptive kernel
12128 deinterling. Work on interlaced parts of a video to produce
12129 progressive frames.
12130
12131 The description of the accepted parameters follows.
12132
12133 @table @option
12134 @item thresh
12135 Set the threshold which affects the filter's tolerance when
12136 determining if a pixel line must be processed. It must be an integer
12137 in the range [0,255] and defaults to 10. A value of 0 will result in
12138 applying the process on every pixels.
12139
12140 @item map
12141 Paint pixels exceeding the threshold value to white if set to 1.
12142 Default is 0.
12143
12144 @item order
12145 Set the fields order. Swap fields if set to 1, leave fields alone if
12146 0. Default is 0.
12147
12148 @item sharp
12149 Enable additional sharpening if set to 1. Default is 0.
12150
12151 @item twoway
12152 Enable twoway sharpening if set to 1. Default is 0.
12153 @end table
12154
12155 @subsection Examples
12156
12157 @itemize
12158 @item
12159 Apply default values:
12160 @example
12161 kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
12162 @end example
12163
12164 @item
12165 Enable additional sharpening:
12166 @example
12167 kerndeint=sharp=1
12168 @end example
12169
12170 @item
12171 Paint processed pixels in white:
12172 @example
12173 kerndeint=map=1
12174 @end example
12175 @end itemize
12176
12177 @section lagfun
12178
12179 Slowly update darker pixels.
12180
12181 This filter makes short flashes of light appear longer.
12182 This filter accepts the following options:
12183
12184 @table @option
12185 @item decay
12186 Set factor for decaying. Default is .95. Allowed range is from 0 to 1.
12187
12188 @item planes
12189 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
12190 @end table
12191
12192 @section lenscorrection
12193
12194 Correct radial lens distortion
12195
12196 This filter can be used to correct for radial distortion as can result from the use
12197 of wide angle lenses, and thereby re-rectify the image. To find the right parameters
12198 one can use tools available for example as part of opencv or simply trial-and-error.
12199 To use opencv use the calibration sample (under samples/cpp) from the opencv sources
12200 and extract the k1 and k2 coefficients from the resulting matrix.
12201
12202 Note that effectively the same filter is available in the open-source tools Krita and
12203 Digikam from the KDE project.
12204
12205 In contrast to the @ref{vignette} filter, which can also be used to compensate lens errors,
12206 this filter corrects the distortion of the image, whereas @ref{vignette} corrects the
12207 brightness distribution, so you may want to use both filters together in certain
12208 cases, though you will have to take care of ordering, i.e. whether vignetting should
12209 be applied before or after lens correction.
12210
12211 @subsection Options
12212
12213 The filter accepts the following options:
12214
12215 @table @option
12216 @item cx
12217 Relative x-coordinate of the focal point of the image, and thereby the center of the
12218 distortion. This value has a range [0,1] and is expressed as fractions of the image
12219 width. Default is 0.5.
12220 @item cy
12221 Relative y-coordinate of the focal point of the image, and thereby the center of the
12222 distortion. This value has a range [0,1] and is expressed as fractions of the image
12223 height. Default is 0.5.
12224 @item k1
12225 Coefficient of the quadratic correction term. This value has a range [-1,1]. 0 means
12226 no correction. Default is 0.
12227 @item k2
12228 Coefficient of the double quadratic correction term. This value has a range [-1,1].
12229 0 means no correction. Default is 0.
12230 @end table
12231
12232 The formula that generates the correction is:
12233
12234 @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)
12235
12236 where @var{r_0} is halve of the image diagonal and @var{r_src} and @var{r_tgt} are the
12237 distances from the focal point in the source and target images, respectively.
12238
12239 @section lensfun
12240
12241 Apply lens correction via the lensfun library (@url{http://lensfun.sourceforge.net/}).
12242
12243 The @code{lensfun} filter requires the camera make, camera model, and lens model
12244 to apply the lens correction. The filter will load the lensfun database and
12245 query it to find the corresponding camera and lens entries in the database. As
12246 long as these entries can be found with the given options, the filter can
12247 perform corrections on frames. Note that incomplete strings will result in the
12248 filter choosing the best match with the given options, and the filter will
12249 output the chosen camera and lens models (logged with level "info"). You must
12250 provide the make, camera model, and lens model as they are required.
12251
12252 The filter accepts the following options:
12253
12254 @table @option
12255 @item make
12256 The make of the camera (for example, "Canon"). This option is required.
12257
12258 @item model
12259 The model of the camera (for example, "Canon EOS 100D"). This option is
12260 required.
12261
12262 @item lens_model
12263 The model of the lens (for example, "Canon EF-S 18-55mm f/3.5-5.6 IS STM"). This
12264 option is required.
12265
12266 @item mode
12267 The type of correction to apply. The following values are valid options:
12268
12269 @table @samp
12270 @item vignetting
12271 Enables fixing lens vignetting.
12272
12273 @item geometry
12274 Enables fixing lens geometry. This is the default.
12275
12276 @item subpixel
12277 Enables fixing chromatic aberrations.
12278
12279 @item vig_geo
12280 Enables fixing lens vignetting and lens geometry.
12281
12282 @item vig_subpixel
12283 Enables fixing lens vignetting and chromatic aberrations.
12284
12285 @item distortion
12286 Enables fixing both lens geometry and chromatic aberrations.
12287
12288 @item all
12289 Enables all possible corrections.
12290
12291 @end table
12292 @item focal_length
12293 The focal length of the image/video (zoom; expected constant for video). For
12294 example, a 18--55mm lens has focal length range of [18--55], so a value in that
12295 range should be chosen when using that lens. Default 18.
12296
12297 @item aperture
12298 The aperture of the image/video (expected constant for video). Note that
12299 aperture is only used for vignetting correction. Default 3.5.
12300
12301 @item focus_distance
12302 The focus distance of the image/video (expected constant for video). Note that
12303 focus distance is only used for vignetting and only slightly affects the
12304 vignetting correction process. If unknown, leave it at the default value (which
12305 is 1000).
12306
12307 @item scale
12308 The scale factor which is applied after transformation. After correction the
12309 video is no longer necessarily rectangular. This parameter controls how much of
12310 the resulting image is visible. The value 0 means that a value will be chosen
12311 automatically such that there is little or no unmapped area in the output
12312 image. 1.0 means that no additional scaling is done. Lower values may result
12313 in more of the corrected image being visible, while higher values may avoid
12314 unmapped areas in the output.
12315
12316 @item target_geometry
12317 The target geometry of the output image/video. The following values are valid
12318 options:
12319
12320 @table @samp
12321 @item rectilinear (default)
12322 @item fisheye
12323 @item panoramic
12324 @item equirectangular
12325 @item fisheye_orthographic
12326 @item fisheye_stereographic
12327 @item fisheye_equisolid
12328 @item fisheye_thoby
12329 @end table
12330 @item reverse
12331 Apply the reverse of image correction (instead of correcting distortion, apply
12332 it).
12333
12334 @item interpolation
12335 The type of interpolation used when correcting distortion. The following values
12336 are valid options:
12337
12338 @table @samp
12339 @item nearest
12340 @item linear (default)
12341 @item lanczos
12342 @end table
12343 @end table
12344
12345 @subsection Examples
12346
12347 @itemize
12348 @item
12349 Apply lens correction with make "Canon", camera model "Canon EOS 100D", and lens
12350 model "Canon EF-S 18-55mm f/3.5-5.6 IS STM" with focal length of "18" and
12351 aperture of "8.0".
12352
12353 @example
12354 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
12355 @end example
12356
12357 @item
12358 Apply the same as before, but only for the first 5 seconds of video.
12359
12360 @example
12361 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
12362 @end example
12363
12364 @end itemize
12365
12366 @section libvmaf
12367
12368 Obtain the VMAF (Video Multi-Method Assessment Fusion)
12369 score between two input videos.
12370
12371 The obtained VMAF score is printed through the logging system.
12372
12373 It requires Netflix's vmaf library (libvmaf) as a pre-requisite.
12374 After installing the library it can be enabled using:
12375 @code{./configure --enable-libvmaf --enable-version3}.
12376 If no model path is specified it uses the default model: @code{vmaf_v0.6.1.pkl}.
12377
12378 The filter has following options:
12379
12380 @table @option
12381 @item model_path
12382 Set the model path which is to be used for SVM.
12383 Default value: @code{"/usr/local/share/model/vmaf_v0.6.1.pkl"}
12384
12385 @item log_path
12386 Set the file path to be used to store logs.
12387
12388 @item log_fmt
12389 Set the format of the log file (xml or json).
12390
12391 @item enable_transform
12392 This option can enable/disable the @code{score_transform} applied to the final predicted VMAF score,
12393 if you have specified score_transform option in the input parameter file passed to @code{run_vmaf_training.py}
12394 Default value: @code{false}
12395
12396 @item phone_model
12397 Invokes the phone model which will generate VMAF scores higher than in the
12398 regular model, which is more suitable for laptop, TV, etc. viewing conditions.
12399 Default value: @code{false}
12400
12401 @item psnr
12402 Enables computing psnr along with vmaf.
12403 Default value: @code{false}
12404
12405 @item ssim
12406 Enables computing ssim along with vmaf.
12407 Default value: @code{false}
12408
12409 @item ms_ssim
12410 Enables computing ms_ssim along with vmaf.
12411 Default value: @code{false}
12412
12413 @item pool
12414 Set the pool method to be used for computing vmaf.
12415 Options are @code{min}, @code{harmonic_mean} or @code{mean} (default).
12416
12417 @item n_threads
12418 Set number of threads to be used when computing vmaf.
12419 Default value: @code{0}, which makes use of all available logical processors.
12420
12421 @item n_subsample
12422 Set interval for frame subsampling used when computing vmaf.
12423 Default value: @code{1}
12424
12425 @item enable_conf_interval
12426 Enables confidence interval.
12427 Default value: @code{false}
12428 @end table
12429
12430 This filter also supports the @ref{framesync} options.
12431
12432 @subsection Examples
12433 @itemize
12434 @item
12435 On the below examples the input file @file{main.mpg} being processed is
12436 compared with the reference file @file{ref.mpg}.
12437
12438 @example
12439 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf -f null -
12440 @end example
12441
12442 @item
12443 Example with options:
12444 @example
12445 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf="psnr=1:log_fmt=json" -f null -
12446 @end example
12447
12448 @item
12449 Example with options and different containers:
12450 @example
12451 ffmpeg -i main.mpg -i ref.mkv -lavfi "[0:v]settb=1/AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=1/AVTB,setpts=PTS-STARTPTS[ref];[main][ref]libvmaf=psnr=1:log_fmt=json" -f null -
12452 @end example
12453 @end itemize
12454
12455 @section limiter
12456
12457 Limits the pixel components values to the specified range [min, max].
12458
12459 The filter accepts the following options:
12460
12461 @table @option
12462 @item min
12463 Lower bound. Defaults to the lowest allowed value for the input.
12464
12465 @item max
12466 Upper bound. Defaults to the highest allowed value for the input.
12467
12468 @item planes
12469 Specify which planes will be processed. Defaults to all available.
12470 @end table
12471
12472 @section loop
12473
12474 Loop video frames.
12475
12476 The filter accepts the following options:
12477
12478 @table @option
12479 @item loop
12480 Set the number of loops. Setting this value to -1 will result in infinite loops.
12481 Default is 0.
12482
12483 @item size
12484 Set maximal size in number of frames. Default is 0.
12485
12486 @item start
12487 Set first frame of loop. Default is 0.
12488 @end table
12489
12490 @subsection Examples
12491
12492 @itemize
12493 @item
12494 Loop single first frame infinitely:
12495 @example
12496 loop=loop=-1:size=1:start=0
12497 @end example
12498
12499 @item
12500 Loop single first frame 10 times:
12501 @example
12502 loop=loop=10:size=1:start=0
12503 @end example
12504
12505 @item
12506 Loop 10 first frames 5 times:
12507 @example
12508 loop=loop=5:size=10:start=0
12509 @end example
12510 @end itemize
12511
12512 @section lut1d
12513
12514 Apply a 1D LUT to an input video.
12515
12516 The filter accepts the following options:
12517
12518 @table @option
12519 @item file
12520 Set the 1D LUT file name.
12521
12522 Currently supported formats:
12523 @table @samp
12524 @item cube
12525 Iridas
12526 @item csp
12527 cineSpace
12528 @end table
12529
12530 @item interp
12531 Select interpolation mode.
12532
12533 Available values are:
12534
12535 @table @samp
12536 @item nearest
12537 Use values from the nearest defined point.
12538 @item linear
12539 Interpolate values using the linear interpolation.
12540 @item cosine
12541 Interpolate values using the cosine interpolation.
12542 @item cubic
12543 Interpolate values using the cubic interpolation.
12544 @item spline
12545 Interpolate values using the spline interpolation.
12546 @end table
12547 @end table
12548
12549 @anchor{lut3d}
12550 @section lut3d
12551
12552 Apply a 3D LUT to an input video.
12553
12554 The filter accepts the following options:
12555
12556 @table @option
12557 @item file
12558 Set the 3D LUT file name.
12559
12560 Currently supported formats:
12561 @table @samp
12562 @item 3dl
12563 AfterEffects
12564 @item cube
12565 Iridas
12566 @item dat
12567 DaVinci
12568 @item m3d
12569 Pandora
12570 @item csp
12571 cineSpace
12572 @end table
12573 @item interp
12574 Select interpolation mode.
12575
12576 Available values are:
12577
12578 @table @samp
12579 @item nearest
12580 Use values from the nearest defined point.
12581 @item trilinear
12582 Interpolate values using the 8 points defining a cube.
12583 @item tetrahedral
12584 Interpolate values using a tetrahedron.
12585 @end table
12586 @end table
12587
12588 @section lumakey
12589
12590 Turn certain luma values into transparency.
12591
12592 The filter accepts the following options:
12593
12594 @table @option
12595 @item threshold
12596 Set the luma which will be used as base for transparency.
12597 Default value is @code{0}.
12598
12599 @item tolerance
12600 Set the range of luma values to be keyed out.
12601 Default value is @code{0}.
12602
12603 @item softness
12604 Set the range of softness. Default value is @code{0}.
12605 Use this to control gradual transition from zero to full transparency.
12606 @end table
12607
12608 @section lut, lutrgb, lutyuv
12609
12610 Compute a look-up table for binding each pixel component input value
12611 to an output value, and apply it to the input video.
12612
12613 @var{lutyuv} applies a lookup table to a YUV input video, @var{lutrgb}
12614 to an RGB input video.
12615
12616 These filters accept the following parameters:
12617 @table @option
12618 @item c0
12619 set first pixel component expression
12620 @item c1
12621 set second pixel component expression
12622 @item c2
12623 set third pixel component expression
12624 @item c3
12625 set fourth pixel component expression, corresponds to the alpha component
12626
12627 @item r
12628 set red component expression
12629 @item g
12630 set green component expression
12631 @item b
12632 set blue component expression
12633 @item a
12634 alpha component expression
12635
12636 @item y
12637 set Y/luminance component expression
12638 @item u
12639 set U/Cb component expression
12640 @item v
12641 set V/Cr component expression
12642 @end table
12643
12644 Each of them specifies the expression to use for computing the lookup table for
12645 the corresponding pixel component values.
12646
12647 The exact component associated to each of the @var{c*} options depends on the
12648 format in input.
12649
12650 The @var{lut} filter requires either YUV or RGB pixel formats in input,
12651 @var{lutrgb} requires RGB pixel formats in input, and @var{lutyuv} requires YUV.
12652
12653 The expressions can contain the following constants and functions:
12654
12655 @table @option
12656 @item w
12657 @item h
12658 The input width and height.
12659
12660 @item val
12661 The input value for the pixel component.
12662
12663 @item clipval
12664 The input value, clipped to the @var{minval}-@var{maxval} range.
12665
12666 @item maxval
12667 The maximum value for the pixel component.
12668
12669 @item minval
12670 The minimum value for the pixel component.
12671
12672 @item negval
12673 The negated value for the pixel component value, clipped to the
12674 @var{minval}-@var{maxval} range; it corresponds to the expression
12675 "maxval-clipval+minval".
12676
12677 @item clip(val)
12678 The computed value in @var{val}, clipped to the
12679 @var{minval}-@var{maxval} range.
12680
12681 @item gammaval(gamma)
12682 The computed gamma correction value of the pixel component value,
12683 clipped to the @var{minval}-@var{maxval} range. It corresponds to the
12684 expression
12685 "pow((clipval-minval)/(maxval-minval)\,@var{gamma})*(maxval-minval)+minval"
12686
12687 @end table
12688
12689 All expressions default to "val".
12690
12691 @subsection Examples
12692
12693 @itemize
12694 @item
12695 Negate input video:
12696 @example
12697 lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
12698 lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
12699 @end example
12700
12701 The above is the same as:
12702 @example
12703 lutrgb="r=negval:g=negval:b=negval"
12704 lutyuv="y=negval:u=negval:v=negval"
12705 @end example
12706
12707 @item
12708 Negate luminance:
12709 @example
12710 lutyuv=y=negval
12711 @end example
12712
12713 @item
12714 Remove chroma components, turning the video into a graytone image:
12715 @example
12716 lutyuv="u=128:v=128"
12717 @end example
12718
12719 @item
12720 Apply a luma burning effect:
12721 @example
12722 lutyuv="y=2*val"
12723 @end example
12724
12725 @item
12726 Remove green and blue components:
12727 @example
12728 lutrgb="g=0:b=0"
12729 @end example
12730
12731 @item
12732 Set a constant alpha channel value on input:
12733 @example
12734 format=rgba,lutrgb=a="maxval-minval/2"
12735 @end example
12736
12737 @item
12738 Correct luminance gamma by a factor of 0.5:
12739 @example
12740 lutyuv=y=gammaval(0.5)
12741 @end example
12742
12743 @item
12744 Discard least significant bits of luma:
12745 @example
12746 lutyuv=y='bitand(val, 128+64+32)'
12747 @end example
12748
12749 @item
12750 Technicolor like effect:
12751 @example
12752 lutyuv=u='(val-maxval/2)*2+maxval/2':v='(val-maxval/2)*2+maxval/2'
12753 @end example
12754 @end itemize
12755
12756 @section lut2, tlut2
12757
12758 The @code{lut2} filter takes two input streams and outputs one
12759 stream.
12760
12761 The @code{tlut2} (time lut2) filter takes two consecutive frames
12762 from one single stream.
12763
12764 This filter accepts the following parameters:
12765 @table @option
12766 @item c0
12767 set first pixel component expression
12768 @item c1
12769 set second pixel component expression
12770 @item c2
12771 set third pixel component expression
12772 @item c3
12773 set fourth pixel component expression, corresponds to the alpha component
12774
12775 @item d
12776 set output bit depth, only available for @code{lut2} filter. By default is 0,
12777 which means bit depth is automatically picked from first input format.
12778 @end table
12779
12780 Each of them specifies the expression to use for computing the lookup table for
12781 the corresponding pixel component values.
12782
12783 The exact component associated to each of the @var{c*} options depends on the
12784 format in inputs.
12785
12786 The expressions can contain the following constants:
12787
12788 @table @option
12789 @item w
12790 @item h
12791 The input width and height.
12792
12793 @item x
12794 The first input value for the pixel component.
12795
12796 @item y
12797 The second input value for the pixel component.
12798
12799 @item bdx
12800 The first input video bit depth.
12801
12802 @item bdy
12803 The second input video bit depth.
12804 @end table
12805
12806 All expressions default to "x".
12807
12808 @subsection Examples
12809
12810 @itemize
12811 @item
12812 Highlight differences between two RGB video streams:
12813 @example
12814 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)'
12815 @end example
12816
12817 @item
12818 Highlight differences between two YUV video streams:
12819 @example
12820 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)'
12821 @end example
12822
12823 @item
12824 Show max difference between two video streams:
12825 @example
12826 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)))'
12827 @end example
12828 @end itemize
12829
12830 @section maskedclamp
12831
12832 Clamp the first input stream with the second input and third input stream.
12833
12834 Returns the value of first stream to be between second input
12835 stream - @code{undershoot} and third input stream + @code{overshoot}.
12836
12837 This filter accepts the following options:
12838 @table @option
12839 @item undershoot
12840 Default value is @code{0}.
12841
12842 @item overshoot
12843 Default value is @code{0}.
12844
12845 @item planes
12846 Set which planes will be processed as bitmap, unprocessed planes will be
12847 copied from first stream.
12848 By default value 0xf, all planes will be processed.
12849 @end table
12850
12851 @section maskedmax
12852
12853 Merge the second and third input stream into output stream using absolute differences
12854 between second input stream and first input stream and absolute difference between
12855 third input stream and first input stream. The picked value will be from second input
12856 stream if second absolute difference is greater than first one or from third input stream
12857 otherwise.
12858
12859 This filter accepts the following options:
12860 @table @option
12861 @item planes
12862 Set which planes will be processed as bitmap, unprocessed planes will be
12863 copied from first stream.
12864 By default value 0xf, all planes will be processed.
12865 @end table
12866
12867 @section maskedmerge
12868
12869 Merge the first input stream with the second input stream using per pixel
12870 weights in the third input stream.
12871
12872 A value of 0 in the third stream pixel component means that pixel component
12873 from first stream is returned unchanged, while maximum value (eg. 255 for
12874 8-bit videos) means that pixel component from second stream is returned
12875 unchanged. Intermediate values define the amount of merging between both
12876 input stream's pixel components.
12877
12878 This filter accepts the following options:
12879 @table @option
12880 @item planes
12881 Set which planes will be processed as bitmap, unprocessed planes will be
12882 copied from first stream.
12883 By default value 0xf, all planes will be processed.
12884 @end table
12885
12886 @section maskedmin
12887
12888 Merge the second and third input stream into output stream using absolute differences
12889 between second input stream and first input stream and absolute difference between
12890 third input stream and first input stream. The picked value will be from second input
12891 stream if second absolute difference is less than first one or from third input stream
12892 otherwise.
12893
12894 This filter accepts the following options:
12895 @table @option
12896 @item planes
12897 Set which planes will be processed as bitmap, unprocessed planes will be
12898 copied from first stream.
12899 By default value 0xf, all planes will be processed.
12900 @end table
12901
12902 @section maskfun
12903 Create mask from input video.
12904
12905 For example it is useful to create motion masks after @code{tblend} filter.
12906
12907 This filter accepts the following options:
12908
12909 @table @option
12910 @item low
12911 Set low threshold. Any pixel component lower or exact than this value will be set to 0.
12912
12913 @item high
12914 Set high threshold. Any pixel component higher than this value will be set to max value
12915 allowed for current pixel format.
12916
12917 @item planes
12918 Set planes to filter, by default all available planes are filtered.
12919
12920 @item fill
12921 Fill all frame pixels with this value.
12922
12923 @item sum
12924 Set max average pixel value for frame. If sum of all pixel components is higher that this
12925 average, output frame will be completely filled with value set by @var{fill} option.
12926 Typically useful for scene changes when used in combination with @code{tblend} filter.
12927 @end table
12928
12929 @section mcdeint
12930
12931 Apply motion-compensation deinterlacing.
12932
12933 It needs one field per frame as input and must thus be used together
12934 with yadif=1/3 or equivalent.
12935
12936 This filter accepts the following options:
12937 @table @option
12938 @item mode
12939 Set the deinterlacing mode.
12940
12941 It accepts one of the following values:
12942 @table @samp
12943 @item fast
12944 @item medium
12945 @item slow
12946 use iterative motion estimation
12947 @item extra_slow
12948 like @samp{slow}, but use multiple reference frames.
12949 @end table
12950 Default value is @samp{fast}.
12951
12952 @item parity
12953 Set the picture field parity assumed for the input video. It must be
12954 one of the following values:
12955
12956 @table @samp
12957 @item 0, tff
12958 assume top field first
12959 @item 1, bff
12960 assume bottom field first
12961 @end table
12962
12963 Default value is @samp{bff}.
12964
12965 @item qp
12966 Set per-block quantization parameter (QP) used by the internal
12967 encoder.
12968
12969 Higher values should result in a smoother motion vector field but less
12970 optimal individual vectors. Default value is 1.
12971 @end table
12972
12973 @section median
12974
12975 Pick median pixel from certain rectangle defined by radius.
12976
12977 This filter accepts the following options:
12978
12979 @table @option
12980 @item radius
12981 Set horizontal radius size. Default value is @code{1}.
12982 Allowed range is integer from 1 to 127.
12983
12984 @item planes
12985 Set which planes to process. Default is @code{15}, which is all available planes.
12986
12987 @item radiusV
12988 Set vertical radius size. Default value is @code{0}.
12989 Allowed range is integer from 0 to 127.
12990 If it is 0, value will be picked from horizontal @code{radius} option.
12991 @end table
12992
12993 @section mergeplanes
12994
12995 Merge color channel components from several video streams.
12996
12997 The filter accepts up to 4 input streams, and merge selected input
12998 planes to the output video.
12999
13000 This filter accepts the following options:
13001 @table @option
13002 @item mapping
13003 Set input to output plane mapping. Default is @code{0}.
13004
13005 The mappings is specified as a bitmap. It should be specified as a
13006 hexadecimal number in the form 0xAa[Bb[Cc[Dd]]]. 'Aa' describes the
13007 mapping for the first plane of the output stream. 'A' sets the number of
13008 the input stream to use (from 0 to 3), and 'a' the plane number of the
13009 corresponding input to use (from 0 to 3). The rest of the mappings is
13010 similar, 'Bb' describes the mapping for the output stream second
13011 plane, 'Cc' describes the mapping for the output stream third plane and
13012 'Dd' describes the mapping for the output stream fourth plane.
13013
13014 @item format
13015 Set output pixel format. Default is @code{yuva444p}.
13016 @end table
13017
13018 @subsection Examples
13019
13020 @itemize
13021 @item
13022 Merge three gray video streams of same width and height into single video stream:
13023 @example
13024 [a0][a1][a2]mergeplanes=0x001020:yuv444p
13025 @end example
13026
13027 @item
13028 Merge 1st yuv444p stream and 2nd gray video stream into yuva444p video stream:
13029 @example
13030 [a0][a1]mergeplanes=0x00010210:yuva444p
13031 @end example
13032
13033 @item
13034 Swap Y and A plane in yuva444p stream:
13035 @example
13036 format=yuva444p,mergeplanes=0x03010200:yuva444p
13037 @end example
13038
13039 @item
13040 Swap U and V plane in yuv420p stream:
13041 @example
13042 format=yuv420p,mergeplanes=0x000201:yuv420p
13043 @end example
13044
13045 @item
13046 Cast a rgb24 clip to yuv444p:
13047 @example
13048 format=rgb24,mergeplanes=0x000102:yuv444p
13049 @end example
13050 @end itemize
13051
13052 @section mestimate
13053
13054 Estimate and export motion vectors using block matching algorithms.
13055 Motion vectors are stored in frame side data to be used by other filters.
13056
13057 This filter accepts the following options:
13058 @table @option
13059 @item method
13060 Specify the motion estimation method. Accepts one of the following values:
13061
13062 @table @samp
13063 @item esa
13064 Exhaustive search algorithm.
13065 @item tss
13066 Three step search algorithm.
13067 @item tdls
13068 Two dimensional logarithmic search algorithm.
13069 @item ntss
13070 New three step search algorithm.
13071 @item fss
13072 Four step search algorithm.
13073 @item ds
13074 Diamond search algorithm.
13075 @item hexbs
13076 Hexagon-based search algorithm.
13077 @item epzs
13078 Enhanced predictive zonal search algorithm.
13079 @item umh
13080 Uneven multi-hexagon search algorithm.
13081 @end table
13082 Default value is @samp{esa}.
13083
13084 @item mb_size
13085 Macroblock size. Default @code{16}.
13086
13087 @item search_param
13088 Search parameter. Default @code{7}.
13089 @end table
13090
13091 @section midequalizer
13092
13093 Apply Midway Image Equalization effect using two video streams.
13094
13095 Midway Image Equalization adjusts a pair of images to have the same
13096 histogram, while maintaining their dynamics as much as possible. It's
13097 useful for e.g. matching exposures from a pair of stereo cameras.
13098
13099 This filter has two inputs and one output, which must be of same pixel format, but
13100 may be of different sizes. The output of filter is first input adjusted with
13101 midway histogram of both inputs.
13102
13103 This filter accepts the following option:
13104
13105 @table @option
13106 @item planes
13107 Set which planes to process. Default is @code{15}, which is all available planes.
13108 @end table
13109
13110 @section minterpolate
13111
13112 Convert the video to specified frame rate using motion interpolation.
13113
13114 This filter accepts the following options:
13115 @table @option
13116 @item fps
13117 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}.
13118
13119 @item mi_mode
13120 Motion interpolation mode. Following values are accepted:
13121 @table @samp
13122 @item dup
13123 Duplicate previous or next frame for interpolating new ones.
13124 @item blend
13125 Blend source frames. Interpolated frame is mean of previous and next frames.
13126 @item mci
13127 Motion compensated interpolation. Following options are effective when this mode is selected:
13128
13129 @table @samp
13130 @item mc_mode
13131 Motion compensation mode. Following values are accepted:
13132 @table @samp
13133 @item obmc
13134 Overlapped block motion compensation.
13135 @item aobmc
13136 Adaptive overlapped block motion compensation. Window weighting coefficients are controlled adaptively according to the reliabilities of the neighboring motion vectors to reduce oversmoothing.
13137 @end table
13138 Default mode is @samp{obmc}.
13139
13140 @item me_mode
13141 Motion estimation mode. Following values are accepted:
13142 @table @samp
13143 @item bidir
13144 Bidirectional motion estimation. Motion vectors are estimated for each source frame in both forward and backward directions.
13145 @item bilat
13146 Bilateral motion estimation. Motion vectors are estimated directly for interpolated frame.
13147 @end table
13148 Default mode is @samp{bilat}.
13149
13150 @item me
13151 The algorithm to be used for motion estimation. Following values are accepted:
13152 @table @samp
13153 @item esa
13154 Exhaustive search algorithm.
13155 @item tss
13156 Three step search algorithm.
13157 @item tdls
13158 Two dimensional logarithmic search algorithm.
13159 @item ntss
13160 New three step search algorithm.
13161 @item fss
13162 Four step search algorithm.
13163 @item ds
13164 Diamond search algorithm.
13165 @item hexbs
13166 Hexagon-based search algorithm.
13167 @item epzs
13168 Enhanced predictive zonal search algorithm.
13169 @item umh
13170 Uneven multi-hexagon search algorithm.
13171 @end table
13172 Default algorithm is @samp{epzs}.
13173
13174 @item mb_size
13175 Macroblock size. Default @code{16}.
13176
13177 @item search_param
13178 Motion estimation search parameter. Default @code{32}.
13179
13180 @item vsbmc
13181 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).
13182 @end table
13183 @end table
13184
13185 @item scd
13186 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:
13187 @table @samp
13188 @item none
13189 Disable scene change detection.
13190 @item fdiff
13191 Frame difference. Corresponding pixel values are compared and if it satisfies @var{scd_threshold} scene change is detected.
13192 @end table
13193 Default method is @samp{fdiff}.
13194
13195 @item scd_threshold
13196 Scene change detection threshold. Default is @code{5.0}.
13197 @end table
13198
13199 @section mix
13200
13201 Mix several video input streams into one video stream.
13202
13203 A description of the accepted options follows.
13204
13205 @table @option
13206 @item nb_inputs
13207 The number of inputs. If unspecified, it defaults to 2.
13208
13209 @item weights
13210 Specify weight of each input video stream as sequence.
13211 Each weight is separated by space. If number of weights
13212 is smaller than number of @var{frames} last specified
13213 weight will be used for all remaining unset weights.
13214
13215 @item scale
13216 Specify scale, if it is set it will be multiplied with sum
13217 of each weight multiplied with pixel values to give final destination
13218 pixel value. By default @var{scale} is auto scaled to sum of weights.
13219
13220 @item duration
13221 Specify how end of stream is determined.
13222 @table @samp
13223 @item longest
13224 The duration of the longest input. (default)
13225
13226 @item shortest
13227 The duration of the shortest input.
13228
13229 @item first
13230 The duration of the first input.
13231 @end table
13232 @end table
13233
13234 @section mpdecimate
13235
13236 Drop frames that do not differ greatly from the previous frame in
13237 order to reduce frame rate.
13238
13239 The main use of this filter is for very-low-bitrate encoding
13240 (e.g. streaming over dialup modem), but it could in theory be used for
13241 fixing movies that were inverse-telecined incorrectly.
13242
13243 A description of the accepted options follows.
13244
13245 @table @option
13246 @item max
13247 Set the maximum number of consecutive frames which can be dropped (if
13248 positive), or the minimum interval between dropped frames (if
13249 negative). If the value is 0, the frame is dropped disregarding the
13250 number of previous sequentially dropped frames.
13251
13252 Default value is 0.
13253
13254 @item hi
13255 @item lo
13256 @item frac
13257 Set the dropping threshold values.
13258
13259 Values for @option{hi} and @option{lo} are for 8x8 pixel blocks and
13260 represent actual pixel value differences, so a threshold of 64
13261 corresponds to 1 unit of difference for each pixel, or the same spread
13262 out differently over the block.
13263
13264 A frame is a candidate for dropping if no 8x8 blocks differ by more
13265 than a threshold of @option{hi}, and if no more than @option{frac} blocks (1
13266 meaning the whole image) differ by more than a threshold of @option{lo}.
13267
13268 Default value for @option{hi} is 64*12, default value for @option{lo} is
13269 64*5, and default value for @option{frac} is 0.33.
13270 @end table
13271
13272
13273 @section negate
13274
13275 Negate (invert) the input video.
13276
13277 It accepts the following option:
13278
13279 @table @option
13280
13281 @item negate_alpha
13282 With value 1, it negates the alpha component, if present. Default value is 0.
13283 @end table
13284
13285 @anchor{nlmeans}
13286 @section nlmeans
13287
13288 Denoise frames using Non-Local Means algorithm.
13289
13290 Each pixel is adjusted by looking for other pixels with similar contexts. This
13291 context similarity is defined by comparing their surrounding patches of size
13292 @option{p}x@option{p}. Patches are searched in an area of @option{r}x@option{r}
13293 around the pixel.
13294
13295 Note that the research area defines centers for patches, which means some
13296 patches will be made of pixels outside that research area.
13297
13298 The filter accepts the following options.
13299
13300 @table @option
13301 @item s
13302 Set denoising strength. Default is 1.0. Must be in range [1.0, 30.0].
13303
13304 @item p
13305 Set patch size. Default is 7. Must be odd number in range [0, 99].
13306
13307 @item pc
13308 Same as @option{p} but for chroma planes.
13309
13310 The default value is @var{0} and means automatic.
13311
13312 @item r
13313 Set research size. Default is 15. Must be odd number in range [0, 99].
13314
13315 @item rc
13316 Same as @option{r} but for chroma planes.
13317
13318 The default value is @var{0} and means automatic.
13319 @end table
13320
13321 @section nnedi
13322
13323 Deinterlace video using neural network edge directed interpolation.
13324
13325 This filter accepts the following options:
13326
13327 @table @option
13328 @item weights
13329 Mandatory option, without binary file filter can not work.
13330 Currently file can be found here:
13331 https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin
13332
13333 @item deint
13334 Set which frames to deinterlace, by default it is @code{all}.
13335 Can be @code{all} or @code{interlaced}.
13336
13337 @item field
13338 Set mode of operation.
13339
13340 Can be one of the following:
13341
13342 @table @samp
13343 @item af
13344 Use frame flags, both fields.
13345 @item a
13346 Use frame flags, single field.
13347 @item t
13348 Use top field only.
13349 @item b
13350 Use bottom field only.
13351 @item tf
13352 Use both fields, top first.
13353 @item bf
13354 Use both fields, bottom first.
13355 @end table
13356
13357 @item planes
13358 Set which planes to process, by default filter process all frames.
13359
13360 @item nsize
13361 Set size of local neighborhood around each pixel, used by the predictor neural
13362 network.
13363
13364 Can be one of the following:
13365
13366 @table @samp
13367 @item s8x6
13368 @item s16x6
13369 @item s32x6
13370 @item s48x6
13371 @item s8x4
13372 @item s16x4
13373 @item s32x4
13374 @end table
13375
13376 @item nns
13377 Set the number of neurons in predictor neural network.
13378 Can be one of the following:
13379
13380 @table @samp
13381 @item n16
13382 @item n32
13383 @item n64
13384 @item n128
13385 @item n256
13386 @end table
13387
13388 @item qual
13389 Controls the number of different neural network predictions that are blended
13390 together to compute the final output value. Can be @code{fast}, default or
13391 @code{slow}.
13392
13393 @item etype
13394 Set which set of weights to use in the predictor.
13395 Can be one of the following:
13396
13397 @table @samp
13398 @item a
13399 weights trained to minimize absolute error
13400 @item s
13401 weights trained to minimize squared error
13402 @end table
13403
13404 @item pscrn
13405 Controls whether or not the prescreener neural network is used to decide
13406 which pixels should be processed by the predictor neural network and which
13407 can be handled by simple cubic interpolation.
13408 The prescreener is trained to know whether cubic interpolation will be
13409 sufficient for a pixel or whether it should be predicted by the predictor nn.
13410 The computational complexity of the prescreener nn is much less than that of
13411 the predictor nn. Since most pixels can be handled by cubic interpolation,
13412 using the prescreener generally results in much faster processing.
13413 The prescreener is pretty accurate, so the difference between using it and not
13414 using it is almost always unnoticeable.
13415
13416 Can be one of the following:
13417
13418 @table @samp
13419 @item none
13420 @item original
13421 @item new
13422 @end table
13423
13424 Default is @code{new}.
13425
13426 @item fapprox
13427 Set various debugging flags.
13428 @end table
13429
13430 @section noformat
13431
13432 Force libavfilter not to use any of the specified pixel formats for the
13433 input to the next filter.
13434
13435 It accepts the following parameters:
13436 @table @option
13437
13438 @item pix_fmts
13439 A '|'-separated list of pixel format names, such as
13440 pix_fmts=yuv420p|monow|rgb24".
13441
13442 @end table
13443
13444 @subsection Examples
13445
13446 @itemize
13447 @item
13448 Force libavfilter to use a format different from @var{yuv420p} for the
13449 input to the vflip filter:
13450 @example
13451 noformat=pix_fmts=yuv420p,vflip
13452 @end example
13453
13454 @item
13455 Convert the input video to any of the formats not contained in the list:
13456 @example
13457 noformat=yuv420p|yuv444p|yuv410p
13458 @end example
13459 @end itemize
13460
13461 @section noise
13462
13463 Add noise on video input frame.
13464
13465 The filter accepts the following options:
13466
13467 @table @option
13468 @item all_seed
13469 @item c0_seed
13470 @item c1_seed
13471 @item c2_seed
13472 @item c3_seed
13473 Set noise seed for specific pixel component or all pixel components in case
13474 of @var{all_seed}. Default value is @code{123457}.
13475
13476 @item all_strength, alls
13477 @item c0_strength, c0s
13478 @item c1_strength, c1s
13479 @item c2_strength, c2s
13480 @item c3_strength, c3s
13481 Set noise strength for specific pixel component or all pixel components in case
13482 @var{all_strength}. Default value is @code{0}. Allowed range is [0, 100].
13483
13484 @item all_flags, allf
13485 @item c0_flags, c0f
13486 @item c1_flags, c1f
13487 @item c2_flags, c2f
13488 @item c3_flags, c3f
13489 Set pixel component flags or set flags for all components if @var{all_flags}.
13490 Available values for component flags are:
13491 @table @samp
13492 @item a
13493 averaged temporal noise (smoother)
13494 @item p
13495 mix random noise with a (semi)regular pattern
13496 @item t
13497 temporal noise (noise pattern changes between frames)
13498 @item u
13499 uniform noise (gaussian otherwise)
13500 @end table
13501 @end table
13502
13503 @subsection Examples
13504
13505 Add temporal and uniform noise to input video:
13506 @example
13507 noise=alls=20:allf=t+u
13508 @end example
13509
13510 @section normalize
13511
13512 Normalize RGB video (aka histogram stretching, contrast stretching).
13513 See: https://en.wikipedia.org/wiki/Normalization_(image_processing)
13514
13515 For each channel of each frame, the filter computes the input range and maps
13516 it linearly to the user-specified output range. The output range defaults
13517 to the full dynamic range from pure black to pure white.
13518
13519 Temporal smoothing can be used on the input range to reduce flickering (rapid
13520 changes in brightness) caused when small dark or bright objects enter or leave
13521 the scene. This is similar to the auto-exposure (automatic gain control) on a
13522 video camera, and, like a video camera, it may cause a period of over- or
13523 under-exposure of the video.
13524
13525 The R,G,B channels can be normalized independently, which may cause some
13526 color shifting, or linked together as a single channel, which prevents
13527 color shifting. Linked normalization preserves hue. Independent normalization
13528 does not, so it can be used to remove some color casts. Independent and linked
13529 normalization can be combined in any ratio.
13530
13531 The normalize filter accepts the following options:
13532
13533 @table @option
13534 @item blackpt
13535 @item whitept
13536 Colors which define the output range. The minimum input value is mapped to
13537 the @var{blackpt}. The maximum input value is mapped to the @var{whitept}.
13538 The defaults are black and white respectively. Specifying white for
13539 @var{blackpt} and black for @var{whitept} will give color-inverted,
13540 normalized video. Shades of grey can be used to reduce the dynamic range
13541 (contrast). Specifying saturated colors here can create some interesting
13542 effects.
13543
13544 @item smoothing
13545 The number of previous frames to use for temporal smoothing. The input range
13546 of each channel is smoothed using a rolling average over the current frame
13547 and the @var{smoothing} previous frames. The default is 0 (no temporal
13548 smoothing).
13549
13550 @item independence
13551 Controls the ratio of independent (color shifting) channel normalization to
13552 linked (color preserving) normalization. 0.0 is fully linked, 1.0 is fully
13553 independent. Defaults to 1.0 (fully independent).
13554
13555 @item strength
13556 Overall strength of the filter. 1.0 is full strength. 0.0 is a rather
13557 expensive no-op. Defaults to 1.0 (full strength).
13558
13559 @end table
13560
13561 @subsection Examples
13562
13563 Stretch video contrast to use the full dynamic range, with no temporal
13564 smoothing; may flicker depending on the source content:
13565 @example
13566 normalize=blackpt=black:whitept=white:smoothing=0
13567 @end example
13568
13569 As above, but with 50 frames of temporal smoothing; flicker should be
13570 reduced, depending on the source content:
13571 @example
13572 normalize=blackpt=black:whitept=white:smoothing=50
13573 @end example
13574
13575 As above, but with hue-preserving linked channel normalization:
13576 @example
13577 normalize=blackpt=black:whitept=white:smoothing=50:independence=0
13578 @end example
13579
13580 As above, but with half strength:
13581 @example
13582 normalize=blackpt=black:whitept=white:smoothing=50:independence=0:strength=0.5
13583 @end example
13584
13585 Map the darkest input color to red, the brightest input color to cyan:
13586 @example
13587 normalize=blackpt=red:whitept=cyan
13588 @end example
13589
13590 @section null
13591
13592 Pass the video source unchanged to the output.
13593
13594 @section ocr
13595 Optical Character Recognition
13596
13597 This filter uses Tesseract for optical character recognition. To enable
13598 compilation of this filter, you need to configure FFmpeg with
13599 @code{--enable-libtesseract}.
13600
13601 It accepts the following options:
13602
13603 @table @option
13604 @item datapath
13605 Set datapath to tesseract data. Default is to use whatever was
13606 set at installation.
13607
13608 @item language
13609 Set language, default is "eng".
13610
13611 @item whitelist
13612 Set character whitelist.
13613
13614 @item blacklist
13615 Set character blacklist.
13616 @end table
13617
13618 The filter exports recognized text as the frame metadata @code{lavfi.ocr.text}.
13619 The filter exports confidence of recognized words as the frame metadata @code{lavfi.ocr.confidence}.
13620
13621 @section ocv
13622
13623 Apply a video transform using libopencv.
13624
13625 To enable this filter, install the libopencv library and headers and
13626 configure FFmpeg with @code{--enable-libopencv}.
13627
13628 It accepts the following parameters:
13629
13630 @table @option
13631
13632 @item filter_name
13633 The name of the libopencv filter to apply.
13634
13635 @item filter_params
13636 The parameters to pass to the libopencv filter. If not specified, the default
13637 values are assumed.
13638
13639 @end table
13640
13641 Refer to the official libopencv documentation for more precise
13642 information:
13643 @url{http://docs.opencv.org/master/modules/imgproc/doc/filtering.html}
13644
13645 Several libopencv filters are supported; see the following subsections.
13646
13647 @anchor{dilate}
13648 @subsection dilate
13649
13650 Dilate an image by using a specific structuring element.
13651 It corresponds to the libopencv function @code{cvDilate}.
13652
13653 It accepts the parameters: @var{struct_el}|@var{nb_iterations}.
13654
13655 @var{struct_el} represents a structuring element, and has the syntax:
13656 @var{cols}x@var{rows}+@var{anchor_x}x@var{anchor_y}/@var{shape}
13657
13658 @var{cols} and @var{rows} represent the number of columns and rows of
13659 the structuring element, @var{anchor_x} and @var{anchor_y} the anchor
13660 point, and @var{shape} the shape for the structuring element. @var{shape}
13661 must be "rect", "cross", "ellipse", or "custom".
13662
13663 If the value for @var{shape} is "custom", it must be followed by a
13664 string of the form "=@var{filename}". The file with name
13665 @var{filename} is assumed to represent a binary image, with each
13666 printable character corresponding to a bright pixel. When a custom
13667 @var{shape} is used, @var{cols} and @var{rows} are ignored, the number
13668 or columns and rows of the read file are assumed instead.
13669
13670 The default value for @var{struct_el} is "3x3+0x0/rect".
13671
13672 @var{nb_iterations} specifies the number of times the transform is
13673 applied to the image, and defaults to 1.
13674
13675 Some examples:
13676 @example
13677 # Use the default values
13678 ocv=dilate
13679
13680 # Dilate using a structuring element with a 5x5 cross, iterating two times
13681 ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
13682
13683 # Read the shape from the file diamond.shape, iterating two times.
13684 # The file diamond.shape may contain a pattern of characters like this
13685 #   *
13686 #  ***
13687 # *****
13688 #  ***
13689 #   *
13690 # The specified columns and rows are ignored
13691 # but the anchor point coordinates are not
13692 ocv=dilate:0x0+2x2/custom=diamond.shape|2
13693 @end example
13694
13695 @subsection erode
13696
13697 Erode an image by using a specific structuring element.
13698 It corresponds to the libopencv function @code{cvErode}.
13699
13700 It accepts the parameters: @var{struct_el}:@var{nb_iterations},
13701 with the same syntax and semantics as the @ref{dilate} filter.
13702
13703 @subsection smooth
13704
13705 Smooth the input video.
13706
13707 The filter takes the following parameters:
13708 @var{type}|@var{param1}|@var{param2}|@var{param3}|@var{param4}.
13709
13710 @var{type} is the type of smooth filter to apply, and must be one of
13711 the following values: "blur", "blur_no_scale", "median", "gaussian",
13712 or "bilateral". The default value is "gaussian".
13713
13714 The meaning of @var{param1}, @var{param2}, @var{param3}, and @var{param4}
13715 depends on the smooth type. @var{param1} and
13716 @var{param2} accept integer positive values or 0. @var{param3} and
13717 @var{param4} accept floating point values.
13718
13719 The default value for @var{param1} is 3. The default value for the
13720 other parameters is 0.
13721
13722 These parameters correspond to the parameters assigned to the
13723 libopencv function @code{cvSmooth}.
13724
13725 @section oscilloscope
13726
13727 2D Video Oscilloscope.
13728
13729 Useful to measure spatial impulse, step responses, chroma delays, etc.
13730
13731 It accepts the following parameters:
13732
13733 @table @option
13734 @item x
13735 Set scope center x position.
13736
13737 @item y
13738 Set scope center y position.
13739
13740 @item s
13741 Set scope size, relative to frame diagonal.
13742
13743 @item t
13744 Set scope tilt/rotation.
13745
13746 @item o
13747 Set trace opacity.
13748
13749 @item tx
13750 Set trace center x position.
13751
13752 @item ty
13753 Set trace center y position.
13754
13755 @item tw
13756 Set trace width, relative to width of frame.
13757
13758 @item th
13759 Set trace height, relative to height of frame.
13760
13761 @item c
13762 Set which components to trace. By default it traces first three components.
13763
13764 @item g
13765 Draw trace grid. By default is enabled.
13766
13767 @item st
13768 Draw some statistics. By default is enabled.
13769
13770 @item sc
13771 Draw scope. By default is enabled.
13772 @end table
13773
13774 @subsection Examples
13775
13776 @itemize
13777 @item
13778 Inspect full first row of video frame.
13779 @example
13780 oscilloscope=x=0.5:y=0:s=1
13781 @end example
13782
13783 @item
13784 Inspect full last row of video frame.
13785 @example
13786 oscilloscope=x=0.5:y=1:s=1
13787 @end example
13788
13789 @item
13790 Inspect full 5th line of video frame of height 1080.
13791 @example
13792 oscilloscope=x=0.5:y=5/1080:s=1
13793 @end example
13794
13795 @item
13796 Inspect full last column of video frame.
13797 @example
13798 oscilloscope=x=1:y=0.5:s=1:t=1
13799 @end example
13800
13801 @end itemize
13802
13803 @anchor{overlay}
13804 @section overlay
13805
13806 Overlay one video on top of another.
13807
13808 It takes two inputs and has one output. The first input is the "main"
13809 video on which the second input is overlaid.
13810
13811 It accepts the following parameters:
13812
13813 A description of the accepted options follows.
13814
13815 @table @option
13816 @item x
13817 @item y
13818 Set the expression for the x and y coordinates of the overlaid video
13819 on the main video. Default value is "0" for both expressions. In case
13820 the expression is invalid, it is set to a huge value (meaning that the
13821 overlay will not be displayed within the output visible area).
13822
13823 @item eof_action
13824 See @ref{framesync}.
13825
13826 @item eval
13827 Set when the expressions for @option{x}, and @option{y} are evaluated.
13828
13829 It accepts the following values:
13830 @table @samp
13831 @item init
13832 only evaluate expressions once during the filter initialization or
13833 when a command is processed
13834
13835 @item frame
13836 evaluate expressions for each incoming frame
13837 @end table
13838
13839 Default value is @samp{frame}.
13840
13841 @item shortest
13842 See @ref{framesync}.
13843
13844 @item format
13845 Set the format for the output video.
13846
13847 It accepts the following values:
13848 @table @samp
13849 @item yuv420
13850 force YUV420 output
13851
13852 @item yuv422
13853 force YUV422 output
13854
13855 @item yuv444
13856 force YUV444 output
13857
13858 @item rgb
13859 force packed RGB output
13860
13861 @item gbrp
13862 force planar RGB output
13863
13864 @item auto
13865 automatically pick format
13866 @end table
13867
13868 Default value is @samp{yuv420}.
13869
13870 @item repeatlast
13871 See @ref{framesync}.
13872
13873 @item alpha
13874 Set format of alpha of the overlaid video, it can be @var{straight} or
13875 @var{premultiplied}. Default is @var{straight}.
13876 @end table
13877
13878 The @option{x}, and @option{y} expressions can contain the following
13879 parameters.
13880
13881 @table @option
13882 @item main_w, W
13883 @item main_h, H
13884 The main input width and height.
13885
13886 @item overlay_w, w
13887 @item overlay_h, h
13888 The overlay input width and height.
13889
13890 @item x
13891 @item y
13892 The computed values for @var{x} and @var{y}. They are evaluated for
13893 each new frame.
13894
13895 @item hsub
13896 @item vsub
13897 horizontal and vertical chroma subsample values of the output
13898 format. For example for the pixel format "yuv422p" @var{hsub} is 2 and
13899 @var{vsub} is 1.
13900
13901 @item n
13902 the number of input frame, starting from 0
13903
13904 @item pos
13905 the position in the file of the input frame, NAN if unknown
13906
13907 @item t
13908 The timestamp, expressed in seconds. It's NAN if the input timestamp is unknown.
13909
13910 @end table
13911
13912 This filter also supports the @ref{framesync} options.
13913
13914 Note that the @var{n}, @var{pos}, @var{t} variables are available only
13915 when evaluation is done @emph{per frame}, and will evaluate to NAN
13916 when @option{eval} is set to @samp{init}.
13917
13918 Be aware that frames are taken from each input video in timestamp
13919 order, hence, if their initial timestamps differ, it is a good idea
13920 to pass the two inputs through a @var{setpts=PTS-STARTPTS} filter to
13921 have them begin in the same zero timestamp, as the example for
13922 the @var{movie} filter does.
13923
13924 You can chain together more overlays but you should test the
13925 efficiency of such approach.
13926
13927 @subsection Commands
13928
13929 This filter supports the following commands:
13930 @table @option
13931 @item x
13932 @item y
13933 Modify the x and y of the overlay input.
13934 The command accepts the same syntax of the corresponding option.
13935
13936 If the specified expression is not valid, it is kept at its current
13937 value.
13938 @end table
13939
13940 @subsection Examples
13941
13942 @itemize
13943 @item
13944 Draw the overlay at 10 pixels from the bottom right corner of the main
13945 video:
13946 @example
13947 overlay=main_w-overlay_w-10:main_h-overlay_h-10
13948 @end example
13949
13950 Using named options the example above becomes:
13951 @example
13952 overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
13953 @end example
13954
13955 @item
13956 Insert a transparent PNG logo in the bottom left corner of the input,
13957 using the @command{ffmpeg} tool with the @code{-filter_complex} option:
13958 @example
13959 ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
13960 @end example
13961
13962 @item
13963 Insert 2 different transparent PNG logos (second logo on bottom
13964 right corner) using the @command{ffmpeg} tool:
13965 @example
13966 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
13967 @end example
13968
13969 @item
13970 Add a transparent color layer on top of the main video; @code{WxH}
13971 must specify the size of the main input to the overlay filter:
13972 @example
13973 color=color=red@@.3:size=WxH [over]; [in][over] overlay [out]
13974 @end example
13975
13976 @item
13977 Play an original video and a filtered version (here with the deshake
13978 filter) side by side using the @command{ffplay} tool:
13979 @example
13980 ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
13981 @end example
13982
13983 The above command is the same as:
13984 @example
13985 ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
13986 @end example
13987
13988 @item
13989 Make a sliding overlay appearing from the left to the right top part of the
13990 screen starting since time 2:
13991 @example
13992 overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
13993 @end example
13994
13995 @item
13996 Compose output by putting two input videos side to side:
13997 @example
13998 ffmpeg -i left.avi -i right.avi -filter_complex "
13999 nullsrc=size=200x100 [background];
14000 [0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
14001 [1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
14002 [background][left]       overlay=shortest=1       [background+left];
14003 [background+left][right] overlay=shortest=1:x=100 [left+right]
14004 "
14005 @end example
14006
14007 @item
14008 Mask 10-20 seconds of a video by applying the delogo filter to a section
14009 @example
14010 ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
14011 -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]'
14012 masked.avi
14013 @end example
14014
14015 @item
14016 Chain several overlays in cascade:
14017 @example
14018 nullsrc=s=200x200 [bg];
14019 testsrc=s=100x100, split=4 [in0][in1][in2][in3];
14020 [in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
14021 [in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
14022 [in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
14023 [in3] null,       [mid2] overlay=100:100 [out0]
14024 @end example
14025
14026 @end itemize
14027
14028 @section owdenoise
14029
14030 Apply Overcomplete Wavelet denoiser.
14031
14032 The filter accepts the following options:
14033
14034 @table @option
14035 @item depth
14036 Set depth.
14037
14038 Larger depth values will denoise lower frequency components more, but
14039 slow down filtering.
14040
14041 Must be an int in the range 8-16, default is @code{8}.
14042
14043 @item luma_strength, ls
14044 Set luma strength.
14045
14046 Must be a double value in the range 0-1000, default is @code{1.0}.
14047
14048 @item chroma_strength, cs
14049 Set chroma strength.
14050
14051 Must be a double value in the range 0-1000, default is @code{1.0}.
14052 @end table
14053
14054 @anchor{pad}
14055 @section pad
14056
14057 Add paddings to the input image, and place the original input at the
14058 provided @var{x}, @var{y} coordinates.
14059
14060 It accepts the following parameters:
14061
14062 @table @option
14063 @item width, w
14064 @item height, h
14065 Specify an expression for the size of the output image with the
14066 paddings added. If the value for @var{width} or @var{height} is 0, the
14067 corresponding input size is used for the output.
14068
14069 The @var{width} expression can reference the value set by the
14070 @var{height} expression, and vice versa.
14071
14072 The default value of @var{width} and @var{height} is 0.
14073
14074 @item x
14075 @item y
14076 Specify the offsets to place the input image at within the padded area,
14077 with respect to the top/left border of the output image.
14078
14079 The @var{x} expression can reference the value set by the @var{y}
14080 expression, and vice versa.
14081
14082 The default value of @var{x} and @var{y} is 0.
14083
14084 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
14085 so the input image is centered on the padded area.
14086
14087 @item color
14088 Specify the color of the padded area. For the syntax of this option,
14089 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
14090 manual,ffmpeg-utils}.
14091
14092 The default value of @var{color} is "black".
14093
14094 @item eval
14095 Specify when to evaluate  @var{width}, @var{height}, @var{x} and @var{y} expression.
14096
14097 It accepts the following values:
14098
14099 @table @samp
14100 @item init
14101 Only evaluate expressions once during the filter initialization or when
14102 a command is processed.
14103
14104 @item frame
14105 Evaluate expressions for each incoming frame.
14106
14107 @end table
14108
14109 Default value is @samp{init}.
14110
14111 @item aspect
14112 Pad to aspect instead to a resolution.
14113
14114 @end table
14115
14116 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
14117 options are expressions containing the following constants:
14118
14119 @table @option
14120 @item in_w
14121 @item in_h
14122 The input video width and height.
14123
14124 @item iw
14125 @item ih
14126 These are the same as @var{in_w} and @var{in_h}.
14127
14128 @item out_w
14129 @item out_h
14130 The output width and height (the size of the padded area), as
14131 specified by the @var{width} and @var{height} expressions.
14132
14133 @item ow
14134 @item oh
14135 These are the same as @var{out_w} and @var{out_h}.
14136
14137 @item x
14138 @item y
14139 The x and y offsets as specified by the @var{x} and @var{y}
14140 expressions, or NAN if not yet specified.
14141
14142 @item a
14143 same as @var{iw} / @var{ih}
14144
14145 @item sar
14146 input sample aspect ratio
14147
14148 @item dar
14149 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
14150
14151 @item hsub
14152 @item vsub
14153 The horizontal and vertical chroma subsample values. For example for the
14154 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
14155 @end table
14156
14157 @subsection Examples
14158
14159 @itemize
14160 @item
14161 Add paddings with the color "violet" to the input video. The output video
14162 size is 640x480, and the top-left corner of the input video is placed at
14163 column 0, row 40
14164 @example
14165 pad=640:480:0:40:violet
14166 @end example
14167
14168 The example above is equivalent to the following command:
14169 @example
14170 pad=width=640:height=480:x=0:y=40:color=violet
14171 @end example
14172
14173 @item
14174 Pad the input to get an output with dimensions increased by 3/2,
14175 and put the input video at the center of the padded area:
14176 @example
14177 pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
14178 @end example
14179
14180 @item
14181 Pad the input to get a squared output with size equal to the maximum
14182 value between the input width and height, and put the input video at
14183 the center of the padded area:
14184 @example
14185 pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
14186 @end example
14187
14188 @item
14189 Pad the input to get a final w/h ratio of 16:9:
14190 @example
14191 pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
14192 @end example
14193
14194 @item
14195 In case of anamorphic video, in order to set the output display aspect
14196 correctly, it is necessary to use @var{sar} in the expression,
14197 according to the relation:
14198 @example
14199 (ih * X / ih) * sar = output_dar
14200 X = output_dar / sar
14201 @end example
14202
14203 Thus the previous example needs to be modified to:
14204 @example
14205 pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
14206 @end example
14207
14208 @item
14209 Double the output size and put the input video in the bottom-right
14210 corner of the output padded area:
14211 @example
14212 pad="2*iw:2*ih:ow-iw:oh-ih"
14213 @end example
14214 @end itemize
14215
14216 @anchor{palettegen}
14217 @section palettegen
14218
14219 Generate one palette for a whole video stream.
14220
14221 It accepts the following options:
14222
14223 @table @option
14224 @item max_colors
14225 Set the maximum number of colors to quantize in the palette.
14226 Note: the palette will still contain 256 colors; the unused palette entries
14227 will be black.
14228
14229 @item reserve_transparent
14230 Create a palette of 255 colors maximum and reserve the last one for
14231 transparency. Reserving the transparency color is useful for GIF optimization.
14232 If not set, the maximum of colors in the palette will be 256. You probably want
14233 to disable this option for a standalone image.
14234 Set by default.
14235
14236 @item transparency_color
14237 Set the color that will be used as background for transparency.
14238
14239 @item stats_mode
14240 Set statistics mode.
14241
14242 It accepts the following values:
14243 @table @samp
14244 @item full
14245 Compute full frame histograms.
14246 @item diff
14247 Compute histograms only for the part that differs from previous frame. This
14248 might be relevant to give more importance to the moving part of your input if
14249 the background is static.
14250 @item single
14251 Compute new histogram for each frame.
14252 @end table
14253
14254 Default value is @var{full}.
14255 @end table
14256
14257 The filter also exports the frame metadata @code{lavfi.color_quant_ratio}
14258 (@code{nb_color_in / nb_color_out}) which you can use to evaluate the degree of
14259 color quantization of the palette. This information is also visible at
14260 @var{info} logging level.
14261
14262 @subsection Examples
14263
14264 @itemize
14265 @item
14266 Generate a representative palette of a given video using @command{ffmpeg}:
14267 @example
14268 ffmpeg -i input.mkv -vf palettegen palette.png
14269 @end example
14270 @end itemize
14271
14272 @section paletteuse
14273
14274 Use a palette to downsample an input video stream.
14275
14276 The filter takes two inputs: one video stream and a palette. The palette must
14277 be a 256 pixels image.
14278
14279 It accepts the following options:
14280
14281 @table @option
14282 @item dither
14283 Select dithering mode. Available algorithms are:
14284 @table @samp
14285 @item bayer
14286 Ordered 8x8 bayer dithering (deterministic)
14287 @item heckbert
14288 Dithering as defined by Paul Heckbert in 1982 (simple error diffusion).
14289 Note: this dithering is sometimes considered "wrong" and is included as a
14290 reference.
14291 @item floyd_steinberg
14292 Floyd and Steingberg dithering (error diffusion)
14293 @item sierra2
14294 Frankie Sierra dithering v2 (error diffusion)
14295 @item sierra2_4a
14296 Frankie Sierra dithering v2 "Lite" (error diffusion)
14297 @end table
14298
14299 Default is @var{sierra2_4a}.
14300
14301 @item bayer_scale
14302 When @var{bayer} dithering is selected, this option defines the scale of the
14303 pattern (how much the crosshatch pattern is visible). A low value means more
14304 visible pattern for less banding, and higher value means less visible pattern
14305 at the cost of more banding.
14306
14307 The option must be an integer value in the range [0,5]. Default is @var{2}.
14308
14309 @item diff_mode
14310 If set, define the zone to process
14311
14312 @table @samp
14313 @item rectangle
14314 Only the changing rectangle will be reprocessed. This is similar to GIF
14315 cropping/offsetting compression mechanism. This option can be useful for speed
14316 if only a part of the image is changing, and has use cases such as limiting the
14317 scope of the error diffusal @option{dither} to the rectangle that bounds the
14318 moving scene (it leads to more deterministic output if the scene doesn't change
14319 much, and as a result less moving noise and better GIF compression).
14320 @end table
14321
14322 Default is @var{none}.
14323
14324 @item new
14325 Take new palette for each output frame.
14326
14327 @item alpha_threshold
14328 Sets the alpha threshold for transparency. Alpha values above this threshold
14329 will be treated as completely opaque, and values below this threshold will be
14330 treated as completely transparent.
14331
14332 The option must be an integer value in the range [0,255]. Default is @var{128}.
14333 @end table
14334
14335 @subsection Examples
14336
14337 @itemize
14338 @item
14339 Use a palette (generated for example with @ref{palettegen}) to encode a GIF
14340 using @command{ffmpeg}:
14341 @example
14342 ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
14343 @end example
14344 @end itemize
14345
14346 @section perspective
14347
14348 Correct perspective of video not recorded perpendicular to the screen.
14349
14350 A description of the accepted parameters follows.
14351
14352 @table @option
14353 @item x0
14354 @item y0
14355 @item x1
14356 @item y1
14357 @item x2
14358 @item y2
14359 @item x3
14360 @item y3
14361 Set coordinates expression for top left, top right, bottom left and bottom right corners.
14362 Default values are @code{0:0:W:0:0:H:W:H} with which perspective will remain unchanged.
14363 If the @code{sense} option is set to @code{source}, then the specified points will be sent
14364 to the corners of the destination. If the @code{sense} option is set to @code{destination},
14365 then the corners of the source will be sent to the specified coordinates.
14366
14367 The expressions can use the following variables:
14368
14369 @table @option
14370 @item W
14371 @item H
14372 the width and height of video frame.
14373 @item in
14374 Input frame count.
14375 @item on
14376 Output frame count.
14377 @end table
14378
14379 @item interpolation
14380 Set interpolation for perspective correction.
14381
14382 It accepts the following values:
14383 @table @samp
14384 @item linear
14385 @item cubic
14386 @end table
14387
14388 Default value is @samp{linear}.
14389
14390 @item sense
14391 Set interpretation of coordinate options.
14392
14393 It accepts the following values:
14394 @table @samp
14395 @item 0, source
14396
14397 Send point in the source specified by the given coordinates to
14398 the corners of the destination.
14399
14400 @item 1, destination
14401
14402 Send the corners of the source to the point in the destination specified
14403 by the given coordinates.
14404
14405 Default value is @samp{source}.
14406 @end table
14407
14408 @item eval
14409 Set when the expressions for coordinates @option{x0,y0,...x3,y3} are evaluated.
14410
14411 It accepts the following values:
14412 @table @samp
14413 @item init
14414 only evaluate expressions once during the filter initialization or
14415 when a command is processed
14416
14417 @item frame
14418 evaluate expressions for each incoming frame
14419 @end table
14420
14421 Default value is @samp{init}.
14422 @end table
14423
14424 @section phase
14425
14426 Delay interlaced video by one field time so that the field order changes.
14427
14428 The intended use is to fix PAL movies that have been captured with the
14429 opposite field order to the film-to-video transfer.
14430
14431 A description of the accepted parameters follows.
14432
14433 @table @option
14434 @item mode
14435 Set phase mode.
14436
14437 It accepts the following values:
14438 @table @samp
14439 @item t
14440 Capture field order top-first, transfer bottom-first.
14441 Filter will delay the bottom field.
14442
14443 @item b
14444 Capture field order bottom-first, transfer top-first.
14445 Filter will delay the top field.
14446
14447 @item p
14448 Capture and transfer with the same field order. This mode only exists
14449 for the documentation of the other options to refer to, but if you
14450 actually select it, the filter will faithfully do nothing.
14451
14452 @item a
14453 Capture field order determined automatically by field flags, transfer
14454 opposite.
14455 Filter selects among @samp{t} and @samp{b} modes on a frame by frame
14456 basis using field flags. If no field information is available,
14457 then this works just like @samp{u}.
14458
14459 @item u
14460 Capture unknown or varying, transfer opposite.
14461 Filter selects among @samp{t} and @samp{b} on a frame by frame basis by
14462 analyzing the images and selecting the alternative that produces best
14463 match between the fields.
14464
14465 @item T
14466 Capture top-first, transfer unknown or varying.
14467 Filter selects among @samp{t} and @samp{p} using image analysis.
14468
14469 @item B
14470 Capture bottom-first, transfer unknown or varying.
14471 Filter selects among @samp{b} and @samp{p} using image analysis.
14472
14473 @item A
14474 Capture determined by field flags, transfer unknown or varying.
14475 Filter selects among @samp{t}, @samp{b} and @samp{p} using field flags and
14476 image analysis. If no field information is available, then this works just
14477 like @samp{U}. This is the default mode.
14478
14479 @item U
14480 Both capture and transfer unknown or varying.
14481 Filter selects among @samp{t}, @samp{b} and @samp{p} using image analysis only.
14482 @end table
14483 @end table
14484
14485 @section photosensitivity
14486 Reduce various flashes in video, so to help users with epilepsy.
14487
14488 It accepts the following options:
14489 @table @option
14490 @item frames, f
14491 Set how many frames to use when filtering. Default is 30.
14492
14493 @item threshold, t
14494 Set detection threshold factor. Default is 1.
14495 Lower is stricter.
14496
14497 @item skip
14498 Set how many pixels to skip when sampling frames. Default is 1.
14499 Allowed range is from 1 to 1024.
14500
14501 @item bypass
14502 Leave frames unchanged. Default is disabled.
14503 @end table
14504
14505 @section pixdesctest
14506
14507 Pixel format descriptor test filter, mainly useful for internal
14508 testing. The output video should be equal to the input video.
14509
14510 For example:
14511 @example
14512 format=monow, pixdesctest
14513 @end example
14514
14515 can be used to test the monowhite pixel format descriptor definition.
14516
14517 @section pixscope
14518
14519 Display sample values of color channels. Mainly useful for checking color
14520 and levels. Minimum supported resolution is 640x480.
14521
14522 The filters accept the following options:
14523
14524 @table @option
14525 @item x
14526 Set scope X position, relative offset on X axis.
14527
14528 @item y
14529 Set scope Y position, relative offset on Y axis.
14530
14531 @item w
14532 Set scope width.
14533
14534 @item h
14535 Set scope height.
14536
14537 @item o
14538 Set window opacity. This window also holds statistics about pixel area.
14539
14540 @item wx
14541 Set window X position, relative offset on X axis.
14542
14543 @item wy
14544 Set window Y position, relative offset on Y axis.
14545 @end table
14546
14547 @section pp
14548
14549 Enable the specified chain of postprocessing subfilters using libpostproc. This
14550 library should be automatically selected with a GPL build (@code{--enable-gpl}).
14551 Subfilters must be separated by '/' and can be disabled by prepending a '-'.
14552 Each subfilter and some options have a short and a long name that can be used
14553 interchangeably, i.e. dr/dering are the same.
14554
14555 The filters accept the following options:
14556
14557 @table @option
14558 @item subfilters
14559 Set postprocessing subfilters string.
14560 @end table
14561
14562 All subfilters share common options to determine their scope:
14563
14564 @table @option
14565 @item a/autoq
14566 Honor the quality commands for this subfilter.
14567
14568 @item c/chrom
14569 Do chrominance filtering, too (default).
14570
14571 @item y/nochrom
14572 Do luminance filtering only (no chrominance).
14573
14574 @item n/noluma
14575 Do chrominance filtering only (no luminance).
14576 @end table
14577
14578 These options can be appended after the subfilter name, separated by a '|'.
14579
14580 Available subfilters are:
14581
14582 @table @option
14583 @item hb/hdeblock[|difference[|flatness]]
14584 Horizontal deblocking filter
14585 @table @option
14586 @item difference
14587 Difference factor where higher values mean more deblocking (default: @code{32}).
14588 @item flatness
14589 Flatness threshold where lower values mean more deblocking (default: @code{39}).
14590 @end table
14591
14592 @item vb/vdeblock[|difference[|flatness]]
14593 Vertical deblocking filter
14594 @table @option
14595 @item difference
14596 Difference factor where higher values mean more deblocking (default: @code{32}).
14597 @item flatness
14598 Flatness threshold where lower values mean more deblocking (default: @code{39}).
14599 @end table
14600
14601 @item ha/hadeblock[|difference[|flatness]]
14602 Accurate horizontal deblocking filter
14603 @table @option
14604 @item difference
14605 Difference factor where higher values mean more deblocking (default: @code{32}).
14606 @item flatness
14607 Flatness threshold where lower values mean more deblocking (default: @code{39}).
14608 @end table
14609
14610 @item va/vadeblock[|difference[|flatness]]
14611 Accurate vertical deblocking filter
14612 @table @option
14613 @item difference
14614 Difference factor where higher values mean more deblocking (default: @code{32}).
14615 @item flatness
14616 Flatness threshold where lower values mean more deblocking (default: @code{39}).
14617 @end table
14618 @end table
14619
14620 The horizontal and vertical deblocking filters share the difference and
14621 flatness values so you cannot set different horizontal and vertical
14622 thresholds.
14623
14624 @table @option
14625 @item h1/x1hdeblock
14626 Experimental horizontal deblocking filter
14627
14628 @item v1/x1vdeblock
14629 Experimental vertical deblocking filter
14630
14631 @item dr/dering
14632 Deringing filter
14633
14634 @item tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer
14635 @table @option
14636 @item threshold1
14637 larger -> stronger filtering
14638 @item threshold2
14639 larger -> stronger filtering
14640 @item threshold3
14641 larger -> stronger filtering
14642 @end table
14643
14644 @item al/autolevels[:f/fullyrange], automatic brightness / contrast correction
14645 @table @option
14646 @item f/fullyrange
14647 Stretch luminance to @code{0-255}.
14648 @end table
14649
14650 @item lb/linblenddeint
14651 Linear blend deinterlacing filter that deinterlaces the given block by
14652 filtering all lines with a @code{(1 2 1)} filter.
14653
14654 @item li/linipoldeint
14655 Linear interpolating deinterlacing filter that deinterlaces the given block by
14656 linearly interpolating every second line.
14657
14658 @item ci/cubicipoldeint
14659 Cubic interpolating deinterlacing filter deinterlaces the given block by
14660 cubically interpolating every second line.
14661
14662 @item md/mediandeint
14663 Median deinterlacing filter that deinterlaces the given block by applying a
14664 median filter to every second line.
14665
14666 @item fd/ffmpegdeint
14667 FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
14668 second line with a @code{(-1 4 2 4 -1)} filter.
14669
14670 @item l5/lowpass5
14671 Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
14672 block by filtering all lines with a @code{(-1 2 6 2 -1)} filter.
14673
14674 @item fq/forceQuant[|quantizer]
14675 Overrides the quantizer table from the input with the constant quantizer you
14676 specify.
14677 @table @option
14678 @item quantizer
14679 Quantizer to use
14680 @end table
14681
14682 @item de/default
14683 Default pp filter combination (@code{hb|a,vb|a,dr|a})
14684
14685 @item fa/fast
14686 Fast pp filter combination (@code{h1|a,v1|a,dr|a})
14687
14688 @item ac
14689 High quality pp filter combination (@code{ha|a|128|7,va|a,dr|a})
14690 @end table
14691
14692 @subsection Examples
14693
14694 @itemize
14695 @item
14696 Apply horizontal and vertical deblocking, deringing and automatic
14697 brightness/contrast:
14698 @example
14699 pp=hb/vb/dr/al
14700 @end example
14701
14702 @item
14703 Apply default filters without brightness/contrast correction:
14704 @example
14705 pp=de/-al
14706 @end example
14707
14708 @item
14709 Apply default filters and temporal denoiser:
14710 @example
14711 pp=default/tmpnoise|1|2|3
14712 @end example
14713
14714 @item
14715 Apply deblocking on luminance only, and switch vertical deblocking on or off
14716 automatically depending on available CPU time:
14717 @example
14718 pp=hb|y/vb|a
14719 @end example
14720 @end itemize
14721
14722 @section pp7
14723 Apply Postprocessing filter 7. It is variant of the @ref{spp} filter,
14724 similar to spp = 6 with 7 point DCT, where only the center sample is
14725 used after IDCT.
14726
14727 The filter accepts the following options:
14728
14729 @table @option
14730 @item qp
14731 Force a constant quantization parameter. It accepts an integer in range
14732 0 to 63. If not set, the filter will use the QP from the video stream
14733 (if available).
14734
14735 @item mode
14736 Set thresholding mode. Available modes are:
14737
14738 @table @samp
14739 @item hard
14740 Set hard thresholding.
14741 @item soft
14742 Set soft thresholding (better de-ringing effect, but likely blurrier).
14743 @item medium
14744 Set medium thresholding (good results, default).
14745 @end table
14746 @end table
14747
14748 @section premultiply
14749 Apply alpha premultiply effect to input video stream using first plane
14750 of second stream as alpha.
14751
14752 Both streams must have same dimensions and same pixel format.
14753
14754 The filter accepts the following option:
14755
14756 @table @option
14757 @item planes
14758 Set which planes will be processed, unprocessed planes will be copied.
14759 By default value 0xf, all planes will be processed.
14760
14761 @item inplace
14762 Do not require 2nd input for processing, instead use alpha plane from input stream.
14763 @end table
14764
14765 @section prewitt
14766 Apply prewitt operator to input video stream.
14767
14768 The filter accepts the following option:
14769
14770 @table @option
14771 @item planes
14772 Set which planes will be processed, unprocessed planes will be copied.
14773 By default value 0xf, all planes will be processed.
14774
14775 @item scale
14776 Set value which will be multiplied with filtered result.
14777
14778 @item delta
14779 Set value which will be added to filtered result.
14780 @end table
14781
14782 @anchor{program_opencl}
14783 @section program_opencl
14784
14785 Filter video using an OpenCL program.
14786
14787 @table @option
14788
14789 @item source
14790 OpenCL program source file.
14791
14792 @item kernel
14793 Kernel name in program.
14794
14795 @item inputs
14796 Number of inputs to the filter.  Defaults to 1.
14797
14798 @item size, s
14799 Size of output frames.  Defaults to the same as the first input.
14800
14801 @end table
14802
14803 The program source file must contain a kernel function with the given name,
14804 which will be run once for each plane of the output.  Each run on a plane
14805 gets enqueued as a separate 2D global NDRange with one work-item for each
14806 pixel to be generated.  The global ID offset for each work-item is therefore
14807 the coordinates of a pixel in the destination image.
14808
14809 The kernel function needs to take the following arguments:
14810 @itemize
14811 @item
14812 Destination image, @var{__write_only image2d_t}.
14813
14814 This image will become the output; the kernel should write all of it.
14815 @item
14816 Frame index, @var{unsigned int}.
14817
14818 This is a counter starting from zero and increasing by one for each frame.
14819 @item
14820 Source images, @var{__read_only image2d_t}.
14821
14822 These are the most recent images on each input.  The kernel may read from
14823 them to generate the output, but they can't be written to.
14824 @end itemize
14825
14826 Example programs:
14827
14828 @itemize
14829 @item
14830 Copy the input to the output (output must be the same size as the input).
14831 @verbatim
14832 __kernel void copy(__write_only image2d_t destination,
14833                    unsigned int index,
14834                    __read_only  image2d_t source)
14835 {
14836     const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE;
14837
14838     int2 location = (int2)(get_global_id(0), get_global_id(1));
14839
14840     float4 value = read_imagef(source, sampler, location);
14841
14842     write_imagef(destination, location, value);
14843 }
14844 @end verbatim
14845
14846 @item
14847 Apply a simple transformation, rotating the input by an amount increasing
14848 with the index counter.  Pixel values are linearly interpolated by the
14849 sampler, and the output need not have the same dimensions as the input.
14850 @verbatim
14851 __kernel void rotate_image(__write_only image2d_t dst,
14852                            unsigned int index,
14853                            __read_only  image2d_t src)
14854 {
14855     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
14856                                CLK_FILTER_LINEAR);
14857
14858     float angle = (float)index / 100.0f;
14859
14860     float2 dst_dim = convert_float2(get_image_dim(dst));
14861     float2 src_dim = convert_float2(get_image_dim(src));
14862
14863     float2 dst_cen = dst_dim / 2.0f;
14864     float2 src_cen = src_dim / 2.0f;
14865
14866     int2   dst_loc = (int2)(get_global_id(0), get_global_id(1));
14867
14868     float2 dst_pos = convert_float2(dst_loc) - dst_cen;
14869     float2 src_pos = {
14870         cos(angle) * dst_pos.x - sin(angle) * dst_pos.y,
14871         sin(angle) * dst_pos.x + cos(angle) * dst_pos.y
14872     };
14873     src_pos = src_pos * src_dim / dst_dim;
14874
14875     float2 src_loc = src_pos + src_cen;
14876
14877     if (src_loc.x < 0.0f      || src_loc.y < 0.0f ||
14878         src_loc.x > src_dim.x || src_loc.y > src_dim.y)
14879         write_imagef(dst, dst_loc, 0.5f);
14880     else
14881         write_imagef(dst, dst_loc, read_imagef(src, sampler, src_loc));
14882 }
14883 @end verbatim
14884
14885 @item
14886 Blend two inputs together, with the amount of each input used varying
14887 with the index counter.
14888 @verbatim
14889 __kernel void blend_images(__write_only image2d_t dst,
14890                            unsigned int index,
14891                            __read_only  image2d_t src1,
14892                            __read_only  image2d_t src2)
14893 {
14894     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
14895                                CLK_FILTER_LINEAR);
14896
14897     float blend = (cos((float)index / 50.0f) + 1.0f) / 2.0f;
14898
14899     int2  dst_loc = (int2)(get_global_id(0), get_global_id(1));
14900     int2 src1_loc = dst_loc * get_image_dim(src1) / get_image_dim(dst);
14901     int2 src2_loc = dst_loc * get_image_dim(src2) / get_image_dim(dst);
14902
14903     float4 val1 = read_imagef(src1, sampler, src1_loc);
14904     float4 val2 = read_imagef(src2, sampler, src2_loc);
14905
14906     write_imagef(dst, dst_loc, val1 * blend + val2 * (1.0f - blend));
14907 }
14908 @end verbatim
14909
14910 @end itemize
14911
14912 @section pseudocolor
14913
14914 Alter frame colors in video with pseudocolors.
14915
14916 This filter accepts the following options:
14917
14918 @table @option
14919 @item c0
14920 set pixel first component expression
14921
14922 @item c1
14923 set pixel second component expression
14924
14925 @item c2
14926 set pixel third component expression
14927
14928 @item c3
14929 set pixel fourth component expression, corresponds to the alpha component
14930
14931 @item i
14932 set component to use as base for altering colors
14933 @end table
14934
14935 Each of them specifies the expression to use for computing the lookup table for
14936 the corresponding pixel component values.
14937
14938 The expressions can contain the following constants and functions:
14939
14940 @table @option
14941 @item w
14942 @item h
14943 The input width and height.
14944
14945 @item val
14946 The input value for the pixel component.
14947
14948 @item ymin, umin, vmin, amin
14949 The minimum allowed component value.
14950
14951 @item ymax, umax, vmax, amax
14952 The maximum allowed component value.
14953 @end table
14954
14955 All expressions default to "val".
14956
14957 @subsection Examples
14958
14959 @itemize
14960 @item
14961 Change too high luma values to gradient:
14962 @example
14963 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'"
14964 @end example
14965 @end itemize
14966
14967 @section psnr
14968
14969 Obtain the average, maximum and minimum PSNR (Peak Signal to Noise
14970 Ratio) between two input videos.
14971
14972 This filter takes in input two input videos, the first input is
14973 considered the "main" source and is passed unchanged to the
14974 output. The second input is used as a "reference" video for computing
14975 the PSNR.
14976
14977 Both video inputs must have the same resolution and pixel format for
14978 this filter to work correctly. Also it assumes that both inputs
14979 have the same number of frames, which are compared one by one.
14980
14981 The obtained average PSNR is printed through the logging system.
14982
14983 The filter stores the accumulated MSE (mean squared error) of each
14984 frame, and at the end of the processing it is averaged across all frames
14985 equally, and the following formula is applied to obtain the PSNR:
14986
14987 @example
14988 PSNR = 10*log10(MAX^2/MSE)
14989 @end example
14990
14991 Where MAX is the average of the maximum values of each component of the
14992 image.
14993
14994 The description of the accepted parameters follows.
14995
14996 @table @option
14997 @item stats_file, f
14998 If specified the filter will use the named file to save the PSNR of
14999 each individual frame. When filename equals "-" the data is sent to
15000 standard output.
15001
15002 @item stats_version
15003 Specifies which version of the stats file format to use. Details of
15004 each format are written below.
15005 Default value is 1.
15006
15007 @item stats_add_max
15008 Determines whether the max value is output to the stats log.
15009 Default value is 0.
15010 Requires stats_version >= 2. If this is set and stats_version < 2,
15011 the filter will return an error.
15012 @end table
15013
15014 This filter also supports the @ref{framesync} options.
15015
15016 The file printed if @var{stats_file} is selected, contains a sequence of
15017 key/value pairs of the form @var{key}:@var{value} for each compared
15018 couple of frames.
15019
15020 If a @var{stats_version} greater than 1 is specified, a header line precedes
15021 the list of per-frame-pair stats, with key value pairs following the frame
15022 format with the following parameters:
15023
15024 @table @option
15025 @item psnr_log_version
15026 The version of the log file format. Will match @var{stats_version}.
15027
15028 @item fields
15029 A comma separated list of the per-frame-pair parameters included in
15030 the log.
15031 @end table
15032
15033 A description of each shown per-frame-pair parameter follows:
15034
15035 @table @option
15036 @item n
15037 sequential number of the input frame, starting from 1
15038
15039 @item mse_avg
15040 Mean Square Error pixel-by-pixel average difference of the compared
15041 frames, averaged over all the image components.
15042
15043 @item mse_y, mse_u, mse_v, mse_r, mse_g, mse_b, mse_a
15044 Mean Square Error pixel-by-pixel average difference of the compared
15045 frames for the component specified by the suffix.
15046
15047 @item psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a
15048 Peak Signal to Noise ratio of the compared frames for the component
15049 specified by the suffix.
15050
15051 @item max_avg, max_y, max_u, max_v
15052 Maximum allowed value for each channel, and average over all
15053 channels.
15054 @end table
15055
15056 @subsection Examples
15057 @itemize
15058 @item
15059 For example:
15060 @example
15061 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
15062 [main][ref] psnr="stats_file=stats.log" [out]
15063 @end example
15064
15065 On this example the input file being processed is compared with the
15066 reference file @file{ref_movie.mpg}. The PSNR of each individual frame
15067 is stored in @file{stats.log}.
15068
15069 @item
15070 Another example with different containers:
15071 @example
15072 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 -
15073 @end example
15074 @end itemize
15075
15076 @anchor{pullup}
15077 @section pullup
15078
15079 Pulldown reversal (inverse telecine) filter, capable of handling mixed
15080 hard-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
15081 content.
15082
15083 The pullup filter is designed to take advantage of future context in making
15084 its decisions. This filter is stateless in the sense that it does not lock
15085 onto a pattern to follow, but it instead looks forward to the following
15086 fields in order to identify matches and rebuild progressive frames.
15087
15088 To produce content with an even framerate, insert the fps filter after
15089 pullup, use @code{fps=24000/1001} if the input frame rate is 29.97fps,
15090 @code{fps=24} for 30fps and the (rare) telecined 25fps input.
15091
15092 The filter accepts the following options:
15093
15094 @table @option
15095 @item jl
15096 @item jr
15097 @item jt
15098 @item jb
15099 These options set the amount of "junk" to ignore at the left, right, top, and
15100 bottom of the image, respectively. Left and right are in units of 8 pixels,
15101 while top and bottom are in units of 2 lines.
15102 The default is 8 pixels on each side.
15103
15104 @item sb
15105 Set the strict breaks. Setting this option to 1 will reduce the chances of
15106 filter generating an occasional mismatched frame, but it may also cause an
15107 excessive number of frames to be dropped during high motion sequences.
15108 Conversely, setting it to -1 will make filter match fields more easily.
15109 This may help processing of video where there is slight blurring between
15110 the fields, but may also cause there to be interlaced frames in the output.
15111 Default value is @code{0}.
15112
15113 @item mp
15114 Set the metric plane to use. It accepts the following values:
15115 @table @samp
15116 @item l
15117 Use luma plane.
15118
15119 @item u
15120 Use chroma blue plane.
15121
15122 @item v
15123 Use chroma red plane.
15124 @end table
15125
15126 This option may be set to use chroma plane instead of the default luma plane
15127 for doing filter's computations. This may improve accuracy on very clean
15128 source material, but more likely will decrease accuracy, especially if there
15129 is chroma noise (rainbow effect) or any grayscale video.
15130 The main purpose of setting @option{mp} to a chroma plane is to reduce CPU
15131 load and make pullup usable in realtime on slow machines.
15132 @end table
15133
15134 For best results (without duplicated frames in the output file) it is
15135 necessary to change the output frame rate. For example, to inverse
15136 telecine NTSC input:
15137 @example
15138 ffmpeg -i input -vf pullup -r 24000/1001 ...
15139 @end example
15140
15141 @section qp
15142
15143 Change video quantization parameters (QP).
15144
15145 The filter accepts the following option:
15146
15147 @table @option
15148 @item qp
15149 Set expression for quantization parameter.
15150 @end table
15151
15152 The expression is evaluated through the eval API and can contain, among others,
15153 the following constants:
15154
15155 @table @var
15156 @item known
15157 1 if index is not 129, 0 otherwise.
15158
15159 @item qp
15160 Sequential index starting from -129 to 128.
15161 @end table
15162
15163 @subsection Examples
15164
15165 @itemize
15166 @item
15167 Some equation like:
15168 @example
15169 qp=2+2*sin(PI*qp)
15170 @end example
15171 @end itemize
15172
15173 @section random
15174
15175 Flush video frames from internal cache of frames into a random order.
15176 No frame is discarded.
15177 Inspired by @ref{frei0r} nervous filter.
15178
15179 @table @option
15180 @item frames
15181 Set size in number of frames of internal cache, in range from @code{2} to
15182 @code{512}. Default is @code{30}.
15183
15184 @item seed
15185 Set seed for random number generator, must be an integer included between
15186 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
15187 less than @code{0}, the filter will try to use a good random seed on a
15188 best effort basis.
15189 @end table
15190
15191 @section readeia608
15192
15193 Read closed captioning (EIA-608) information from the top lines of a video frame.
15194
15195 This filter adds frame metadata for @code{lavfi.readeia608.X.cc} and
15196 @code{lavfi.readeia608.X.line}, where @code{X} is the number of the identified line
15197 with EIA-608 data (starting from 0). A description of each metadata value follows:
15198
15199 @table @option
15200 @item lavfi.readeia608.X.cc
15201 The two bytes stored as EIA-608 data (printed in hexadecimal).
15202
15203 @item lavfi.readeia608.X.line
15204 The number of the line on which the EIA-608 data was identified and read.
15205 @end table
15206
15207 This filter accepts the following options:
15208
15209 @table @option
15210 @item scan_min
15211 Set the line to start scanning for EIA-608 data. Default is @code{0}.
15212
15213 @item scan_max
15214 Set the line to end scanning for EIA-608 data. Default is @code{29}.
15215
15216 @item mac
15217 Set minimal acceptable amplitude change for sync codes detection.
15218 Default is @code{0.2}. Allowed range is @code{[0.001 - 1]}.
15219
15220 @item spw
15221 Set the ratio of width reserved for sync code detection.
15222 Default is @code{0.27}. Allowed range is @code{[0.01 - 0.7]}.
15223
15224 @item mhd
15225 Set the max peaks height difference for sync code detection.
15226 Default is @code{0.1}. Allowed range is @code{[0.0 - 0.5]}.
15227
15228 @item mpd
15229 Set max peaks period difference for sync code detection.
15230 Default is @code{0.1}. Allowed range is @code{[0.0 - 0.5]}.
15231
15232 @item msd
15233 Set the first two max start code bits differences.
15234 Default is @code{0.02}. Allowed range is @code{[0.0 - 0.5]}.
15235
15236 @item bhd
15237 Set the minimum ratio of bits height compared to 3rd start code bit.
15238 Default is @code{0.75}. Allowed range is @code{[0.01 - 1]}.
15239
15240 @item th_w
15241 Set the white color threshold. Default is @code{0.35}. Allowed range is @code{[0.1 - 1]}.
15242
15243 @item th_b
15244 Set the black color threshold. Default is @code{0.15}. Allowed range is @code{[0.0 - 0.5]}.
15245
15246 @item chp
15247 Enable checking the parity bit. In the event of a parity error, the filter will output
15248 @code{0x00} for that character. Default is false.
15249
15250 @item lp
15251 Lowpass lines prior to further processing. Default is disabled.
15252 @end table
15253
15254 @subsection Examples
15255
15256 @itemize
15257 @item
15258 Output a csv with presentation time and the first two lines of identified EIA-608 captioning data.
15259 @example
15260 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
15261 @end example
15262 @end itemize
15263
15264 @section readvitc
15265
15266 Read vertical interval timecode (VITC) information from the top lines of a
15267 video frame.
15268
15269 The filter adds frame metadata key @code{lavfi.readvitc.tc_str} with the
15270 timecode value, if a valid timecode has been detected. Further metadata key
15271 @code{lavfi.readvitc.found} is set to 0/1 depending on whether
15272 timecode data has been found or not.
15273
15274 This filter accepts the following options:
15275
15276 @table @option
15277 @item scan_max
15278 Set the maximum number of lines to scan for VITC data. If the value is set to
15279 @code{-1} the full video frame is scanned. Default is @code{45}.
15280
15281 @item thr_b
15282 Set the luma threshold for black. Accepts float numbers in the range [0.0,1.0],
15283 default value is @code{0.2}. The value must be equal or less than @code{thr_w}.
15284
15285 @item thr_w
15286 Set the luma threshold for white. Accepts float numbers in the range [0.0,1.0],
15287 default value is @code{0.6}. The value must be equal or greater than @code{thr_b}.
15288 @end table
15289
15290 @subsection Examples
15291
15292 @itemize
15293 @item
15294 Detect and draw VITC data onto the video frame; if no valid VITC is detected,
15295 draw @code{--:--:--:--} as a placeholder:
15296 @example
15297 ffmpeg -i input.avi -filter:v 'readvitc,drawtext=fontfile=FreeMono.ttf:text=%@{metadata\\:lavfi.readvitc.tc_str\\:--\\\\\\:--\\\\\\:--\\\\\\:--@}:x=(w-tw)/2:y=400-ascent'
15298 @end example
15299 @end itemize
15300
15301 @section remap
15302
15303 Remap pixels using 2nd: Xmap and 3rd: Ymap input video stream.
15304
15305 Destination pixel at position (X, Y) will be picked from source (x, y) position
15306 where x = Xmap(X, Y) and y = Ymap(X, Y). If mapping values are out of range, zero
15307 value for pixel will be used for destination pixel.
15308
15309 Xmap and Ymap input video streams must be of same dimensions. Output video stream
15310 will have Xmap/Ymap video stream dimensions.
15311 Xmap and Ymap input video streams are 16bit depth, single channel.
15312
15313 @table @option
15314 @item format
15315 Specify pixel format of output from this filter. Can be @code{color} or @code{gray}.
15316 Default is @code{color}.
15317 @end table
15318
15319 @section removegrain
15320
15321 The removegrain filter is a spatial denoiser for progressive video.
15322
15323 @table @option
15324 @item m0
15325 Set mode for the first plane.
15326
15327 @item m1
15328 Set mode for the second plane.
15329
15330 @item m2
15331 Set mode for the third plane.
15332
15333 @item m3
15334 Set mode for the fourth plane.
15335 @end table
15336
15337 Range of mode is from 0 to 24. Description of each mode follows:
15338
15339 @table @var
15340 @item 0
15341 Leave input plane unchanged. Default.
15342
15343 @item 1
15344 Clips the pixel with the minimum and maximum of the 8 neighbour pixels.
15345
15346 @item 2
15347 Clips the pixel with the second minimum and maximum of the 8 neighbour pixels.
15348
15349 @item 3
15350 Clips the pixel with the third minimum and maximum of the 8 neighbour pixels.
15351
15352 @item 4
15353 Clips the pixel with the fourth minimum and maximum of the 8 neighbour pixels.
15354 This is equivalent to a median filter.
15355
15356 @item 5
15357 Line-sensitive clipping giving the minimal change.
15358
15359 @item 6
15360 Line-sensitive clipping, intermediate.
15361
15362 @item 7
15363 Line-sensitive clipping, intermediate.
15364
15365 @item 8
15366 Line-sensitive clipping, intermediate.
15367
15368 @item 9
15369 Line-sensitive clipping on a line where the neighbours pixels are the closest.
15370
15371 @item 10
15372 Replaces the target pixel with the closest neighbour.
15373
15374 @item 11
15375 [1 2 1] horizontal and vertical kernel blur.
15376
15377 @item 12
15378 Same as mode 11.
15379
15380 @item 13
15381 Bob mode, interpolates top field from the line where the neighbours
15382 pixels are the closest.
15383
15384 @item 14
15385 Bob mode, interpolates bottom field from the line where the neighbours
15386 pixels are the closest.
15387
15388 @item 15
15389 Bob mode, interpolates top field. Same as 13 but with a more complicated
15390 interpolation formula.
15391
15392 @item 16
15393 Bob mode, interpolates bottom field. Same as 14 but with a more complicated
15394 interpolation formula.
15395
15396 @item 17
15397 Clips the pixel with the minimum and maximum of respectively the maximum and
15398 minimum of each pair of opposite neighbour pixels.
15399
15400 @item 18
15401 Line-sensitive clipping using opposite neighbours whose greatest distance from
15402 the current pixel is minimal.
15403
15404 @item 19
15405 Replaces the pixel with the average of its 8 neighbours.
15406
15407 @item 20
15408 Averages the 9 pixels ([1 1 1] horizontal and vertical blur).
15409
15410 @item 21
15411 Clips pixels using the averages of opposite neighbour.
15412
15413 @item 22
15414 Same as mode 21 but simpler and faster.
15415
15416 @item 23
15417 Small edge and halo removal, but reputed useless.
15418
15419 @item 24
15420 Similar as 23.
15421 @end table
15422
15423 @section removelogo
15424
15425 Suppress a TV station logo, using an image file to determine which
15426 pixels comprise the logo. It works by filling in the pixels that
15427 comprise the logo with neighboring pixels.
15428
15429 The filter accepts the following options:
15430
15431 @table @option
15432 @item filename, f
15433 Set the filter bitmap file, which can be any image format supported by
15434 libavformat. The width and height of the image file must match those of the
15435 video stream being processed.
15436 @end table
15437
15438 Pixels in the provided bitmap image with a value of zero are not
15439 considered part of the logo, non-zero pixels are considered part of
15440 the logo. If you use white (255) for the logo and black (0) for the
15441 rest, you will be safe. For making the filter bitmap, it is
15442 recommended to take a screen capture of a black frame with the logo
15443 visible, and then using a threshold filter followed by the erode
15444 filter once or twice.
15445
15446 If needed, little splotches can be fixed manually. Remember that if
15447 logo pixels are not covered, the filter quality will be much
15448 reduced. Marking too many pixels as part of the logo does not hurt as
15449 much, but it will increase the amount of blurring needed to cover over
15450 the image and will destroy more information than necessary, and extra
15451 pixels will slow things down on a large logo.
15452
15453 @section repeatfields
15454
15455 This filter uses the repeat_field flag from the Video ES headers and hard repeats
15456 fields based on its value.
15457
15458 @section reverse
15459
15460 Reverse a video clip.
15461
15462 Warning: This filter requires memory to buffer the entire clip, so trimming
15463 is suggested.
15464
15465 @subsection Examples
15466
15467 @itemize
15468 @item
15469 Take the first 5 seconds of a clip, and reverse it.
15470 @example
15471 trim=end=5,reverse
15472 @end example
15473 @end itemize
15474
15475 @section rgbashift
15476 Shift R/G/B/A pixels horizontally and/or vertically.
15477
15478 The filter accepts the following options:
15479 @table @option
15480 @item rh
15481 Set amount to shift red horizontally.
15482 @item rv
15483 Set amount to shift red vertically.
15484 @item gh
15485 Set amount to shift green horizontally.
15486 @item gv
15487 Set amount to shift green vertically.
15488 @item bh
15489 Set amount to shift blue horizontally.
15490 @item bv
15491 Set amount to shift blue vertically.
15492 @item ah
15493 Set amount to shift alpha horizontally.
15494 @item av
15495 Set amount to shift alpha vertically.
15496 @item edge
15497 Set edge mode, can be @var{smear}, default, or @var{warp}.
15498 @end table
15499
15500 @section roberts
15501 Apply roberts cross operator to input video stream.
15502
15503 The filter accepts the following option:
15504
15505 @table @option
15506 @item planes
15507 Set which planes will be processed, unprocessed planes will be copied.
15508 By default value 0xf, all planes will be processed.
15509
15510 @item scale
15511 Set value which will be multiplied with filtered result.
15512
15513 @item delta
15514 Set value which will be added to filtered result.
15515 @end table
15516
15517 @section rotate
15518
15519 Rotate video by an arbitrary angle expressed in radians.
15520
15521 The filter accepts the following options:
15522
15523 A description of the optional parameters follows.
15524 @table @option
15525 @item angle, a
15526 Set an expression for the angle by which to rotate the input video
15527 clockwise, expressed as a number of radians. A negative value will
15528 result in a counter-clockwise rotation. By default it is set to "0".
15529
15530 This expression is evaluated for each frame.
15531
15532 @item out_w, ow
15533 Set the output width expression, default value is "iw".
15534 This expression is evaluated just once during configuration.
15535
15536 @item out_h, oh
15537 Set the output height expression, default value is "ih".
15538 This expression is evaluated just once during configuration.
15539
15540 @item bilinear
15541 Enable bilinear interpolation if set to 1, a value of 0 disables
15542 it. Default value is 1.
15543
15544 @item fillcolor, c
15545 Set the color used to fill the output area not covered by the rotated
15546 image. For the general syntax of this option, check the
15547 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
15548 If the special value "none" is selected then no
15549 background is printed (useful for example if the background is never shown).
15550
15551 Default value is "black".
15552 @end table
15553
15554 The expressions for the angle and the output size can contain the
15555 following constants and functions:
15556
15557 @table @option
15558 @item n
15559 sequential number of the input frame, starting from 0. It is always NAN
15560 before the first frame is filtered.
15561
15562 @item t
15563 time in seconds of the input frame, it is set to 0 when the filter is
15564 configured. It is always NAN before the first frame is filtered.
15565
15566 @item hsub
15567 @item vsub
15568 horizontal and vertical chroma subsample values. For example for the
15569 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
15570
15571 @item in_w, iw
15572 @item in_h, ih
15573 the input video width and height
15574
15575 @item out_w, ow
15576 @item out_h, oh
15577 the output width and height, that is the size of the padded area as
15578 specified by the @var{width} and @var{height} expressions
15579
15580 @item rotw(a)
15581 @item roth(a)
15582 the minimal width/height required for completely containing the input
15583 video rotated by @var{a} radians.
15584
15585 These are only available when computing the @option{out_w} and
15586 @option{out_h} expressions.
15587 @end table
15588
15589 @subsection Examples
15590
15591 @itemize
15592 @item
15593 Rotate the input by PI/6 radians clockwise:
15594 @example
15595 rotate=PI/6
15596 @end example
15597
15598 @item
15599 Rotate the input by PI/6 radians counter-clockwise:
15600 @example
15601 rotate=-PI/6
15602 @end example
15603
15604 @item
15605 Rotate the input by 45 degrees clockwise:
15606 @example
15607 rotate=45*PI/180
15608 @end example
15609
15610 @item
15611 Apply a constant rotation with period T, starting from an angle of PI/3:
15612 @example
15613 rotate=PI/3+2*PI*t/T
15614 @end example
15615
15616 @item
15617 Make the input video rotation oscillating with a period of T
15618 seconds and an amplitude of A radians:
15619 @example
15620 rotate=A*sin(2*PI/T*t)
15621 @end example
15622
15623 @item
15624 Rotate the video, output size is chosen so that the whole rotating
15625 input video is always completely contained in the output:
15626 @example
15627 rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
15628 @end example
15629
15630 @item
15631 Rotate the video, reduce the output size so that no background is ever
15632 shown:
15633 @example
15634 rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
15635 @end example
15636 @end itemize
15637
15638 @subsection Commands
15639
15640 The filter supports the following commands:
15641
15642 @table @option
15643 @item a, angle
15644 Set the angle expression.
15645 The command accepts the same syntax of the corresponding option.
15646
15647 If the specified expression is not valid, it is kept at its current
15648 value.
15649 @end table
15650
15651 @section sab
15652
15653 Apply Shape Adaptive Blur.
15654
15655 The filter accepts the following options:
15656
15657 @table @option
15658 @item luma_radius, lr
15659 Set luma blur filter strength, must be a value in range 0.1-4.0, default
15660 value is 1.0. A greater value will result in a more blurred image, and
15661 in slower processing.
15662
15663 @item luma_pre_filter_radius, lpfr
15664 Set luma pre-filter radius, must be a value in the 0.1-2.0 range, default
15665 value is 1.0.
15666
15667 @item luma_strength, ls
15668 Set luma maximum difference between pixels to still be considered, must
15669 be a value in the 0.1-100.0 range, default value is 1.0.
15670
15671 @item chroma_radius, cr
15672 Set chroma blur filter strength, must be a value in range -0.9-4.0. A
15673 greater value will result in a more blurred image, and in slower
15674 processing.
15675
15676 @item chroma_pre_filter_radius, cpfr
15677 Set chroma pre-filter radius, must be a value in the -0.9-2.0 range.
15678
15679 @item chroma_strength, cs
15680 Set chroma maximum difference between pixels to still be considered,
15681 must be a value in the -0.9-100.0 range.
15682 @end table
15683
15684 Each chroma option value, if not explicitly specified, is set to the
15685 corresponding luma option value.
15686
15687 @anchor{scale}
15688 @section scale
15689
15690 Scale (resize) the input video, using the libswscale library.
15691
15692 The scale filter forces the output display aspect ratio to be the same
15693 of the input, by changing the output sample aspect ratio.
15694
15695 If the input image format is different from the format requested by
15696 the next filter, the scale filter will convert the input to the
15697 requested format.
15698
15699 @subsection Options
15700 The filter accepts the following options, or any of the options
15701 supported by the libswscale scaler.
15702
15703 See @ref{scaler_options,,the ffmpeg-scaler manual,ffmpeg-scaler} for
15704 the complete list of scaler options.
15705
15706 @table @option
15707 @item width, w
15708 @item height, h
15709 Set the output video dimension expression. Default value is the input
15710 dimension.
15711
15712 If the @var{width} or @var{w} value is 0, the input width is used for
15713 the output. If the @var{height} or @var{h} value is 0, the input height
15714 is used for the output.
15715
15716 If one and only one of the values is -n with n >= 1, the scale filter
15717 will use a value that maintains the aspect ratio of the input image,
15718 calculated from the other specified dimension. After that it will,
15719 however, make sure that the calculated dimension is divisible by n and
15720 adjust the value if necessary.
15721
15722 If both values are -n with n >= 1, the behavior will be identical to
15723 both values being set to 0 as previously detailed.
15724
15725 See below for the list of accepted constants for use in the dimension
15726 expression.
15727
15728 @item eval
15729 Specify when to evaluate @var{width} and @var{height} expression. It accepts the following values:
15730
15731 @table @samp
15732 @item init
15733 Only evaluate expressions once during the filter initialization or when a command is processed.
15734
15735 @item frame
15736 Evaluate expressions for each incoming frame.
15737
15738 @end table
15739
15740 Default value is @samp{init}.
15741
15742
15743 @item interl
15744 Set the interlacing mode. It accepts the following values:
15745
15746 @table @samp
15747 @item 1
15748 Force interlaced aware scaling.
15749
15750 @item 0
15751 Do not apply interlaced scaling.
15752
15753 @item -1
15754 Select interlaced aware scaling depending on whether the source frames
15755 are flagged as interlaced or not.
15756 @end table
15757
15758 Default value is @samp{0}.
15759
15760 @item flags
15761 Set libswscale scaling flags. See
15762 @ref{sws_flags,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
15763 complete list of values. If not explicitly specified the filter applies
15764 the default flags.
15765
15766
15767 @item param0, param1
15768 Set libswscale input parameters for scaling algorithms that need them. See
15769 @ref{sws_params,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
15770 complete documentation. If not explicitly specified the filter applies
15771 empty parameters.
15772
15773
15774
15775 @item size, s
15776 Set the video size. For the syntax of this option, check the
15777 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
15778
15779 @item in_color_matrix
15780 @item out_color_matrix
15781 Set in/output YCbCr color space type.
15782
15783 This allows the autodetected value to be overridden as well as allows forcing
15784 a specific value used for the output and encoder.
15785
15786 If not specified, the color space type depends on the pixel format.
15787
15788 Possible values:
15789
15790 @table @samp
15791 @item auto
15792 Choose automatically.
15793
15794 @item bt709
15795 Format conforming to International Telecommunication Union (ITU)
15796 Recommendation BT.709.
15797
15798 @item fcc
15799 Set color space conforming to the United States Federal Communications
15800 Commission (FCC) Code of Federal Regulations (CFR) Title 47 (2003) 73.682 (a).
15801
15802 @item bt601
15803 @item bt470
15804 @item smpte170m
15805 Set color space conforming to:
15806
15807 @itemize
15808 @item
15809 ITU Radiocommunication Sector (ITU-R) Recommendation BT.601
15810
15811 @item
15812 ITU-R Rec. BT.470-6 (1998) Systems B, B1, and G
15813
15814 @item
15815 Society of Motion Picture and Television Engineers (SMPTE) ST 170:2004
15816
15817 @end itemize
15818
15819 @item smpte240m
15820 Set color space conforming to SMPTE ST 240:1999.
15821
15822 @item bt2020
15823 Set color space conforming to ITU-R BT.2020 non-constant luminance system.
15824 @end table
15825
15826 @item in_range
15827 @item out_range
15828 Set in/output YCbCr sample range.
15829
15830 This allows the autodetected value to be overridden as well as allows forcing
15831 a specific value used for the output and encoder. If not specified, the
15832 range depends on the pixel format. Possible values:
15833
15834 @table @samp
15835 @item auto/unknown
15836 Choose automatically.
15837
15838 @item jpeg/full/pc
15839 Set full range (0-255 in case of 8-bit luma).
15840
15841 @item mpeg/limited/tv
15842 Set "MPEG" range (16-235 in case of 8-bit luma).
15843 @end table
15844
15845 @item force_original_aspect_ratio
15846 Enable decreasing or increasing output video width or height if necessary to
15847 keep the original aspect ratio. Possible values:
15848
15849 @table @samp
15850 @item disable
15851 Scale the video as specified and disable this feature.
15852
15853 @item decrease
15854 The output video dimensions will automatically be decreased if needed.
15855
15856 @item increase
15857 The output video dimensions will automatically be increased if needed.
15858
15859 @end table
15860
15861 One useful instance of this option is that when you know a specific device's
15862 maximum allowed resolution, you can use this to limit the output video to
15863 that, while retaining the aspect ratio. For example, device A allows
15864 1280x720 playback, and your video is 1920x800. Using this option (set it to
15865 decrease) and specifying 1280x720 to the command line makes the output
15866 1280x533.
15867
15868 Please note that this is a different thing than specifying -1 for @option{w}
15869 or @option{h}, you still need to specify the output resolution for this option
15870 to work.
15871
15872 @item force_divisible_by
15873 Ensures that both the output dimensions, width and height, are divisible by the
15874 given integer when used together with @option{force_original_aspect_ratio}. This
15875 works similar to using @code{-n} in the @option{w} and @option{h} options.
15876
15877 This option respects the value set for @option{force_original_aspect_ratio},
15878 increasing or decreasing the resolution accordingly. The video's aspect ratio
15879 may be slightly modified.
15880
15881 This option can be handy if you need to have a video fit within or exceed
15882 a defined resolution using @option{force_original_aspect_ratio} but also have
15883 encoder restrictions on width or height divisibility.
15884
15885 @end table
15886
15887 The values of the @option{w} and @option{h} options are expressions
15888 containing the following constants:
15889
15890 @table @var
15891 @item in_w
15892 @item in_h
15893 The input width and height
15894
15895 @item iw
15896 @item ih
15897 These are the same as @var{in_w} and @var{in_h}.
15898
15899 @item out_w
15900 @item out_h
15901 The output (scaled) width and height
15902
15903 @item ow
15904 @item oh
15905 These are the same as @var{out_w} and @var{out_h}
15906
15907 @item a
15908 The same as @var{iw} / @var{ih}
15909
15910 @item sar
15911 input sample aspect ratio
15912
15913 @item dar
15914 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
15915
15916 @item hsub
15917 @item vsub
15918 horizontal and vertical input chroma subsample values. For example for the
15919 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
15920
15921 @item ohsub
15922 @item ovsub
15923 horizontal and vertical output chroma subsample values. For example for the
15924 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
15925 @end table
15926
15927 @subsection Examples
15928
15929 @itemize
15930 @item
15931 Scale the input video to a size of 200x100
15932 @example
15933 scale=w=200:h=100
15934 @end example
15935
15936 This is equivalent to:
15937 @example
15938 scale=200:100
15939 @end example
15940
15941 or:
15942 @example
15943 scale=200x100
15944 @end example
15945
15946 @item
15947 Specify a size abbreviation for the output size:
15948 @example
15949 scale=qcif
15950 @end example
15951
15952 which can also be written as:
15953 @example
15954 scale=size=qcif
15955 @end example
15956
15957 @item
15958 Scale the input to 2x:
15959 @example
15960 scale=w=2*iw:h=2*ih
15961 @end example
15962
15963 @item
15964 The above is the same as:
15965 @example
15966 scale=2*in_w:2*in_h
15967 @end example
15968
15969 @item
15970 Scale the input to 2x with forced interlaced scaling:
15971 @example
15972 scale=2*iw:2*ih:interl=1
15973 @end example
15974
15975 @item
15976 Scale the input to half size:
15977 @example
15978 scale=w=iw/2:h=ih/2
15979 @end example
15980
15981 @item
15982 Increase the width, and set the height to the same size:
15983 @example
15984 scale=3/2*iw:ow
15985 @end example
15986
15987 @item
15988 Seek Greek harmony:
15989 @example
15990 scale=iw:1/PHI*iw
15991 scale=ih*PHI:ih
15992 @end example
15993
15994 @item
15995 Increase the height, and set the width to 3/2 of the height:
15996 @example
15997 scale=w=3/2*oh:h=3/5*ih
15998 @end example
15999
16000 @item
16001 Increase the size, making the size a multiple of the chroma
16002 subsample values:
16003 @example
16004 scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
16005 @end example
16006
16007 @item
16008 Increase the width to a maximum of 500 pixels,
16009 keeping the same aspect ratio as the input:
16010 @example
16011 scale=w='min(500\, iw*3/2):h=-1'
16012 @end example
16013
16014 @item
16015 Make pixels square by combining scale and setsar:
16016 @example
16017 scale='trunc(ih*dar):ih',setsar=1/1
16018 @end example
16019
16020 @item
16021 Make pixels square by combining scale and setsar,
16022 making sure the resulting resolution is even (required by some codecs):
16023 @example
16024 scale='trunc(ih*dar/2)*2:trunc(ih/2)*2',setsar=1/1
16025 @end example
16026 @end itemize
16027
16028 @subsection Commands
16029
16030 This filter supports the following commands:
16031 @table @option
16032 @item width, w
16033 @item height, h
16034 Set the output video dimension expression.
16035 The command accepts the same syntax of the corresponding option.
16036
16037 If the specified expression is not valid, it is kept at its current
16038 value.
16039 @end table
16040
16041 @section scale_npp
16042
16043 Use the NVIDIA Performance Primitives (libnpp) to perform scaling and/or pixel
16044 format conversion on CUDA video frames. Setting the output width and height
16045 works in the same way as for the @var{scale} filter.
16046
16047 The following additional options are accepted:
16048 @table @option
16049 @item format
16050 The pixel format of the output CUDA frames. If set to the string "same" (the
16051 default), the input format will be kept. Note that automatic format negotiation
16052 and conversion is not yet supported for hardware frames
16053
16054 @item interp_algo
16055 The interpolation algorithm used for resizing. One of the following:
16056 @table @option
16057 @item nn
16058 Nearest neighbour.
16059
16060 @item linear
16061 @item cubic
16062 @item cubic2p_bspline
16063 2-parameter cubic (B=1, C=0)
16064
16065 @item cubic2p_catmullrom
16066 2-parameter cubic (B=0, C=1/2)
16067
16068 @item cubic2p_b05c03
16069 2-parameter cubic (B=1/2, C=3/10)
16070
16071 @item super
16072 Supersampling
16073
16074 @item lanczos
16075 @end table
16076
16077 @end table
16078
16079 @section scale2ref
16080
16081 Scale (resize) the input video, based on a reference video.
16082
16083 See the scale filter for available options, scale2ref supports the same but
16084 uses the reference video instead of the main input as basis. scale2ref also
16085 supports the following additional constants for the @option{w} and
16086 @option{h} options:
16087
16088 @table @var
16089 @item main_w
16090 @item main_h
16091 The main input video's width and height
16092
16093 @item main_a
16094 The same as @var{main_w} / @var{main_h}
16095
16096 @item main_sar
16097 The main input video's sample aspect ratio
16098
16099 @item main_dar, mdar
16100 The main input video's display aspect ratio. Calculated from
16101 @code{(main_w / main_h) * main_sar}.
16102
16103 @item main_hsub
16104 @item main_vsub
16105 The main input video's horizontal and vertical chroma subsample values.
16106 For example for the pixel format "yuv422p" @var{hsub} is 2 and @var{vsub}
16107 is 1.
16108 @end table
16109
16110 @subsection Examples
16111
16112 @itemize
16113 @item
16114 Scale a subtitle stream (b) to match the main video (a) in size before overlaying
16115 @example
16116 'scale2ref[b][a];[a][b]overlay'
16117 @end example
16118
16119 @item
16120 Scale a logo to 1/10th the height of a video, while preserving its display aspect ratio.
16121 @example
16122 [logo-in][video-in]scale2ref=w=oh*mdar:h=ih/10[logo-out][video-out]
16123 @end example
16124 @end itemize
16125
16126 @section scroll
16127 Scroll input video horizontally and/or vertically by constant speed.
16128
16129 The filter accepts the following options:
16130 @table @option
16131 @item horizontal, h
16132 Set the horizontal scrolling speed. Default is 0. Allowed range is from -1 to 1.
16133 Negative values changes scrolling direction.
16134
16135 @item vertical, v
16136 Set the vertical scrolling speed. Default is 0. Allowed range is from -1 to 1.
16137 Negative values changes scrolling direction.
16138
16139 @item hpos
16140 Set the initial horizontal scrolling position. Default is 0. Allowed range is from 0 to 1.
16141
16142 @item vpos
16143 Set the initial vertical scrolling position. Default is 0. Allowed range is from 0 to 1.
16144 @end table
16145
16146 @subsection Commands
16147
16148 This filter supports the following @ref{commands}:
16149 @table @option
16150 @item horizontal, h
16151 Set the horizontal scrolling speed.
16152 @item vertical, v
16153 Set the vertical scrolling speed.
16154 @end table
16155
16156 @anchor{selectivecolor}
16157 @section selectivecolor
16158
16159 Adjust cyan, magenta, yellow and black (CMYK) to certain ranges of colors (such
16160 as "reds", "yellows", "greens", "cyans", ...). The adjustment range is defined
16161 by the "purity" of the color (that is, how saturated it already is).
16162
16163 This filter is similar to the Adobe Photoshop Selective Color tool.
16164
16165 The filter accepts the following options:
16166
16167 @table @option
16168 @item correction_method
16169 Select color correction method.
16170
16171 Available values are:
16172 @table @samp
16173 @item absolute
16174 Specified adjustments are applied "as-is" (added/subtracted to original pixel
16175 component value).
16176 @item relative
16177 Specified adjustments are relative to the original component value.
16178 @end table
16179 Default is @code{absolute}.
16180 @item reds
16181 Adjustments for red pixels (pixels where the red component is the maximum)
16182 @item yellows
16183 Adjustments for yellow pixels (pixels where the blue component is the minimum)
16184 @item greens
16185 Adjustments for green pixels (pixels where the green component is the maximum)
16186 @item cyans
16187 Adjustments for cyan pixels (pixels where the red component is the minimum)
16188 @item blues
16189 Adjustments for blue pixels (pixels where the blue component is the maximum)
16190 @item magentas
16191 Adjustments for magenta pixels (pixels where the green component is the minimum)
16192 @item whites
16193 Adjustments for white pixels (pixels where all components are greater than 128)
16194 @item neutrals
16195 Adjustments for all pixels except pure black and pure white
16196 @item blacks
16197 Adjustments for black pixels (pixels where all components are lesser than 128)
16198 @item psfile
16199 Specify a Photoshop selective color file (@code{.asv}) to import the settings from.
16200 @end table
16201
16202 All the adjustment settings (@option{reds}, @option{yellows}, ...) accept up to
16203 4 space separated floating point adjustment values in the [-1,1] range,
16204 respectively to adjust the amount of cyan, magenta, yellow and black for the
16205 pixels of its range.
16206
16207 @subsection Examples
16208
16209 @itemize
16210 @item
16211 Increase cyan by 50% and reduce yellow by 33% in every green areas, and
16212 increase magenta by 27% in blue areas:
16213 @example
16214 selectivecolor=greens=.5 0 -.33 0:blues=0 .27
16215 @end example
16216
16217 @item
16218 Use a Photoshop selective color preset:
16219 @example
16220 selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
16221 @end example
16222 @end itemize
16223
16224 @anchor{separatefields}
16225 @section separatefields
16226
16227 The @code{separatefields} takes a frame-based video input and splits
16228 each frame into its components fields, producing a new half height clip
16229 with twice the frame rate and twice the frame count.
16230
16231 This filter use field-dominance information in frame to decide which
16232 of each pair of fields to place first in the output.
16233 If it gets it wrong use @ref{setfield} filter before @code{separatefields} filter.
16234
16235 @section setdar, setsar
16236
16237 The @code{setdar} filter sets the Display Aspect Ratio for the filter
16238 output video.
16239
16240 This is done by changing the specified Sample (aka Pixel) Aspect
16241 Ratio, according to the following equation:
16242 @example
16243 @var{DAR} = @var{HORIZONTAL_RESOLUTION} / @var{VERTICAL_RESOLUTION} * @var{SAR}
16244 @end example
16245
16246 Keep in mind that the @code{setdar} filter does not modify the pixel
16247 dimensions of the video frame. Also, the display aspect ratio set by
16248 this filter may be changed by later filters in the filterchain,
16249 e.g. in case of scaling or if another "setdar" or a "setsar" filter is
16250 applied.
16251
16252 The @code{setsar} filter sets the Sample (aka Pixel) Aspect Ratio for
16253 the filter output video.
16254
16255 Note that as a consequence of the application of this filter, the
16256 output display aspect ratio will change according to the equation
16257 above.
16258
16259 Keep in mind that the sample aspect ratio set by the @code{setsar}
16260 filter may be changed by later filters in the filterchain, e.g. if
16261 another "setsar" or a "setdar" filter is applied.
16262
16263 It accepts the following parameters:
16264
16265 @table @option
16266 @item r, ratio, dar (@code{setdar} only), sar (@code{setsar} only)
16267 Set the aspect ratio used by the filter.
16268
16269 The parameter can be a floating point number string, an expression, or
16270 a string of the form @var{num}:@var{den}, where @var{num} and
16271 @var{den} are the numerator and denominator of the aspect ratio. If
16272 the parameter is not specified, it is assumed the value "0".
16273 In case the form "@var{num}:@var{den}" is used, the @code{:} character
16274 should be escaped.
16275
16276 @item max
16277 Set the maximum integer value to use for expressing numerator and
16278 denominator when reducing the expressed aspect ratio to a rational.
16279 Default value is @code{100}.
16280
16281 @end table
16282
16283 The parameter @var{sar} is an expression containing
16284 the following constants:
16285
16286 @table @option
16287 @item E, PI, PHI
16288 These are approximated values for the mathematical constants e
16289 (Euler's number), pi (Greek pi), and phi (the golden ratio).
16290
16291 @item w, h
16292 The input width and height.
16293
16294 @item a
16295 These are the same as @var{w} / @var{h}.
16296
16297 @item sar
16298 The input sample aspect ratio.
16299
16300 @item dar
16301 The input display aspect ratio. It is the same as
16302 (@var{w} / @var{h}) * @var{sar}.
16303
16304 @item hsub, vsub
16305 Horizontal and vertical chroma subsample values. For example, for the
16306 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16307 @end table
16308
16309 @subsection Examples
16310
16311 @itemize
16312
16313 @item
16314 To change the display aspect ratio to 16:9, specify one of the following:
16315 @example
16316 setdar=dar=1.77777
16317 setdar=dar=16/9
16318 @end example
16319
16320 @item
16321 To change the sample aspect ratio to 10:11, specify:
16322 @example
16323 setsar=sar=10/11
16324 @end example
16325
16326 @item
16327 To set a display aspect ratio of 16:9, and specify a maximum integer value of
16328 1000 in the aspect ratio reduction, use the command:
16329 @example
16330 setdar=ratio=16/9:max=1000
16331 @end example
16332
16333 @end itemize
16334
16335 @anchor{setfield}
16336 @section setfield
16337
16338 Force field for the output video frame.
16339
16340 The @code{setfield} filter marks the interlace type field for the
16341 output frames. It does not change the input frame, but only sets the
16342 corresponding property, which affects how the frame is treated by
16343 following filters (e.g. @code{fieldorder} or @code{yadif}).
16344
16345 The filter accepts the following options:
16346
16347 @table @option
16348
16349 @item mode
16350 Available values are:
16351
16352 @table @samp
16353 @item auto
16354 Keep the same field property.
16355
16356 @item bff
16357 Mark the frame as bottom-field-first.
16358
16359 @item tff
16360 Mark the frame as top-field-first.
16361
16362 @item prog
16363 Mark the frame as progressive.
16364 @end table
16365 @end table
16366
16367 @anchor{setparams}
16368 @section setparams
16369
16370 Force frame parameter for the output video frame.
16371
16372 The @code{setparams} filter marks interlace and color range for the
16373 output frames. It does not change the input frame, but only sets the
16374 corresponding property, which affects how the frame is treated by
16375 filters/encoders.
16376
16377 @table @option
16378 @item field_mode
16379 Available values are:
16380
16381 @table @samp
16382 @item auto
16383 Keep the same field property (default).
16384
16385 @item bff
16386 Mark the frame as bottom-field-first.
16387
16388 @item tff
16389 Mark the frame as top-field-first.
16390
16391 @item prog
16392 Mark the frame as progressive.
16393 @end table
16394
16395 @item range
16396 Available values are:
16397
16398 @table @samp
16399 @item auto
16400 Keep the same color range property (default).
16401
16402 @item unspecified, unknown
16403 Mark the frame as unspecified color range.
16404
16405 @item limited, tv, mpeg
16406 Mark the frame as limited range.
16407
16408 @item full, pc, jpeg
16409 Mark the frame as full range.
16410 @end table
16411
16412 @item color_primaries
16413 Set the color primaries.
16414 Available values are:
16415
16416 @table @samp
16417 @item auto
16418 Keep the same color primaries property (default).
16419
16420 @item bt709
16421 @item unknown
16422 @item bt470m
16423 @item bt470bg
16424 @item smpte170m
16425 @item smpte240m
16426 @item film
16427 @item bt2020
16428 @item smpte428
16429 @item smpte431
16430 @item smpte432
16431 @item jedec-p22
16432 @end table
16433
16434 @item color_trc
16435 Set the color transfer.
16436 Available values are:
16437
16438 @table @samp
16439 @item auto
16440 Keep the same color trc property (default).
16441
16442 @item bt709
16443 @item unknown
16444 @item bt470m
16445 @item bt470bg
16446 @item smpte170m
16447 @item smpte240m
16448 @item linear
16449 @item log100
16450 @item log316
16451 @item iec61966-2-4
16452 @item bt1361e
16453 @item iec61966-2-1
16454 @item bt2020-10
16455 @item bt2020-12
16456 @item smpte2084
16457 @item smpte428
16458 @item arib-std-b67
16459 @end table
16460
16461 @item colorspace
16462 Set the colorspace.
16463 Available values are:
16464
16465 @table @samp
16466 @item auto
16467 Keep the same colorspace property (default).
16468
16469 @item gbr
16470 @item bt709
16471 @item unknown
16472 @item fcc
16473 @item bt470bg
16474 @item smpte170m
16475 @item smpte240m
16476 @item ycgco
16477 @item bt2020nc
16478 @item bt2020c
16479 @item smpte2085
16480 @item chroma-derived-nc
16481 @item chroma-derived-c
16482 @item ictcp
16483 @end table
16484 @end table
16485
16486 @section showinfo
16487
16488 Show a line containing various information for each input video frame.
16489 The input video is not modified.
16490
16491 This filter supports the following options:
16492
16493 @table @option
16494 @item checksum
16495 Calculate checksums of each plane. By default enabled.
16496 @end table
16497
16498 The shown line contains a sequence of key/value pairs of the form
16499 @var{key}:@var{value}.
16500
16501 The following values are shown in the output:
16502
16503 @table @option
16504 @item n
16505 The (sequential) number of the input frame, starting from 0.
16506
16507 @item pts
16508 The Presentation TimeStamp of the input frame, expressed as a number of
16509 time base units. The time base unit depends on the filter input pad.
16510
16511 @item pts_time
16512 The Presentation TimeStamp of the input frame, expressed as a number of
16513 seconds.
16514
16515 @item pos
16516 The position of the frame in the input stream, or -1 if this information is
16517 unavailable and/or meaningless (for example in case of synthetic video).
16518
16519 @item fmt
16520 The pixel format name.
16521
16522 @item sar
16523 The sample aspect ratio of the input frame, expressed in the form
16524 @var{num}/@var{den}.
16525
16526 @item s
16527 The size of the input frame. For the syntax of this option, check the
16528 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
16529
16530 @item i
16531 The type of interlaced mode ("P" for "progressive", "T" for top field first, "B"
16532 for bottom field first).
16533
16534 @item iskey
16535 This is 1 if the frame is a key frame, 0 otherwise.
16536
16537 @item type
16538 The picture type of the input frame ("I" for an I-frame, "P" for a
16539 P-frame, "B" for a B-frame, or "?" for an unknown type).
16540 Also refer to the documentation of the @code{AVPictureType} enum and of
16541 the @code{av_get_picture_type_char} function defined in
16542 @file{libavutil/avutil.h}.
16543
16544 @item checksum
16545 The Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame.
16546
16547 @item plane_checksum
16548 The Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
16549 expressed in the form "[@var{c0} @var{c1} @var{c2} @var{c3}]".
16550 @end table
16551
16552 @section showpalette
16553
16554 Displays the 256 colors palette of each frame. This filter is only relevant for
16555 @var{pal8} pixel format frames.
16556
16557 It accepts the following option:
16558
16559 @table @option
16560 @item s
16561 Set the size of the box used to represent one palette color entry. Default is
16562 @code{30} (for a @code{30x30} pixel box).
16563 @end table
16564
16565 @section shuffleframes
16566
16567 Reorder and/or duplicate and/or drop video frames.
16568
16569 It accepts the following parameters:
16570
16571 @table @option
16572 @item mapping
16573 Set the destination indexes of input frames.
16574 This is space or '|' separated list of indexes that maps input frames to output
16575 frames. Number of indexes also sets maximal value that each index may have.
16576 '-1' index have special meaning and that is to drop frame.
16577 @end table
16578
16579 The first frame has the index 0. The default is to keep the input unchanged.
16580
16581 @subsection Examples
16582
16583 @itemize
16584 @item
16585 Swap second and third frame of every three frames of the input:
16586 @example
16587 ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
16588 @end example
16589
16590 @item
16591 Swap 10th and 1st frame of every ten frames of the input:
16592 @example
16593 ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
16594 @end example
16595 @end itemize
16596
16597 @section shuffleplanes
16598
16599 Reorder and/or duplicate video planes.
16600
16601 It accepts the following parameters:
16602
16603 @table @option
16604
16605 @item map0
16606 The index of the input plane to be used as the first output plane.
16607
16608 @item map1
16609 The index of the input plane to be used as the second output plane.
16610
16611 @item map2
16612 The index of the input plane to be used as the third output plane.
16613
16614 @item map3
16615 The index of the input plane to be used as the fourth output plane.
16616
16617 @end table
16618
16619 The first plane has the index 0. The default is to keep the input unchanged.
16620
16621 @subsection Examples
16622
16623 @itemize
16624 @item
16625 Swap the second and third planes of the input:
16626 @example
16627 ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
16628 @end example
16629 @end itemize
16630
16631 @anchor{signalstats}
16632 @section signalstats
16633 Evaluate various visual metrics that assist in determining issues associated
16634 with the digitization of analog video media.
16635
16636 By default the filter will log these metadata values:
16637
16638 @table @option
16639 @item YMIN
16640 Display the minimal Y value contained within the input frame. Expressed in
16641 range of [0-255].
16642
16643 @item YLOW
16644 Display the Y value at the 10% percentile within the input frame. Expressed in
16645 range of [0-255].
16646
16647 @item YAVG
16648 Display the average Y value within the input frame. Expressed in range of
16649 [0-255].
16650
16651 @item YHIGH
16652 Display the Y value at the 90% percentile within the input frame. Expressed in
16653 range of [0-255].
16654
16655 @item YMAX
16656 Display the maximum Y value contained within the input frame. Expressed in
16657 range of [0-255].
16658
16659 @item UMIN
16660 Display the minimal U value contained within the input frame. Expressed in
16661 range of [0-255].
16662
16663 @item ULOW
16664 Display the U value at the 10% percentile within the input frame. Expressed in
16665 range of [0-255].
16666
16667 @item UAVG
16668 Display the average U value within the input frame. Expressed in range of
16669 [0-255].
16670
16671 @item UHIGH
16672 Display the U value at the 90% percentile within the input frame. Expressed in
16673 range of [0-255].
16674
16675 @item UMAX
16676 Display the maximum U value contained within the input frame. Expressed in
16677 range of [0-255].
16678
16679 @item VMIN
16680 Display the minimal V value contained within the input frame. Expressed in
16681 range of [0-255].
16682
16683 @item VLOW
16684 Display the V value at the 10% percentile within the input frame. Expressed in
16685 range of [0-255].
16686
16687 @item VAVG
16688 Display the average V value within the input frame. Expressed in range of
16689 [0-255].
16690
16691 @item VHIGH
16692 Display the V value at the 90% percentile within the input frame. Expressed in
16693 range of [0-255].
16694
16695 @item VMAX
16696 Display the maximum V value contained within the input frame. Expressed in
16697 range of [0-255].
16698
16699 @item SATMIN
16700 Display the minimal saturation value contained within the input frame.
16701 Expressed in range of [0-~181.02].
16702
16703 @item SATLOW
16704 Display the saturation value at the 10% percentile within the input frame.
16705 Expressed in range of [0-~181.02].
16706
16707 @item SATAVG
16708 Display the average saturation value within the input frame. Expressed in range
16709 of [0-~181.02].
16710
16711 @item SATHIGH
16712 Display the saturation value at the 90% percentile within the input frame.
16713 Expressed in range of [0-~181.02].
16714
16715 @item SATMAX
16716 Display the maximum saturation value contained within the input frame.
16717 Expressed in range of [0-~181.02].
16718
16719 @item HUEMED
16720 Display the median value for hue within the input frame. Expressed in range of
16721 [0-360].
16722
16723 @item HUEAVG
16724 Display the average value for hue within the input frame. Expressed in range of
16725 [0-360].
16726
16727 @item YDIF
16728 Display the average of sample value difference between all values of the Y
16729 plane in the current frame and corresponding values of the previous input frame.
16730 Expressed in range of [0-255].
16731
16732 @item UDIF
16733 Display the average of sample value difference between all values of the U
16734 plane in the current frame and corresponding values of the previous input frame.
16735 Expressed in range of [0-255].
16736
16737 @item VDIF
16738 Display the average of sample value difference between all values of the V
16739 plane in the current frame and corresponding values of the previous input frame.
16740 Expressed in range of [0-255].
16741
16742 @item YBITDEPTH
16743 Display bit depth of Y plane in current frame.
16744 Expressed in range of [0-16].
16745
16746 @item UBITDEPTH
16747 Display bit depth of U plane in current frame.
16748 Expressed in range of [0-16].
16749
16750 @item VBITDEPTH
16751 Display bit depth of V plane in current frame.
16752 Expressed in range of [0-16].
16753 @end table
16754
16755 The filter accepts the following options:
16756
16757 @table @option
16758 @item stat
16759 @item out
16760
16761 @option{stat} specify an additional form of image analysis.
16762 @option{out} output video with the specified type of pixel highlighted.
16763
16764 Both options accept the following values:
16765
16766 @table @samp
16767 @item tout
16768 Identify @var{temporal outliers} pixels. A @var{temporal outlier} is a pixel
16769 unlike the neighboring pixels of the same field. Examples of temporal outliers
16770 include the results of video dropouts, head clogs, or tape tracking issues.
16771
16772 @item vrep
16773 Identify @var{vertical line repetition}. Vertical line repetition includes
16774 similar rows of pixels within a frame. In born-digital video vertical line
16775 repetition is common, but this pattern is uncommon in video digitized from an
16776 analog source. When it occurs in video that results from the digitization of an
16777 analog source it can indicate concealment from a dropout compensator.
16778
16779 @item brng
16780 Identify pixels that fall outside of legal broadcast range.
16781 @end table
16782
16783 @item color, c
16784 Set the highlight color for the @option{out} option. The default color is
16785 yellow.
16786 @end table
16787
16788 @subsection Examples
16789
16790 @itemize
16791 @item
16792 Output data of various video metrics:
16793 @example
16794 ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
16795 @end example
16796
16797 @item
16798 Output specific data about the minimum and maximum values of the Y plane per frame:
16799 @example
16800 ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
16801 @end example
16802
16803 @item
16804 Playback video while highlighting pixels that are outside of broadcast range in red.
16805 @example
16806 ffplay example.mov -vf signalstats="out=brng:color=red"
16807 @end example
16808
16809 @item
16810 Playback video with signalstats metadata drawn over the frame.
16811 @example
16812 ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
16813 @end example
16814
16815 The contents of signalstat_drawtext.txt used in the command are:
16816 @example
16817 time %@{pts:hms@}
16818 Y (%@{metadata:lavfi.signalstats.YMIN@}-%@{metadata:lavfi.signalstats.YMAX@})
16819 U (%@{metadata:lavfi.signalstats.UMIN@}-%@{metadata:lavfi.signalstats.UMAX@})
16820 V (%@{metadata:lavfi.signalstats.VMIN@}-%@{metadata:lavfi.signalstats.VMAX@})
16821 saturation maximum: %@{metadata:lavfi.signalstats.SATMAX@}
16822
16823 @end example
16824 @end itemize
16825
16826 @anchor{signature}
16827 @section signature
16828
16829 Calculates the MPEG-7 Video Signature. The filter can handle more than one
16830 input. In this case the matching between the inputs can be calculated additionally.
16831 The filter always passes through the first input. The signature of each stream can
16832 be written into a file.
16833
16834 It accepts the following options:
16835
16836 @table @option
16837 @item detectmode
16838 Enable or disable the matching process.
16839
16840 Available values are:
16841
16842 @table @samp
16843 @item off
16844 Disable the calculation of a matching (default).
16845 @item full
16846 Calculate the matching for the whole video and output whether the whole video
16847 matches or only parts.
16848 @item fast
16849 Calculate only until a matching is found or the video ends. Should be faster in
16850 some cases.
16851 @end table
16852
16853 @item nb_inputs
16854 Set the number of inputs. The option value must be a non negative integer.
16855 Default value is 1.
16856
16857 @item filename
16858 Set the path to which the output is written. If there is more than one input,
16859 the path must be a prototype, i.e. must contain %d or %0nd (where n is a positive
16860 integer), that will be replaced with the input number. If no filename is
16861 specified, no output will be written. This is the default.
16862
16863 @item format
16864 Choose the output format.
16865
16866 Available values are:
16867
16868 @table @samp
16869 @item binary
16870 Use the specified binary representation (default).
16871 @item xml
16872 Use the specified xml representation.
16873 @end table
16874
16875 @item th_d
16876 Set threshold to detect one word as similar. The option value must be an integer
16877 greater than zero. The default value is 9000.
16878
16879 @item th_dc
16880 Set threshold to detect all words as similar. The option value must be an integer
16881 greater than zero. The default value is 60000.
16882
16883 @item th_xh
16884 Set threshold to detect frames as similar. The option value must be an integer
16885 greater than zero. The default value is 116.
16886
16887 @item th_di
16888 Set the minimum length of a sequence in frames to recognize it as matching
16889 sequence. The option value must be a non negative integer value.
16890 The default value is 0.
16891
16892 @item th_it
16893 Set the minimum relation, that matching frames to all frames must have.
16894 The option value must be a double value between 0 and 1. The default value is 0.5.
16895 @end table
16896
16897 @subsection Examples
16898
16899 @itemize
16900 @item
16901 To calculate the signature of an input video and store it in signature.bin:
16902 @example
16903 ffmpeg -i input.mkv -vf signature=filename=signature.bin -map 0:v -f null -
16904 @end example
16905
16906 @item
16907 To detect whether two videos match and store the signatures in XML format in
16908 signature0.xml and signature1.xml:
16909 @example
16910 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 -
16911 @end example
16912
16913 @end itemize
16914
16915 @anchor{smartblur}
16916 @section smartblur
16917
16918 Blur the input video without impacting the outlines.
16919
16920 It accepts the following options:
16921
16922 @table @option
16923 @item luma_radius, lr
16924 Set the luma radius. The option value must be a float number in
16925 the range [0.1,5.0] that specifies the variance of the gaussian filter
16926 used to blur the image (slower if larger). Default value is 1.0.
16927
16928 @item luma_strength, ls
16929 Set the luma strength. The option value must be a float number
16930 in the range [-1.0,1.0] that configures the blurring. A value included
16931 in [0.0,1.0] will blur the image whereas a value included in
16932 [-1.0,0.0] will sharpen the image. Default value is 1.0.
16933
16934 @item luma_threshold, lt
16935 Set the luma threshold used as a coefficient to determine
16936 whether a pixel should be blurred or not. The option value must be an
16937 integer in the range [-30,30]. A value of 0 will filter all the image,
16938 a value included in [0,30] will filter flat areas and a value included
16939 in [-30,0] will filter edges. Default value is 0.
16940
16941 @item chroma_radius, cr
16942 Set the chroma radius. The option value must be a float number in
16943 the range [0.1,5.0] that specifies the variance of the gaussian filter
16944 used to blur the image (slower if larger). Default value is @option{luma_radius}.
16945
16946 @item chroma_strength, cs
16947 Set the chroma strength. The option value must be a float number
16948 in the range [-1.0,1.0] that configures the blurring. A value included
16949 in [0.0,1.0] will blur the image whereas a value included in
16950 [-1.0,0.0] will sharpen the image. Default value is @option{luma_strength}.
16951
16952 @item chroma_threshold, ct
16953 Set the chroma threshold used as a coefficient to determine
16954 whether a pixel should be blurred or not. The option value must be an
16955 integer in the range [-30,30]. A value of 0 will filter all the image,
16956 a value included in [0,30] will filter flat areas and a value included
16957 in [-30,0] will filter edges. Default value is @option{luma_threshold}.
16958 @end table
16959
16960 If a chroma option is not explicitly set, the corresponding luma value
16961 is set.
16962
16963 @section sobel
16964 Apply sobel operator to input video stream.
16965
16966 The filter accepts the following option:
16967
16968 @table @option
16969 @item planes
16970 Set which planes will be processed, unprocessed planes will be copied.
16971 By default value 0xf, all planes will be processed.
16972
16973 @item scale
16974 Set value which will be multiplied with filtered result.
16975
16976 @item delta
16977 Set value which will be added to filtered result.
16978 @end table
16979
16980 @anchor{spp}
16981 @section spp
16982
16983 Apply a simple postprocessing filter that compresses and decompresses the image
16984 at several (or - in the case of @option{quality} level @code{6} - all) shifts
16985 and average the results.
16986
16987 The filter accepts the following options:
16988
16989 @table @option
16990 @item quality
16991 Set quality. This option defines the number of levels for averaging. It accepts
16992 an integer in the range 0-6. If set to @code{0}, the filter will have no
16993 effect. A value of @code{6} means the higher quality. For each increment of
16994 that value the speed drops by a factor of approximately 2.  Default value is
16995 @code{3}.
16996
16997 @item qp
16998 Force a constant quantization parameter. If not set, the filter will use the QP
16999 from the video stream (if available).
17000
17001 @item mode
17002 Set thresholding mode. Available modes are:
17003
17004 @table @samp
17005 @item hard
17006 Set hard thresholding (default).
17007 @item soft
17008 Set soft thresholding (better de-ringing effect, but likely blurrier).
17009 @end table
17010
17011 @item use_bframe_qp
17012 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
17013 option may cause flicker since the B-Frames have often larger QP. Default is
17014 @code{0} (not enabled).
17015 @end table
17016
17017 @section sr
17018
17019 Scale the input by applying one of the super-resolution methods based on
17020 convolutional neural networks. Supported models:
17021
17022 @itemize
17023 @item
17024 Super-Resolution Convolutional Neural Network model (SRCNN).
17025 See @url{https://arxiv.org/abs/1501.00092}.
17026
17027 @item
17028 Efficient Sub-Pixel Convolutional Neural Network model (ESPCN).
17029 See @url{https://arxiv.org/abs/1609.05158}.
17030 @end itemize
17031
17032 Training scripts as well as scripts for model file (.pb) saving can be found at
17033 @url{https://github.com/XueweiMeng/sr/tree/sr_dnn_native}. Original repository
17034 is at @url{https://github.com/HighVoltageRocknRoll/sr.git}.
17035
17036 Native model files (.model) can be generated from TensorFlow model
17037 files (.pb) by using tools/python/convert.py
17038
17039 The filter accepts the following options:
17040
17041 @table @option
17042 @item dnn_backend
17043 Specify which DNN backend to use for model loading and execution. This option accepts
17044 the following values:
17045
17046 @table @samp
17047 @item native
17048 Native implementation of DNN loading and execution.
17049
17050 @item tensorflow
17051 TensorFlow backend. To enable this backend you
17052 need to install the TensorFlow for C library (see
17053 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
17054 @code{--enable-libtensorflow}
17055 @end table
17056
17057 Default value is @samp{native}.
17058
17059 @item model
17060 Set path to model file specifying network architecture and its parameters.
17061 Note that different backends use different file formats. TensorFlow backend
17062 can load files for both formats, while native backend can load files for only
17063 its format.
17064
17065 @item scale_factor
17066 Set scale factor for SRCNN model. Allowed values are @code{2}, @code{3} and @code{4}.
17067 Default value is @code{2}. Scale factor is necessary for SRCNN model, because it accepts
17068 input upscaled using bicubic upscaling with proper scale factor.
17069 @end table
17070
17071 @section ssim
17072
17073 Obtain the SSIM (Structural SImilarity Metric) between two input videos.
17074
17075 This filter takes in input two input videos, the first input is
17076 considered the "main" source and is passed unchanged to the
17077 output. The second input is used as a "reference" video for computing
17078 the SSIM.
17079
17080 Both video inputs must have the same resolution and pixel format for
17081 this filter to work correctly. Also it assumes that both inputs
17082 have the same number of frames, which are compared one by one.
17083
17084 The filter stores the calculated SSIM of each frame.
17085
17086 The description of the accepted parameters follows.
17087
17088 @table @option
17089 @item stats_file, f
17090 If specified the filter will use the named file to save the SSIM of
17091 each individual frame. When filename equals "-" the data is sent to
17092 standard output.
17093 @end table
17094
17095 The file printed if @var{stats_file} is selected, contains a sequence of
17096 key/value pairs of the form @var{key}:@var{value} for each compared
17097 couple of frames.
17098
17099 A description of each shown parameter follows:
17100
17101 @table @option
17102 @item n
17103 sequential number of the input frame, starting from 1
17104
17105 @item Y, U, V, R, G, B
17106 SSIM of the compared frames for the component specified by the suffix.
17107
17108 @item All
17109 SSIM of the compared frames for the whole frame.
17110
17111 @item dB
17112 Same as above but in dB representation.
17113 @end table
17114
17115 This filter also supports the @ref{framesync} options.
17116
17117 @subsection Examples
17118 @itemize
17119 @item
17120 For example:
17121 @example
17122 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
17123 [main][ref] ssim="stats_file=stats.log" [out]
17124 @end example
17125
17126 On this example the input file being processed is compared with the
17127 reference file @file{ref_movie.mpg}. The SSIM of each individual frame
17128 is stored in @file{stats.log}.
17129
17130 @item
17131 Another example with both psnr and ssim at same time:
17132 @example
17133 ffmpeg -i main.mpg -i ref.mpg -lavfi  "ssim;[0:v][1:v]psnr" -f null -
17134 @end example
17135
17136 @item
17137 Another example with different containers:
17138 @example
17139 ffmpeg -i main.mpg -i ref.mkv -lavfi  "[0:v]settb=1/AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=1/AVTB,setpts=PTS-STARTPTS[ref];[main][ref]ssim" -f null -
17140 @end example
17141 @end itemize
17142
17143 @section stereo3d
17144
17145 Convert between different stereoscopic image formats.
17146
17147 The filters accept the following options:
17148
17149 @table @option
17150 @item in
17151 Set stereoscopic image format of input.
17152
17153 Available values for input image formats are:
17154 @table @samp
17155 @item sbsl
17156 side by side parallel (left eye left, right eye right)
17157
17158 @item sbsr
17159 side by side crosseye (right eye left, left eye right)
17160
17161 @item sbs2l
17162 side by side parallel with half width resolution
17163 (left eye left, right eye right)
17164
17165 @item sbs2r
17166 side by side crosseye with half width resolution
17167 (right eye left, left eye right)
17168
17169 @item abl
17170 @item tbl
17171 above-below (left eye above, right eye below)
17172
17173 @item abr
17174 @item tbr
17175 above-below (right eye above, left eye below)
17176
17177 @item ab2l
17178 @item tb2l
17179 above-below with half height resolution
17180 (left eye above, right eye below)
17181
17182 @item ab2r
17183 @item tb2r
17184 above-below with half height resolution
17185 (right eye above, left eye below)
17186
17187 @item al
17188 alternating frames (left eye first, right eye second)
17189
17190 @item ar
17191 alternating frames (right eye first, left eye second)
17192
17193 @item irl
17194 interleaved rows (left eye has top row, right eye starts on next row)
17195
17196 @item irr
17197 interleaved rows (right eye has top row, left eye starts on next row)
17198
17199 @item icl
17200 interleaved columns, left eye first
17201
17202 @item icr
17203 interleaved columns, right eye first
17204
17205 Default value is @samp{sbsl}.
17206 @end table
17207
17208 @item out
17209 Set stereoscopic image format of output.
17210
17211 @table @samp
17212 @item sbsl
17213 side by side parallel (left eye left, right eye right)
17214
17215 @item sbsr
17216 side by side crosseye (right eye left, left eye right)
17217
17218 @item sbs2l
17219 side by side parallel with half width resolution
17220 (left eye left, right eye right)
17221
17222 @item sbs2r
17223 side by side crosseye with half width resolution
17224 (right eye left, left eye right)
17225
17226 @item abl
17227 @item tbl
17228 above-below (left eye above, right eye below)
17229
17230 @item abr
17231 @item tbr
17232 above-below (right eye above, left eye below)
17233
17234 @item ab2l
17235 @item tb2l
17236 above-below with half height resolution
17237 (left eye above, right eye below)
17238
17239 @item ab2r
17240 @item tb2r
17241 above-below with half height resolution
17242 (right eye above, left eye below)
17243
17244 @item al
17245 alternating frames (left eye first, right eye second)
17246
17247 @item ar
17248 alternating frames (right eye first, left eye second)
17249
17250 @item irl
17251 interleaved rows (left eye has top row, right eye starts on next row)
17252
17253 @item irr
17254 interleaved rows (right eye has top row, left eye starts on next row)
17255
17256 @item arbg
17257 anaglyph red/blue gray
17258 (red filter on left eye, blue filter on right eye)
17259
17260 @item argg
17261 anaglyph red/green gray
17262 (red filter on left eye, green filter on right eye)
17263
17264 @item arcg
17265 anaglyph red/cyan gray
17266 (red filter on left eye, cyan filter on right eye)
17267
17268 @item arch
17269 anaglyph red/cyan half colored
17270 (red filter on left eye, cyan filter on right eye)
17271
17272 @item arcc
17273 anaglyph red/cyan color
17274 (red filter on left eye, cyan filter on right eye)
17275
17276 @item arcd
17277 anaglyph red/cyan color optimized with the least squares projection of dubois
17278 (red filter on left eye, cyan filter on right eye)
17279
17280 @item agmg
17281 anaglyph green/magenta gray
17282 (green filter on left eye, magenta filter on right eye)
17283
17284 @item agmh
17285 anaglyph green/magenta half colored
17286 (green filter on left eye, magenta filter on right eye)
17287
17288 @item agmc
17289 anaglyph green/magenta colored
17290 (green filter on left eye, magenta filter on right eye)
17291
17292 @item agmd
17293 anaglyph green/magenta color optimized with the least squares projection of dubois
17294 (green filter on left eye, magenta filter on right eye)
17295
17296 @item aybg
17297 anaglyph yellow/blue gray
17298 (yellow filter on left eye, blue filter on right eye)
17299
17300 @item aybh
17301 anaglyph yellow/blue half colored
17302 (yellow filter on left eye, blue filter on right eye)
17303
17304 @item aybc
17305 anaglyph yellow/blue colored
17306 (yellow filter on left eye, blue filter on right eye)
17307
17308 @item aybd
17309 anaglyph yellow/blue color optimized with the least squares projection of dubois
17310 (yellow filter on left eye, blue filter on right eye)
17311
17312 @item ml
17313 mono output (left eye only)
17314
17315 @item mr
17316 mono output (right eye only)
17317
17318 @item chl
17319 checkerboard, left eye first
17320
17321 @item chr
17322 checkerboard, right eye first
17323
17324 @item icl
17325 interleaved columns, left eye first
17326
17327 @item icr
17328 interleaved columns, right eye first
17329
17330 @item hdmi
17331 HDMI frame pack
17332 @end table
17333
17334 Default value is @samp{arcd}.
17335 @end table
17336
17337 @subsection Examples
17338
17339 @itemize
17340 @item
17341 Convert input video from side by side parallel to anaglyph yellow/blue dubois:
17342 @example
17343 stereo3d=sbsl:aybd
17344 @end example
17345
17346 @item
17347 Convert input video from above below (left eye above, right eye below) to side by side crosseye.
17348 @example
17349 stereo3d=abl:sbsr
17350 @end example
17351 @end itemize
17352
17353 @section streamselect, astreamselect
17354 Select video or audio streams.
17355
17356 The filter accepts the following options:
17357
17358 @table @option
17359 @item inputs
17360 Set number of inputs. Default is 2.
17361
17362 @item map
17363 Set input indexes to remap to outputs.
17364 @end table
17365
17366 @subsection Commands
17367
17368 The @code{streamselect} and @code{astreamselect} filter supports the following
17369 commands:
17370
17371 @table @option
17372 @item map
17373 Set input indexes to remap to outputs.
17374 @end table
17375
17376 @subsection Examples
17377
17378 @itemize
17379 @item
17380 Select first 5 seconds 1st stream and rest of time 2nd stream:
17381 @example
17382 sendcmd='5.0 streamselect map 1',streamselect=inputs=2:map=0
17383 @end example
17384
17385 @item
17386 Same as above, but for audio:
17387 @example
17388 asendcmd='5.0 astreamselect map 1',astreamselect=inputs=2:map=0
17389 @end example
17390 @end itemize
17391
17392 @anchor{subtitles}
17393 @section subtitles
17394
17395 Draw subtitles on top of input video using the libass library.
17396
17397 To enable compilation of this filter you need to configure FFmpeg with
17398 @code{--enable-libass}. This filter also requires a build with libavcodec and
17399 libavformat to convert the passed subtitles file to ASS (Advanced Substation
17400 Alpha) subtitles format.
17401
17402 The filter accepts the following options:
17403
17404 @table @option
17405 @item filename, f
17406 Set the filename of the subtitle file to read. It must be specified.
17407
17408 @item original_size
17409 Specify the size of the original video, the video for which the ASS file
17410 was composed. For the syntax of this option, check the
17411 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17412 Due to a misdesign in ASS aspect ratio arithmetic, this is necessary to
17413 correctly scale the fonts if the aspect ratio has been changed.
17414
17415 @item fontsdir
17416 Set a directory path containing fonts that can be used by the filter.
17417 These fonts will be used in addition to whatever the font provider uses.
17418
17419 @item alpha
17420 Process alpha channel, by default alpha channel is untouched.
17421
17422 @item charenc
17423 Set subtitles input character encoding. @code{subtitles} filter only. Only
17424 useful if not UTF-8.
17425
17426 @item stream_index, si
17427 Set subtitles stream index. @code{subtitles} filter only.
17428
17429 @item force_style
17430 Override default style or script info parameters of the subtitles. It accepts a
17431 string containing ASS style format @code{KEY=VALUE} couples separated by ",".
17432 @end table
17433
17434 If the first key is not specified, it is assumed that the first value
17435 specifies the @option{filename}.
17436
17437 For example, to render the file @file{sub.srt} on top of the input
17438 video, use the command:
17439 @example
17440 subtitles=sub.srt
17441 @end example
17442
17443 which is equivalent to:
17444 @example
17445 subtitles=filename=sub.srt
17446 @end example
17447
17448 To render the default subtitles stream from file @file{video.mkv}, use:
17449 @example
17450 subtitles=video.mkv
17451 @end example
17452
17453 To render the second subtitles stream from that file, use:
17454 @example
17455 subtitles=video.mkv:si=1
17456 @end example
17457
17458 To make the subtitles stream from @file{sub.srt} appear in 80% transparent blue
17459 @code{DejaVu Serif}, use:
17460 @example
17461 subtitles=sub.srt:force_style='FontName=DejaVu Serif,PrimaryColour=&HCCFF0000'
17462 @end example
17463
17464 @section super2xsai
17465
17466 Scale the input by 2x and smooth using the Super2xSaI (Scale and
17467 Interpolate) pixel art scaling algorithm.
17468
17469 Useful for enlarging pixel art images without reducing sharpness.
17470
17471 @section swaprect
17472
17473 Swap two rectangular objects in video.
17474
17475 This filter accepts the following options:
17476
17477 @table @option
17478 @item w
17479 Set object width.
17480
17481 @item h
17482 Set object height.
17483
17484 @item x1
17485 Set 1st rect x coordinate.
17486
17487 @item y1
17488 Set 1st rect y coordinate.
17489
17490 @item x2
17491 Set 2nd rect x coordinate.
17492
17493 @item y2
17494 Set 2nd rect y coordinate.
17495
17496 All expressions are evaluated once for each frame.
17497 @end table
17498
17499 The all options are expressions containing the following constants:
17500
17501 @table @option
17502 @item w
17503 @item h
17504 The input width and height.
17505
17506 @item a
17507 same as @var{w} / @var{h}
17508
17509 @item sar
17510 input sample aspect ratio
17511
17512 @item dar
17513 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
17514
17515 @item n
17516 The number of the input frame, starting from 0.
17517
17518 @item t
17519 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
17520
17521 @item pos
17522 the position in the file of the input frame, NAN if unknown
17523 @end table
17524
17525 @section swapuv
17526 Swap U & V plane.
17527
17528 @section telecine
17529
17530 Apply telecine process to the video.
17531
17532 This filter accepts the following options:
17533
17534 @table @option
17535 @item first_field
17536 @table @samp
17537 @item top, t
17538 top field first
17539 @item bottom, b
17540 bottom field first
17541 The default value is @code{top}.
17542 @end table
17543
17544 @item pattern
17545 A string of numbers representing the pulldown pattern you wish to apply.
17546 The default value is @code{23}.
17547 @end table
17548
17549 @example
17550 Some typical patterns:
17551
17552 NTSC output (30i):
17553 27.5p: 32222
17554 24p: 23 (classic)
17555 24p: 2332 (preferred)
17556 20p: 33
17557 18p: 334
17558 16p: 3444
17559
17560 PAL output (25i):
17561 27.5p: 12222
17562 24p: 222222222223 ("Euro pulldown")
17563 16.67p: 33
17564 16p: 33333334
17565 @end example
17566
17567 @section threshold
17568
17569 Apply threshold effect to video stream.
17570
17571 This filter needs four video streams to perform thresholding.
17572 First stream is stream we are filtering.
17573 Second stream is holding threshold values, third stream is holding min values,
17574 and last, fourth stream is holding max values.
17575
17576 The filter accepts the following option:
17577
17578 @table @option
17579 @item planes
17580 Set which planes will be processed, unprocessed planes will be copied.
17581 By default value 0xf, all planes will be processed.
17582 @end table
17583
17584 For example if first stream pixel's component value is less then threshold value
17585 of pixel component from 2nd threshold stream, third stream value will picked,
17586 otherwise fourth stream pixel component value will be picked.
17587
17588 Using color source filter one can perform various types of thresholding:
17589
17590 @subsection Examples
17591
17592 @itemize
17593 @item
17594 Binary threshold, using gray color as threshold:
17595 @example
17596 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=black -f lavfi -i color=white -lavfi threshold output.avi
17597 @end example
17598
17599 @item
17600 Inverted binary threshold, using gray color as threshold:
17601 @example
17602 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -f lavfi -i color=black -lavfi threshold output.avi
17603 @end example
17604
17605 @item
17606 Truncate binary threshold, using gray color as threshold:
17607 @example
17608 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=gray -lavfi threshold output.avi
17609 @end example
17610
17611 @item
17612 Threshold to zero, using gray color as threshold:
17613 @example
17614 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -i 320x240.avi -lavfi threshold output.avi
17615 @end example
17616
17617 @item
17618 Inverted threshold to zero, using gray color as threshold:
17619 @example
17620 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=white -lavfi threshold output.avi
17621 @end example
17622 @end itemize
17623
17624 @section thumbnail
17625 Select the most representative frame in a given sequence of consecutive frames.
17626
17627 The filter accepts the following options:
17628
17629 @table @option
17630 @item n
17631 Set the frames batch size to analyze; in a set of @var{n} frames, the filter
17632 will pick one of them, and then handle the next batch of @var{n} frames until
17633 the end. Default is @code{100}.
17634 @end table
17635
17636 Since the filter keeps track of the whole frames sequence, a bigger @var{n}
17637 value will result in a higher memory usage, so a high value is not recommended.
17638
17639 @subsection Examples
17640
17641 @itemize
17642 @item
17643 Extract one picture each 50 frames:
17644 @example
17645 thumbnail=50
17646 @end example
17647
17648 @item
17649 Complete example of a thumbnail creation with @command{ffmpeg}:
17650 @example
17651 ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
17652 @end example
17653 @end itemize
17654
17655 @section tile
17656
17657 Tile several successive frames together.
17658
17659 The filter accepts the following options:
17660
17661 @table @option
17662
17663 @item layout
17664 Set the grid size (i.e. the number of lines and columns). For the syntax of
17665 this option, check the
17666 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17667
17668 @item nb_frames
17669 Set the maximum number of frames to render in the given area. It must be less
17670 than or equal to @var{w}x@var{h}. The default value is @code{0}, meaning all
17671 the area will be used.
17672
17673 @item margin
17674 Set the outer border margin in pixels.
17675
17676 @item padding
17677 Set the inner border thickness (i.e. the number of pixels between frames). For
17678 more advanced padding options (such as having different values for the edges),
17679 refer to the pad video filter.
17680
17681 @item color
17682 Specify the color of the unused area. For the syntax of this option, check the
17683 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
17684 The default value of @var{color} is "black".
17685
17686 @item overlap
17687 Set the number of frames to overlap when tiling several successive frames together.
17688 The value must be between @code{0} and @var{nb_frames - 1}.
17689
17690 @item init_padding
17691 Set the number of frames to initially be empty before displaying first output frame.
17692 This controls how soon will one get first output frame.
17693 The value must be between @code{0} and @var{nb_frames - 1}.
17694 @end table
17695
17696 @subsection Examples
17697
17698 @itemize
17699 @item
17700 Produce 8x8 PNG tiles of all keyframes (@option{-skip_frame nokey}) in a movie:
17701 @example
17702 ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
17703 @end example
17704 The @option{-vsync 0} is necessary to prevent @command{ffmpeg} from
17705 duplicating each output frame to accommodate the originally detected frame
17706 rate.
17707
17708 @item
17709 Display @code{5} pictures in an area of @code{3x2} frames,
17710 with @code{7} pixels between them, and @code{2} pixels of initial margin, using
17711 mixed flat and named options:
17712 @example
17713 tile=3x2:nb_frames=5:padding=7:margin=2
17714 @end example
17715 @end itemize
17716
17717 @section tinterlace
17718
17719 Perform various types of temporal field interlacing.
17720
17721 Frames are counted starting from 1, so the first input frame is
17722 considered odd.
17723
17724 The filter accepts the following options:
17725
17726 @table @option
17727
17728 @item mode
17729 Specify the mode of the interlacing. This option can also be specified
17730 as a value alone. See below for a list of values for this option.
17731
17732 Available values are:
17733
17734 @table @samp
17735 @item merge, 0
17736 Move odd frames into the upper field, even into the lower field,
17737 generating a double height frame at half frame rate.
17738 @example
17739  ------> time
17740 Input:
17741 Frame 1         Frame 2         Frame 3         Frame 4
17742
17743 11111           22222           33333           44444
17744 11111           22222           33333           44444
17745 11111           22222           33333           44444
17746 11111           22222           33333           44444
17747
17748 Output:
17749 11111                           33333
17750 22222                           44444
17751 11111                           33333
17752 22222                           44444
17753 11111                           33333
17754 22222                           44444
17755 11111                           33333
17756 22222                           44444
17757 @end example
17758
17759 @item drop_even, 1
17760 Only output odd frames, even frames are dropped, generating a frame with
17761 unchanged height at half frame rate.
17762
17763 @example
17764  ------> time
17765 Input:
17766 Frame 1         Frame 2         Frame 3         Frame 4
17767
17768 11111           22222           33333           44444
17769 11111           22222           33333           44444
17770 11111           22222           33333           44444
17771 11111           22222           33333           44444
17772
17773 Output:
17774 11111                           33333
17775 11111                           33333
17776 11111                           33333
17777 11111                           33333
17778 @end example
17779
17780 @item drop_odd, 2
17781 Only output even frames, odd frames are dropped, generating a frame with
17782 unchanged height at half frame rate.
17783
17784 @example
17785  ------> time
17786 Input:
17787 Frame 1         Frame 2         Frame 3         Frame 4
17788
17789 11111           22222           33333           44444
17790 11111           22222           33333           44444
17791 11111           22222           33333           44444
17792 11111           22222           33333           44444
17793
17794 Output:
17795                 22222                           44444
17796                 22222                           44444
17797                 22222                           44444
17798                 22222                           44444
17799 @end example
17800
17801 @item pad, 3
17802 Expand each frame to full height, but pad alternate lines with black,
17803 generating a frame with double height at the same input frame rate.
17804
17805 @example
17806  ------> time
17807 Input:
17808 Frame 1         Frame 2         Frame 3         Frame 4
17809
17810 11111           22222           33333           44444
17811 11111           22222           33333           44444
17812 11111           22222           33333           44444
17813 11111           22222           33333           44444
17814
17815 Output:
17816 11111           .....           33333           .....
17817 .....           22222           .....           44444
17818 11111           .....           33333           .....
17819 .....           22222           .....           44444
17820 11111           .....           33333           .....
17821 .....           22222           .....           44444
17822 11111           .....           33333           .....
17823 .....           22222           .....           44444
17824 @end example
17825
17826
17827 @item interleave_top, 4
17828 Interleave the upper field from odd frames with the lower field from
17829 even frames, generating a frame with unchanged height at half frame rate.
17830
17831 @example
17832  ------> time
17833 Input:
17834 Frame 1         Frame 2         Frame 3         Frame 4
17835
17836 11111<-         22222           33333<-         44444
17837 11111           22222<-         33333           44444<-
17838 11111<-         22222           33333<-         44444
17839 11111           22222<-         33333           44444<-
17840
17841 Output:
17842 11111                           33333
17843 22222                           44444
17844 11111                           33333
17845 22222                           44444
17846 @end example
17847
17848
17849 @item interleave_bottom, 5
17850 Interleave the lower field from odd frames with the upper field from
17851 even frames, generating a frame with unchanged height at half frame rate.
17852
17853 @example
17854  ------> time
17855 Input:
17856 Frame 1         Frame 2         Frame 3         Frame 4
17857
17858 11111           22222<-         33333           44444<-
17859 11111<-         22222           33333<-         44444
17860 11111           22222<-         33333           44444<-
17861 11111<-         22222           33333<-         44444
17862
17863 Output:
17864 22222                           44444
17865 11111                           33333
17866 22222                           44444
17867 11111                           33333
17868 @end example
17869
17870
17871 @item interlacex2, 6
17872 Double frame rate with unchanged height. Frames are inserted each
17873 containing the second temporal field from the previous input frame and
17874 the first temporal field from the next input frame. This mode relies on
17875 the top_field_first flag. Useful for interlaced video displays with no
17876 field synchronisation.
17877
17878 @example
17879  ------> time
17880 Input:
17881 Frame 1         Frame 2         Frame 3         Frame 4
17882
17883 11111           22222           33333           44444
17884  11111           22222           33333           44444
17885 11111           22222           33333           44444
17886  11111           22222           33333           44444
17887
17888 Output:
17889 11111   22222   22222   33333   33333   44444   44444
17890  11111   11111   22222   22222   33333   33333   44444
17891 11111   22222   22222   33333   33333   44444   44444
17892  11111   11111   22222   22222   33333   33333   44444
17893 @end example
17894
17895
17896 @item mergex2, 7
17897 Move odd frames into the upper field, even into the lower field,
17898 generating a double height frame at same frame rate.
17899
17900 @example
17901  ------> time
17902 Input:
17903 Frame 1         Frame 2         Frame 3         Frame 4
17904
17905 11111           22222           33333           44444
17906 11111           22222           33333           44444
17907 11111           22222           33333           44444
17908 11111           22222           33333           44444
17909
17910 Output:
17911 11111           33333           33333           55555
17912 22222           22222           44444           44444
17913 11111           33333           33333           55555
17914 22222           22222           44444           44444
17915 11111           33333           33333           55555
17916 22222           22222           44444           44444
17917 11111           33333           33333           55555
17918 22222           22222           44444           44444
17919 @end example
17920
17921 @end table
17922
17923 Numeric values are deprecated but are accepted for backward
17924 compatibility reasons.
17925
17926 Default mode is @code{merge}.
17927
17928 @item flags
17929 Specify flags influencing the filter process.
17930
17931 Available value for @var{flags} is:
17932
17933 @table @option
17934 @item low_pass_filter, vlpf
17935 Enable linear vertical low-pass filtering in the filter.
17936 Vertical low-pass filtering is required when creating an interlaced
17937 destination from a progressive source which contains high-frequency
17938 vertical detail. Filtering will reduce interlace 'twitter' and Moire
17939 patterning.
17940
17941 @item complex_filter, cvlpf
17942 Enable complex vertical low-pass filtering.
17943 This will slightly less reduce interlace 'twitter' and Moire
17944 patterning but better retain detail and subjective sharpness impression.
17945
17946 @end table
17947
17948 Vertical low-pass filtering can only be enabled for @option{mode}
17949 @var{interleave_top} and @var{interleave_bottom}.
17950
17951 @end table
17952
17953 @section tmix
17954
17955 Mix successive video frames.
17956
17957 A description of the accepted options follows.
17958
17959 @table @option
17960 @item frames
17961 The number of successive frames to mix. If unspecified, it defaults to 3.
17962
17963 @item weights
17964 Specify weight of each input video frame.
17965 Each weight is separated by space. If number of weights is smaller than
17966 number of @var{frames} last specified weight will be used for all remaining
17967 unset weights.
17968
17969 @item scale
17970 Specify scale, if it is set it will be multiplied with sum
17971 of each weight multiplied with pixel values to give final destination
17972 pixel value. By default @var{scale} is auto scaled to sum of weights.
17973 @end table
17974
17975 @subsection Examples
17976
17977 @itemize
17978 @item
17979 Average 7 successive frames:
17980 @example
17981 tmix=frames=7:weights="1 1 1 1 1 1 1"
17982 @end example
17983
17984 @item
17985 Apply simple temporal convolution:
17986 @example
17987 tmix=frames=3:weights="-1 3 -1"
17988 @end example
17989
17990 @item
17991 Similar as above but only showing temporal differences:
17992 @example
17993 tmix=frames=3:weights="-1 2 -1":scale=1
17994 @end example
17995 @end itemize
17996
17997 @anchor{tonemap}
17998 @section tonemap
17999 Tone map colors from different dynamic ranges.
18000
18001 This filter expects data in single precision floating point, as it needs to
18002 operate on (and can output) out-of-range values. Another filter, such as
18003 @ref{zscale}, is needed to convert the resulting frame to a usable format.
18004
18005 The tonemapping algorithms implemented only work on linear light, so input
18006 data should be linearized beforehand (and possibly correctly tagged).
18007
18008 @example
18009 ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT
18010 @end example
18011
18012 @subsection Options
18013 The filter accepts the following options.
18014
18015 @table @option
18016 @item tonemap
18017 Set the tone map algorithm to use.
18018
18019 Possible values are:
18020 @table @var
18021 @item none
18022 Do not apply any tone map, only desaturate overbright pixels.
18023
18024 @item clip
18025 Hard-clip any out-of-range values. Use it for perfect color accuracy for
18026 in-range values, while distorting out-of-range values.
18027
18028 @item linear
18029 Stretch the entire reference gamut to a linear multiple of the display.
18030
18031 @item gamma
18032 Fit a logarithmic transfer between the tone curves.
18033
18034 @item reinhard
18035 Preserve overall image brightness with a simple curve, using nonlinear
18036 contrast, which results in flattening details and degrading color accuracy.
18037
18038 @item hable
18039 Preserve both dark and bright details better than @var{reinhard}, at the cost
18040 of slightly darkening everything. Use it when detail preservation is more
18041 important than color and brightness accuracy.
18042
18043 @item mobius
18044 Smoothly map out-of-range values, while retaining contrast and colors for
18045 in-range material as much as possible. Use it when color accuracy is more
18046 important than detail preservation.
18047 @end table
18048
18049 Default is none.
18050
18051 @item param
18052 Tune the tone mapping algorithm.
18053
18054 This affects the following algorithms:
18055 @table @var
18056 @item none
18057 Ignored.
18058
18059 @item linear
18060 Specifies the scale factor to use while stretching.
18061 Default to 1.0.
18062
18063 @item gamma
18064 Specifies the exponent of the function.
18065 Default to 1.8.
18066
18067 @item clip
18068 Specify an extra linear coefficient to multiply into the signal before clipping.
18069 Default to 1.0.
18070
18071 @item reinhard
18072 Specify the local contrast coefficient at the display peak.
18073 Default to 0.5, which means that in-gamut values will be about half as bright
18074 as when clipping.
18075
18076 @item hable
18077 Ignored.
18078
18079 @item mobius
18080 Specify the transition point from linear to mobius transform. Every value
18081 below this point is guaranteed to be mapped 1:1. The higher the value, the
18082 more accurate the result will be, at the cost of losing bright details.
18083 Default to 0.3, which due to the steep initial slope still preserves in-range
18084 colors fairly accurately.
18085 @end table
18086
18087 @item desat
18088 Apply desaturation for highlights that exceed this level of brightness. The
18089 higher the parameter, the more color information will be preserved. This
18090 setting helps prevent unnaturally blown-out colors for super-highlights, by
18091 (smoothly) turning into white instead. This makes images feel more natural,
18092 at the cost of reducing information about out-of-range colors.
18093
18094 The default of 2.0 is somewhat conservative and will mostly just apply to
18095 skies or directly sunlit surfaces. A setting of 0.0 disables this option.
18096
18097 This option works only if the input frame has a supported color tag.
18098
18099 @item peak
18100 Override signal/nominal/reference peak with this value. Useful when the
18101 embedded peak information in display metadata is not reliable or when tone
18102 mapping from a lower range to a higher range.
18103 @end table
18104
18105 @section tpad
18106
18107 Temporarily pad video frames.
18108
18109 The filter accepts the following options:
18110
18111 @table @option
18112 @item start
18113 Specify number of delay frames before input video stream.
18114
18115 @item stop
18116 Specify number of padding frames after input video stream.
18117 Set to -1 to pad indefinitely.
18118
18119 @item start_mode
18120 Set kind of frames added to beginning of stream.
18121 Can be either @var{add} or @var{clone}.
18122 With @var{add} frames of solid-color are added.
18123 With @var{clone} frames are clones of first frame.
18124
18125 @item stop_mode
18126 Set kind of frames added to end of stream.
18127 Can be either @var{add} or @var{clone}.
18128 With @var{add} frames of solid-color are added.
18129 With @var{clone} frames are clones of last frame.
18130
18131 @item start_duration, stop_duration
18132 Specify the duration of the start/stop delay. See
18133 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
18134 for the accepted syntax.
18135 These options override @var{start} and @var{stop}.
18136
18137 @item color
18138 Specify the color of the padded area. For the syntax of this option,
18139 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
18140 manual,ffmpeg-utils}.
18141
18142 The default value of @var{color} is "black".
18143 @end table
18144
18145 @anchor{transpose}
18146 @section transpose
18147
18148 Transpose rows with columns in the input video and optionally flip it.
18149
18150 It accepts the following parameters:
18151
18152 @table @option
18153
18154 @item dir
18155 Specify the transposition direction.
18156
18157 Can assume the following values:
18158 @table @samp
18159 @item 0, 4, cclock_flip
18160 Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
18161 @example
18162 L.R     L.l
18163 . . ->  . .
18164 l.r     R.r
18165 @end example
18166
18167 @item 1, 5, clock
18168 Rotate by 90 degrees clockwise, that is:
18169 @example
18170 L.R     l.L
18171 . . ->  . .
18172 l.r     r.R
18173 @end example
18174
18175 @item 2, 6, cclock
18176 Rotate by 90 degrees counterclockwise, that is:
18177 @example
18178 L.R     R.r
18179 . . ->  . .
18180 l.r     L.l
18181 @end example
18182
18183 @item 3, 7, clock_flip
18184 Rotate by 90 degrees clockwise and vertically flip, that is:
18185 @example
18186 L.R     r.R
18187 . . ->  . .
18188 l.r     l.L
18189 @end example
18190 @end table
18191
18192 For values between 4-7, the transposition is only done if the input
18193 video geometry is portrait and not landscape. These values are
18194 deprecated, the @code{passthrough} option should be used instead.
18195
18196 Numerical values are deprecated, and should be dropped in favor of
18197 symbolic constants.
18198
18199 @item passthrough
18200 Do not apply the transposition if the input geometry matches the one
18201 specified by the specified value. It accepts the following values:
18202 @table @samp
18203 @item none
18204 Always apply transposition.
18205 @item portrait
18206 Preserve portrait geometry (when @var{height} >= @var{width}).
18207 @item landscape
18208 Preserve landscape geometry (when @var{width} >= @var{height}).
18209 @end table
18210
18211 Default value is @code{none}.
18212 @end table
18213
18214 For example to rotate by 90 degrees clockwise and preserve portrait
18215 layout:
18216 @example
18217 transpose=dir=1:passthrough=portrait
18218 @end example
18219
18220 The command above can also be specified as:
18221 @example
18222 transpose=1:portrait
18223 @end example
18224
18225 @section transpose_npp
18226
18227 Transpose rows with columns in the input video and optionally flip it.
18228 For more in depth examples see the @ref{transpose} video filter, which shares mostly the same options.
18229
18230 It accepts the following parameters:
18231
18232 @table @option
18233
18234 @item dir
18235 Specify the transposition direction.
18236
18237 Can assume the following values:
18238 @table @samp
18239 @item cclock_flip
18240 Rotate by 90 degrees counterclockwise and vertically flip. (default)
18241
18242 @item clock
18243 Rotate by 90 degrees clockwise.
18244
18245 @item cclock
18246 Rotate by 90 degrees counterclockwise.
18247
18248 @item clock_flip
18249 Rotate by 90 degrees clockwise and vertically flip.
18250 @end table
18251
18252 @item passthrough
18253 Do not apply the transposition if the input geometry matches the one
18254 specified by the specified value. It accepts the following values:
18255 @table @samp
18256 @item none
18257 Always apply transposition. (default)
18258 @item portrait
18259 Preserve portrait geometry (when @var{height} >= @var{width}).
18260 @item landscape
18261 Preserve landscape geometry (when @var{width} >= @var{height}).
18262 @end table
18263
18264 @end table
18265
18266 @section trim
18267 Trim the input so that the output contains one continuous subpart of the input.
18268
18269 It accepts the following parameters:
18270 @table @option
18271 @item start
18272 Specify the time of the start of the kept section, i.e. the frame with the
18273 timestamp @var{start} will be the first frame in the output.
18274
18275 @item end
18276 Specify the time of the first frame that will be dropped, i.e. the frame
18277 immediately preceding the one with the timestamp @var{end} will be the last
18278 frame in the output.
18279
18280 @item start_pts
18281 This is the same as @var{start}, except this option sets the start timestamp
18282 in timebase units instead of seconds.
18283
18284 @item end_pts
18285 This is the same as @var{end}, except this option sets the end timestamp
18286 in timebase units instead of seconds.
18287
18288 @item duration
18289 The maximum duration of the output in seconds.
18290
18291 @item start_frame
18292 The number of the first frame that should be passed to the output.
18293
18294 @item end_frame
18295 The number of the first frame that should be dropped.
18296 @end table
18297
18298 @option{start}, @option{end}, and @option{duration} are expressed as time
18299 duration specifications; see
18300 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
18301 for the accepted syntax.
18302
18303 Note that the first two sets of the start/end options and the @option{duration}
18304 option look at the frame timestamp, while the _frame variants simply count the
18305 frames that pass through the filter. Also note that this filter does not modify
18306 the timestamps. If you wish for the output timestamps to start at zero, insert a
18307 setpts filter after the trim filter.
18308
18309 If multiple start or end options are set, this filter tries to be greedy and
18310 keep all the frames that match at least one of the specified constraints. To keep
18311 only the part that matches all the constraints at once, chain multiple trim
18312 filters.
18313
18314 The defaults are such that all the input is kept. So it is possible to set e.g.
18315 just the end values to keep everything before the specified time.
18316
18317 Examples:
18318 @itemize
18319 @item
18320 Drop everything except the second minute of input:
18321 @example
18322 ffmpeg -i INPUT -vf trim=60:120
18323 @end example
18324
18325 @item
18326 Keep only the first second:
18327 @example
18328 ffmpeg -i INPUT -vf trim=duration=1
18329 @end example
18330
18331 @end itemize
18332
18333 @section unpremultiply
18334 Apply alpha unpremultiply effect to input video stream using first plane
18335 of second stream as alpha.
18336
18337 Both streams must have same dimensions and same pixel format.
18338
18339 The filter accepts the following option:
18340
18341 @table @option
18342 @item planes
18343 Set which planes will be processed, unprocessed planes will be copied.
18344 By default value 0xf, all planes will be processed.
18345
18346 If the format has 1 or 2 components, then luma is bit 0.
18347 If the format has 3 or 4 components:
18348 for RGB formats bit 0 is green, bit 1 is blue and bit 2 is red;
18349 for YUV formats bit 0 is luma, bit 1 is chroma-U and bit 2 is chroma-V.
18350 If present, the alpha channel is always the last bit.
18351
18352 @item inplace
18353 Do not require 2nd input for processing, instead use alpha plane from input stream.
18354 @end table
18355
18356 @anchor{unsharp}
18357 @section unsharp
18358
18359 Sharpen or blur the input video.
18360
18361 It accepts the following parameters:
18362
18363 @table @option
18364 @item luma_msize_x, lx
18365 Set the luma matrix horizontal size. It must be an odd integer between
18366 3 and 23. The default value is 5.
18367
18368 @item luma_msize_y, ly
18369 Set the luma matrix vertical size. It must be an odd integer between 3
18370 and 23. The default value is 5.
18371
18372 @item luma_amount, la
18373 Set the luma effect strength. It must be a floating point number, reasonable
18374 values lay between -1.5 and 1.5.
18375
18376 Negative values will blur the input video, while positive values will
18377 sharpen it, a value of zero will disable the effect.
18378
18379 Default value is 1.0.
18380
18381 @item chroma_msize_x, cx
18382 Set the chroma matrix horizontal size. It must be an odd integer
18383 between 3 and 23. The default value is 5.
18384
18385 @item chroma_msize_y, cy
18386 Set the chroma matrix vertical size. It must be an odd integer
18387 between 3 and 23. The default value is 5.
18388
18389 @item chroma_amount, ca
18390 Set the chroma effect strength. It must be a floating point number, reasonable
18391 values lay between -1.5 and 1.5.
18392
18393 Negative values will blur the input video, while positive values will
18394 sharpen it, a value of zero will disable the effect.
18395
18396 Default value is 0.0.
18397
18398 @end table
18399
18400 All parameters are optional and default to the equivalent of the
18401 string '5:5:1.0:5:5:0.0'.
18402
18403 @subsection Examples
18404
18405 @itemize
18406 @item
18407 Apply strong luma sharpen effect:
18408 @example
18409 unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
18410 @end example
18411
18412 @item
18413 Apply a strong blur of both luma and chroma parameters:
18414 @example
18415 unsharp=7:7:-2:7:7:-2
18416 @end example
18417 @end itemize
18418
18419 @section uspp
18420
18421 Apply ultra slow/simple postprocessing filter that compresses and decompresses
18422 the image at several (or - in the case of @option{quality} level @code{8} - all)
18423 shifts and average the results.
18424
18425 The way this differs from the behavior of spp is that uspp actually encodes &
18426 decodes each case with libavcodec Snow, whereas spp uses a simplified intra only 8x8
18427 DCT similar to MJPEG.
18428
18429 The filter accepts the following options:
18430
18431 @table @option
18432 @item quality
18433 Set quality. This option defines the number of levels for averaging. It accepts
18434 an integer in the range 0-8. If set to @code{0}, the filter will have no
18435 effect. A value of @code{8} means the higher quality. For each increment of
18436 that value the speed drops by a factor of approximately 2.  Default value is
18437 @code{3}.
18438
18439 @item qp
18440 Force a constant quantization parameter. If not set, the filter will use the QP
18441 from the video stream (if available).
18442 @end table
18443
18444 @section v360
18445
18446 Convert 360 videos between various formats.
18447
18448 The filter accepts the following options:
18449
18450 @table @option
18451
18452 @item input
18453 @item output
18454 Set format of the input/output video.
18455
18456 Available formats:
18457
18458 @table @samp
18459
18460 @item e
18461 @item equirect
18462 Equirectangular projection.
18463
18464 @item c3x2
18465 @item c6x1
18466 @item c1x6
18467 Cubemap with 3x2/6x1/1x6 layout.
18468
18469 Format specific options:
18470
18471 @table @option
18472 @item in_pad
18473 @item out_pad
18474 Set padding proportion for the input/output cubemap. Values in decimals.
18475
18476 Example values:
18477 @table @samp
18478 @item 0
18479 No padding.
18480 @item 0.01
18481 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)
18482 @end table
18483
18484 Default value is @b{@samp{0}}.
18485
18486 @item fin_pad
18487 @item fout_pad
18488 Set fixed padding for the input/output cubemap. Values in pixels.
18489
18490 Default value is @b{@samp{0}}. If greater than zero it overrides other padding options.
18491
18492 @item in_forder
18493 @item out_forder
18494 Set order of faces for the input/output cubemap. Choose one direction for each position.
18495
18496 Designation of directions:
18497 @table @samp
18498 @item r
18499 right
18500 @item l
18501 left
18502 @item u
18503 up
18504 @item d
18505 down
18506 @item f
18507 forward
18508 @item b
18509 back
18510 @end table
18511
18512 Default value is @b{@samp{rludfb}}.
18513
18514 @item in_frot
18515 @item out_frot
18516 Set rotation of faces for the input/output cubemap. Choose one angle for each position.
18517
18518 Designation of angles:
18519 @table @samp
18520 @item 0
18521 0 degrees clockwise
18522 @item 1
18523 90 degrees clockwise
18524 @item 2
18525 180 degrees clockwise
18526 @item 3
18527 270 degrees clockwise
18528 @end table
18529
18530 Default value is @b{@samp{000000}}.
18531 @end table
18532
18533 @item eac
18534 Equi-Angular Cubemap.
18535
18536 @item flat
18537 @item gnomonic
18538 @item rectilinear
18539 Regular video. @i{(output only)}
18540
18541 Format specific options:
18542 @table @option
18543 @item h_fov
18544 @item v_fov
18545 @item d_fov
18546 Set horizontal/vertical/diagonal field of view. Values in degrees.
18547
18548 If diagonal field of view is set it overrides horizontal and vertical field of view.
18549 @end table
18550
18551 @item dfisheye
18552 Dual fisheye.
18553
18554 Format specific options:
18555 @table @option
18556 @item in_pad
18557 @item out_pad
18558 Set padding proportion. Values in decimals.
18559
18560 Example values:
18561 @table @samp
18562 @item 0
18563 No padding.
18564 @item 0.01
18565 1% padding.
18566 @end table
18567
18568 Default value is @b{@samp{0}}.
18569 @end table
18570
18571 @item barrel
18572 @item fb
18573 Facebook's 360 format.
18574
18575 @item sg
18576 Stereographic format.
18577
18578 Format specific options:
18579 @table @option
18580 @item h_fov
18581 @item v_fov
18582 @item d_fov
18583 Set horizontal/vertical/diagonal field of view. Values in degrees.
18584
18585 If diagonal field of view is set it overrides horizontal and vertical field of view.
18586 @end table
18587
18588 @item mercator
18589 Mercator format.
18590
18591 @item ball
18592 Ball format, gives significant distortion toward the back.
18593
18594 @item hammer
18595 Hammer-Aitoff map projection format.
18596
18597 @item sinusoidal
18598 Sinusoidal map projection format.
18599
18600 @end table
18601
18602 @item interp
18603 Set interpolation method.@*
18604 @i{Note: more complex interpolation methods require much more memory to run.}
18605
18606 Available methods:
18607
18608 @table @samp
18609 @item near
18610 @item nearest
18611 Nearest neighbour.
18612 @item line
18613 @item linear
18614 Bilinear interpolation.
18615 @item cube
18616 @item cubic
18617 Bicubic interpolation.
18618 @item lanc
18619 @item lanczos
18620 Lanczos interpolation.
18621 @end table
18622
18623 Default value is @b{@samp{line}}.
18624
18625 @item w
18626 @item h
18627 Set the output video resolution.
18628
18629 Default resolution depends on formats.
18630
18631 @item in_stereo
18632 @item out_stereo
18633 Set the input/output stereo format.
18634
18635 @table @samp
18636 @item 2d
18637 2D mono
18638 @item sbs
18639 Side by side
18640 @item tb
18641 Top bottom
18642 @end table
18643
18644 Default value is @b{@samp{2d}} for input and output format.
18645
18646 @item yaw
18647 @item pitch
18648 @item roll
18649 Set rotation for the output video. Values in degrees.
18650
18651 @item rorder
18652 Set rotation order for the output video. Choose one item for each position.
18653
18654 @table @samp
18655 @item y, Y
18656 yaw
18657 @item p, P
18658 pitch
18659 @item r, R
18660 roll
18661 @end table
18662
18663 Default value is @b{@samp{ypr}}.
18664
18665 @item h_flip
18666 @item v_flip
18667 @item d_flip
18668 Flip the output video horizontally(swaps left-right)/vertically(swaps up-down)/in-depth(swaps back-forward). Boolean values.
18669
18670 @item ih_flip
18671 @item iv_flip
18672 Set if input video is flipped horizontally/vertically. Boolean values.
18673
18674 @item in_trans
18675 Set if input video is transposed. Boolean value, by default disabled.
18676
18677 @item out_trans
18678 Set if output video needs to be transposed. Boolean value, by default disabled.
18679
18680 @end table
18681
18682 @subsection Examples
18683
18684 @itemize
18685 @item
18686 Convert equirectangular video to cubemap with 3x2 layout and 1% padding using bicubic interpolation:
18687 @example
18688 ffmpeg -i input.mkv -vf v360=e:c3x2:cubic:out_pad=0.01 output.mkv
18689 @end example
18690 @item
18691 Extract back view of Equi-Angular Cubemap:
18692 @example
18693 ffmpeg -i input.mkv -vf v360=eac:flat:yaw=180 output.mkv
18694 @end example
18695 @item
18696 Convert transposed and horizontally flipped Equi-Angular Cubemap in side-by-side stereo format to equirectangular top-bottom stereo format:
18697 @example
18698 v360=eac:equirect:in_stereo=sbs:in_trans=1:ih_flip=1:out_stereo=tb
18699 @end example
18700 @end itemize
18701
18702 @section vaguedenoiser
18703
18704 Apply a wavelet based denoiser.
18705
18706 It transforms each frame from the video input into the wavelet domain,
18707 using Cohen-Daubechies-Feauveau 9/7. Then it applies some filtering to
18708 the obtained coefficients. It does an inverse wavelet transform after.
18709 Due to wavelet properties, it should give a nice smoothed result, and
18710 reduced noise, without blurring picture features.
18711
18712 This filter accepts the following options:
18713
18714 @table @option
18715 @item threshold
18716 The filtering strength. The higher, the more filtered the video will be.
18717 Hard thresholding can use a higher threshold than soft thresholding
18718 before the video looks overfiltered. Default value is 2.
18719
18720 @item method
18721 The filtering method the filter will use.
18722
18723 It accepts the following values:
18724 @table @samp
18725 @item hard
18726 All values under the threshold will be zeroed.
18727
18728 @item soft
18729 All values under the threshold will be zeroed. All values above will be
18730 reduced by the threshold.
18731
18732 @item garrote
18733 Scales or nullifies coefficients - intermediary between (more) soft and
18734 (less) hard thresholding.
18735 @end table
18736
18737 Default is garrote.
18738
18739 @item nsteps
18740 Number of times, the wavelet will decompose the picture. Picture can't
18741 be decomposed beyond a particular point (typically, 8 for a 640x480
18742 frame - as 2^9 = 512 > 480). Valid values are integers between 1 and 32. Default value is 6.
18743
18744 @item percent
18745 Partial of full denoising (limited coefficients shrinking), from 0 to 100. Default value is 85.
18746
18747 @item planes
18748 A list of the planes to process. By default all planes are processed.
18749 @end table
18750
18751 @section vectorscope
18752
18753 Display 2 color component values in the two dimensional graph (which is called
18754 a vectorscope).
18755
18756 This filter accepts the following options:
18757
18758 @table @option
18759 @item mode, m
18760 Set vectorscope mode.
18761
18762 It accepts the following values:
18763 @table @samp
18764 @item gray
18765 Gray values are displayed on graph, higher brightness means more pixels have
18766 same component color value on location in graph. This is the default mode.
18767
18768 @item color
18769 Gray values are displayed on graph. Surrounding pixels values which are not
18770 present in video frame are drawn in gradient of 2 color components which are
18771 set by option @code{x} and @code{y}. The 3rd color component is static.
18772
18773 @item color2
18774 Actual color components values present in video frame are displayed on graph.
18775
18776 @item color3
18777 Similar as color2 but higher frequency of same values @code{x} and @code{y}
18778 on graph increases value of another color component, which is luminance by
18779 default values of @code{x} and @code{y}.
18780
18781 @item color4
18782 Actual colors present in video frame are displayed on graph. If two different
18783 colors map to same position on graph then color with higher value of component
18784 not present in graph is picked.
18785
18786 @item color5
18787 Gray values are displayed on graph. Similar to @code{color} but with 3rd color
18788 component picked from radial gradient.
18789 @end table
18790
18791 @item x
18792 Set which color component will be represented on X-axis. Default is @code{1}.
18793
18794 @item y
18795 Set which color component will be represented on Y-axis. Default is @code{2}.
18796
18797 @item intensity, i
18798 Set intensity, used by modes: gray, color, color3 and color5 for increasing brightness
18799 of color component which represents frequency of (X, Y) location in graph.
18800
18801 @item envelope, e
18802 @table @samp
18803 @item none
18804 No envelope, this is default.
18805
18806 @item instant
18807 Instant envelope, even darkest single pixel will be clearly highlighted.
18808
18809 @item peak
18810 Hold maximum and minimum values presented in graph over time. This way you
18811 can still spot out of range values without constantly looking at vectorscope.
18812
18813 @item peak+instant
18814 Peak and instant envelope combined together.
18815 @end table
18816
18817 @item graticule, g
18818 Set what kind of graticule to draw.
18819 @table @samp
18820 @item none
18821 @item green
18822 @item color
18823 @end table
18824
18825 @item opacity, o
18826 Set graticule opacity.
18827
18828 @item flags, f
18829 Set graticule flags.
18830
18831 @table @samp
18832 @item white
18833 Draw graticule for white point.
18834
18835 @item black
18836 Draw graticule for black point.
18837
18838 @item name
18839 Draw color points short names.
18840 @end table
18841
18842 @item bgopacity, b
18843 Set background opacity.
18844
18845 @item lthreshold, l
18846 Set low threshold for color component not represented on X or Y axis.
18847 Values lower than this value will be ignored. Default is 0.
18848 Note this value is multiplied with actual max possible value one pixel component
18849 can have. So for 8-bit input and low threshold value of 0.1 actual threshold
18850 is 0.1 * 255 = 25.
18851
18852 @item hthreshold, h
18853 Set high threshold for color component not represented on X or Y axis.
18854 Values higher than this value will be ignored. Default is 1.
18855 Note this value is multiplied with actual max possible value one pixel component
18856 can have. So for 8-bit input and high threshold value of 0.9 actual threshold
18857 is 0.9 * 255 = 230.
18858
18859 @item colorspace, c
18860 Set what kind of colorspace to use when drawing graticule.
18861 @table @samp
18862 @item auto
18863 @item 601
18864 @item 709
18865 @end table
18866 Default is auto.
18867 @end table
18868
18869 @anchor{vidstabdetect}
18870 @section vidstabdetect
18871
18872 Analyze video stabilization/deshaking. Perform pass 1 of 2, see
18873 @ref{vidstabtransform} for pass 2.
18874
18875 This filter generates a file with relative translation and rotation
18876 transform information about subsequent frames, which is then used by
18877 the @ref{vidstabtransform} filter.
18878
18879 To enable compilation of this filter you need to configure FFmpeg with
18880 @code{--enable-libvidstab}.
18881
18882 This filter accepts the following options:
18883
18884 @table @option
18885 @item result
18886 Set the path to the file used to write the transforms information.
18887 Default value is @file{transforms.trf}.
18888
18889 @item shakiness
18890 Set how shaky the video is and how quick the camera is. It accepts an
18891 integer in the range 1-10, a value of 1 means little shakiness, a
18892 value of 10 means strong shakiness. Default value is 5.
18893
18894 @item accuracy
18895 Set the accuracy of the detection process. It must be a value in the
18896 range 1-15. A value of 1 means low accuracy, a value of 15 means high
18897 accuracy. Default value is 15.
18898
18899 @item stepsize
18900 Set stepsize of the search process. The region around minimum is
18901 scanned with 1 pixel resolution. Default value is 6.
18902
18903 @item mincontrast
18904 Set minimum contrast. Below this value a local measurement field is
18905 discarded. Must be a floating point value in the range 0-1. Default
18906 value is 0.3.
18907
18908 @item tripod
18909 Set reference frame number for tripod mode.
18910
18911 If enabled, the motion of the frames is compared to a reference frame
18912 in the filtered stream, identified by the specified number. The idea
18913 is to compensate all movements in a more-or-less static scene and keep
18914 the camera view absolutely still.
18915
18916 If set to 0, it is disabled. The frames are counted starting from 1.
18917
18918 @item show
18919 Show fields and transforms in the resulting frames. It accepts an
18920 integer in the range 0-2. Default value is 0, which disables any
18921 visualization.
18922 @end table
18923
18924 @subsection Examples
18925
18926 @itemize
18927 @item
18928 Use default values:
18929 @example
18930 vidstabdetect
18931 @end example
18932
18933 @item
18934 Analyze strongly shaky movie and put the results in file
18935 @file{mytransforms.trf}:
18936 @example
18937 vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
18938 @end example
18939
18940 @item
18941 Visualize the result of internal transformations in the resulting
18942 video:
18943 @example
18944 vidstabdetect=show=1
18945 @end example
18946
18947 @item
18948 Analyze a video with medium shakiness using @command{ffmpeg}:
18949 @example
18950 ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
18951 @end example
18952 @end itemize
18953
18954 @anchor{vidstabtransform}
18955 @section vidstabtransform
18956
18957 Video stabilization/deshaking: pass 2 of 2,
18958 see @ref{vidstabdetect} for pass 1.
18959
18960 Read a file with transform information for each frame and
18961 apply/compensate them. Together with the @ref{vidstabdetect}
18962 filter this can be used to deshake videos. See also
18963 @url{http://public.hronopik.de/vid.stab}. It is important to also use
18964 the @ref{unsharp} filter, see below.
18965
18966 To enable compilation of this filter you need to configure FFmpeg with
18967 @code{--enable-libvidstab}.
18968
18969 @subsection Options
18970
18971 @table @option
18972 @item input
18973 Set path to the file used to read the transforms. Default value is
18974 @file{transforms.trf}.
18975
18976 @item smoothing
18977 Set the number of frames (value*2 + 1) used for lowpass filtering the
18978 camera movements. Default value is 10.
18979
18980 For example a number of 10 means that 21 frames are used (10 in the
18981 past and 10 in the future) to smoothen the motion in the video. A
18982 larger value leads to a smoother video, but limits the acceleration of
18983 the camera (pan/tilt movements). 0 is a special case where a static
18984 camera is simulated.
18985
18986 @item optalgo
18987 Set the camera path optimization algorithm.
18988
18989 Accepted values are:
18990 @table @samp
18991 @item gauss
18992 gaussian kernel low-pass filter on camera motion (default)
18993 @item avg
18994 averaging on transformations
18995 @end table
18996
18997 @item maxshift
18998 Set maximal number of pixels to translate frames. Default value is -1,
18999 meaning no limit.
19000
19001 @item maxangle
19002 Set maximal angle in radians (degree*PI/180) to rotate frames. Default
19003 value is -1, meaning no limit.
19004
19005 @item crop
19006 Specify how to deal with borders that may be visible due to movement
19007 compensation.
19008
19009 Available values are:
19010 @table @samp
19011 @item keep
19012 keep image information from previous frame (default)
19013 @item black
19014 fill the border black
19015 @end table
19016
19017 @item invert
19018 Invert transforms if set to 1. Default value is 0.
19019
19020 @item relative
19021 Consider transforms as relative to previous frame if set to 1,
19022 absolute if set to 0. Default value is 0.
19023
19024 @item zoom
19025 Set percentage to zoom. A positive value will result in a zoom-in
19026 effect, a negative value in a zoom-out effect. Default value is 0 (no
19027 zoom).
19028
19029 @item optzoom
19030 Set optimal zooming to avoid borders.
19031
19032 Accepted values are:
19033 @table @samp
19034 @item 0
19035 disabled
19036 @item 1
19037 optimal static zoom value is determined (only very strong movements
19038 will lead to visible borders) (default)
19039 @item 2
19040 optimal adaptive zoom value is determined (no borders will be
19041 visible), see @option{zoomspeed}
19042 @end table
19043
19044 Note that the value given at zoom is added to the one calculated here.
19045
19046 @item zoomspeed
19047 Set percent to zoom maximally each frame (enabled when
19048 @option{optzoom} is set to 2). Range is from 0 to 5, default value is
19049 0.25.
19050
19051 @item interpol
19052 Specify type of interpolation.
19053
19054 Available values are:
19055 @table @samp
19056 @item no
19057 no interpolation
19058 @item linear
19059 linear only horizontal
19060 @item bilinear
19061 linear in both directions (default)
19062 @item bicubic
19063 cubic in both directions (slow)
19064 @end table
19065
19066 @item tripod
19067 Enable virtual tripod mode if set to 1, which is equivalent to
19068 @code{relative=0:smoothing=0}. Default value is 0.
19069
19070 Use also @code{tripod} option of @ref{vidstabdetect}.
19071
19072 @item debug
19073 Increase log verbosity if set to 1. Also the detected global motions
19074 are written to the temporary file @file{global_motions.trf}. Default
19075 value is 0.
19076 @end table
19077
19078 @subsection Examples
19079
19080 @itemize
19081 @item
19082 Use @command{ffmpeg} for a typical stabilization with default values:
19083 @example
19084 ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
19085 @end example
19086
19087 Note the use of the @ref{unsharp} filter which is always recommended.
19088
19089 @item
19090 Zoom in a bit more and load transform data from a given file:
19091 @example
19092 vidstabtransform=zoom=5:input="mytransforms.trf"
19093 @end example
19094
19095 @item
19096 Smoothen the video even more:
19097 @example
19098 vidstabtransform=smoothing=30
19099 @end example
19100 @end itemize
19101
19102 @section vflip
19103
19104 Flip the input video vertically.
19105
19106 For example, to vertically flip a video with @command{ffmpeg}:
19107 @example
19108 ffmpeg -i in.avi -vf "vflip" out.avi
19109 @end example
19110
19111 @section vfrdet
19112
19113 Detect variable frame rate video.
19114
19115 This filter tries to detect if the input is variable or constant frame rate.
19116
19117 At end it will output number of frames detected as having variable delta pts,
19118 and ones with constant delta pts.
19119 If there was frames with variable delta, than it will also show min, max and
19120 average delta encountered.
19121
19122 @section vibrance
19123
19124 Boost or alter saturation.
19125
19126 The filter accepts the following options:
19127 @table @option
19128 @item intensity
19129 Set strength of boost if positive value or strength of alter if negative value.
19130 Default is 0. Allowed range is from -2 to 2.
19131
19132 @item rbal
19133 Set the red balance. Default is 1. Allowed range is from -10 to 10.
19134
19135 @item gbal
19136 Set the green balance. Default is 1. Allowed range is from -10 to 10.
19137
19138 @item bbal
19139 Set the blue balance. Default is 1. Allowed range is from -10 to 10.
19140
19141 @item rlum
19142 Set the red luma coefficient.
19143
19144 @item glum
19145 Set the green luma coefficient.
19146
19147 @item blum
19148 Set the blue luma coefficient.
19149
19150 @item alternate
19151 If @code{intensity} is negative and this is set to 1, colors will change,
19152 otherwise colors will be less saturated, more towards gray.
19153 @end table
19154
19155 @anchor{vignette}
19156 @section vignette
19157
19158 Make or reverse a natural vignetting effect.
19159
19160 The filter accepts the following options:
19161
19162 @table @option
19163 @item angle, a
19164 Set lens angle expression as a number of radians.
19165
19166 The value is clipped in the @code{[0,PI/2]} range.
19167
19168 Default value: @code{"PI/5"}
19169
19170 @item x0
19171 @item y0
19172 Set center coordinates expressions. Respectively @code{"w/2"} and @code{"h/2"}
19173 by default.
19174
19175 @item mode
19176 Set forward/backward mode.
19177
19178 Available modes are:
19179 @table @samp
19180 @item forward
19181 The larger the distance from the central point, the darker the image becomes.
19182
19183 @item backward
19184 The larger the distance from the central point, the brighter the image becomes.
19185 This can be used to reverse a vignette effect, though there is no automatic
19186 detection to extract the lens @option{angle} and other settings (yet). It can
19187 also be used to create a burning effect.
19188 @end table
19189
19190 Default value is @samp{forward}.
19191
19192 @item eval
19193 Set evaluation mode for the expressions (@option{angle}, @option{x0}, @option{y0}).
19194
19195 It accepts the following values:
19196 @table @samp
19197 @item init
19198 Evaluate expressions only once during the filter initialization.
19199
19200 @item frame
19201 Evaluate expressions for each incoming frame. This is way slower than the
19202 @samp{init} mode since it requires all the scalers to be re-computed, but it
19203 allows advanced dynamic expressions.
19204 @end table
19205
19206 Default value is @samp{init}.
19207
19208 @item dither
19209 Set dithering to reduce the circular banding effects. Default is @code{1}
19210 (enabled).
19211
19212 @item aspect
19213 Set vignette aspect. This setting allows one to adjust the shape of the vignette.
19214 Setting this value to the SAR of the input will make a rectangular vignetting
19215 following the dimensions of the video.
19216
19217 Default is @code{1/1}.
19218 @end table
19219
19220 @subsection Expressions
19221
19222 The @option{alpha}, @option{x0} and @option{y0} expressions can contain the
19223 following parameters.
19224
19225 @table @option
19226 @item w
19227 @item h
19228 input width and height
19229
19230 @item n
19231 the number of input frame, starting from 0
19232
19233 @item pts
19234 the PTS (Presentation TimeStamp) time of the filtered video frame, expressed in
19235 @var{TB} units, NAN if undefined
19236
19237 @item r
19238 frame rate of the input video, NAN if the input frame rate is unknown
19239
19240 @item t
19241 the PTS (Presentation TimeStamp) of the filtered video frame,
19242 expressed in seconds, NAN if undefined
19243
19244 @item tb
19245 time base of the input video
19246 @end table
19247
19248
19249 @subsection Examples
19250
19251 @itemize
19252 @item
19253 Apply simple strong vignetting effect:
19254 @example
19255 vignette=PI/4
19256 @end example
19257
19258 @item
19259 Make a flickering vignetting:
19260 @example
19261 vignette='PI/4+random(1)*PI/50':eval=frame
19262 @end example
19263
19264 @end itemize
19265
19266 @section vmafmotion
19267
19268 Obtain the average vmaf motion score of a video.
19269 It is one of the component filters of VMAF.
19270
19271 The obtained average motion score is printed through the logging system.
19272
19273 In the below example the input file @file{ref.mpg} is being processed and score
19274 is computed.
19275
19276 @example
19277 ffmpeg -i ref.mpg -lavfi vmafmotion -f null -
19278 @end example
19279
19280 @section vstack
19281 Stack input videos vertically.
19282
19283 All streams must be of same pixel format and of same width.
19284
19285 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
19286 to create same output.
19287
19288 The filter accepts the following options:
19289
19290 @table @option
19291 @item inputs
19292 Set number of input streams. Default is 2.
19293
19294 @item shortest
19295 If set to 1, force the output to terminate when the shortest input
19296 terminates. Default value is 0.
19297 @end table
19298
19299 @section w3fdif
19300
19301 Deinterlace the input video ("w3fdif" stands for "Weston 3 Field
19302 Deinterlacing Filter").
19303
19304 Based on the process described by Martin Weston for BBC R&D, and
19305 implemented based on the de-interlace algorithm written by Jim
19306 Easterbrook for BBC R&D, the Weston 3 field deinterlacing filter
19307 uses filter coefficients calculated by BBC R&D.
19308
19309 This filter uses field-dominance information in frame to decide which
19310 of each pair of fields to place first in the output.
19311 If it gets it wrong use @ref{setfield} filter before @code{w3fdif} filter.
19312
19313 There are two sets of filter coefficients, so called "simple"
19314 and "complex". Which set of filter coefficients is used can
19315 be set by passing an optional parameter:
19316
19317 @table @option
19318 @item filter
19319 Set the interlacing filter coefficients. Accepts one of the following values:
19320
19321 @table @samp
19322 @item simple
19323 Simple filter coefficient set.
19324 @item complex
19325 More-complex filter coefficient set.
19326 @end table
19327 Default value is @samp{complex}.
19328
19329 @item deint
19330 Specify which frames to deinterlace. Accepts one of the following values:
19331
19332 @table @samp
19333 @item all
19334 Deinterlace all frames,
19335 @item interlaced
19336 Only deinterlace frames marked as interlaced.
19337 @end table
19338
19339 Default value is @samp{all}.
19340 @end table
19341
19342 @section waveform
19343 Video waveform monitor.
19344
19345 The waveform monitor plots color component intensity. By default luminance
19346 only. Each column of the waveform corresponds to a column of pixels in the
19347 source video.
19348
19349 It accepts the following options:
19350
19351 @table @option
19352 @item mode, m
19353 Can be either @code{row}, or @code{column}. Default is @code{column}.
19354 In row mode, the graph on the left side represents color component value 0 and
19355 the right side represents value = 255. In column mode, the top side represents
19356 color component value = 0 and bottom side represents value = 255.
19357
19358 @item intensity, i
19359 Set intensity. Smaller values are useful to find out how many values of the same
19360 luminance are distributed across input rows/columns.
19361 Default value is @code{0.04}. Allowed range is [0, 1].
19362
19363 @item mirror, r
19364 Set mirroring mode. @code{0} means unmirrored, @code{1} means mirrored.
19365 In mirrored mode, higher values will be represented on the left
19366 side for @code{row} mode and at the top for @code{column} mode. Default is
19367 @code{1} (mirrored).
19368
19369 @item display, d
19370 Set display mode.
19371 It accepts the following values:
19372 @table @samp
19373 @item overlay
19374 Presents information identical to that in the @code{parade}, except
19375 that the graphs representing color components are superimposed directly
19376 over one another.
19377
19378 This display mode makes it easier to spot relative differences or similarities
19379 in overlapping areas of the color components that are supposed to be identical,
19380 such as neutral whites, grays, or blacks.
19381
19382 @item stack
19383 Display separate graph for the color components side by side in
19384 @code{row} mode or one below the other in @code{column} mode.
19385
19386 @item parade
19387 Display separate graph for the color components side by side in
19388 @code{column} mode or one below the other in @code{row} mode.
19389
19390 Using this display mode makes it easy to spot color casts in the highlights
19391 and shadows of an image, by comparing the contours of the top and the bottom
19392 graphs of each waveform. Since whites, grays, and blacks are characterized
19393 by exactly equal amounts of red, green, and blue, neutral areas of the picture
19394 should display three waveforms of roughly equal width/height. If not, the
19395 correction is easy to perform by making level adjustments the three waveforms.
19396 @end table
19397 Default is @code{stack}.
19398
19399 @item components, c
19400 Set which color components to display. Default is 1, which means only luminance
19401 or red color component if input is in RGB colorspace. If is set for example to
19402 7 it will display all 3 (if) available color components.
19403
19404 @item envelope, e
19405 @table @samp
19406 @item none
19407 No envelope, this is default.
19408
19409 @item instant
19410 Instant envelope, minimum and maximum values presented in graph will be easily
19411 visible even with small @code{step} value.
19412
19413 @item peak
19414 Hold minimum and maximum values presented in graph across time. This way you
19415 can still spot out of range values without constantly looking at waveforms.
19416
19417 @item peak+instant
19418 Peak and instant envelope combined together.
19419 @end table
19420
19421 @item filter, f
19422 @table @samp
19423 @item lowpass
19424 No filtering, this is default.
19425
19426 @item flat
19427 Luma and chroma combined together.
19428
19429 @item aflat
19430 Similar as above, but shows difference between blue and red chroma.
19431
19432 @item xflat
19433 Similar as above, but use different colors.
19434
19435 @item yflat
19436 Similar as above, but again with different colors.
19437
19438 @item chroma
19439 Displays only chroma.
19440
19441 @item color
19442 Displays actual color value on waveform.
19443
19444 @item acolor
19445 Similar as above, but with luma showing frequency of chroma values.
19446 @end table
19447
19448 @item graticule, g
19449 Set which graticule to display.
19450
19451 @table @samp
19452 @item none
19453 Do not display graticule.
19454
19455 @item green
19456 Display green graticule showing legal broadcast ranges.
19457
19458 @item orange
19459 Display orange graticule showing legal broadcast ranges.
19460
19461 @item invert
19462 Display invert graticule showing legal broadcast ranges.
19463 @end table
19464
19465 @item opacity, o
19466 Set graticule opacity.
19467
19468 @item flags, fl
19469 Set graticule flags.
19470
19471 @table @samp
19472 @item numbers
19473 Draw numbers above lines. By default enabled.
19474
19475 @item dots
19476 Draw dots instead of lines.
19477 @end table
19478
19479 @item scale, s
19480 Set scale used for displaying graticule.
19481
19482 @table @samp
19483 @item digital
19484 @item millivolts
19485 @item ire
19486 @end table
19487 Default is digital.
19488
19489 @item bgopacity, b
19490 Set background opacity.
19491 @end table
19492
19493 @section weave, doubleweave
19494
19495 The @code{weave} takes a field-based video input and join
19496 each two sequential fields into single frame, producing a new double
19497 height clip with half the frame rate and half the frame count.
19498
19499 The @code{doubleweave} works same as @code{weave} but without
19500 halving frame rate and frame count.
19501
19502 It accepts the following option:
19503
19504 @table @option
19505 @item first_field
19506 Set first field. Available values are:
19507
19508 @table @samp
19509 @item top, t
19510 Set the frame as top-field-first.
19511
19512 @item bottom, b
19513 Set the frame as bottom-field-first.
19514 @end table
19515 @end table
19516
19517 @subsection Examples
19518
19519 @itemize
19520 @item
19521 Interlace video using @ref{select} and @ref{separatefields} filter:
19522 @example
19523 separatefields,select=eq(mod(n,4),0)+eq(mod(n,4),3),weave
19524 @end example
19525 @end itemize
19526
19527 @section xbr
19528 Apply the xBR high-quality magnification filter which is designed for pixel
19529 art. It follows a set of edge-detection rules, see
19530 @url{https://forums.libretro.com/t/xbr-algorithm-tutorial/123}.
19531
19532 It accepts the following option:
19533
19534 @table @option
19535 @item n
19536 Set the scaling dimension: @code{2} for @code{2xBR}, @code{3} for
19537 @code{3xBR} and @code{4} for @code{4xBR}.
19538 Default is @code{3}.
19539 @end table
19540
19541 @section xmedian
19542 Pick median pixels from several input videos.
19543
19544 The filter accepts the following options:
19545
19546 @table @option
19547 @item inputs
19548 Set number of inputs.
19549 Default is 3. Allowed range is from 3 to 255.
19550 If number of inputs is even number, than result will be mean value between two median values.
19551
19552 @item planes
19553 Set which planes to filter. Default value is @code{15}, by which all planes are processed.
19554 @end table
19555
19556 @section xstack
19557 Stack video inputs into custom layout.
19558
19559 All streams must be of same pixel format.
19560
19561 The filter accepts the following options:
19562
19563 @table @option
19564 @item inputs
19565 Set number of input streams. Default is 2.
19566
19567 @item layout
19568 Specify layout of inputs.
19569 This option requires the desired layout configuration to be explicitly set by the user.
19570 This sets position of each video input in output. Each input
19571 is separated by '|'.
19572 The first number represents the column, and the second number represents the row.
19573 Numbers start at 0 and are separated by '_'. Optionally one can use wX and hX,
19574 where X is video input from which to take width or height.
19575 Multiple values can be used when separated by '+'. In such
19576 case values are summed together.
19577
19578 Note that if inputs are of different sizes gaps may appear, as not all of
19579 the output video frame will be filled. Similarly, videos can overlap each
19580 other if their position doesn't leave enough space for the full frame of
19581 adjoining videos.
19582
19583 For 2 inputs, a default layout of @code{0_0|w0_0} is set. In all other cases,
19584 a layout must be set by the user.
19585
19586 @item shortest
19587 If set to 1, force the output to terminate when the shortest input
19588 terminates. Default value is 0.
19589 @end table
19590
19591 @subsection Examples
19592
19593 @itemize
19594 @item
19595 Display 4 inputs into 2x2 grid.
19596
19597 Layout:
19598 @example
19599 input1(0, 0)  | input3(w0, 0)
19600 input2(0, h0) | input4(w0, h0)
19601 @end example
19602
19603 @example
19604 xstack=inputs=4:layout=0_0|0_h0|w0_0|w0_h0
19605 @end example
19606
19607 Note that if inputs are of different sizes, gaps or overlaps may occur.
19608
19609 @item
19610 Display 4 inputs into 1x4 grid.
19611
19612 Layout:
19613 @example
19614 input1(0, 0)
19615 input2(0, h0)
19616 input3(0, h0+h1)
19617 input4(0, h0+h1+h2)
19618 @end example
19619
19620 @example
19621 xstack=inputs=4:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2
19622 @end example
19623
19624 Note that if inputs are of different widths, unused space will appear.
19625
19626 @item
19627 Display 9 inputs into 3x3 grid.
19628
19629 Layout:
19630 @example
19631 input1(0, 0)       | input4(w0, 0)      | input7(w0+w3, 0)
19632 input2(0, h0)      | input5(w0, h0)     | input8(w0+w3, h0)
19633 input3(0, h0+h1)   | input6(w0, h0+h1)  | input9(w0+w3, h0+h1)
19634 @end example
19635
19636 @example
19637 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
19638 @end example
19639
19640 Note that if inputs are of different sizes, gaps or overlaps may occur.
19641
19642 @item
19643 Display 16 inputs into 4x4 grid.
19644
19645 Layout:
19646 @example
19647 input1(0, 0)       | input5(w0, 0)       | input9 (w0+w4, 0)       | input13(w0+w4+w8, 0)
19648 input2(0, h0)      | input6(w0, h0)      | input10(w0+w4, h0)      | input14(w0+w4+w8, h0)
19649 input3(0, h0+h1)   | input7(w0, h0+h1)   | input11(w0+w4, h0+h1)   | input15(w0+w4+w8, h0+h1)
19650 input4(0, h0+h1+h2)| input8(w0, h0+h1+h2)| input12(w0+w4, h0+h1+h2)| input16(w0+w4+w8, h0+h1+h2)
19651 @end example
19652
19653 @example
19654 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|
19655 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
19656 @end example
19657
19658 Note that if inputs are of different sizes, gaps or overlaps may occur.
19659
19660 @end itemize
19661
19662 @anchor{yadif}
19663 @section yadif
19664
19665 Deinterlace the input video ("yadif" means "yet another deinterlacing
19666 filter").
19667
19668 It accepts the following parameters:
19669
19670
19671 @table @option
19672
19673 @item mode
19674 The interlacing mode to adopt. It accepts one of the following values:
19675
19676 @table @option
19677 @item 0, send_frame
19678 Output one frame for each frame.
19679 @item 1, send_field
19680 Output one frame for each field.
19681 @item 2, send_frame_nospatial
19682 Like @code{send_frame}, but it skips the spatial interlacing check.
19683 @item 3, send_field_nospatial
19684 Like @code{send_field}, but it skips the spatial interlacing check.
19685 @end table
19686
19687 The default value is @code{send_frame}.
19688
19689 @item parity
19690 The picture field parity assumed for the input interlaced video. It accepts one
19691 of the following values:
19692
19693 @table @option
19694 @item 0, tff
19695 Assume the top field is first.
19696 @item 1, bff
19697 Assume the bottom field is first.
19698 @item -1, auto
19699 Enable automatic detection of field parity.
19700 @end table
19701
19702 The default value is @code{auto}.
19703 If the interlacing is unknown or the decoder does not export this information,
19704 top field first will be assumed.
19705
19706 @item deint
19707 Specify which frames to deinterlace. Accepts one of the following
19708 values:
19709
19710 @table @option
19711 @item 0, all
19712 Deinterlace all frames.
19713 @item 1, interlaced
19714 Only deinterlace frames marked as interlaced.
19715 @end table
19716
19717 The default value is @code{all}.
19718 @end table
19719
19720 @section yadif_cuda
19721
19722 Deinterlace the input video using the @ref{yadif} algorithm, but implemented
19723 in CUDA so that it can work as part of a GPU accelerated pipeline with nvdec
19724 and/or nvenc.
19725
19726 It accepts the following parameters:
19727
19728
19729 @table @option
19730
19731 @item mode
19732 The interlacing mode to adopt. It accepts one of the following values:
19733
19734 @table @option
19735 @item 0, send_frame
19736 Output one frame for each frame.
19737 @item 1, send_field
19738 Output one frame for each field.
19739 @item 2, send_frame_nospatial
19740 Like @code{send_frame}, but it skips the spatial interlacing check.
19741 @item 3, send_field_nospatial
19742 Like @code{send_field}, but it skips the spatial interlacing check.
19743 @end table
19744
19745 The default value is @code{send_frame}.
19746
19747 @item parity
19748 The picture field parity assumed for the input interlaced video. It accepts one
19749 of the following values:
19750
19751 @table @option
19752 @item 0, tff
19753 Assume the top field is first.
19754 @item 1, bff
19755 Assume the bottom field is first.
19756 @item -1, auto
19757 Enable automatic detection of field parity.
19758 @end table
19759
19760 The default value is @code{auto}.
19761 If the interlacing is unknown or the decoder does not export this information,
19762 top field first will be assumed.
19763
19764 @item deint
19765 Specify which frames to deinterlace. Accepts one of the following
19766 values:
19767
19768 @table @option
19769 @item 0, all
19770 Deinterlace all frames.
19771 @item 1, interlaced
19772 Only deinterlace frames marked as interlaced.
19773 @end table
19774
19775 The default value is @code{all}.
19776 @end table
19777
19778 @section zoompan
19779
19780 Apply Zoom & Pan effect.
19781
19782 This filter accepts the following options:
19783
19784 @table @option
19785 @item zoom, z
19786 Set the zoom expression. Range is 1-10. Default is 1.
19787
19788 @item x
19789 @item y
19790 Set the x and y expression. Default is 0.
19791
19792 @item d
19793 Set the duration expression in number of frames.
19794 This sets for how many number of frames effect will last for
19795 single input image.
19796
19797 @item s
19798 Set the output image size, default is 'hd720'.
19799
19800 @item fps
19801 Set the output frame rate, default is '25'.
19802 @end table
19803
19804 Each expression can contain the following constants:
19805
19806 @table @option
19807 @item in_w, iw
19808 Input width.
19809
19810 @item in_h, ih
19811 Input height.
19812
19813 @item out_w, ow
19814 Output width.
19815
19816 @item out_h, oh
19817 Output height.
19818
19819 @item in
19820 Input frame count.
19821
19822 @item on
19823 Output frame count.
19824
19825 @item x
19826 @item y
19827 Last calculated 'x' and 'y' position from 'x' and 'y' expression
19828 for current input frame.
19829
19830 @item px
19831 @item py
19832 'x' and 'y' of last output frame of previous input frame or 0 when there was
19833 not yet such frame (first input frame).
19834
19835 @item zoom
19836 Last calculated zoom from 'z' expression for current input frame.
19837
19838 @item pzoom
19839 Last calculated zoom of last output frame of previous input frame.
19840
19841 @item duration
19842 Number of output frames for current input frame. Calculated from 'd' expression
19843 for each input frame.
19844
19845 @item pduration
19846 number of output frames created for previous input frame
19847
19848 @item a
19849 Rational number: input width / input height
19850
19851 @item sar
19852 sample aspect ratio
19853
19854 @item dar
19855 display aspect ratio
19856
19857 @end table
19858
19859 @subsection Examples
19860
19861 @itemize
19862 @item
19863 Zoom-in up to 1.5 and pan at same time to some spot near center of picture:
19864 @example
19865 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
19866 @end example
19867
19868 @item
19869 Zoom-in up to 1.5 and pan always at center of picture:
19870 @example
19871 zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
19872 @end example
19873
19874 @item
19875 Same as above but without pausing:
19876 @example
19877 zoompan=z='min(max(zoom,pzoom)+0.0015,1.5)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
19878 @end example
19879 @end itemize
19880
19881 @anchor{zscale}
19882 @section zscale
19883 Scale (resize) the input video, using the z.lib library:
19884 @url{https://github.com/sekrit-twc/zimg}. To enable compilation of this
19885 filter, you need to configure FFmpeg with @code{--enable-libzimg}.
19886
19887 The zscale filter forces the output display aspect ratio to be the same
19888 as the input, by changing the output sample aspect ratio.
19889
19890 If the input image format is different from the format requested by
19891 the next filter, the zscale filter will convert the input to the
19892 requested format.
19893
19894 @subsection Options
19895 The filter accepts the following options.
19896
19897 @table @option
19898 @item width, w
19899 @item height, h
19900 Set the output video dimension expression. Default value is the input
19901 dimension.
19902
19903 If the @var{width} or @var{w} value is 0, the input width is used for
19904 the output. If the @var{height} or @var{h} value is 0, the input height
19905 is used for the output.
19906
19907 If one and only one of the values is -n with n >= 1, the zscale filter
19908 will use a value that maintains the aspect ratio of the input image,
19909 calculated from the other specified dimension. After that it will,
19910 however, make sure that the calculated dimension is divisible by n and
19911 adjust the value if necessary.
19912
19913 If both values are -n with n >= 1, the behavior will be identical to
19914 both values being set to 0 as previously detailed.
19915
19916 See below for the list of accepted constants for use in the dimension
19917 expression.
19918
19919 @item size, s
19920 Set the video size. For the syntax of this option, check the
19921 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19922
19923 @item dither, d
19924 Set the dither type.
19925
19926 Possible values are:
19927 @table @var
19928 @item none
19929 @item ordered
19930 @item random
19931 @item error_diffusion
19932 @end table
19933
19934 Default is none.
19935
19936 @item filter, f
19937 Set the resize filter type.
19938
19939 Possible values are:
19940 @table @var
19941 @item point
19942 @item bilinear
19943 @item bicubic
19944 @item spline16
19945 @item spline36
19946 @item lanczos
19947 @end table
19948
19949 Default is bilinear.
19950
19951 @item range, r
19952 Set the color range.
19953
19954 Possible values are:
19955 @table @var
19956 @item input
19957 @item limited
19958 @item full
19959 @end table
19960
19961 Default is same as input.
19962
19963 @item primaries, p
19964 Set the color primaries.
19965
19966 Possible values are:
19967 @table @var
19968 @item input
19969 @item 709
19970 @item unspecified
19971 @item 170m
19972 @item 240m
19973 @item 2020
19974 @end table
19975
19976 Default is same as input.
19977
19978 @item transfer, t
19979 Set the transfer characteristics.
19980
19981 Possible values are:
19982 @table @var
19983 @item input
19984 @item 709
19985 @item unspecified
19986 @item 601
19987 @item linear
19988 @item 2020_10
19989 @item 2020_12
19990 @item smpte2084
19991 @item iec61966-2-1
19992 @item arib-std-b67
19993 @end table
19994
19995 Default is same as input.
19996
19997 @item matrix, m
19998 Set the colorspace matrix.
19999
20000 Possible value are:
20001 @table @var
20002 @item input
20003 @item 709
20004 @item unspecified
20005 @item 470bg
20006 @item 170m
20007 @item 2020_ncl
20008 @item 2020_cl
20009 @end table
20010
20011 Default is same as input.
20012
20013 @item rangein, rin
20014 Set the input color range.
20015
20016 Possible values are:
20017 @table @var
20018 @item input
20019 @item limited
20020 @item full
20021 @end table
20022
20023 Default is same as input.
20024
20025 @item primariesin, pin
20026 Set the input color primaries.
20027
20028 Possible values are:
20029 @table @var
20030 @item input
20031 @item 709
20032 @item unspecified
20033 @item 170m
20034 @item 240m
20035 @item 2020
20036 @end table
20037
20038 Default is same as input.
20039
20040 @item transferin, tin
20041 Set the input transfer characteristics.
20042
20043 Possible values are:
20044 @table @var
20045 @item input
20046 @item 709
20047 @item unspecified
20048 @item 601
20049 @item linear
20050 @item 2020_10
20051 @item 2020_12
20052 @end table
20053
20054 Default is same as input.
20055
20056 @item matrixin, min
20057 Set the input colorspace matrix.
20058
20059 Possible value are:
20060 @table @var
20061 @item input
20062 @item 709
20063 @item unspecified
20064 @item 470bg
20065 @item 170m
20066 @item 2020_ncl
20067 @item 2020_cl
20068 @end table
20069
20070 @item chromal, c
20071 Set the output chroma location.
20072
20073 Possible values are:
20074 @table @var
20075 @item input
20076 @item left
20077 @item center
20078 @item topleft
20079 @item top
20080 @item bottomleft
20081 @item bottom
20082 @end table
20083
20084 @item chromalin, cin
20085 Set the input chroma location.
20086
20087 Possible values are:
20088 @table @var
20089 @item input
20090 @item left
20091 @item center
20092 @item topleft
20093 @item top
20094 @item bottomleft
20095 @item bottom
20096 @end table
20097
20098 @item npl
20099 Set the nominal peak luminance.
20100 @end table
20101
20102 The values of the @option{w} and @option{h} options are expressions
20103 containing the following constants:
20104
20105 @table @var
20106 @item in_w
20107 @item in_h
20108 The input width and height
20109
20110 @item iw
20111 @item ih
20112 These are the same as @var{in_w} and @var{in_h}.
20113
20114 @item out_w
20115 @item out_h
20116 The output (scaled) width and height
20117
20118 @item ow
20119 @item oh
20120 These are the same as @var{out_w} and @var{out_h}
20121
20122 @item a
20123 The same as @var{iw} / @var{ih}
20124
20125 @item sar
20126 input sample aspect ratio
20127
20128 @item dar
20129 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
20130
20131 @item hsub
20132 @item vsub
20133 horizontal and vertical input chroma subsample values. For example for the
20134 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
20135
20136 @item ohsub
20137 @item ovsub
20138 horizontal and vertical output chroma subsample values. For example for the
20139 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
20140 @end table
20141
20142 @table @option
20143 @end table
20144
20145 @c man end VIDEO FILTERS
20146
20147 @chapter OpenCL Video Filters
20148 @c man begin OPENCL VIDEO FILTERS
20149
20150 Below is a description of the currently available OpenCL video filters.
20151
20152 To enable compilation of these filters you need to configure FFmpeg with
20153 @code{--enable-opencl}.
20154
20155 Running OpenCL filters requires you to initialize a hardware device and to pass that device to all filters in any filter graph.
20156 @table @option
20157
20158 @item -init_hw_device opencl[=@var{name}][:@var{device}[,@var{key=value}...]]
20159 Initialise a new hardware device of type @var{opencl} called @var{name}, using the
20160 given device parameters.
20161
20162 @item -filter_hw_device @var{name}
20163 Pass the hardware device called @var{name} to all filters in any filter graph.
20164
20165 @end table
20166
20167 For more detailed information see @url{https://www.ffmpeg.org/ffmpeg.html#Advanced-Video-options}
20168
20169 @itemize
20170 @item
20171 Example of choosing the first device on the second platform and running avgblur_opencl filter with default parameters on it.
20172 @example
20173 -init_hw_device opencl=gpu:1.0 -filter_hw_device gpu -i INPUT -vf "hwupload, avgblur_opencl, hwdownload" OUTPUT
20174 @end example
20175 @end itemize
20176
20177 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.
20178
20179 @section avgblur_opencl
20180
20181 Apply average blur filter.
20182
20183 The filter accepts the following options:
20184
20185 @table @option
20186 @item sizeX
20187 Set horizontal radius size.
20188 Range is @code{[1, 1024]} and default value is @code{1}.
20189
20190 @item planes
20191 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
20192
20193 @item sizeY
20194 Set vertical radius size. Range is @code{[1, 1024]} and default value is @code{0}. If zero, @code{sizeX} value will be used.
20195 @end table
20196
20197 @subsection Example
20198
20199 @itemize
20200 @item
20201 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.
20202 @example
20203 -i INPUT -vf "hwupload, avgblur_opencl=3, hwdownload" OUTPUT
20204 @end example
20205 @end itemize
20206
20207 @section boxblur_opencl
20208
20209 Apply a boxblur algorithm to the input video.
20210
20211 It accepts the following parameters:
20212
20213 @table @option
20214
20215 @item luma_radius, lr
20216 @item luma_power, lp
20217 @item chroma_radius, cr
20218 @item chroma_power, cp
20219 @item alpha_radius, ar
20220 @item alpha_power, ap
20221
20222 @end table
20223
20224 A description of the accepted options follows.
20225
20226 @table @option
20227 @item luma_radius, lr
20228 @item chroma_radius, cr
20229 @item alpha_radius, ar
20230 Set an expression for the box radius in pixels used for blurring the
20231 corresponding input plane.
20232
20233 The radius value must be a non-negative number, and must not be
20234 greater than the value of the expression @code{min(w,h)/2} for the
20235 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
20236 planes.
20237
20238 Default value for @option{luma_radius} is "2". If not specified,
20239 @option{chroma_radius} and @option{alpha_radius} default to the
20240 corresponding value set for @option{luma_radius}.
20241
20242 The expressions can contain the following constants:
20243 @table @option
20244 @item w
20245 @item h
20246 The input width and height in pixels.
20247
20248 @item cw
20249 @item ch
20250 The input chroma image width and height in pixels.
20251
20252 @item hsub
20253 @item vsub
20254 The horizontal and vertical chroma subsample values. For example, for the
20255 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
20256 @end table
20257
20258 @item luma_power, lp
20259 @item chroma_power, cp
20260 @item alpha_power, ap
20261 Specify how many times the boxblur filter is applied to the
20262 corresponding plane.
20263
20264 Default value for @option{luma_power} is 2. If not specified,
20265 @option{chroma_power} and @option{alpha_power} default to the
20266 corresponding value set for @option{luma_power}.
20267
20268 A value of 0 will disable the effect.
20269 @end table
20270
20271 @subsection Examples
20272
20273 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.
20274
20275 @itemize
20276 @item
20277 Apply a boxblur filter with the luma, chroma, and alpha radius
20278 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.
20279 @example
20280 -i INPUT -vf "hwupload, boxblur_opencl=luma_radius=2:luma_power=3, hwdownload" OUTPUT
20281 -i INPUT -vf "hwupload, boxblur_opencl=2:3, hwdownload" OUTPUT
20282 @end example
20283
20284 @item
20285 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.
20286
20287 For the luma plane, a 2x2 box radius will be run once.
20288
20289 For the chroma plane, a 4x4 box radius will be run 5 times.
20290
20291 For the alpha plane, a 3x3 box radius will be run 7 times.
20292 @example
20293 -i INPUT -vf "hwupload, boxblur_opencl=2:1:4:5:3:7, hwdownload" OUTPUT
20294 @end example
20295 @end itemize
20296
20297 @section convolution_opencl
20298
20299 Apply convolution of 3x3, 5x5, 7x7 matrix.
20300
20301 The filter accepts the following options:
20302
20303 @table @option
20304 @item 0m
20305 @item 1m
20306 @item 2m
20307 @item 3m
20308 Set matrix for each plane.
20309 Matrix is sequence of 9, 25 or 49 signed numbers.
20310 Default value for each plane is @code{0 0 0 0 1 0 0 0 0}.
20311
20312 @item 0rdiv
20313 @item 1rdiv
20314 @item 2rdiv
20315 @item 3rdiv
20316 Set multiplier for calculated value for each plane.
20317 If unset or 0, it will be sum of all matrix elements.
20318 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{1.0}.
20319
20320 @item 0bias
20321 @item 1bias
20322 @item 2bias
20323 @item 3bias
20324 Set bias for each plane. This value is added to the result of the multiplication.
20325 Useful for making the overall image brighter or darker.
20326 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{0.0}.
20327
20328 @end table
20329
20330 @subsection Examples
20331
20332 @itemize
20333 @item
20334 Apply sharpen:
20335 @example
20336 -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
20337 @end example
20338
20339 @item
20340 Apply blur:
20341 @example
20342 -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
20343 @end example
20344
20345 @item
20346 Apply edge enhance:
20347 @example
20348 -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
20349 @end example
20350
20351 @item
20352 Apply edge detect:
20353 @example
20354 -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
20355 @end example
20356
20357 @item
20358 Apply laplacian edge detector which includes diagonals:
20359 @example
20360 -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
20361 @end example
20362
20363 @item
20364 Apply emboss:
20365 @example
20366 -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
20367 @end example
20368 @end itemize
20369
20370 @section dilation_opencl
20371
20372 Apply dilation effect to the video.
20373
20374 This filter replaces the pixel by the local(3x3) maximum.
20375
20376 It accepts the following options:
20377
20378 @table @option
20379 @item threshold0
20380 @item threshold1
20381 @item threshold2
20382 @item threshold3
20383 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
20384 If @code{0}, plane will remain unchanged.
20385
20386 @item coordinates
20387 Flag which specifies the pixel to refer to.
20388 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
20389
20390 Flags to local 3x3 coordinates region centered on @code{x}:
20391
20392     1 2 3
20393
20394     4 x 5
20395
20396     6 7 8
20397 @end table
20398
20399 @subsection Example
20400
20401 @itemize
20402 @item
20403 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.
20404 @example
20405 -i INPUT -vf "hwupload, dilation_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
20406 @end example
20407 @end itemize
20408
20409 @section erosion_opencl
20410
20411 Apply erosion effect to the video.
20412
20413 This filter replaces the pixel by the local(3x3) minimum.
20414
20415 It accepts the following options:
20416
20417 @table @option
20418 @item threshold0
20419 @item threshold1
20420 @item threshold2
20421 @item threshold3
20422 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
20423 If @code{0}, plane will remain unchanged.
20424
20425 @item coordinates
20426 Flag which specifies the pixel to refer to.
20427 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
20428
20429 Flags to local 3x3 coordinates region centered on @code{x}:
20430
20431     1 2 3
20432
20433     4 x 5
20434
20435     6 7 8
20436 @end table
20437
20438 @subsection Example
20439
20440 @itemize
20441 @item
20442 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.
20443 @example
20444 -i INPUT -vf "hwupload, erosion_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
20445 @end example
20446 @end itemize
20447
20448 @section colorkey_opencl
20449 RGB colorspace color keying.
20450
20451 The filter accepts the following options:
20452
20453 @table @option
20454 @item color
20455 The color which will be replaced with transparency.
20456
20457 @item similarity
20458 Similarity percentage with the key color.
20459
20460 0.01 matches only the exact key color, while 1.0 matches everything.
20461
20462 @item blend
20463 Blend percentage.
20464
20465 0.0 makes pixels either fully transparent, or not transparent at all.
20466
20467 Higher values result in semi-transparent pixels, with a higher transparency
20468 the more similar the pixels color is to the key color.
20469 @end table
20470
20471 @subsection Examples
20472
20473 @itemize
20474 @item
20475 Make every semi-green pixel in the input transparent with some slight blending:
20476 @example
20477 -i INPUT -vf "hwupload, colorkey_opencl=green:0.3:0.1, hwdownload" OUTPUT
20478 @end example
20479 @end itemize
20480
20481 @section deshake_opencl
20482 Feature-point based video stabilization filter.
20483
20484 The filter accepts the following options:
20485
20486 @table @option
20487 @item tripod
20488 Simulates a tripod by preventing any camera movement whatsoever from the original frame. Defaults to @code{0}.
20489
20490 @item debug
20491 Whether or not additional debug info should be displayed, both in the processed output and in the console.
20492
20493 Note that in order to see console debug output you will also need to pass @code{-v verbose} to ffmpeg.
20494
20495 Viewing point matches in the output video is only supported for RGB input.
20496
20497 Defaults to @code{0}.
20498
20499 @item adaptive_crop
20500 Whether or not to do a tiny bit of cropping at the borders to cut down on the amount of mirrored pixels.
20501
20502 Defaults to @code{1}.
20503
20504 @item refine_features
20505 Whether or not feature points should be refined at a sub-pixel level.
20506
20507 This can be turned off for a slight performance gain at the cost of precision.
20508
20509 Defaults to @code{1}.
20510
20511 @item smooth_strength
20512 The strength of the smoothing applied to the camera path from @code{0.0} to @code{1.0}.
20513
20514 @code{1.0} is the maximum smoothing strength while values less than that result in less smoothing.
20515
20516 @code{0.0} causes the filter to adaptively choose a smoothing strength on a per-frame basis.
20517
20518 Defaults to @code{0.0}.
20519
20520 @item smooth_window_multiplier
20521 Controls the size of the smoothing window (the number of frames buffered to determine motion information from).
20522
20523 The size of the smoothing window is determined by multiplying the framerate of the video by this number.
20524
20525 Acceptable values range from @code{0.1} to @code{10.0}.
20526
20527 Larger values increase the amount of motion data available for determining how to smooth the camera path,
20528 potentially improving smoothness, but also increase latency and memory usage.
20529
20530 Defaults to @code{2.0}.
20531
20532 @end table
20533
20534 @subsection Examples
20535
20536 @itemize
20537 @item
20538 Stabilize a video with a fixed, medium smoothing strength:
20539 @example
20540 -i INPUT -vf "hwupload, deshake_opencl=smooth_strength=0.5, hwdownload" OUTPUT
20541 @end example
20542
20543 @item
20544 Stabilize a video with debugging (both in console and in rendered video):
20545 @example
20546 -i INPUT -filter_complex "[0:v]format=rgba, hwupload, deshake_opencl=debug=1, hwdownload, format=rgba, format=yuv420p" -v verbose OUTPUT
20547 @end example
20548 @end itemize
20549
20550 @section nlmeans_opencl
20551
20552 Non-local Means denoise filter through OpenCL, this filter accepts same options as @ref{nlmeans}.
20553
20554 @section overlay_opencl
20555
20556 Overlay one video on top of another.
20557
20558 It takes two inputs and has one output. The first input is the "main" video on which the second input is overlaid.
20559 This filter requires same memory layout for all the inputs. So, format conversion may be needed.
20560
20561 The filter accepts the following options:
20562
20563 @table @option
20564
20565 @item x
20566 Set the x coordinate of the overlaid video on the main video.
20567 Default value is @code{0}.
20568
20569 @item y
20570 Set the y coordinate of the overlaid video on the main video.
20571 Default value is @code{0}.
20572
20573 @end table
20574
20575 @subsection Examples
20576
20577 @itemize
20578 @item
20579 Overlay an image LOGO at the top-left corner of the INPUT video. Both inputs are yuv420p format.
20580 @example
20581 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuv420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
20582 @end example
20583 @item
20584 The inputs have same memory layout for color channels , the overlay has additional alpha plane, like INPUT is yuv420p, and the LOGO is yuva420p.
20585 @example
20586 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuva420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
20587 @end example
20588
20589 @end itemize
20590
20591 @section prewitt_opencl
20592
20593 Apply the Prewitt operator (@url{https://en.wikipedia.org/wiki/Prewitt_operator}) to input video stream.
20594
20595 The filter accepts the following option:
20596
20597 @table @option
20598 @item planes
20599 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
20600
20601 @item scale
20602 Set value which will be multiplied with filtered result.
20603 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
20604
20605 @item delta
20606 Set value which will be added to filtered result.
20607 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
20608 @end table
20609
20610 @subsection Example
20611
20612 @itemize
20613 @item
20614 Apply the Prewitt operator with scale set to 2 and delta set to 10.
20615 @example
20616 -i INPUT -vf "hwupload, prewitt_opencl=scale=2:delta=10, hwdownload" OUTPUT
20617 @end example
20618 @end itemize
20619
20620 @section roberts_opencl
20621 Apply the Roberts cross operator (@url{https://en.wikipedia.org/wiki/Roberts_cross}) to input video stream.
20622
20623 The filter accepts the following option:
20624
20625 @table @option
20626 @item planes
20627 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
20628
20629 @item scale
20630 Set value which will be multiplied with filtered result.
20631 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
20632
20633 @item delta
20634 Set value which will be added to filtered result.
20635 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
20636 @end table
20637
20638 @subsection Example
20639
20640 @itemize
20641 @item
20642 Apply the Roberts cross operator with scale set to 2 and delta set to 10
20643 @example
20644 -i INPUT -vf "hwupload, roberts_opencl=scale=2:delta=10, hwdownload" OUTPUT
20645 @end example
20646 @end itemize
20647
20648 @section sobel_opencl
20649
20650 Apply the Sobel operator (@url{https://en.wikipedia.org/wiki/Sobel_operator}) to input video stream.
20651
20652 The filter accepts the following option:
20653
20654 @table @option
20655 @item planes
20656 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
20657
20658 @item scale
20659 Set value which will be multiplied with filtered result.
20660 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
20661
20662 @item delta
20663 Set value which will be added to filtered result.
20664 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
20665 @end table
20666
20667 @subsection Example
20668
20669 @itemize
20670 @item
20671 Apply sobel operator with scale set to 2 and delta set to 10
20672 @example
20673 -i INPUT -vf "hwupload, sobel_opencl=scale=2:delta=10, hwdownload" OUTPUT
20674 @end example
20675 @end itemize
20676
20677 @section tonemap_opencl
20678
20679 Perform HDR(PQ/HLG) to SDR conversion with tone-mapping.
20680
20681 It accepts the following parameters:
20682
20683 @table @option
20684 @item tonemap
20685 Specify the tone-mapping operator to be used. Same as tonemap option in @ref{tonemap}.
20686
20687 @item param
20688 Tune the tone mapping algorithm. same as param option in @ref{tonemap}.
20689
20690 @item desat
20691 Apply desaturation for highlights that exceed this level of brightness. The
20692 higher the parameter, the more color information will be preserved. This
20693 setting helps prevent unnaturally blown-out colors for super-highlights, by
20694 (smoothly) turning into white instead. This makes images feel more natural,
20695 at the cost of reducing information about out-of-range colors.
20696
20697 The default value is 0.5, and the algorithm here is a little different from
20698 the cpu version tonemap currently. A setting of 0.0 disables this option.
20699
20700 @item threshold
20701 The tonemapping algorithm parameters is fine-tuned per each scene. And a threshold
20702 is used to detect whether the scene has changed or not. If the distance between
20703 the current frame average brightness and the current running average exceeds
20704 a threshold value, we would re-calculate scene average and peak brightness.
20705 The default value is 0.2.
20706
20707 @item format
20708 Specify the output pixel format.
20709
20710 Currently supported formats are:
20711 @table @var
20712 @item p010
20713 @item nv12
20714 @end table
20715
20716 @item range, r
20717 Set the output color range.
20718
20719 Possible values are:
20720 @table @var
20721 @item tv/mpeg
20722 @item pc/jpeg
20723 @end table
20724
20725 Default is same as input.
20726
20727 @item primaries, p
20728 Set the output color primaries.
20729
20730 Possible values are:
20731 @table @var
20732 @item bt709
20733 @item bt2020
20734 @end table
20735
20736 Default is same as input.
20737
20738 @item transfer, t
20739 Set the output transfer characteristics.
20740
20741 Possible values are:
20742 @table @var
20743 @item bt709
20744 @item bt2020
20745 @end table
20746
20747 Default is bt709.
20748
20749 @item matrix, m
20750 Set the output colorspace matrix.
20751
20752 Possible value are:
20753 @table @var
20754 @item bt709
20755 @item bt2020
20756 @end table
20757
20758 Default is same as input.
20759
20760 @end table
20761
20762 @subsection Example
20763
20764 @itemize
20765 @item
20766 Convert HDR(PQ/HLG) video to bt2020-transfer-characteristic p010 format using linear operator.
20767 @example
20768 -i INPUT -vf "format=p010,hwupload,tonemap_opencl=t=bt2020:tonemap=linear:format=p010,hwdownload,format=p010" OUTPUT
20769 @end example
20770 @end itemize
20771
20772 @section unsharp_opencl
20773
20774 Sharpen or blur the input video.
20775
20776 It accepts the following parameters:
20777
20778 @table @option
20779 @item luma_msize_x, lx
20780 Set the luma matrix horizontal size.
20781 Range is @code{[1, 23]} and default value is @code{5}.
20782
20783 @item luma_msize_y, ly
20784 Set the luma matrix vertical size.
20785 Range is @code{[1, 23]} and default value is @code{5}.
20786
20787 @item luma_amount, la
20788 Set the luma effect strength.
20789 Range is @code{[-10, 10]} and default value is @code{1.0}.
20790
20791 Negative values will blur the input video, while positive values will
20792 sharpen it, a value of zero will disable the effect.
20793
20794 @item chroma_msize_x, cx
20795 Set the chroma matrix horizontal size.
20796 Range is @code{[1, 23]} and default value is @code{5}.
20797
20798 @item chroma_msize_y, cy
20799 Set the chroma matrix vertical size.
20800 Range is @code{[1, 23]} and default value is @code{5}.
20801
20802 @item chroma_amount, ca
20803 Set the chroma effect strength.
20804 Range is @code{[-10, 10]} and default value is @code{0.0}.
20805
20806 Negative values will blur the input video, while positive values will
20807 sharpen it, a value of zero will disable the effect.
20808
20809 @end table
20810
20811 All parameters are optional and default to the equivalent of the
20812 string '5:5:1.0:5:5:0.0'.
20813
20814 @subsection Examples
20815
20816 @itemize
20817 @item
20818 Apply strong luma sharpen effect:
20819 @example
20820 -i INPUT -vf "hwupload, unsharp_opencl=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5, hwdownload" OUTPUT
20821 @end example
20822
20823 @item
20824 Apply a strong blur of both luma and chroma parameters:
20825 @example
20826 -i INPUT -vf "hwupload, unsharp_opencl=7:7:-2:7:7:-2, hwdownload" OUTPUT
20827 @end example
20828 @end itemize
20829
20830 @c man end OPENCL VIDEO FILTERS
20831
20832 @chapter Video Sources
20833 @c man begin VIDEO SOURCES
20834
20835 Below is a description of the currently available video sources.
20836
20837 @section buffer
20838
20839 Buffer video frames, and make them available to the filter chain.
20840
20841 This source is mainly intended for a programmatic use, in particular
20842 through the interface defined in @file{libavfilter/vsrc_buffer.h}.
20843
20844 It accepts the following parameters:
20845
20846 @table @option
20847
20848 @item video_size
20849 Specify the size (width and height) of the buffered video frames. For the
20850 syntax of this option, check the
20851 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20852
20853 @item width
20854 The input video width.
20855
20856 @item height
20857 The input video height.
20858
20859 @item pix_fmt
20860 A string representing the pixel format of the buffered video frames.
20861 It may be a number corresponding to a pixel format, or a pixel format
20862 name.
20863
20864 @item time_base
20865 Specify the timebase assumed by the timestamps of the buffered frames.
20866
20867 @item frame_rate
20868 Specify the frame rate expected for the video stream.
20869
20870 @item pixel_aspect, sar
20871 The sample (pixel) aspect ratio of the input video.
20872
20873 @item sws_param
20874 Specify the optional parameters to be used for the scale filter which
20875 is automatically inserted when an input change is detected in the
20876 input size or format.
20877
20878 @item hw_frames_ctx
20879 When using a hardware pixel format, this should be a reference to an
20880 AVHWFramesContext describing input frames.
20881 @end table
20882
20883 For example:
20884 @example
20885 buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
20886 @end example
20887
20888 will instruct the source to accept video frames with size 320x240 and
20889 with format "yuv410p", assuming 1/24 as the timestamps timebase and
20890 square pixels (1:1 sample aspect ratio).
20891 Since the pixel format with name "yuv410p" corresponds to the number 6
20892 (check the enum AVPixelFormat definition in @file{libavutil/pixfmt.h}),
20893 this example corresponds to:
20894 @example
20895 buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
20896 @end example
20897
20898 Alternatively, the options can be specified as a flat string, but this
20899 syntax is deprecated:
20900
20901 @var{width}:@var{height}:@var{pix_fmt}:@var{time_base.num}:@var{time_base.den}:@var{pixel_aspect.num}:@var{pixel_aspect.den}[:@var{sws_param}]
20902
20903 @section cellauto
20904
20905 Create a pattern generated by an elementary cellular automaton.
20906
20907 The initial state of the cellular automaton can be defined through the
20908 @option{filename} and @option{pattern} options. If such options are
20909 not specified an initial state is created randomly.
20910
20911 At each new frame a new row in the video is filled with the result of
20912 the cellular automaton next generation. The behavior when the whole
20913 frame is filled is defined by the @option{scroll} option.
20914
20915 This source accepts the following options:
20916
20917 @table @option
20918 @item filename, f
20919 Read the initial cellular automaton state, i.e. the starting row, from
20920 the specified file.
20921 In the file, each non-whitespace character is considered an alive
20922 cell, a newline will terminate the row, and further characters in the
20923 file will be ignored.
20924
20925 @item pattern, p
20926 Read the initial cellular automaton state, i.e. the starting row, from
20927 the specified string.
20928
20929 Each non-whitespace character in the string is considered an alive
20930 cell, a newline will terminate the row, and further characters in the
20931 string will be ignored.
20932
20933 @item rate, r
20934 Set the video rate, that is the number of frames generated per second.
20935 Default is 25.
20936
20937 @item random_fill_ratio, ratio
20938 Set the random fill ratio for the initial cellular automaton row. It
20939 is a floating point number value ranging from 0 to 1, defaults to
20940 1/PHI.
20941
20942 This option is ignored when a file or a pattern is specified.
20943
20944 @item random_seed, seed
20945 Set the seed for filling randomly the initial row, must be an integer
20946 included between 0 and UINT32_MAX. If not specified, or if explicitly
20947 set to -1, the filter will try to use a good random seed on a best
20948 effort basis.
20949
20950 @item rule
20951 Set the cellular automaton rule, it is a number ranging from 0 to 255.
20952 Default value is 110.
20953
20954 @item size, s
20955 Set the size of the output video. For the syntax of this option, check the
20956 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20957
20958 If @option{filename} or @option{pattern} is specified, the size is set
20959 by default to the width of the specified initial state row, and the
20960 height is set to @var{width} * PHI.
20961
20962 If @option{size} is set, it must contain the width of the specified
20963 pattern string, and the specified pattern will be centered in the
20964 larger row.
20965
20966 If a filename or a pattern string is not specified, the size value
20967 defaults to "320x518" (used for a randomly generated initial state).
20968
20969 @item scroll
20970 If set to 1, scroll the output upward when all the rows in the output
20971 have been already filled. If set to 0, the new generated row will be
20972 written over the top row just after the bottom row is filled.
20973 Defaults to 1.
20974
20975 @item start_full, full
20976 If set to 1, completely fill the output with generated rows before
20977 outputting the first frame.
20978 This is the default behavior, for disabling set the value to 0.
20979
20980 @item stitch
20981 If set to 1, stitch the left and right row edges together.
20982 This is the default behavior, for disabling set the value to 0.
20983 @end table
20984
20985 @subsection Examples
20986
20987 @itemize
20988 @item
20989 Read the initial state from @file{pattern}, and specify an output of
20990 size 200x400.
20991 @example
20992 cellauto=f=pattern:s=200x400
20993 @end example
20994
20995 @item
20996 Generate a random initial row with a width of 200 cells, with a fill
20997 ratio of 2/3:
20998 @example
20999 cellauto=ratio=2/3:s=200x200
21000 @end example
21001
21002 @item
21003 Create a pattern generated by rule 18 starting by a single alive cell
21004 centered on an initial row with width 100:
21005 @example
21006 cellauto=p=@@:s=100x400:full=0:rule=18
21007 @end example
21008
21009 @item
21010 Specify a more elaborated initial pattern:
21011 @example
21012 cellauto=p='@@@@ @@ @@@@':s=100x400:full=0:rule=18
21013 @end example
21014
21015 @end itemize
21016
21017 @anchor{coreimagesrc}
21018 @section coreimagesrc
21019 Video source generated on GPU using Apple's CoreImage API on OSX.
21020
21021 This video source is a specialized version of the @ref{coreimage} video filter.
21022 Use a core image generator at the beginning of the applied filterchain to
21023 generate the content.
21024
21025 The coreimagesrc video source accepts the following options:
21026 @table @option
21027 @item list_generators
21028 List all available generators along with all their respective options as well as
21029 possible minimum and maximum values along with the default values.
21030 @example
21031 list_generators=true
21032 @end example
21033
21034 @item size, s
21035 Specify the size of the sourced video. For the syntax of this option, check the
21036 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21037 The default value is @code{320x240}.
21038
21039 @item rate, r
21040 Specify the frame rate of the sourced video, as the number of frames
21041 generated per second. It has to be a string in the format
21042 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
21043 number or a valid video frame rate abbreviation. The default value is
21044 "25".
21045
21046 @item sar
21047 Set the sample aspect ratio of the sourced video.
21048
21049 @item duration, d
21050 Set the duration of the sourced video. See
21051 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
21052 for the accepted syntax.
21053
21054 If not specified, or the expressed duration is negative, the video is
21055 supposed to be generated forever.
21056 @end table
21057
21058 Additionally, all options of the @ref{coreimage} video filter are accepted.
21059 A complete filterchain can be used for further processing of the
21060 generated input without CPU-HOST transfer. See @ref{coreimage} documentation
21061 and examples for details.
21062
21063 @subsection Examples
21064
21065 @itemize
21066
21067 @item
21068 Use CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
21069 given as complete and escaped command-line for Apple's standard bash shell:
21070 @example
21071 ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
21072 @end example
21073 This example is equivalent to the QRCode example of @ref{coreimage} without the
21074 need for a nullsrc video source.
21075 @end itemize
21076
21077
21078 @section mandelbrot
21079
21080 Generate a Mandelbrot set fractal, and progressively zoom towards the
21081 point specified with @var{start_x} and @var{start_y}.
21082
21083 This source accepts the following options:
21084
21085 @table @option
21086
21087 @item end_pts
21088 Set the terminal pts value. Default value is 400.
21089
21090 @item end_scale
21091 Set the terminal scale value.
21092 Must be a floating point value. Default value is 0.3.
21093
21094 @item inner
21095 Set the inner coloring mode, that is the algorithm used to draw the
21096 Mandelbrot fractal internal region.
21097
21098 It shall assume one of the following values:
21099 @table @option
21100 @item black
21101 Set black mode.
21102 @item convergence
21103 Show time until convergence.
21104 @item mincol
21105 Set color based on point closest to the origin of the iterations.
21106 @item period
21107 Set period mode.
21108 @end table
21109
21110 Default value is @var{mincol}.
21111
21112 @item bailout
21113 Set the bailout value. Default value is 10.0.
21114
21115 @item maxiter
21116 Set the maximum of iterations performed by the rendering
21117 algorithm. Default value is 7189.
21118
21119 @item outer
21120 Set outer coloring mode.
21121 It shall assume one of following values:
21122 @table @option
21123 @item iteration_count
21124 Set iteration count mode.
21125 @item normalized_iteration_count
21126 set normalized iteration count mode.
21127 @end table
21128 Default value is @var{normalized_iteration_count}.
21129
21130 @item rate, r
21131 Set frame rate, expressed as number of frames per second. Default
21132 value is "25".
21133
21134 @item size, s
21135 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
21136 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
21137
21138 @item start_scale
21139 Set the initial scale value. Default value is 3.0.
21140
21141 @item start_x
21142 Set the initial x position. Must be a floating point value between
21143 -100 and 100. Default value is -0.743643887037158704752191506114774.
21144
21145 @item start_y
21146 Set the initial y position. Must be a floating point value between
21147 -100 and 100. Default value is -0.131825904205311970493132056385139.
21148 @end table
21149
21150 @section mptestsrc
21151
21152 Generate various test patterns, as generated by the MPlayer test filter.
21153
21154 The size of the generated video is fixed, and is 256x256.
21155 This source is useful in particular for testing encoding features.
21156
21157 This source accepts the following options:
21158
21159 @table @option
21160
21161 @item rate, r
21162 Specify the frame rate of the sourced video, as the number of frames
21163 generated per second. It has to be a string in the format
21164 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
21165 number or a valid video frame rate abbreviation. The default value is
21166 "25".
21167
21168 @item duration, d
21169 Set the duration of the sourced video. See
21170 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
21171 for the accepted syntax.
21172
21173 If not specified, or the expressed duration is negative, the video is
21174 supposed to be generated forever.
21175
21176 @item test, t
21177
21178 Set the number or the name of the test to perform. Supported tests are:
21179 @table @option
21180 @item dc_luma
21181 @item dc_chroma
21182 @item freq_luma
21183 @item freq_chroma
21184 @item amp_luma
21185 @item amp_chroma
21186 @item cbp
21187 @item mv
21188 @item ring1
21189 @item ring2
21190 @item all
21191
21192 @item max_frames, m
21193 Set the maximum number of frames generated for each test, default value is 30.
21194
21195 @end table
21196
21197 Default value is "all", which will cycle through the list of all tests.
21198 @end table
21199
21200 Some examples:
21201 @example
21202 mptestsrc=t=dc_luma
21203 @end example
21204
21205 will generate a "dc_luma" test pattern.
21206
21207 @section frei0r_src
21208
21209 Provide a frei0r source.
21210
21211 To enable compilation of this filter you need to install the frei0r
21212 header and configure FFmpeg with @code{--enable-frei0r}.
21213
21214 This source accepts the following parameters:
21215
21216 @table @option
21217
21218 @item size
21219 The size of the video to generate. For the syntax of this option, check the
21220 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21221
21222 @item framerate
21223 The framerate of the generated video. It may be a string of the form
21224 @var{num}/@var{den} or a frame rate abbreviation.
21225
21226 @item filter_name
21227 The name to the frei0r source to load. For more information regarding frei0r and
21228 how to set the parameters, read the @ref{frei0r} section in the video filters
21229 documentation.
21230
21231 @item filter_params
21232 A '|'-separated list of parameters to pass to the frei0r source.
21233
21234 @end table
21235
21236 For example, to generate a frei0r partik0l source with size 200x200
21237 and frame rate 10 which is overlaid on the overlay filter main input:
21238 @example
21239 frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
21240 @end example
21241
21242 @section life
21243
21244 Generate a life pattern.
21245
21246 This source is based on a generalization of John Conway's life game.
21247
21248 The sourced input represents a life grid, each pixel represents a cell
21249 which can be in one of two possible states, alive or dead. Every cell
21250 interacts with its eight neighbours, which are the cells that are
21251 horizontally, vertically, or diagonally adjacent.
21252
21253 At each interaction the grid evolves according to the adopted rule,
21254 which specifies the number of neighbor alive cells which will make a
21255 cell stay alive or born. The @option{rule} option allows one to specify
21256 the rule to adopt.
21257
21258 This source accepts the following options:
21259
21260 @table @option
21261 @item filename, f
21262 Set the file from which to read the initial grid state. In the file,
21263 each non-whitespace character is considered an alive cell, and newline
21264 is used to delimit the end of each row.
21265
21266 If this option is not specified, the initial grid is generated
21267 randomly.
21268
21269 @item rate, r
21270 Set the video rate, that is the number of frames generated per second.
21271 Default is 25.
21272
21273 @item random_fill_ratio, ratio
21274 Set the random fill ratio for the initial random grid. It is a
21275 floating point number value ranging from 0 to 1, defaults to 1/PHI.
21276 It is ignored when a file is specified.
21277
21278 @item random_seed, seed
21279 Set the seed for filling the initial random grid, must be an integer
21280 included between 0 and UINT32_MAX. If not specified, or if explicitly
21281 set to -1, the filter will try to use a good random seed on a best
21282 effort basis.
21283
21284 @item rule
21285 Set the life rule.
21286
21287 A rule can be specified with a code of the kind "S@var{NS}/B@var{NB}",
21288 where @var{NS} and @var{NB} are sequences of numbers in the range 0-8,
21289 @var{NS} specifies the number of alive neighbor cells which make a
21290 live cell stay alive, and @var{NB} the number of alive neighbor cells
21291 which make a dead cell to become alive (i.e. to "born").
21292 "s" and "b" can be used in place of "S" and "B", respectively.
21293
21294 Alternatively a rule can be specified by an 18-bits integer. The 9
21295 high order bits are used to encode the next cell state if it is alive
21296 for each number of neighbor alive cells, the low order bits specify
21297 the rule for "borning" new cells. Higher order bits encode for an
21298 higher number of neighbor cells.
21299 For example the number 6153 = @code{(12<<9)+9} specifies a stay alive
21300 rule of 12 and a born rule of 9, which corresponds to "S23/B03".
21301
21302 Default value is "S23/B3", which is the original Conway's game of life
21303 rule, and will keep a cell alive if it has 2 or 3 neighbor alive
21304 cells, and will born a new cell if there are three alive cells around
21305 a dead cell.
21306
21307 @item size, s
21308 Set the size of the output video. For the syntax of this option, check the
21309 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21310
21311 If @option{filename} is specified, the size is set by default to the
21312 same size of the input file. If @option{size} is set, it must contain
21313 the size specified in the input file, and the initial grid defined in
21314 that file is centered in the larger resulting area.
21315
21316 If a filename is not specified, the size value defaults to "320x240"
21317 (used for a randomly generated initial grid).
21318
21319 @item stitch
21320 If set to 1, stitch the left and right grid edges together, and the
21321 top and bottom edges also. Defaults to 1.
21322
21323 @item mold
21324 Set cell mold speed. If set, a dead cell will go from @option{death_color} to
21325 @option{mold_color} with a step of @option{mold}. @option{mold} can have a
21326 value from 0 to 255.
21327
21328 @item life_color
21329 Set the color of living (or new born) cells.
21330
21331 @item death_color
21332 Set the color of dead cells. If @option{mold} is set, this is the first color
21333 used to represent a dead cell.
21334
21335 @item mold_color
21336 Set mold color, for definitely dead and moldy cells.
21337
21338 For the syntax of these 3 color options, check the @ref{color syntax,,"Color" section in the
21339 ffmpeg-utils manual,ffmpeg-utils}.
21340 @end table
21341
21342 @subsection Examples
21343
21344 @itemize
21345 @item
21346 Read a grid from @file{pattern}, and center it on a grid of size
21347 300x300 pixels:
21348 @example
21349 life=f=pattern:s=300x300
21350 @end example
21351
21352 @item
21353 Generate a random grid of size 200x200, with a fill ratio of 2/3:
21354 @example
21355 life=ratio=2/3:s=200x200
21356 @end example
21357
21358 @item
21359 Specify a custom rule for evolving a randomly generated grid:
21360 @example
21361 life=rule=S14/B34
21362 @end example
21363
21364 @item
21365 Full example with slow death effect (mold) using @command{ffplay}:
21366 @example
21367 ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
21368 @end example
21369 @end itemize
21370
21371 @anchor{allrgb}
21372 @anchor{allyuv}
21373 @anchor{color}
21374 @anchor{haldclutsrc}
21375 @anchor{nullsrc}
21376 @anchor{pal75bars}
21377 @anchor{pal100bars}
21378 @anchor{rgbtestsrc}
21379 @anchor{smptebars}
21380 @anchor{smptehdbars}
21381 @anchor{testsrc}
21382 @anchor{testsrc2}
21383 @anchor{yuvtestsrc}
21384 @section allrgb, allyuv, color, haldclutsrc, nullsrc, pal75bars, pal100bars, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc
21385
21386 The @code{allrgb} source returns frames of size 4096x4096 of all rgb colors.
21387
21388 The @code{allyuv} source returns frames of size 4096x4096 of all yuv colors.
21389
21390 The @code{color} source provides an uniformly colored input.
21391
21392 The @code{haldclutsrc} source provides an identity Hald CLUT. See also
21393 @ref{haldclut} filter.
21394
21395 The @code{nullsrc} source returns unprocessed video frames. It is
21396 mainly useful to be employed in analysis / debugging tools, or as the
21397 source for filters which ignore the input data.
21398
21399 The @code{pal75bars} source generates a color bars pattern, based on
21400 EBU PAL recommendations with 75% color levels.
21401
21402 The @code{pal100bars} source generates a color bars pattern, based on
21403 EBU PAL recommendations with 100% color levels.
21404
21405 The @code{rgbtestsrc} source generates an RGB test pattern useful for
21406 detecting RGB vs BGR issues. You should see a red, green and blue
21407 stripe from top to bottom.
21408
21409 The @code{smptebars} source generates a color bars pattern, based on
21410 the SMPTE Engineering Guideline EG 1-1990.
21411
21412 The @code{smptehdbars} source generates a color bars pattern, based on
21413 the SMPTE RP 219-2002.
21414
21415 The @code{testsrc} source generates a test video pattern, showing a
21416 color pattern, a scrolling gradient and a timestamp. This is mainly
21417 intended for testing purposes.
21418
21419 The @code{testsrc2} source is similar to testsrc, but supports more
21420 pixel formats instead of just @code{rgb24}. This allows using it as an
21421 input for other tests without requiring a format conversion.
21422
21423 The @code{yuvtestsrc} source generates an YUV test pattern. You should
21424 see a y, cb and cr stripe from top to bottom.
21425
21426 The sources accept the following parameters:
21427
21428 @table @option
21429
21430 @item level
21431 Specify the level of the Hald CLUT, only available in the @code{haldclutsrc}
21432 source. A level of @code{N} generates a picture of @code{N*N*N} by @code{N*N*N}
21433 pixels to be used as identity matrix for 3D lookup tables. Each component is
21434 coded on a @code{1/(N*N)} scale.
21435
21436 @item color, c
21437 Specify the color of the source, only available in the @code{color}
21438 source. For the syntax of this option, check the
21439 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
21440
21441 @item size, s
21442 Specify the size of the sourced video. For the syntax of this option, check the
21443 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21444 The default value is @code{320x240}.
21445
21446 This option is not available with the @code{allrgb}, @code{allyuv}, and
21447 @code{haldclutsrc} filters.
21448
21449 @item rate, r
21450 Specify the frame rate of the sourced video, as the number of frames
21451 generated per second. It has to be a string in the format
21452 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
21453 number or a valid video frame rate abbreviation. The default value is
21454 "25".
21455
21456 @item duration, d
21457 Set the duration of the sourced video. See
21458 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
21459 for the accepted syntax.
21460
21461 If not specified, or the expressed duration is negative, the video is
21462 supposed to be generated forever.
21463
21464 @item sar
21465 Set the sample aspect ratio of the sourced video.
21466
21467 @item alpha
21468 Specify the alpha (opacity) of the background, only available in the
21469 @code{testsrc2} source. The value must be between 0 (fully transparent) and
21470 255 (fully opaque, the default).
21471
21472 @item decimals, n
21473 Set the number of decimals to show in the timestamp, only available in the
21474 @code{testsrc} source.
21475
21476 The displayed timestamp value will correspond to the original
21477 timestamp value multiplied by the power of 10 of the specified
21478 value. Default value is 0.
21479 @end table
21480
21481 @subsection Examples
21482
21483 @itemize
21484 @item
21485 Generate a video with a duration of 5.3 seconds, with size
21486 176x144 and a frame rate of 10 frames per second:
21487 @example
21488 testsrc=duration=5.3:size=qcif:rate=10
21489 @end example
21490
21491 @item
21492 The following graph description will generate a red source
21493 with an opacity of 0.2, with size "qcif" and a frame rate of 10
21494 frames per second:
21495 @example
21496 color=c=red@@0.2:s=qcif:r=10
21497 @end example
21498
21499 @item
21500 If the input content is to be ignored, @code{nullsrc} can be used. The
21501 following command generates noise in the luminance plane by employing
21502 the @code{geq} filter:
21503 @example
21504 nullsrc=s=256x256, geq=random(1)*255:128:128
21505 @end example
21506 @end itemize
21507
21508 @subsection Commands
21509
21510 The @code{color} source supports the following commands:
21511
21512 @table @option
21513 @item c, color
21514 Set the color of the created image. Accepts the same syntax of the
21515 corresponding @option{color} option.
21516 @end table
21517
21518 @section openclsrc
21519
21520 Generate video using an OpenCL program.
21521
21522 @table @option
21523
21524 @item source
21525 OpenCL program source file.
21526
21527 @item kernel
21528 Kernel name in program.
21529
21530 @item size, s
21531 Size of frames to generate.  This must be set.
21532
21533 @item format
21534 Pixel format to use for the generated frames.  This must be set.
21535
21536 @item rate, r
21537 Number of frames generated every second.  Default value is '25'.
21538
21539 @end table
21540
21541 For details of how the program loading works, see the @ref{program_opencl}
21542 filter.
21543
21544 Example programs:
21545
21546 @itemize
21547 @item
21548 Generate a colour ramp by setting pixel values from the position of the pixel
21549 in the output image.  (Note that this will work with all pixel formats, but
21550 the generated output will not be the same.)
21551 @verbatim
21552 __kernel void ramp(__write_only image2d_t dst,
21553                    unsigned int index)
21554 {
21555     int2 loc = (int2)(get_global_id(0), get_global_id(1));
21556
21557     float4 val;
21558     val.xy = val.zw = convert_float2(loc) / convert_float2(get_image_dim(dst));
21559
21560     write_imagef(dst, loc, val);
21561 }
21562 @end verbatim
21563
21564 @item
21565 Generate a Sierpinski carpet pattern, panning by a single pixel each frame.
21566 @verbatim
21567 __kernel void sierpinski_carpet(__write_only image2d_t dst,
21568                                 unsigned int index)
21569 {
21570     int2 loc = (int2)(get_global_id(0), get_global_id(1));
21571
21572     float4 value = 0.0f;
21573     int x = loc.x + index;
21574     int y = loc.y + index;
21575     while (x > 0 || y > 0) {
21576         if (x % 3 == 1 && y % 3 == 1) {
21577             value = 1.0f;
21578             break;
21579         }
21580         x /= 3;
21581         y /= 3;
21582     }
21583
21584     write_imagef(dst, loc, value);
21585 }
21586 @end verbatim
21587
21588 @end itemize
21589
21590 @section sierpinski
21591
21592 Generate a Sierpinski carpet/triangle fractal, and randomly pan around.
21593
21594 This source accepts the following options:
21595
21596 @table @option
21597 @item size, s
21598 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
21599 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
21600
21601 @item rate, r
21602 Set frame rate, expressed as number of frames per second. Default
21603 value is "25".
21604
21605 @item seed
21606 Set seed which is used for random panning.
21607
21608 @item jump
21609 Set max jump for single pan destination. Allowed range is from 1 to 10000.
21610
21611 @item type
21612 Set fractal type, can be default @code{carpet} or @code{triangle}.
21613 @end table
21614
21615 @c man end VIDEO SOURCES
21616
21617 @chapter Video Sinks
21618 @c man begin VIDEO SINKS
21619
21620 Below is a description of the currently available video sinks.
21621
21622 @section buffersink
21623
21624 Buffer video frames, and make them available to the end of the filter
21625 graph.
21626
21627 This sink is mainly intended for programmatic use, in particular
21628 through the interface defined in @file{libavfilter/buffersink.h}
21629 or the options system.
21630
21631 It accepts a pointer to an AVBufferSinkContext structure, which
21632 defines the incoming buffers' formats, to be passed as the opaque
21633 parameter to @code{avfilter_init_filter} for initialization.
21634
21635 @section nullsink
21636
21637 Null video sink: do absolutely nothing with the input video. It is
21638 mainly useful as a template and for use in analysis / debugging
21639 tools.
21640
21641 @c man end VIDEO SINKS
21642
21643 @chapter Multimedia Filters
21644 @c man begin MULTIMEDIA FILTERS
21645
21646 Below is a description of the currently available multimedia filters.
21647
21648 @section abitscope
21649
21650 Convert input audio to a video output, displaying the audio bit scope.
21651
21652 The filter accepts the following options:
21653
21654 @table @option
21655 @item rate, r
21656 Set frame rate, expressed as number of frames per second. Default
21657 value is "25".
21658
21659 @item size, s
21660 Specify the video size for the output. For the syntax of this option, check the
21661 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21662 Default value is @code{1024x256}.
21663
21664 @item colors
21665 Specify list of colors separated by space or by '|' which will be used to
21666 draw channels. Unrecognized or missing colors will be replaced
21667 by white color.
21668 @end table
21669
21670 @section adrawgraph
21671 Draw a graph using input audio metadata.
21672
21673 See @ref{drawgraph}
21674
21675 @section agraphmonitor
21676
21677 See @ref{graphmonitor}.
21678
21679 @section ahistogram
21680
21681 Convert input audio to a video output, displaying the volume histogram.
21682
21683 The filter accepts the following options:
21684
21685 @table @option
21686 @item dmode
21687 Specify how histogram is calculated.
21688
21689 It accepts the following values:
21690 @table @samp
21691 @item single
21692 Use single histogram for all channels.
21693 @item separate
21694 Use separate histogram for each channel.
21695 @end table
21696 Default is @code{single}.
21697
21698 @item rate, r
21699 Set frame rate, expressed as number of frames per second. Default
21700 value is "25".
21701
21702 @item size, s
21703 Specify the video size for the output. For the syntax of this option, check the
21704 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21705 Default value is @code{hd720}.
21706
21707 @item scale
21708 Set display scale.
21709
21710 It accepts the following values:
21711 @table @samp
21712 @item log
21713 logarithmic
21714 @item sqrt
21715 square root
21716 @item cbrt
21717 cubic root
21718 @item lin
21719 linear
21720 @item rlog
21721 reverse logarithmic
21722 @end table
21723 Default is @code{log}.
21724
21725 @item ascale
21726 Set amplitude scale.
21727
21728 It accepts the following values:
21729 @table @samp
21730 @item log
21731 logarithmic
21732 @item lin
21733 linear
21734 @end table
21735 Default is @code{log}.
21736
21737 @item acount
21738 Set how much frames to accumulate in histogram.
21739 Default is 1. Setting this to -1 accumulates all frames.
21740
21741 @item rheight
21742 Set histogram ratio of window height.
21743
21744 @item slide
21745 Set sonogram sliding.
21746
21747 It accepts the following values:
21748 @table @samp
21749 @item replace
21750 replace old rows with new ones.
21751 @item scroll
21752 scroll from top to bottom.
21753 @end table
21754 Default is @code{replace}.
21755 @end table
21756
21757 @section aphasemeter
21758
21759 Measures phase of input audio, which is exported as metadata @code{lavfi.aphasemeter.phase},
21760 representing mean phase of current audio frame. A video output can also be produced and is
21761 enabled by default. The audio is passed through as first output.
21762
21763 Audio will be rematrixed to stereo if it has a different channel layout. Phase value is in
21764 range @code{[-1, 1]} where @code{-1} means left and right channels are completely out of phase
21765 and @code{1} means channels are in phase.
21766
21767 The filter accepts the following options, all related to its video output:
21768
21769 @table @option
21770 @item rate, r
21771 Set the output frame rate. Default value is @code{25}.
21772
21773 @item size, s
21774 Set the video size for the output. For the syntax of this option, check the
21775 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21776 Default value is @code{800x400}.
21777
21778 @item rc
21779 @item gc
21780 @item bc
21781 Specify the red, green, blue contrast. Default values are @code{2},
21782 @code{7} and @code{1}.
21783 Allowed range is @code{[0, 255]}.
21784
21785 @item mpc
21786 Set color which will be used for drawing median phase. If color is
21787 @code{none} which is default, no median phase value will be drawn.
21788
21789 @item video
21790 Enable video output. Default is enabled.
21791 @end table
21792
21793 @section avectorscope
21794
21795 Convert input audio to a video output, representing the audio vector
21796 scope.
21797
21798 The filter is used to measure the difference between channels of stereo
21799 audio stream. A monaural signal, consisting of identical left and right
21800 signal, results in straight vertical line. Any stereo separation is visible
21801 as a deviation from this line, creating a Lissajous figure.
21802 If the straight (or deviation from it) but horizontal line appears this
21803 indicates that the left and right channels are out of phase.
21804
21805 The filter accepts the following options:
21806
21807 @table @option
21808 @item mode, m
21809 Set the vectorscope mode.
21810
21811 Available values are:
21812 @table @samp
21813 @item lissajous
21814 Lissajous rotated by 45 degrees.
21815
21816 @item lissajous_xy
21817 Same as above but not rotated.
21818
21819 @item polar
21820 Shape resembling half of circle.
21821 @end table
21822
21823 Default value is @samp{lissajous}.
21824
21825 @item size, s
21826 Set the video size for the output. For the syntax of this option, check the
21827 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21828 Default value is @code{400x400}.
21829
21830 @item rate, r
21831 Set the output frame rate. Default value is @code{25}.
21832
21833 @item rc
21834 @item gc
21835 @item bc
21836 @item ac
21837 Specify the red, green, blue and alpha contrast. Default values are @code{40},
21838 @code{160}, @code{80} and @code{255}.
21839 Allowed range is @code{[0, 255]}.
21840
21841 @item rf
21842 @item gf
21843 @item bf
21844 @item af
21845 Specify the red, green, blue and alpha fade. Default values are @code{15},
21846 @code{10}, @code{5} and @code{5}.
21847 Allowed range is @code{[0, 255]}.
21848
21849 @item zoom
21850 Set the zoom factor. Default value is @code{1}. Allowed range is @code{[0, 10]}.
21851 Values lower than @var{1} will auto adjust zoom factor to maximal possible value.
21852
21853 @item draw
21854 Set the vectorscope drawing mode.
21855
21856 Available values are:
21857 @table @samp
21858 @item dot
21859 Draw dot for each sample.
21860
21861 @item line
21862 Draw line between previous and current sample.
21863 @end table
21864
21865 Default value is @samp{dot}.
21866
21867 @item scale
21868 Specify amplitude scale of audio samples.
21869
21870 Available values are:
21871 @table @samp
21872 @item lin
21873 Linear.
21874
21875 @item sqrt
21876 Square root.
21877
21878 @item cbrt
21879 Cubic root.
21880
21881 @item log
21882 Logarithmic.
21883 @end table
21884
21885 @item swap
21886 Swap left channel axis with right channel axis.
21887
21888 @item mirror
21889 Mirror axis.
21890
21891 @table @samp
21892 @item none
21893 No mirror.
21894
21895 @item x
21896 Mirror only x axis.
21897
21898 @item y
21899 Mirror only y axis.
21900
21901 @item xy
21902 Mirror both axis.
21903 @end table
21904
21905 @end table
21906
21907 @subsection Examples
21908
21909 @itemize
21910 @item
21911 Complete example using @command{ffplay}:
21912 @example
21913 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
21914              [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
21915 @end example
21916 @end itemize
21917
21918 @section bench, abench
21919
21920 Benchmark part of a filtergraph.
21921
21922 The filter accepts the following options:
21923
21924 @table @option
21925 @item action
21926 Start or stop a timer.
21927
21928 Available values are:
21929 @table @samp
21930 @item start
21931 Get the current time, set it as frame metadata (using the key
21932 @code{lavfi.bench.start_time}), and forward the frame to the next filter.
21933
21934 @item stop
21935 Get the current time and fetch the @code{lavfi.bench.start_time} metadata from
21936 the input frame metadata to get the time difference. Time difference, average,
21937 maximum and minimum time (respectively @code{t}, @code{avg}, @code{max} and
21938 @code{min}) are then printed. The timestamps are expressed in seconds.
21939 @end table
21940 @end table
21941
21942 @subsection Examples
21943
21944 @itemize
21945 @item
21946 Benchmark @ref{selectivecolor} filter:
21947 @example
21948 bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
21949 @end example
21950 @end itemize
21951
21952 @section concat
21953
21954 Concatenate audio and video streams, joining them together one after the
21955 other.
21956
21957 The filter works on segments of synchronized video and audio streams. All
21958 segments must have the same number of streams of each type, and that will
21959 also be the number of streams at output.
21960
21961 The filter accepts the following options:
21962
21963 @table @option
21964
21965 @item n
21966 Set the number of segments. Default is 2.
21967
21968 @item v
21969 Set the number of output video streams, that is also the number of video
21970 streams in each segment. Default is 1.
21971
21972 @item a
21973 Set the number of output audio streams, that is also the number of audio
21974 streams in each segment. Default is 0.
21975
21976 @item unsafe
21977 Activate unsafe mode: do not fail if segments have a different format.
21978
21979 @end table
21980
21981 The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then
21982 @var{a} audio outputs.
21983
21984 There are @var{n}x(@var{v}+@var{a}) inputs: first the inputs for the first
21985 segment, in the same order as the outputs, then the inputs for the second
21986 segment, etc.
21987
21988 Related streams do not always have exactly the same duration, for various
21989 reasons including codec frame size or sloppy authoring. For that reason,
21990 related synchronized streams (e.g. a video and its audio track) should be
21991 concatenated at once. The concat filter will use the duration of the longest
21992 stream in each segment (except the last one), and if necessary pad shorter
21993 audio streams with silence.
21994
21995 For this filter to work correctly, all segments must start at timestamp 0.
21996
21997 All corresponding streams must have the same parameters in all segments; the
21998 filtering system will automatically select a common pixel format for video
21999 streams, and a common sample format, sample rate and channel layout for
22000 audio streams, but other settings, such as resolution, must be converted
22001 explicitly by the user.
22002
22003 Different frame rates are acceptable but will result in variable frame rate
22004 at output; be sure to configure the output file to handle it.
22005
22006 @subsection Examples
22007
22008 @itemize
22009 @item
22010 Concatenate an opening, an episode and an ending, all in bilingual version
22011 (video in stream 0, audio in streams 1 and 2):
22012 @example
22013 ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
22014   '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
22015    concat=n=3:v=1:a=2 [v] [a1] [a2]' \
22016   -map '[v]' -map '[a1]' -map '[a2]' output.mkv
22017 @end example
22018
22019 @item
22020 Concatenate two parts, handling audio and video separately, using the
22021 (a)movie sources, and adjusting the resolution:
22022 @example
22023 movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
22024 movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
22025 [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
22026 @end example
22027 Note that a desync will happen at the stitch if the audio and video streams
22028 do not have exactly the same duration in the first file.
22029
22030 @end itemize
22031
22032 @subsection Commands
22033
22034 This filter supports the following commands:
22035 @table @option
22036 @item next
22037 Close the current segment and step to the next one
22038 @end table
22039
22040 @anchor{ebur128}
22041 @section ebur128
22042
22043 EBU R128 scanner filter. This filter takes an audio stream and analyzes its loudness
22044 level. By default, it logs a message at a frequency of 10Hz with the
22045 Momentary loudness (identified by @code{M}), Short-term loudness (@code{S}),
22046 Integrated loudness (@code{I}) and Loudness Range (@code{LRA}).
22047
22048 The filter can only analyze streams which have a sampling rate of 48000 Hz and whose
22049 sample format is double-precision floating point. The input stream will be converted to
22050 this specification, if needed. Users may need to insert aformat and/or aresample filters
22051 after this filter to obtain the original parameters.
22052
22053 The filter also has a video output (see the @var{video} option) with a real
22054 time graph to observe the loudness evolution. The graphic contains the logged
22055 message mentioned above, so it is not printed anymore when this option is set,
22056 unless the verbose logging is set. The main graphing area contains the
22057 short-term loudness (3 seconds of analysis), and the gauge on the right is for
22058 the momentary loudness (400 milliseconds), but can optionally be configured
22059 to instead display short-term loudness (see @var{gauge}).
22060
22061 The green area marks a  +/- 1LU target range around the target loudness
22062 (-23LUFS by default, unless modified through @var{target}).
22063
22064 More information about the Loudness Recommendation EBU R128 on
22065 @url{http://tech.ebu.ch/loudness}.
22066
22067 The filter accepts the following options:
22068
22069 @table @option
22070
22071 @item video
22072 Activate the video output. The audio stream is passed unchanged whether this
22073 option is set or no. The video stream will be the first output stream if
22074 activated. Default is @code{0}.
22075
22076 @item size
22077 Set the video size. This option is for video only. For the syntax of this
22078 option, check the
22079 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22080 Default and minimum resolution is @code{640x480}.
22081
22082 @item meter
22083 Set the EBU scale meter. Default is @code{9}. Common values are @code{9} and
22084 @code{18}, respectively for EBU scale meter +9 and EBU scale meter +18. Any
22085 other integer value between this range is allowed.
22086
22087 @item metadata
22088 Set metadata injection. If set to @code{1}, the audio input will be segmented
22089 into 100ms output frames, each of them containing various loudness information
22090 in metadata.  All the metadata keys are prefixed with @code{lavfi.r128.}.
22091
22092 Default is @code{0}.
22093
22094 @item framelog
22095 Force the frame logging level.
22096
22097 Available values are:
22098 @table @samp
22099 @item info
22100 information logging level
22101 @item verbose
22102 verbose logging level
22103 @end table
22104
22105 By default, the logging level is set to @var{info}. If the @option{video} or
22106 the @option{metadata} options are set, it switches to @var{verbose}.
22107
22108 @item peak
22109 Set peak mode(s).
22110
22111 Available modes can be cumulated (the option is a @code{flag} type). Possible
22112 values are:
22113 @table @samp
22114 @item none
22115 Disable any peak mode (default).
22116 @item sample
22117 Enable sample-peak mode.
22118
22119 Simple peak mode looking for the higher sample value. It logs a message
22120 for sample-peak (identified by @code{SPK}).
22121 @item true
22122 Enable true-peak mode.
22123
22124 If enabled, the peak lookup is done on an over-sampled version of the input
22125 stream for better peak accuracy. It logs a message for true-peak.
22126 (identified by @code{TPK}) and true-peak per frame (identified by @code{FTPK}).
22127 This mode requires a build with @code{libswresample}.
22128 @end table
22129
22130 @item dualmono
22131 Treat mono input files as "dual mono". If a mono file is intended for playback
22132 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
22133 If set to @code{true}, this option will compensate for this effect.
22134 Multi-channel input files are not affected by this option.
22135
22136 @item panlaw
22137 Set a specific pan law to be used for the measurement of dual mono files.
22138 This parameter is optional, and has a default value of -3.01dB.
22139
22140 @item target
22141 Set a specific target level (in LUFS) used as relative zero in the visualization.
22142 This parameter is optional and has a default value of -23LUFS as specified
22143 by EBU R128. However, material published online may prefer a level of -16LUFS
22144 (e.g. for use with podcasts or video platforms).
22145
22146 @item gauge
22147 Set the value displayed by the gauge. Valid values are @code{momentary} and s
22148 @code{shortterm}. By default the momentary value will be used, but in certain
22149 scenarios it may be more useful to observe the short term value instead (e.g.
22150 live mixing).
22151
22152 @item scale
22153 Sets the display scale for the loudness. Valid parameters are @code{absolute}
22154 (in LUFS) or @code{relative} (LU) relative to the target. This only affects the
22155 video output, not the summary or continuous log output.
22156 @end table
22157
22158 @subsection Examples
22159
22160 @itemize
22161 @item
22162 Real-time graph using @command{ffplay}, with a EBU scale meter +18:
22163 @example
22164 ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
22165 @end example
22166
22167 @item
22168 Run an analysis with @command{ffmpeg}:
22169 @example
22170 ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
22171 @end example
22172 @end itemize
22173
22174 @section interleave, ainterleave
22175
22176 Temporally interleave frames from several inputs.
22177
22178 @code{interleave} works with video inputs, @code{ainterleave} with audio.
22179
22180 These filters read frames from several inputs and send the oldest
22181 queued frame to the output.
22182
22183 Input streams must have well defined, monotonically increasing frame
22184 timestamp values.
22185
22186 In order to submit one frame to output, these filters need to enqueue
22187 at least one frame for each input, so they cannot work in case one
22188 input is not yet terminated and will not receive incoming frames.
22189
22190 For example consider the case when one input is a @code{select} filter
22191 which always drops input frames. The @code{interleave} filter will keep
22192 reading from that input, but it will never be able to send new frames
22193 to output until the input sends an end-of-stream signal.
22194
22195 Also, depending on inputs synchronization, the filters will drop
22196 frames in case one input receives more frames than the other ones, and
22197 the queue is already filled.
22198
22199 These filters accept the following options:
22200
22201 @table @option
22202 @item nb_inputs, n
22203 Set the number of different inputs, it is 2 by default.
22204 @end table
22205
22206 @subsection Examples
22207
22208 @itemize
22209 @item
22210 Interleave frames belonging to different streams using @command{ffmpeg}:
22211 @example
22212 ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
22213 @end example
22214
22215 @item
22216 Add flickering blur effect:
22217 @example
22218 select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
22219 @end example
22220 @end itemize
22221
22222 @section metadata, ametadata
22223
22224 Manipulate frame metadata.
22225
22226 This filter accepts the following options:
22227
22228 @table @option
22229 @item mode
22230 Set mode of operation of the filter.
22231
22232 Can be one of the following:
22233
22234 @table @samp
22235 @item select
22236 If both @code{value} and @code{key} is set, select frames
22237 which have such metadata. If only @code{key} is set, select
22238 every frame that has such key in metadata.
22239
22240 @item add
22241 Add new metadata @code{key} and @code{value}. If key is already available
22242 do nothing.
22243
22244 @item modify
22245 Modify value of already present key.
22246
22247 @item delete
22248 If @code{value} is set, delete only keys that have such value.
22249 Otherwise, delete key. If @code{key} is not set, delete all metadata values in
22250 the frame.
22251
22252 @item print
22253 Print key and its value if metadata was found. If @code{key} is not set print all
22254 metadata values available in frame.
22255 @end table
22256
22257 @item key
22258 Set key used with all modes. Must be set for all modes except @code{print} and @code{delete}.
22259
22260 @item value
22261 Set metadata value which will be used. This option is mandatory for
22262 @code{modify} and @code{add} mode.
22263
22264 @item function
22265 Which function to use when comparing metadata value and @code{value}.
22266
22267 Can be one of following:
22268
22269 @table @samp
22270 @item same_str
22271 Values are interpreted as strings, returns true if metadata value is same as @code{value}.
22272
22273 @item starts_with
22274 Values are interpreted as strings, returns true if metadata value starts with
22275 the @code{value} option string.
22276
22277 @item less
22278 Values are interpreted as floats, returns true if metadata value is less than @code{value}.
22279
22280 @item equal
22281 Values are interpreted as floats, returns true if @code{value} is equal with metadata value.
22282
22283 @item greater
22284 Values are interpreted as floats, returns true if metadata value is greater than @code{value}.
22285
22286 @item expr
22287 Values are interpreted as floats, returns true if expression from option @code{expr}
22288 evaluates to true.
22289
22290 @item ends_with
22291 Values are interpreted as strings, returns true if metadata value ends with
22292 the @code{value} option string.
22293 @end table
22294
22295 @item expr
22296 Set expression which is used when @code{function} is set to @code{expr}.
22297 The expression is evaluated through the eval API and can contain the following
22298 constants:
22299
22300 @table @option
22301 @item VALUE1
22302 Float representation of @code{value} from metadata key.
22303
22304 @item VALUE2
22305 Float representation of @code{value} as supplied by user in @code{value} option.
22306 @end table
22307
22308 @item file
22309 If specified in @code{print} mode, output is written to the named file. Instead of
22310 plain filename any writable url can be specified. Filename ``-'' is a shorthand
22311 for standard output. If @code{file} option is not set, output is written to the log
22312 with AV_LOG_INFO loglevel.
22313
22314 @end table
22315
22316 @subsection Examples
22317
22318 @itemize
22319 @item
22320 Print all metadata values for frames with key @code{lavfi.signalstats.YDIF} with values
22321 between 0 and 1.
22322 @example
22323 signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
22324 @end example
22325 @item
22326 Print silencedetect output to file @file{metadata.txt}.
22327 @example
22328 silencedetect,ametadata=mode=print:file=metadata.txt
22329 @end example
22330 @item
22331 Direct all metadata to a pipe with file descriptor 4.
22332 @example
22333 metadata=mode=print:file='pipe\:4'
22334 @end example
22335 @end itemize
22336
22337 @section perms, aperms
22338
22339 Set read/write permissions for the output frames.
22340
22341 These filters are mainly aimed at developers to test direct path in the
22342 following filter in the filtergraph.
22343
22344 The filters accept the following options:
22345
22346 @table @option
22347 @item mode
22348 Select the permissions mode.
22349
22350 It accepts the following values:
22351 @table @samp
22352 @item none
22353 Do nothing. This is the default.
22354 @item ro
22355 Set all the output frames read-only.
22356 @item rw
22357 Set all the output frames directly writable.
22358 @item toggle
22359 Make the frame read-only if writable, and writable if read-only.
22360 @item random
22361 Set each output frame read-only or writable randomly.
22362 @end table
22363
22364 @item seed
22365 Set the seed for the @var{random} mode, must be an integer included between
22366 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
22367 @code{-1}, the filter will try to use a good random seed on a best effort
22368 basis.
22369 @end table
22370
22371 Note: in case of auto-inserted filter between the permission filter and the
22372 following one, the permission might not be received as expected in that
22373 following filter. Inserting a @ref{format} or @ref{aformat} filter before the
22374 perms/aperms filter can avoid this problem.
22375
22376 @section realtime, arealtime
22377
22378 Slow down filtering to match real time approximately.
22379
22380 These filters will pause the filtering for a variable amount of time to
22381 match the output rate with the input timestamps.
22382 They are similar to the @option{re} option to @code{ffmpeg}.
22383
22384 They accept the following options:
22385
22386 @table @option
22387 @item limit
22388 Time limit for the pauses. Any pause longer than that will be considered
22389 a timestamp discontinuity and reset the timer. Default is 2 seconds.
22390 @item speed
22391 Speed factor for processing. The value must be a float larger than zero.
22392 Values larger than 1.0 will result in faster than realtime processing,
22393 smaller will slow processing down. The @var{limit} is automatically adapted
22394 accordingly. Default is 1.0.
22395
22396 A processing speed faster than what is possible without these filters cannot
22397 be achieved.
22398 @end table
22399
22400 @anchor{select}
22401 @section select, aselect
22402
22403 Select frames to pass in output.
22404
22405 This filter accepts the following options:
22406
22407 @table @option
22408
22409 @item expr, e
22410 Set expression, which is evaluated for each input frame.
22411
22412 If the expression is evaluated to zero, the frame is discarded.
22413
22414 If the evaluation result is negative or NaN, the frame is sent to the
22415 first output; otherwise it is sent to the output with index
22416 @code{ceil(val)-1}, assuming that the input index starts from 0.
22417
22418 For example a value of @code{1.2} corresponds to the output with index
22419 @code{ceil(1.2)-1 = 2-1 = 1}, that is the second output.
22420
22421 @item outputs, n
22422 Set the number of outputs. The output to which to send the selected
22423 frame is based on the result of the evaluation. Default value is 1.
22424 @end table
22425
22426 The expression can contain the following constants:
22427
22428 @table @option
22429 @item n
22430 The (sequential) number of the filtered frame, starting from 0.
22431
22432 @item selected_n
22433 The (sequential) number of the selected frame, starting from 0.
22434
22435 @item prev_selected_n
22436 The sequential number of the last selected frame. It's NAN if undefined.
22437
22438 @item TB
22439 The timebase of the input timestamps.
22440
22441 @item pts
22442 The PTS (Presentation TimeStamp) of the filtered video frame,
22443 expressed in @var{TB} units. It's NAN if undefined.
22444
22445 @item t
22446 The PTS of the filtered video frame,
22447 expressed in seconds. It's NAN if undefined.
22448
22449 @item prev_pts
22450 The PTS of the previously filtered video frame. It's NAN if undefined.
22451
22452 @item prev_selected_pts
22453 The PTS of the last previously filtered video frame. It's NAN if undefined.
22454
22455 @item prev_selected_t
22456 The PTS of the last previously selected video frame, expressed in seconds. It's NAN if undefined.
22457
22458 @item start_pts
22459 The PTS of the first video frame in the video. It's NAN if undefined.
22460
22461 @item start_t
22462 The time of the first video frame in the video. It's NAN if undefined.
22463
22464 @item pict_type @emph{(video only)}
22465 The type of the filtered frame. It can assume one of the following
22466 values:
22467 @table @option
22468 @item I
22469 @item P
22470 @item B
22471 @item S
22472 @item SI
22473 @item SP
22474 @item BI
22475 @end table
22476
22477 @item interlace_type @emph{(video only)}
22478 The frame interlace type. It can assume one of the following values:
22479 @table @option
22480 @item PROGRESSIVE
22481 The frame is progressive (not interlaced).
22482 @item TOPFIRST
22483 The frame is top-field-first.
22484 @item BOTTOMFIRST
22485 The frame is bottom-field-first.
22486 @end table
22487
22488 @item consumed_sample_n @emph{(audio only)}
22489 the number of selected samples before the current frame
22490
22491 @item samples_n @emph{(audio only)}
22492 the number of samples in the current frame
22493
22494 @item sample_rate @emph{(audio only)}
22495 the input sample rate
22496
22497 @item key
22498 This is 1 if the filtered frame is a key-frame, 0 otherwise.
22499
22500 @item pos
22501 the position in the file of the filtered frame, -1 if the information
22502 is not available (e.g. for synthetic video)
22503
22504 @item scene @emph{(video only)}
22505 value between 0 and 1 to indicate a new scene; a low value reflects a low
22506 probability for the current frame to introduce a new scene, while a higher
22507 value means the current frame is more likely to be one (see the example below)
22508
22509 @item concatdec_select
22510 The concat demuxer can select only part of a concat input file by setting an
22511 inpoint and an outpoint, but the output packets may not be entirely contained
22512 in the selected interval. By using this variable, it is possible to skip frames
22513 generated by the concat demuxer which are not exactly contained in the selected
22514 interval.
22515
22516 This works by comparing the frame pts against the @var{lavf.concat.start_time}
22517 and the @var{lavf.concat.duration} packet metadata values which are also
22518 present in the decoded frames.
22519
22520 The @var{concatdec_select} variable is -1 if the frame pts is at least
22521 start_time and either the duration metadata is missing or the frame pts is less
22522 than start_time + duration, 0 otherwise, and NaN if the start_time metadata is
22523 missing.
22524
22525 That basically means that an input frame is selected if its pts is within the
22526 interval set by the concat demuxer.
22527
22528 @end table
22529
22530 The default value of the select expression is "1".
22531
22532 @subsection Examples
22533
22534 @itemize
22535 @item
22536 Select all frames in input:
22537 @example
22538 select
22539 @end example
22540
22541 The example above is the same as:
22542 @example
22543 select=1
22544 @end example
22545
22546 @item
22547 Skip all frames:
22548 @example
22549 select=0
22550 @end example
22551
22552 @item
22553 Select only I-frames:
22554 @example
22555 select='eq(pict_type\,I)'
22556 @end example
22557
22558 @item
22559 Select one frame every 100:
22560 @example
22561 select='not(mod(n\,100))'
22562 @end example
22563
22564 @item
22565 Select only frames contained in the 10-20 time interval:
22566 @example
22567 select=between(t\,10\,20)
22568 @end example
22569
22570 @item
22571 Select only I-frames contained in the 10-20 time interval:
22572 @example
22573 select=between(t\,10\,20)*eq(pict_type\,I)
22574 @end example
22575
22576 @item
22577 Select frames with a minimum distance of 10 seconds:
22578 @example
22579 select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
22580 @end example
22581
22582 @item
22583 Use aselect to select only audio frames with samples number > 100:
22584 @example
22585 aselect='gt(samples_n\,100)'
22586 @end example
22587
22588 @item
22589 Create a mosaic of the first scenes:
22590 @example
22591 ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
22592 @end example
22593
22594 Comparing @var{scene} against a value between 0.3 and 0.5 is generally a sane
22595 choice.
22596
22597 @item
22598 Send even and odd frames to separate outputs, and compose them:
22599 @example
22600 select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
22601 @end example
22602
22603 @item
22604 Select useful frames from an ffconcat file which is using inpoints and
22605 outpoints but where the source files are not intra frame only.
22606 @example
22607 ffmpeg -copyts -vsync 0 -segment_time_metadata 1 -i input.ffconcat -vf select=concatdec_select -af aselect=concatdec_select output.avi
22608 @end example
22609 @end itemize
22610
22611 @section sendcmd, asendcmd
22612
22613 Send commands to filters in the filtergraph.
22614
22615 These filters read commands to be sent to other filters in the
22616 filtergraph.
22617
22618 @code{sendcmd} must be inserted between two video filters,
22619 @code{asendcmd} must be inserted between two audio filters, but apart
22620 from that they act the same way.
22621
22622 The specification of commands can be provided in the filter arguments
22623 with the @var{commands} option, or in a file specified by the
22624 @var{filename} option.
22625
22626 These filters accept the following options:
22627 @table @option
22628 @item commands, c
22629 Set the commands to be read and sent to the other filters.
22630 @item filename, f
22631 Set the filename of the commands to be read and sent to the other
22632 filters.
22633 @end table
22634
22635 @subsection Commands syntax
22636
22637 A commands description consists of a sequence of interval
22638 specifications, comprising a list of commands to be executed when a
22639 particular event related to that interval occurs. The occurring event
22640 is typically the current frame time entering or leaving a given time
22641 interval.
22642
22643 An interval is specified by the following syntax:
22644 @example
22645 @var{START}[-@var{END}] @var{COMMANDS};
22646 @end example
22647
22648 The time interval is specified by the @var{START} and @var{END} times.
22649 @var{END} is optional and defaults to the maximum time.
22650
22651 The current frame time is considered within the specified interval if
22652 it is included in the interval [@var{START}, @var{END}), that is when
22653 the time is greater or equal to @var{START} and is lesser than
22654 @var{END}.
22655
22656 @var{COMMANDS} consists of a sequence of one or more command
22657 specifications, separated by ",", relating to that interval.  The
22658 syntax of a command specification is given by:
22659 @example
22660 [@var{FLAGS}] @var{TARGET} @var{COMMAND} @var{ARG}
22661 @end example
22662
22663 @var{FLAGS} is optional and specifies the type of events relating to
22664 the time interval which enable sending the specified command, and must
22665 be a non-null sequence of identifier flags separated by "+" or "|" and
22666 enclosed between "[" and "]".
22667
22668 The following flags are recognized:
22669 @table @option
22670 @item enter
22671 The command is sent when the current frame timestamp enters the
22672 specified interval. In other words, the command is sent when the
22673 previous frame timestamp was not in the given interval, and the
22674 current is.
22675
22676 @item leave
22677 The command is sent when the current frame timestamp leaves the
22678 specified interval. In other words, the command is sent when the
22679 previous frame timestamp was in the given interval, and the
22680 current is not.
22681 @end table
22682
22683 If @var{FLAGS} is not specified, a default value of @code{[enter]} is
22684 assumed.
22685
22686 @var{TARGET} specifies the target of the command, usually the name of
22687 the filter class or a specific filter instance name.
22688
22689 @var{COMMAND} specifies the name of the command for the target filter.
22690
22691 @var{ARG} is optional and specifies the optional list of argument for
22692 the given @var{COMMAND}.
22693
22694 Between one interval specification and another, whitespaces, or
22695 sequences of characters starting with @code{#} until the end of line,
22696 are ignored and can be used to annotate comments.
22697
22698 A simplified BNF description of the commands specification syntax
22699 follows:
22700 @example
22701 @var{COMMAND_FLAG}  ::= "enter" | "leave"
22702 @var{COMMAND_FLAGS} ::= @var{COMMAND_FLAG} [(+|"|")@var{COMMAND_FLAG}]
22703 @var{COMMAND}       ::= ["[" @var{COMMAND_FLAGS} "]"] @var{TARGET} @var{COMMAND} [@var{ARG}]
22704 @var{COMMANDS}      ::= @var{COMMAND} [,@var{COMMANDS}]
22705 @var{INTERVAL}      ::= @var{START}[-@var{END}] @var{COMMANDS}
22706 @var{INTERVALS}     ::= @var{INTERVAL}[;@var{INTERVALS}]
22707 @end example
22708
22709 @subsection Examples
22710
22711 @itemize
22712 @item
22713 Specify audio tempo change at second 4:
22714 @example
22715 asendcmd=c='4.0 atempo tempo 1.5',atempo
22716 @end example
22717
22718 @item
22719 Target a specific filter instance:
22720 @example
22721 asendcmd=c='4.0 atempo@@my tempo 1.5',atempo@@my
22722 @end example
22723
22724 @item
22725 Specify a list of drawtext and hue commands in a file.
22726 @example
22727 # show text in the interval 5-10
22728 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
22729          [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
22730
22731 # desaturate the image in the interval 15-20
22732 15.0-20.0 [enter] hue s 0,
22733           [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
22734           [leave] hue s 1,
22735           [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
22736
22737 # apply an exponential saturation fade-out effect, starting from time 25
22738 25 [enter] hue s exp(25-t)
22739 @end example
22740
22741 A filtergraph allowing to read and process the above command list
22742 stored in a file @file{test.cmd}, can be specified with:
22743 @example
22744 sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
22745 @end example
22746 @end itemize
22747
22748 @anchor{setpts}
22749 @section setpts, asetpts
22750
22751 Change the PTS (presentation timestamp) of the input frames.
22752
22753 @code{setpts} works on video frames, @code{asetpts} on audio frames.
22754
22755 This filter accepts the following options:
22756
22757 @table @option
22758
22759 @item expr
22760 The expression which is evaluated for each frame to construct its timestamp.
22761
22762 @end table
22763
22764 The expression is evaluated through the eval API and can contain the following
22765 constants:
22766
22767 @table @option
22768 @item FRAME_RATE, FR
22769 frame rate, only defined for constant frame-rate video
22770
22771 @item PTS
22772 The presentation timestamp in input
22773
22774 @item N
22775 The count of the input frame for video or the number of consumed samples,
22776 not including the current frame for audio, starting from 0.
22777
22778 @item NB_CONSUMED_SAMPLES
22779 The number of consumed samples, not including the current frame (only
22780 audio)
22781
22782 @item NB_SAMPLES, S
22783 The number of samples in the current frame (only audio)
22784
22785 @item SAMPLE_RATE, SR
22786 The audio sample rate.
22787
22788 @item STARTPTS
22789 The PTS of the first frame.
22790
22791 @item STARTT
22792 the time in seconds of the first frame
22793
22794 @item INTERLACED
22795 State whether the current frame is interlaced.
22796
22797 @item T
22798 the time in seconds of the current frame
22799
22800 @item POS
22801 original position in the file of the frame, or undefined if undefined
22802 for the current frame
22803
22804 @item PREV_INPTS
22805 The previous input PTS.
22806
22807 @item PREV_INT
22808 previous input time in seconds
22809
22810 @item PREV_OUTPTS
22811 The previous output PTS.
22812
22813 @item PREV_OUTT
22814 previous output time in seconds
22815
22816 @item RTCTIME
22817 The wallclock (RTC) time in microseconds. This is deprecated, use time(0)
22818 instead.
22819
22820 @item RTCSTART
22821 The wallclock (RTC) time at the start of the movie in microseconds.
22822
22823 @item TB
22824 The timebase of the input timestamps.
22825
22826 @end table
22827
22828 @subsection Examples
22829
22830 @itemize
22831 @item
22832 Start counting PTS from zero
22833 @example
22834 setpts=PTS-STARTPTS
22835 @end example
22836
22837 @item
22838 Apply fast motion effect:
22839 @example
22840 setpts=0.5*PTS
22841 @end example
22842
22843 @item
22844 Apply slow motion effect:
22845 @example
22846 setpts=2.0*PTS
22847 @end example
22848
22849 @item
22850 Set fixed rate of 25 frames per second:
22851 @example
22852 setpts=N/(25*TB)
22853 @end example
22854
22855 @item
22856 Set fixed rate 25 fps with some jitter:
22857 @example
22858 setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
22859 @end example
22860
22861 @item
22862 Apply an offset of 10 seconds to the input PTS:
22863 @example
22864 setpts=PTS+10/TB
22865 @end example
22866
22867 @item
22868 Generate timestamps from a "live source" and rebase onto the current timebase:
22869 @example
22870 setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
22871 @end example
22872
22873 @item
22874 Generate timestamps by counting samples:
22875 @example
22876 asetpts=N/SR/TB
22877 @end example
22878
22879 @end itemize
22880
22881 @section setrange
22882
22883 Force color range for the output video frame.
22884
22885 The @code{setrange} filter marks the color range property for the
22886 output frames. It does not change the input frame, but only sets the
22887 corresponding property, which affects how the frame is treated by
22888 following filters.
22889
22890 The filter accepts the following options:
22891
22892 @table @option
22893
22894 @item range
22895 Available values are:
22896
22897 @table @samp
22898 @item auto
22899 Keep the same color range property.
22900
22901 @item unspecified, unknown
22902 Set the color range as unspecified.
22903
22904 @item limited, tv, mpeg
22905 Set the color range as limited.
22906
22907 @item full, pc, jpeg
22908 Set the color range as full.
22909 @end table
22910 @end table
22911
22912 @section settb, asettb
22913
22914 Set the timebase to use for the output frames timestamps.
22915 It is mainly useful for testing timebase configuration.
22916
22917 It accepts the following parameters:
22918
22919 @table @option
22920
22921 @item expr, tb
22922 The expression which is evaluated into the output timebase.
22923
22924 @end table
22925
22926 The value for @option{tb} is an arithmetic expression representing a
22927 rational. The expression can contain the constants "AVTB" (the default
22928 timebase), "intb" (the input timebase) and "sr" (the sample rate,
22929 audio only). Default value is "intb".
22930
22931 @subsection Examples
22932
22933 @itemize
22934 @item
22935 Set the timebase to 1/25:
22936 @example
22937 settb=expr=1/25
22938 @end example
22939
22940 @item
22941 Set the timebase to 1/10:
22942 @example
22943 settb=expr=0.1
22944 @end example
22945
22946 @item
22947 Set the timebase to 1001/1000:
22948 @example
22949 settb=1+0.001
22950 @end example
22951
22952 @item
22953 Set the timebase to 2*intb:
22954 @example
22955 settb=2*intb
22956 @end example
22957
22958 @item
22959 Set the default timebase value:
22960 @example
22961 settb=AVTB
22962 @end example
22963 @end itemize
22964
22965 @section showcqt
22966 Convert input audio to a video output representing frequency spectrum
22967 logarithmically using Brown-Puckette constant Q transform algorithm with
22968 direct frequency domain coefficient calculation (but the transform itself
22969 is not really constant Q, instead the Q factor is actually variable/clamped),
22970 with musical tone scale, from E0 to D#10.
22971
22972 The filter accepts the following options:
22973
22974 @table @option
22975 @item size, s
22976 Specify the video size for the output. It must be even. For the syntax of this option,
22977 check the @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22978 Default value is @code{1920x1080}.
22979
22980 @item fps, rate, r
22981 Set the output frame rate. Default value is @code{25}.
22982
22983 @item bar_h
22984 Set the bargraph height. It must be even. Default value is @code{-1} which
22985 computes the bargraph height automatically.
22986
22987 @item axis_h
22988 Set the axis height. It must be even. Default value is @code{-1} which computes
22989 the axis height automatically.
22990
22991 @item sono_h
22992 Set the sonogram height. It must be even. Default value is @code{-1} which
22993 computes the sonogram height automatically.
22994
22995 @item fullhd
22996 Set the fullhd resolution. This option is deprecated, use @var{size}, @var{s}
22997 instead. Default value is @code{1}.
22998
22999 @item sono_v, volume
23000 Specify the sonogram volume expression. It can contain variables:
23001 @table @option
23002 @item bar_v
23003 the @var{bar_v} evaluated expression
23004 @item frequency, freq, f
23005 the frequency where it is evaluated
23006 @item timeclamp, tc
23007 the value of @var{timeclamp} option
23008 @end table
23009 and functions:
23010 @table @option
23011 @item a_weighting(f)
23012 A-weighting of equal loudness
23013 @item b_weighting(f)
23014 B-weighting of equal loudness
23015 @item c_weighting(f)
23016 C-weighting of equal loudness.
23017 @end table
23018 Default value is @code{16}.
23019
23020 @item bar_v, volume2
23021 Specify the bargraph volume expression. It can contain variables:
23022 @table @option
23023 @item sono_v
23024 the @var{sono_v} evaluated expression
23025 @item frequency, freq, f
23026 the frequency where it is evaluated
23027 @item timeclamp, tc
23028 the value of @var{timeclamp} option
23029 @end table
23030 and functions:
23031 @table @option
23032 @item a_weighting(f)
23033 A-weighting of equal loudness
23034 @item b_weighting(f)
23035 B-weighting of equal loudness
23036 @item c_weighting(f)
23037 C-weighting of equal loudness.
23038 @end table
23039 Default value is @code{sono_v}.
23040
23041 @item sono_g, gamma
23042 Specify the sonogram gamma. Lower gamma makes the spectrum more contrast,
23043 higher gamma makes the spectrum having more range. Default value is @code{3}.
23044 Acceptable range is @code{[1, 7]}.
23045
23046 @item bar_g, gamma2
23047 Specify the bargraph gamma. Default value is @code{1}. Acceptable range is
23048 @code{[1, 7]}.
23049
23050 @item bar_t
23051 Specify the bargraph transparency level. Lower value makes the bargraph sharper.
23052 Default value is @code{1}. Acceptable range is @code{[0, 1]}.
23053
23054 @item timeclamp, tc
23055 Specify the transform timeclamp. At low frequency, there is trade-off between
23056 accuracy in time domain and frequency domain. If timeclamp is lower,
23057 event in time domain is represented more accurately (such as fast bass drum),
23058 otherwise event in frequency domain is represented more accurately
23059 (such as bass guitar). Acceptable range is @code{[0.002, 1]}. Default value is @code{0.17}.
23060
23061 @item attack
23062 Set attack time in seconds. The default is @code{0} (disabled). Otherwise, it
23063 limits future samples by applying asymmetric windowing in time domain, useful
23064 when low latency is required. Accepted range is @code{[0, 1]}.
23065
23066 @item basefreq
23067 Specify the transform base frequency. Default value is @code{20.01523126408007475},
23068 which is frequency 50 cents below E0. Acceptable range is @code{[10, 100000]}.
23069
23070 @item endfreq
23071 Specify the transform end frequency. Default value is @code{20495.59681441799654},
23072 which is frequency 50 cents above D#10. Acceptable range is @code{[10, 100000]}.
23073
23074 @item coeffclamp
23075 This option is deprecated and ignored.
23076
23077 @item tlength
23078 Specify the transform length in time domain. Use this option to control accuracy
23079 trade-off between time domain and frequency domain at every frequency sample.
23080 It can contain variables:
23081 @table @option
23082 @item frequency, freq, f
23083 the frequency where it is evaluated
23084 @item timeclamp, tc
23085 the value of @var{timeclamp} option.
23086 @end table
23087 Default value is @code{384*tc/(384+tc*f)}.
23088
23089 @item count
23090 Specify the transform count for every video frame. Default value is @code{6}.
23091 Acceptable range is @code{[1, 30]}.
23092
23093 @item fcount
23094 Specify the transform count for every single pixel. Default value is @code{0},
23095 which makes it computed automatically. Acceptable range is @code{[0, 10]}.
23096
23097 @item fontfile
23098 Specify font file for use with freetype to draw the axis. If not specified,
23099 use embedded font. Note that drawing with font file or embedded font is not
23100 implemented with custom @var{basefreq} and @var{endfreq}, use @var{axisfile}
23101 option instead.
23102
23103 @item font
23104 Specify fontconfig pattern. This has lower priority than @var{fontfile}. The
23105 @code{:} in the pattern may be replaced by @code{|} to avoid unnecessary
23106 escaping.
23107
23108 @item fontcolor
23109 Specify font color expression. This is arithmetic expression that should return
23110 integer value 0xRRGGBB. It can contain variables:
23111 @table @option
23112 @item frequency, freq, f
23113 the frequency where it is evaluated
23114 @item timeclamp, tc
23115 the value of @var{timeclamp} option
23116 @end table
23117 and functions:
23118 @table @option
23119 @item midi(f)
23120 midi number of frequency f, some midi numbers: E0(16), C1(24), C2(36), A4(69)
23121 @item r(x), g(x), b(x)
23122 red, green, and blue value of intensity x.
23123 @end table
23124 Default value is @code{st(0, (midi(f)-59.5)/12);
23125 st(1, if(between(ld(0),0,1), 0.5-0.5*cos(2*PI*ld(0)), 0));
23126 r(1-ld(1)) + b(ld(1))}.
23127
23128 @item axisfile
23129 Specify image file to draw the axis. This option override @var{fontfile} and
23130 @var{fontcolor} option.
23131
23132 @item axis, text
23133 Enable/disable drawing text to the axis. If it is set to @code{0}, drawing to
23134 the axis is disabled, ignoring @var{fontfile} and @var{axisfile} option.
23135 Default value is @code{1}.
23136
23137 @item csp
23138 Set colorspace. The accepted values are:
23139 @table @samp
23140 @item unspecified
23141 Unspecified (default)
23142
23143 @item bt709
23144 BT.709
23145
23146 @item fcc
23147 FCC
23148
23149 @item bt470bg
23150 BT.470BG or BT.601-6 625
23151
23152 @item smpte170m
23153 SMPTE-170M or BT.601-6 525
23154
23155 @item smpte240m
23156 SMPTE-240M
23157
23158 @item bt2020ncl
23159 BT.2020 with non-constant luminance
23160
23161 @end table
23162
23163 @item cscheme
23164 Set spectrogram color scheme. This is list of floating point values with format
23165 @code{left_r|left_g|left_b|right_r|right_g|right_b}.
23166 The default is @code{1|0.5|0|0|0.5|1}.
23167
23168 @end table
23169
23170 @subsection Examples
23171
23172 @itemize
23173 @item
23174 Playing audio while showing the spectrum:
23175 @example
23176 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
23177 @end example
23178
23179 @item
23180 Same as above, but with frame rate 30 fps:
23181 @example
23182 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
23183 @end example
23184
23185 @item
23186 Playing at 1280x720:
23187 @example
23188 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
23189 @end example
23190
23191 @item
23192 Disable sonogram display:
23193 @example
23194 sono_h=0
23195 @end example
23196
23197 @item
23198 A1 and its harmonics: A1, A2, (near)E3, A3:
23199 @example
23200 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),
23201                  asplit[a][out1]; [a] showcqt [out0]'
23202 @end example
23203
23204 @item
23205 Same as above, but with more accuracy in frequency domain:
23206 @example
23207 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),
23208                  asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]'
23209 @end example
23210
23211 @item
23212 Custom volume:
23213 @example
23214 bar_v=10:sono_v=bar_v*a_weighting(f)
23215 @end example
23216
23217 @item
23218 Custom gamma, now spectrum is linear to the amplitude.
23219 @example
23220 bar_g=2:sono_g=2
23221 @end example
23222
23223 @item
23224 Custom tlength equation:
23225 @example
23226 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)))'
23227 @end example
23228
23229 @item
23230 Custom fontcolor and fontfile, C-note is colored green, others are colored blue:
23231 @example
23232 fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
23233 @end example
23234
23235 @item
23236 Custom font using fontconfig:
23237 @example
23238 font='Courier New,Monospace,mono|bold'
23239 @end example
23240
23241 @item
23242 Custom frequency range with custom axis using image file:
23243 @example
23244 axisfile=myaxis.png:basefreq=40:endfreq=10000
23245 @end example
23246 @end itemize
23247
23248 @section showfreqs
23249
23250 Convert input audio to video output representing the audio power spectrum.
23251 Audio amplitude is on Y-axis while frequency is on X-axis.
23252
23253 The filter accepts the following options:
23254
23255 @table @option
23256 @item size, s
23257 Specify size of video. For the syntax of this option, check the
23258 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23259 Default is @code{1024x512}.
23260
23261 @item mode
23262 Set display mode.
23263 This set how each frequency bin will be represented.
23264
23265 It accepts the following values:
23266 @table @samp
23267 @item line
23268 @item bar
23269 @item dot
23270 @end table
23271 Default is @code{bar}.
23272
23273 @item ascale
23274 Set amplitude scale.
23275
23276 It accepts the following values:
23277 @table @samp
23278 @item lin
23279 Linear scale.
23280
23281 @item sqrt
23282 Square root scale.
23283
23284 @item cbrt
23285 Cubic root scale.
23286
23287 @item log
23288 Logarithmic scale.
23289 @end table
23290 Default is @code{log}.
23291
23292 @item fscale
23293 Set frequency scale.
23294
23295 It accepts the following values:
23296 @table @samp
23297 @item lin
23298 Linear scale.
23299
23300 @item log
23301 Logarithmic scale.
23302
23303 @item rlog
23304 Reverse logarithmic scale.
23305 @end table
23306 Default is @code{lin}.
23307
23308 @item win_size
23309 Set window size. Allowed range is from 16 to 65536.
23310
23311 Default is @code{2048}
23312
23313 @item win_func
23314 Set windowing function.
23315
23316 It accepts the following values:
23317 @table @samp
23318 @item rect
23319 @item bartlett
23320 @item hanning
23321 @item hamming
23322 @item blackman
23323 @item welch
23324 @item flattop
23325 @item bharris
23326 @item bnuttall
23327 @item bhann
23328 @item sine
23329 @item nuttall
23330 @item lanczos
23331 @item gauss
23332 @item tukey
23333 @item dolph
23334 @item cauchy
23335 @item parzen
23336 @item poisson
23337 @item bohman
23338 @end table
23339 Default is @code{hanning}.
23340
23341 @item overlap
23342 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
23343 which means optimal overlap for selected window function will be picked.
23344
23345 @item averaging
23346 Set time averaging. Setting this to 0 will display current maximal peaks.
23347 Default is @code{1}, which means time averaging is disabled.
23348
23349 @item colors
23350 Specify list of colors separated by space or by '|' which will be used to
23351 draw channel frequencies. Unrecognized or missing colors will be replaced
23352 by white color.
23353
23354 @item cmode
23355 Set channel display mode.
23356
23357 It accepts the following values:
23358 @table @samp
23359 @item combined
23360 @item separate
23361 @end table
23362 Default is @code{combined}.
23363
23364 @item minamp
23365 Set minimum amplitude used in @code{log} amplitude scaler.
23366
23367 @end table
23368
23369 @section showspatial
23370
23371 Convert stereo input audio to a video output, representing the spatial relationship
23372 between two channels.
23373
23374 The filter accepts the following options:
23375
23376 @table @option
23377 @item size, s
23378 Specify the video size for the output. For the syntax of this option, check the
23379 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23380 Default value is @code{512x512}.
23381
23382 @item win_size
23383 Set window size. Allowed range is from @var{1024} to @var{65536}. Default size is @var{4096}.
23384
23385 @item win_func
23386 Set window function.
23387
23388 It accepts the following values:
23389 @table @samp
23390 @item rect
23391 @item bartlett
23392 @item hann
23393 @item hanning
23394 @item hamming
23395 @item blackman
23396 @item welch
23397 @item flattop
23398 @item bharris
23399 @item bnuttall
23400 @item bhann
23401 @item sine
23402 @item nuttall
23403 @item lanczos
23404 @item gauss
23405 @item tukey
23406 @item dolph
23407 @item cauchy
23408 @item parzen
23409 @item poisson
23410 @item bohman
23411 @end table
23412
23413 Default value is @code{hann}.
23414
23415 @item overlap
23416 Set ratio of overlap window. Default value is @code{0.5}.
23417 When value is @code{1} overlap is set to recommended size for specific
23418 window function currently used.
23419 @end table
23420
23421 @anchor{showspectrum}
23422 @section showspectrum
23423
23424 Convert input audio to a video output, representing the audio frequency
23425 spectrum.
23426
23427 The filter accepts the following options:
23428
23429 @table @option
23430 @item size, s
23431 Specify the video size for the output. For the syntax of this option, check the
23432 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23433 Default value is @code{640x512}.
23434
23435 @item slide
23436 Specify how the spectrum should slide along the window.
23437
23438 It accepts the following values:
23439 @table @samp
23440 @item replace
23441 the samples start again on the left when they reach the right
23442 @item scroll
23443 the samples scroll from right to left
23444 @item fullframe
23445 frames are only produced when the samples reach the right
23446 @item rscroll
23447 the samples scroll from left to right
23448 @end table
23449
23450 Default value is @code{replace}.
23451
23452 @item mode
23453 Specify display mode.
23454
23455 It accepts the following values:
23456 @table @samp
23457 @item combined
23458 all channels are displayed in the same row
23459 @item separate
23460 all channels are displayed in separate rows
23461 @end table
23462
23463 Default value is @samp{combined}.
23464
23465 @item color
23466 Specify display color mode.
23467
23468 It accepts the following values:
23469 @table @samp
23470 @item channel
23471 each channel is displayed in a separate color
23472 @item intensity
23473 each channel is displayed using the same color scheme
23474 @item rainbow
23475 each channel is displayed using the rainbow color scheme
23476 @item moreland
23477 each channel is displayed using the moreland color scheme
23478 @item nebulae
23479 each channel is displayed using the nebulae color scheme
23480 @item fire
23481 each channel is displayed using the fire color scheme
23482 @item fiery
23483 each channel is displayed using the fiery color scheme
23484 @item fruit
23485 each channel is displayed using the fruit color scheme
23486 @item cool
23487 each channel is displayed using the cool color scheme
23488 @item magma
23489 each channel is displayed using the magma color scheme
23490 @item green
23491 each channel is displayed using the green color scheme
23492 @item viridis
23493 each channel is displayed using the viridis color scheme
23494 @item plasma
23495 each channel is displayed using the plasma color scheme
23496 @item cividis
23497 each channel is displayed using the cividis color scheme
23498 @item terrain
23499 each channel is displayed using the terrain color scheme
23500 @end table
23501
23502 Default value is @samp{channel}.
23503
23504 @item scale
23505 Specify scale used for calculating intensity color values.
23506
23507 It accepts the following values:
23508 @table @samp
23509 @item lin
23510 linear
23511 @item sqrt
23512 square root, default
23513 @item cbrt
23514 cubic root
23515 @item log
23516 logarithmic
23517 @item 4thrt
23518 4th root
23519 @item 5thrt
23520 5th root
23521 @end table
23522
23523 Default value is @samp{sqrt}.
23524
23525 @item fscale
23526 Specify frequency scale.
23527
23528 It accepts the following values:
23529 @table @samp
23530 @item lin
23531 linear
23532 @item log
23533 logarithmic
23534 @end table
23535
23536 Default value is @samp{lin}.
23537
23538 @item saturation
23539 Set saturation modifier for displayed colors. Negative values provide
23540 alternative color scheme. @code{0} is no saturation at all.
23541 Saturation must be in [-10.0, 10.0] range.
23542 Default value is @code{1}.
23543
23544 @item win_func
23545 Set window function.
23546
23547 It accepts the following values:
23548 @table @samp
23549 @item rect
23550 @item bartlett
23551 @item hann
23552 @item hanning
23553 @item hamming
23554 @item blackman
23555 @item welch
23556 @item flattop
23557 @item bharris
23558 @item bnuttall
23559 @item bhann
23560 @item sine
23561 @item nuttall
23562 @item lanczos
23563 @item gauss
23564 @item tukey
23565 @item dolph
23566 @item cauchy
23567 @item parzen
23568 @item poisson
23569 @item bohman
23570 @end table
23571
23572 Default value is @code{hann}.
23573
23574 @item orientation
23575 Set orientation of time vs frequency axis. Can be @code{vertical} or
23576 @code{horizontal}. Default is @code{vertical}.
23577
23578 @item overlap
23579 Set ratio of overlap window. Default value is @code{0}.
23580 When value is @code{1} overlap is set to recommended size for specific
23581 window function currently used.
23582
23583 @item gain
23584 Set scale gain for calculating intensity color values.
23585 Default value is @code{1}.
23586
23587 @item data
23588 Set which data to display. Can be @code{magnitude}, default or @code{phase}.
23589
23590 @item rotation
23591 Set color rotation, must be in [-1.0, 1.0] range.
23592 Default value is @code{0}.
23593
23594 @item start
23595 Set start frequency from which to display spectrogram. Default is @code{0}.
23596
23597 @item stop
23598 Set stop frequency to which to display spectrogram. Default is @code{0}.
23599
23600 @item fps
23601 Set upper frame rate limit. Default is @code{auto}, unlimited.
23602
23603 @item legend
23604 Draw time and frequency axes and legends. Default is disabled.
23605 @end table
23606
23607 The usage is very similar to the showwaves filter; see the examples in that
23608 section.
23609
23610 @subsection Examples
23611
23612 @itemize
23613 @item
23614 Large window with logarithmic color scaling:
23615 @example
23616 showspectrum=s=1280x480:scale=log
23617 @end example
23618
23619 @item
23620 Complete example for a colored and sliding spectrum per channel using @command{ffplay}:
23621 @example
23622 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
23623              [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
23624 @end example
23625 @end itemize
23626
23627 @section showspectrumpic
23628
23629 Convert input audio to a single video frame, representing the audio frequency
23630 spectrum.
23631
23632 The filter accepts the following options:
23633
23634 @table @option
23635 @item size, s
23636 Specify the video size for the output. For the syntax of this option, check the
23637 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23638 Default value is @code{4096x2048}.
23639
23640 @item mode
23641 Specify display mode.
23642
23643 It accepts the following values:
23644 @table @samp
23645 @item combined
23646 all channels are displayed in the same row
23647 @item separate
23648 all channels are displayed in separate rows
23649 @end table
23650 Default value is @samp{combined}.
23651
23652 @item color
23653 Specify display color mode.
23654
23655 It accepts the following values:
23656 @table @samp
23657 @item channel
23658 each channel is displayed in a separate color
23659 @item intensity
23660 each channel is displayed using the same color scheme
23661 @item rainbow
23662 each channel is displayed using the rainbow color scheme
23663 @item moreland
23664 each channel is displayed using the moreland color scheme
23665 @item nebulae
23666 each channel is displayed using the nebulae color scheme
23667 @item fire
23668 each channel is displayed using the fire color scheme
23669 @item fiery
23670 each channel is displayed using the fiery color scheme
23671 @item fruit
23672 each channel is displayed using the fruit color scheme
23673 @item cool
23674 each channel is displayed using the cool color scheme
23675 @item magma
23676 each channel is displayed using the magma color scheme
23677 @item green
23678 each channel is displayed using the green color scheme
23679 @item viridis
23680 each channel is displayed using the viridis color scheme
23681 @item plasma
23682 each channel is displayed using the plasma color scheme
23683 @item cividis
23684 each channel is displayed using the cividis color scheme
23685 @item terrain
23686 each channel is displayed using the terrain color scheme
23687 @end table
23688 Default value is @samp{intensity}.
23689
23690 @item scale
23691 Specify scale used for calculating intensity color values.
23692
23693 It accepts the following values:
23694 @table @samp
23695 @item lin
23696 linear
23697 @item sqrt
23698 square root, default
23699 @item cbrt
23700 cubic root
23701 @item log
23702 logarithmic
23703 @item 4thrt
23704 4th root
23705 @item 5thrt
23706 5th root
23707 @end table
23708 Default value is @samp{log}.
23709
23710 @item fscale
23711 Specify frequency scale.
23712
23713 It accepts the following values:
23714 @table @samp
23715 @item lin
23716 linear
23717 @item log
23718 logarithmic
23719 @end table
23720
23721 Default value is @samp{lin}.
23722
23723 @item saturation
23724 Set saturation modifier for displayed colors. Negative values provide
23725 alternative color scheme. @code{0} is no saturation at all.
23726 Saturation must be in [-10.0, 10.0] range.
23727 Default value is @code{1}.
23728
23729 @item win_func
23730 Set window function.
23731
23732 It accepts the following values:
23733 @table @samp
23734 @item rect
23735 @item bartlett
23736 @item hann
23737 @item hanning
23738 @item hamming
23739 @item blackman
23740 @item welch
23741 @item flattop
23742 @item bharris
23743 @item bnuttall
23744 @item bhann
23745 @item sine
23746 @item nuttall
23747 @item lanczos
23748 @item gauss
23749 @item tukey
23750 @item dolph
23751 @item cauchy
23752 @item parzen
23753 @item poisson
23754 @item bohman
23755 @end table
23756 Default value is @code{hann}.
23757
23758 @item orientation
23759 Set orientation of time vs frequency axis. Can be @code{vertical} or
23760 @code{horizontal}. Default is @code{vertical}.
23761
23762 @item gain
23763 Set scale gain for calculating intensity color values.
23764 Default value is @code{1}.
23765
23766 @item legend
23767 Draw time and frequency axes and legends. Default is enabled.
23768
23769 @item rotation
23770 Set color rotation, must be in [-1.0, 1.0] range.
23771 Default value is @code{0}.
23772
23773 @item start
23774 Set start frequency from which to display spectrogram. Default is @code{0}.
23775
23776 @item stop
23777 Set stop frequency to which to display spectrogram. Default is @code{0}.
23778 @end table
23779
23780 @subsection Examples
23781
23782 @itemize
23783 @item
23784 Extract an audio spectrogram of a whole audio track
23785 in a 1024x1024 picture using @command{ffmpeg}:
23786 @example
23787 ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
23788 @end example
23789 @end itemize
23790
23791 @section showvolume
23792
23793 Convert input audio volume to a video output.
23794
23795 The filter accepts the following options:
23796
23797 @table @option
23798 @item rate, r
23799 Set video rate.
23800
23801 @item b
23802 Set border width, allowed range is [0, 5]. Default is 1.
23803
23804 @item w
23805 Set channel width, allowed range is [80, 8192]. Default is 400.
23806
23807 @item h
23808 Set channel height, allowed range is [1, 900]. Default is 20.
23809
23810 @item f
23811 Set fade, allowed range is [0, 1]. Default is 0.95.
23812
23813 @item c
23814 Set volume color expression.
23815
23816 The expression can use the following variables:
23817
23818 @table @option
23819 @item VOLUME
23820 Current max volume of channel in dB.
23821
23822 @item PEAK
23823 Current peak.
23824
23825 @item CHANNEL
23826 Current channel number, starting from 0.
23827 @end table
23828
23829 @item t
23830 If set, displays channel names. Default is enabled.
23831
23832 @item v
23833 If set, displays volume values. Default is enabled.
23834
23835 @item o
23836 Set orientation, can be horizontal: @code{h} or vertical: @code{v},
23837 default is @code{h}.
23838
23839 @item s
23840 Set step size, allowed range is [0, 5]. Default is 0, which means
23841 step is disabled.
23842
23843 @item p
23844 Set background opacity, allowed range is [0, 1]. Default is 0.
23845
23846 @item m
23847 Set metering mode, can be peak: @code{p} or rms: @code{r},
23848 default is @code{p}.
23849
23850 @item ds
23851 Set display scale, can be linear: @code{lin} or log: @code{log},
23852 default is @code{lin}.
23853
23854 @item dm
23855 In second.
23856 If set to > 0., display a line for the max level
23857 in the previous seconds.
23858 default is disabled: @code{0.}
23859
23860 @item dmc
23861 The color of the max line. Use when @code{dm} option is set to > 0.
23862 default is: @code{orange}
23863 @end table
23864
23865 @section showwaves
23866
23867 Convert input audio to a video output, representing the samples waves.
23868
23869 The filter accepts the following options:
23870
23871 @table @option
23872 @item size, s
23873 Specify the video size for the output. For the syntax of this option, check the
23874 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23875 Default value is @code{600x240}.
23876
23877 @item mode
23878 Set display mode.
23879
23880 Available values are:
23881 @table @samp
23882 @item point
23883 Draw a point for each sample.
23884
23885 @item line
23886 Draw a vertical line for each sample.
23887
23888 @item p2p
23889 Draw a point for each sample and a line between them.
23890
23891 @item cline
23892 Draw a centered vertical line for each sample.
23893 @end table
23894
23895 Default value is @code{point}.
23896
23897 @item n
23898 Set the number of samples which are printed on the same column. A
23899 larger value will decrease the frame rate. Must be a positive
23900 integer. This option can be set only if the value for @var{rate}
23901 is not explicitly specified.
23902
23903 @item rate, r
23904 Set the (approximate) output frame rate. This is done by setting the
23905 option @var{n}. Default value is "25".
23906
23907 @item split_channels
23908 Set if channels should be drawn separately or overlap. Default value is 0.
23909
23910 @item colors
23911 Set colors separated by '|' which are going to be used for drawing of each channel.
23912
23913 @item scale
23914 Set amplitude scale.
23915
23916 Available values are:
23917 @table @samp
23918 @item lin
23919 Linear.
23920
23921 @item log
23922 Logarithmic.
23923
23924 @item sqrt
23925 Square root.
23926
23927 @item cbrt
23928 Cubic root.
23929 @end table
23930
23931 Default is linear.
23932
23933 @item draw
23934 Set the draw mode. This is mostly useful to set for high @var{n}.
23935
23936 Available values are:
23937 @table @samp
23938 @item scale
23939 Scale pixel values for each drawn sample.
23940
23941 @item full
23942 Draw every sample directly.
23943 @end table
23944
23945 Default value is @code{scale}.
23946 @end table
23947
23948 @subsection Examples
23949
23950 @itemize
23951 @item
23952 Output the input file audio and the corresponding video representation
23953 at the same time:
23954 @example
23955 amovie=a.mp3,asplit[out0],showwaves[out1]
23956 @end example
23957
23958 @item
23959 Create a synthetic signal and show it with showwaves, forcing a
23960 frame rate of 30 frames per second:
23961 @example
23962 aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
23963 @end example
23964 @end itemize
23965
23966 @section showwavespic
23967
23968 Convert input audio to a single video frame, representing the samples waves.
23969
23970 The filter accepts the following options:
23971
23972 @table @option
23973 @item size, s
23974 Specify the video size for the output. For the syntax of this option, check the
23975 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23976 Default value is @code{600x240}.
23977
23978 @item split_channels
23979 Set if channels should be drawn separately or overlap. Default value is 0.
23980
23981 @item colors
23982 Set colors separated by '|' which are going to be used for drawing of each channel.
23983
23984 @item scale
23985 Set amplitude scale.
23986
23987 Available values are:
23988 @table @samp
23989 @item lin
23990 Linear.
23991
23992 @item log
23993 Logarithmic.
23994
23995 @item sqrt
23996 Square root.
23997
23998 @item cbrt
23999 Cubic root.
24000 @end table
24001
24002 Default is linear.
24003
24004 @item draw
24005 Set the draw mode.
24006
24007 Available values are:
24008 @table @samp
24009 @item scale
24010 Scale pixel values for each drawn sample.
24011
24012 @item full
24013 Draw every sample directly.
24014 @end table
24015
24016 Default value is @code{scale}.
24017 @end table
24018
24019 @subsection Examples
24020
24021 @itemize
24022 @item
24023 Extract a channel split representation of the wave form of a whole audio track
24024 in a 1024x800 picture using @command{ffmpeg}:
24025 @example
24026 ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
24027 @end example
24028 @end itemize
24029
24030 @section sidedata, asidedata
24031
24032 Delete frame side data, or select frames based on it.
24033
24034 This filter accepts the following options:
24035
24036 @table @option
24037 @item mode
24038 Set mode of operation of the filter.
24039
24040 Can be one of the following:
24041
24042 @table @samp
24043 @item select
24044 Select every frame with side data of @code{type}.
24045
24046 @item delete
24047 Delete side data of @code{type}. If @code{type} is not set, delete all side
24048 data in the frame.
24049
24050 @end table
24051
24052 @item type
24053 Set side data type used with all modes. Must be set for @code{select} mode. For
24054 the list of frame side data types, refer to the @code{AVFrameSideDataType} enum
24055 in @file{libavutil/frame.h}. For example, to choose
24056 @code{AV_FRAME_DATA_PANSCAN} side data, you must specify @code{PANSCAN}.
24057
24058 @end table
24059
24060 @section spectrumsynth
24061
24062 Synthesize audio from 2 input video spectrums, first input stream represents
24063 magnitude across time and second represents phase across time.
24064 The filter will transform from frequency domain as displayed in videos back
24065 to time domain as presented in audio output.
24066
24067 This filter is primarily created for reversing processed @ref{showspectrum}
24068 filter outputs, but can synthesize sound from other spectrograms too.
24069 But in such case results are going to be poor if the phase data is not
24070 available, because in such cases phase data need to be recreated, usually
24071 it's just recreated from random noise.
24072 For best results use gray only output (@code{channel} color mode in
24073 @ref{showspectrum} filter) and @code{log} scale for magnitude video and
24074 @code{lin} scale for phase video. To produce phase, for 2nd video, use
24075 @code{data} option. Inputs videos should generally use @code{fullframe}
24076 slide mode as that saves resources needed for decoding video.
24077
24078 The filter accepts the following options:
24079
24080 @table @option
24081 @item sample_rate
24082 Specify sample rate of output audio, the sample rate of audio from which
24083 spectrum was generated may differ.
24084
24085 @item channels
24086 Set number of channels represented in input video spectrums.
24087
24088 @item scale
24089 Set scale which was used when generating magnitude input spectrum.
24090 Can be @code{lin} or @code{log}. Default is @code{log}.
24091
24092 @item slide
24093 Set slide which was used when generating inputs spectrums.
24094 Can be @code{replace}, @code{scroll}, @code{fullframe} or @code{rscroll}.
24095 Default is @code{fullframe}.
24096
24097 @item win_func
24098 Set window function used for resynthesis.
24099
24100 @item overlap
24101 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
24102 which means optimal overlap for selected window function will be picked.
24103
24104 @item orientation
24105 Set orientation of input videos. Can be @code{vertical} or @code{horizontal}.
24106 Default is @code{vertical}.
24107 @end table
24108
24109 @subsection Examples
24110
24111 @itemize
24112 @item
24113 First create magnitude and phase videos from audio, assuming audio is stereo with 44100 sample rate,
24114 then resynthesize videos back to audio with spectrumsynth:
24115 @example
24116 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
24117 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
24118 ffmpeg -i magnitude.nut -i phase.nut -lavfi spectrumsynth=channels=2:sample_rate=44100:win_func=hann:overlap=0.875:slide=fullframe output.flac
24119 @end example
24120 @end itemize
24121
24122 @section split, asplit
24123
24124 Split input into several identical outputs.
24125
24126 @code{asplit} works with audio input, @code{split} with video.
24127
24128 The filter accepts a single parameter which specifies the number of outputs. If
24129 unspecified, it defaults to 2.
24130
24131 @subsection Examples
24132
24133 @itemize
24134 @item
24135 Create two separate outputs from the same input:
24136 @example
24137 [in] split [out0][out1]
24138 @end example
24139
24140 @item
24141 To create 3 or more outputs, you need to specify the number of
24142 outputs, like in:
24143 @example
24144 [in] asplit=3 [out0][out1][out2]
24145 @end example
24146
24147 @item
24148 Create two separate outputs from the same input, one cropped and
24149 one padded:
24150 @example
24151 [in] split [splitout1][splitout2];
24152 [splitout1] crop=100:100:0:0    [cropout];
24153 [splitout2] pad=200:200:100:100 [padout];
24154 @end example
24155
24156 @item
24157 Create 5 copies of the input audio with @command{ffmpeg}:
24158 @example
24159 ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
24160 @end example
24161 @end itemize
24162
24163 @section zmq, azmq
24164
24165 Receive commands sent through a libzmq client, and forward them to
24166 filters in the filtergraph.
24167
24168 @code{zmq} and @code{azmq} work as a pass-through filters. @code{zmq}
24169 must be inserted between two video filters, @code{azmq} between two
24170 audio filters. Both are capable to send messages to any filter type.
24171
24172 To enable these filters you need to install the libzmq library and
24173 headers and configure FFmpeg with @code{--enable-libzmq}.
24174
24175 For more information about libzmq see:
24176 @url{http://www.zeromq.org/}
24177
24178 The @code{zmq} and @code{azmq} filters work as a libzmq server, which
24179 receives messages sent through a network interface defined by the
24180 @option{bind_address} (or the abbreviation "@option{b}") option.
24181 Default value of this option is @file{tcp://localhost:5555}. You may
24182 want to alter this value to your needs, but do not forget to escape any
24183 ':' signs (see @ref{filtergraph escaping}).
24184
24185 The received message must be in the form:
24186 @example
24187 @var{TARGET} @var{COMMAND} [@var{ARG}]
24188 @end example
24189
24190 @var{TARGET} specifies the target of the command, usually the name of
24191 the filter class or a specific filter instance name. The default
24192 filter instance name uses the pattern @samp{Parsed_<filter_name>_<index>},
24193 but you can override this by using the @samp{filter_name@@id} syntax
24194 (see @ref{Filtergraph syntax}).
24195
24196 @var{COMMAND} specifies the name of the command for the target filter.
24197
24198 @var{ARG} is optional and specifies the optional argument list for the
24199 given @var{COMMAND}.
24200
24201 Upon reception, the message is processed and the corresponding command
24202 is injected into the filtergraph. Depending on the result, the filter
24203 will send a reply to the client, adopting the format:
24204 @example
24205 @var{ERROR_CODE} @var{ERROR_REASON}
24206 @var{MESSAGE}
24207 @end example
24208
24209 @var{MESSAGE} is optional.
24210
24211 @subsection Examples
24212
24213 Look at @file{tools/zmqsend} for an example of a zmq client which can
24214 be used to send commands processed by these filters.
24215
24216 Consider the following filtergraph generated by @command{ffplay}.
24217 In this example the last overlay filter has an instance name. All other
24218 filters will have default instance names.
24219
24220 @example
24221 ffplay -dumpgraph 1 -f lavfi "
24222 color=s=100x100:c=red  [l];
24223 color=s=100x100:c=blue [r];
24224 nullsrc=s=200x100, zmq [bg];
24225 [bg][l]   overlay     [bg+l];
24226 [bg+l][r] overlay@@my=x=100 "
24227 @end example
24228
24229 To change the color of the left side of the video, the following
24230 command can be used:
24231 @example
24232 echo Parsed_color_0 c yellow | tools/zmqsend
24233 @end example
24234
24235 To change the right side:
24236 @example
24237 echo Parsed_color_1 c pink | tools/zmqsend
24238 @end example
24239
24240 To change the position of the right side:
24241 @example
24242 echo overlay@@my x 150 | tools/zmqsend
24243 @end example
24244
24245
24246 @c man end MULTIMEDIA FILTERS
24247
24248 @chapter Multimedia Sources
24249 @c man begin MULTIMEDIA SOURCES
24250
24251 Below is a description of the currently available multimedia sources.
24252
24253 @section amovie
24254
24255 This is the same as @ref{movie} source, except it selects an audio
24256 stream by default.
24257
24258 @anchor{movie}
24259 @section movie
24260
24261 Read audio and/or video stream(s) from a movie container.
24262
24263 It accepts the following parameters:
24264
24265 @table @option
24266 @item filename
24267 The name of the resource to read (not necessarily a file; it can also be a
24268 device or a stream accessed through some protocol).
24269
24270 @item format_name, f
24271 Specifies the format assumed for the movie to read, and can be either
24272 the name of a container or an input device. If not specified, the
24273 format is guessed from @var{movie_name} or by probing.
24274
24275 @item seek_point, sp
24276 Specifies the seek point in seconds. The frames will be output
24277 starting from this seek point. The parameter is evaluated with
24278 @code{av_strtod}, so the numerical value may be suffixed by an IS
24279 postfix. The default value is "0".
24280
24281 @item streams, s
24282 Specifies the streams to read. Several streams can be specified,
24283 separated by "+". The source will then have as many outputs, in the
24284 same order. The syntax is explained in the @ref{Stream specifiers,,"Stream specifiers"
24285 section in the ffmpeg manual,ffmpeg}. Two special names, "dv" and "da" specify
24286 respectively the default (best suited) video and audio stream. Default
24287 is "dv", or "da" if the filter is called as "amovie".
24288
24289 @item stream_index, si
24290 Specifies the index of the video stream to read. If the value is -1,
24291 the most suitable video stream will be automatically selected. The default
24292 value is "-1". Deprecated. If the filter is called "amovie", it will select
24293 audio instead of video.
24294
24295 @item loop
24296 Specifies how many times to read the stream in sequence.
24297 If the value is 0, the stream will be looped infinitely.
24298 Default value is "1".
24299
24300 Note that when the movie is looped the source timestamps are not
24301 changed, so it will generate non monotonically increasing timestamps.
24302
24303 @item discontinuity
24304 Specifies the time difference between frames above which the point is
24305 considered a timestamp discontinuity which is removed by adjusting the later
24306 timestamps.
24307 @end table
24308
24309 It allows overlaying a second video on top of the main input of
24310 a filtergraph, as shown in this graph:
24311 @example
24312 input -----------> deltapts0 --> overlay --> output
24313                                     ^
24314                                     |
24315 movie --> scale--> deltapts1 -------+
24316 @end example
24317 @subsection Examples
24318
24319 @itemize
24320 @item
24321 Skip 3.2 seconds from the start of the AVI file in.avi, and overlay it
24322 on top of the input labelled "in":
24323 @example
24324 movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
24325 [in] setpts=PTS-STARTPTS [main];
24326 [main][over] overlay=16:16 [out]
24327 @end example
24328
24329 @item
24330 Read from a video4linux2 device, and overlay it on top of the input
24331 labelled "in":
24332 @example
24333 movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
24334 [in] setpts=PTS-STARTPTS [main];
24335 [main][over] overlay=16:16 [out]
24336 @end example
24337
24338 @item
24339 Read the first video stream and the audio stream with id 0x81 from
24340 dvd.vob; the video is connected to the pad named "video" and the audio is
24341 connected to the pad named "audio":
24342 @example
24343 movie=dvd.vob:s=v:0+#0x81 [video] [audio]
24344 @end example
24345 @end itemize
24346
24347 @subsection Commands
24348
24349 Both movie and amovie support the following commands:
24350 @table @option
24351 @item seek
24352 Perform seek using "av_seek_frame".
24353 The syntax is: seek @var{stream_index}|@var{timestamp}|@var{flags}
24354 @itemize
24355 @item
24356 @var{stream_index}: If stream_index is -1, a default
24357 stream is selected, and @var{timestamp} is automatically converted
24358 from AV_TIME_BASE units to the stream specific time_base.
24359 @item
24360 @var{timestamp}: Timestamp in AVStream.time_base units
24361 or, if no stream is specified, in AV_TIME_BASE units.
24362 @item
24363 @var{flags}: Flags which select direction and seeking mode.
24364 @end itemize
24365
24366 @item get_duration
24367 Get movie duration in AV_TIME_BASE units.
24368
24369 @end table
24370
24371 @c man end MULTIMEDIA SOURCES