]> git.sesse.net Git - ffmpeg/blob - doc/filters.texi
avformat/au: check return value of au_read_annotation()
[ffmpeg] / doc / filters.texi
1 @chapter Filtering Introduction
2 @c man begin FILTERING INTRODUCTION
3
4 Filtering in FFmpeg is enabled through the libavfilter library.
5
6 In libavfilter, a filter can have multiple inputs and multiple
7 outputs.
8 To illustrate the sorts of things that are possible, we consider the
9 following filtergraph.
10
11 @verbatim
12                 [main]
13 input --> split ---------------------> overlay --> output
14             |                             ^
15             |[tmp]                  [flip]|
16             +-----> crop --> vflip -------+
17 @end verbatim
18
19 This filtergraph splits the input stream in two streams, then sends one
20 stream through the crop filter and the vflip filter, before merging it
21 back with the other stream by overlaying it on top. You can use the
22 following command to achieve this:
23
24 @example
25 ffmpeg -i INPUT -vf "split [main][tmp]; [tmp] crop=iw:ih/2:0:0, vflip [flip]; [main][flip] overlay=0:H/2" OUTPUT
26 @end example
27
28 The result will be that the top half of the video is mirrored
29 onto the bottom half of the output video.
30
31 Filters in the same linear chain are separated by commas, and distinct
32 linear chains of filters are separated by semicolons. In our example,
33 @var{crop,vflip} are in one linear chain, @var{split} and
34 @var{overlay} are separately in another. The points where the linear
35 chains join are labelled by names enclosed in square brackets. In the
36 example, the split filter generates two outputs that are associated to
37 the labels @var{[main]} and @var{[tmp]}.
38
39 The stream sent to the second output of @var{split}, labelled as
40 @var{[tmp]}, is processed through the @var{crop} filter, which crops
41 away the lower half part of the video, and then vertically flipped. The
42 @var{overlay} filter takes in input the first unchanged output of the
43 split filter (which was labelled as @var{[main]}), and overlay on its
44 lower half the output generated by the @var{crop,vflip} filterchain.
45
46 Some filters take in input a list of parameters: they are specified
47 after the filter name and an equal sign, and are separated from each other
48 by a colon.
49
50 There exist so-called @var{source filters} that do not have an
51 audio/video input, and @var{sink filters} that will not have audio/video
52 output.
53
54 @c man end FILTERING INTRODUCTION
55
56 @chapter graph2dot
57 @c man begin GRAPH2DOT
58
59 The @file{graph2dot} program included in the FFmpeg @file{tools}
60 directory can be used to parse a filtergraph description and issue a
61 corresponding textual representation in the dot language.
62
63 Invoke the command:
64 @example
65 graph2dot -h
66 @end example
67
68 to see how to use @file{graph2dot}.
69
70 You can then pass the dot description to the @file{dot} program (from
71 the graphviz suite of programs) and obtain a graphical representation
72 of the filtergraph.
73
74 For example the sequence of commands:
75 @example
76 echo @var{GRAPH_DESCRIPTION} | \
77 tools/graph2dot -o graph.tmp && \
78 dot -Tpng graph.tmp -o graph.png && \
79 display graph.png
80 @end example
81
82 can be used to create and display an image representing the graph
83 described by the @var{GRAPH_DESCRIPTION} string. Note that this string must be
84 a complete self-contained graph, with its inputs and outputs explicitly defined.
85 For example if your command line is of the form:
86 @example
87 ffmpeg -i infile -vf scale=640:360 outfile
88 @end example
89 your @var{GRAPH_DESCRIPTION} string will need to be of the form:
90 @example
91 nullsrc,scale=640:360,nullsink
92 @end example
93 you may also need to set the @var{nullsrc} parameters and add a @var{format}
94 filter in order to simulate a specific input file.
95
96 @c man end GRAPH2DOT
97
98 @chapter Filtergraph description
99 @c man begin FILTERGRAPH DESCRIPTION
100
101 A filtergraph is a directed graph of connected filters. It can contain
102 cycles, and there can be multiple links between a pair of
103 filters. Each link has one input pad on one side connecting it to one
104 filter from which it takes its input, and one output pad on the other
105 side connecting it to one filter accepting its output.
106
107 Each filter in a filtergraph is an instance of a filter class
108 registered in the application, which defines the features and the
109 number of input and output pads of the filter.
110
111 A filter with no input pads is called a "source", and a filter with no
112 output pads is called a "sink".
113
114 @anchor{Filtergraph syntax}
115 @section Filtergraph syntax
116
117 A filtergraph has a textual representation, which is recognized by the
118 @option{-filter}/@option{-vf}/@option{-af} and
119 @option{-filter_complex} options in @command{ffmpeg} and
120 @option{-vf}/@option{-af} in @command{ffplay}, and by the
121 @code{avfilter_graph_parse_ptr()} function defined in
122 @file{libavfilter/avfilter.h}.
123
124 A filterchain consists of a sequence of connected filters, each one
125 connected to the previous one in the sequence. A filterchain is
126 represented by a list of ","-separated filter descriptions.
127
128 A filtergraph consists of a sequence of filterchains. A sequence of
129 filterchains is represented by a list of ";"-separated filterchain
130 descriptions.
131
132 A filter is represented by a string of the form:
133 [@var{in_link_1}]...[@var{in_link_N}]@var{filter_name}@@@var{id}=@var{arguments}[@var{out_link_1}]...[@var{out_link_M}]
134
135 @var{filter_name} is the name of the filter class of which the
136 described filter is an instance of, and has to be the name of one of
137 the filter classes registered in the program optionally followed by "@@@var{id}".
138 The name of the filter class is optionally followed by a string
139 "=@var{arguments}".
140
141 @var{arguments} is a string which contains the parameters used to
142 initialize the filter instance. It may have one of two forms:
143 @itemize
144
145 @item
146 A ':'-separated list of @var{key=value} pairs.
147
148 @item
149 A ':'-separated list of @var{value}. In this case, the keys are assumed to be
150 the option names in the order they are declared. E.g. the @code{fade} filter
151 declares three options in this order -- @option{type}, @option{start_frame} and
152 @option{nb_frames}. Then the parameter list @var{in:0:30} means that the value
153 @var{in} is assigned to the option @option{type}, @var{0} to
154 @option{start_frame} and @var{30} to @option{nb_frames}.
155
156 @item
157 A ':'-separated list of mixed direct @var{value} and long @var{key=value}
158 pairs. The direct @var{value} must precede the @var{key=value} pairs, and
159 follow the same constraints order of the previous point. The following
160 @var{key=value} pairs can be set in any preferred order.
161
162 @end itemize
163
164 If the option value itself is a list of items (e.g. the @code{format} filter
165 takes a list of pixel formats), the items in the list are usually separated by
166 @samp{|}.
167
168 The list of arguments can be quoted using the character @samp{'} as initial
169 and ending mark, and the character @samp{\} for escaping the characters
170 within the quoted text; otherwise the argument string is considered
171 terminated when the next special character (belonging to the set
172 @samp{[]=;,}) is encountered.
173
174 The name and arguments of the filter are optionally preceded and
175 followed by a list of link labels.
176 A link label allows one to name a link and associate it to a filter output
177 or input pad. The preceding labels @var{in_link_1}
178 ... @var{in_link_N}, are associated to the filter input pads,
179 the following labels @var{out_link_1} ... @var{out_link_M}, are
180 associated to the output pads.
181
182 When two link labels with the same name are found in the
183 filtergraph, a link between the corresponding input and output pad is
184 created.
185
186 If an output pad is not labelled, it is linked by default to the first
187 unlabelled input pad of the next filter in the filterchain.
188 For example in the filterchain
189 @example
190 nullsrc, split[L1], [L2]overlay, nullsink
191 @end example
192 the split filter instance has two output pads, and the overlay filter
193 instance two input pads. The first output pad of split is labelled
194 "L1", the first input pad of overlay is labelled "L2", and the second
195 output pad of split is linked to the second input pad of overlay,
196 which are both unlabelled.
197
198 In a filter description, if the input label of the first filter is not
199 specified, "in" is assumed; if the output label of the last filter is not
200 specified, "out" is assumed.
201
202 In a complete filterchain all the unlabelled filter input and output
203 pads must be connected. A filtergraph is considered valid if all the
204 filter input and output pads of all the filterchains are connected.
205
206 Libavfilter will automatically insert @ref{scale} filters where format
207 conversion is required. It is possible to specify swscale flags
208 for those automatically inserted scalers by prepending
209 @code{sws_flags=@var{flags};}
210 to the filtergraph description.
211
212 Here is a BNF description of the filtergraph syntax:
213 @example
214 @var{NAME}             ::= sequence of alphanumeric characters and '_'
215 @var{FILTER_NAME}      ::= @var{NAME}["@@"@var{NAME}]
216 @var{LINKLABEL}        ::= "[" @var{NAME} "]"
217 @var{LINKLABELS}       ::= @var{LINKLABEL} [@var{LINKLABELS}]
218 @var{FILTER_ARGUMENTS} ::= sequence of chars (possibly quoted)
219 @var{FILTER}           ::= [@var{LINKLABELS}] @var{FILTER_NAME} ["=" @var{FILTER_ARGUMENTS}] [@var{LINKLABELS}]
220 @var{FILTERCHAIN}      ::= @var{FILTER} [,@var{FILTERCHAIN}]
221 @var{FILTERGRAPH}      ::= [sws_flags=@var{flags};] @var{FILTERCHAIN} [;@var{FILTERGRAPH}]
222 @end example
223
224 @anchor{filtergraph escaping}
225 @section Notes on filtergraph escaping
226
227 Filtergraph description composition entails several levels of
228 escaping. See @ref{quoting_and_escaping,,the "Quoting and escaping"
229 section in the ffmpeg-utils(1) manual,ffmpeg-utils} for more
230 information about the employed escaping procedure.
231
232 A first level escaping affects the content of each filter option
233 value, which may contain the special character @code{:} used to
234 separate values, or one of the escaping characters @code{\'}.
235
236 A second level escaping affects the whole filter description, which
237 may contain the escaping characters @code{\'} or the special
238 characters @code{[],;} used by the filtergraph description.
239
240 Finally, when you specify a filtergraph on a shell commandline, you
241 need to perform a third level escaping for the shell special
242 characters contained within it.
243
244 For example, consider the following string to be embedded in
245 the @ref{drawtext} filter description @option{text} value:
246 @example
247 this is a 'string': may contain one, or more, special characters
248 @end example
249
250 This string contains the @code{'} special escaping character, and the
251 @code{:} special character, so it needs to be escaped in this way:
252 @example
253 text=this is a \'string\'\: may contain one, or more, special characters
254 @end example
255
256 A second level of escaping is required when embedding the filter
257 description in a filtergraph description, in order to escape all the
258 filtergraph special characters. Thus the example above becomes:
259 @example
260 drawtext=text=this is a \\\'string\\\'\\: may contain one\, or more\, special characters
261 @end example
262 (note that in addition to the @code{\'} escaping special characters,
263 also @code{,} needs to be escaped).
264
265 Finally an additional level of escaping is needed when writing the
266 filtergraph description in a shell command, which depends on the
267 escaping rules of the adopted shell. For example, assuming that
268 @code{\} is special and needs to be escaped with another @code{\}, the
269 previous string will finally result in:
270 @example
271 -vf "drawtext=text=this is a \\\\\\'string\\\\\\'\\\\: may contain one\\, or more\\, special characters"
272 @end example
273
274 @chapter Timeline editing
275
276 Some filters support a generic @option{enable} option. For the filters
277 supporting timeline editing, this option can be set to an expression which is
278 evaluated before sending a frame to the filter. If the evaluation is non-zero,
279 the filter will be enabled, otherwise the frame will be sent unchanged to the
280 next filter in the filtergraph.
281
282 The expression accepts the following values:
283 @table @samp
284 @item t
285 timestamp expressed in seconds, NAN if the input timestamp is unknown
286
287 @item n
288 sequential number of the input frame, starting from 0
289
290 @item pos
291 the position in the file of the input frame, NAN if unknown
292
293 @item w
294 @item h
295 width and height of the input frame if video
296 @end table
297
298 Additionally, these filters support an @option{enable} command that can be used
299 to re-define the expression.
300
301 Like any other filtering option, the @option{enable} option follows the same
302 rules.
303
304 For example, to enable a blur filter (@ref{smartblur}) from 10 seconds to 3
305 minutes, and a @ref{curves} filter starting at 3 seconds:
306 @example
307 smartblur = enable='between(t,10,3*60)',
308 curves    = enable='gte(t,3)' : preset=cross_process
309 @end example
310
311 See @code{ffmpeg -filters} to view which filters have timeline support.
312
313 @c man end FILTERGRAPH DESCRIPTION
314
315 @anchor{commands}
316 @chapter Changing options at runtime with a command
317
318 Some options can be changed during the operation of the filter using
319 a command. These options are marked 'T' on the output of
320 @command{ffmpeg} @option{-h filter=<name of filter>}.
321 The name of the command is the name of the option and the argument is
322 the new value.
323
324 @anchor{framesync}
325 @chapter Options for filters with several inputs (framesync)
326 @c man begin OPTIONS FOR FILTERS WITH SEVERAL INPUTS
327
328 Some filters with several inputs support a common set of options.
329 These options can only be set by name, not with the short notation.
330
331 @table @option
332 @item eof_action
333 The action to take when EOF is encountered on the secondary input; it accepts
334 one of the following values:
335
336 @table @option
337 @item repeat
338 Repeat the last frame (the default).
339 @item endall
340 End both streams.
341 @item pass
342 Pass the main input through.
343 @end table
344
345 @item shortest
346 If set to 1, force the output to terminate when the shortest input
347 terminates. Default value is 0.
348
349 @item repeatlast
350 If set to 1, force the filter to extend the last frame of secondary streams
351 until the end of the primary stream. A value of 0 disables this behavior.
352 Default value is 1.
353 @end table
354
355 @c man end OPTIONS FOR FILTERS WITH SEVERAL INPUTS
356
357 @chapter Audio Filters
358 @c man begin AUDIO FILTERS
359
360 When you configure your FFmpeg build, you can disable any of the
361 existing filters using @code{--disable-filters}.
362 The configure output will show the audio filters included in your
363 build.
364
365 Below is a description of the currently available audio filters.
366
367 @section acompressor
368
369 A compressor is mainly used to reduce the dynamic range of a signal.
370 Especially modern music is mostly compressed at a high ratio to
371 improve the overall loudness. It's done to get the highest attention
372 of a listener, "fatten" the sound and bring more "power" to the track.
373 If a signal is compressed too much it may sound dull or "dead"
374 afterwards or it may start to "pump" (which could be a powerful effect
375 but can also destroy a track completely).
376 The right compression is the key to reach a professional sound and is
377 the high art of mixing and mastering. Because of its complex settings
378 it may take a long time to get the right feeling for this kind of effect.
379
380 Compression is done by detecting the volume above a chosen level
381 @code{threshold} and dividing it by the factor set with @code{ratio}.
382 So if you set the threshold to -12dB and your signal reaches -6dB a ratio
383 of 2:1 will result in a signal at -9dB. Because an exact manipulation of
384 the signal would cause distortion of the waveform the reduction can be
385 levelled over the time. This is done by setting "Attack" and "Release".
386 @code{attack} determines how long the signal has to rise above the threshold
387 before any reduction will occur and @code{release} sets the time the signal
388 has to fall below the threshold to reduce the reduction again. Shorter signals
389 than the chosen attack time will be left untouched.
390 The overall reduction of the signal can be made up afterwards with the
391 @code{makeup} setting. So compressing the peaks of a signal about 6dB and
392 raising the makeup to this level results in a signal twice as loud than the
393 source. To gain a softer entry in the compression the @code{knee} flattens the
394 hard edge at the threshold in the range of the chosen decibels.
395
396 The filter accepts the following options:
397
398 @table @option
399 @item level_in
400 Set input gain. Default is 1. Range is between 0.015625 and 64.
401
402 @item mode
403 Set mode of compressor operation. Can be @code{upward} or @code{downward}.
404 Default is @code{downward}.
405
406 @item threshold
407 If a signal of stream rises above this level it will affect the gain
408 reduction.
409 By default it is 0.125. Range is between 0.00097563 and 1.
410
411 @item ratio
412 Set a ratio by which the signal is reduced. 1:2 means that if the level
413 rose 4dB above the threshold, it will be only 2dB above after the reduction.
414 Default is 2. Range is between 1 and 20.
415
416 @item attack
417 Amount of milliseconds the signal has to rise above the threshold before gain
418 reduction starts. Default is 20. Range is between 0.01 and 2000.
419
420 @item release
421 Amount of milliseconds the signal has to fall below the threshold before
422 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
423
424 @item makeup
425 Set the amount by how much signal will be amplified after processing.
426 Default is 1. Range is from 1 to 64.
427
428 @item knee
429 Curve the sharp knee around the threshold to enter gain reduction more softly.
430 Default is 2.82843. Range is between 1 and 8.
431
432 @item link
433 Choose if the @code{average} level between all channels of input stream
434 or the louder(@code{maximum}) channel of input stream affects the
435 reduction. Default is @code{average}.
436
437 @item detection
438 Should the exact signal be taken in case of @code{peak} or an RMS one in case
439 of @code{rms}. Default is @code{rms} which is mostly smoother.
440
441 @item mix
442 How much to use compressed signal in output. Default is 1.
443 Range is between 0 and 1.
444 @end table
445
446 @subsection Commands
447
448 This filter supports the all above options as @ref{commands}.
449
450 @section acontrast
451 Simple audio dynamic range compression/expansion filter.
452
453 The filter accepts the following options:
454
455 @table @option
456 @item contrast
457 Set contrast. Default is 33. Allowed range is between 0 and 100.
458 @end table
459
460 @section acopy
461
462 Copy the input audio source unchanged to the output. This is mainly useful for
463 testing purposes.
464
465 @section acrossfade
466
467 Apply cross fade from one input audio stream to another input audio stream.
468 The cross fade is applied for specified duration near the end of first stream.
469
470 The filter accepts the following options:
471
472 @table @option
473 @item nb_samples, ns
474 Specify the number of samples for which the cross fade effect has to last.
475 At the end of the cross fade effect the first input audio will be completely
476 silent. Default is 44100.
477
478 @item duration, d
479 Specify the duration of the cross fade effect. See
480 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
481 for the accepted syntax.
482 By default the duration is determined by @var{nb_samples}.
483 If set this option is used instead of @var{nb_samples}.
484
485 @item overlap, o
486 Should first stream end overlap with second stream start. Default is enabled.
487
488 @item curve1
489 Set curve for cross fade transition for first stream.
490
491 @item curve2
492 Set curve for cross fade transition for second stream.
493
494 For description of available curve types see @ref{afade} filter description.
495 @end table
496
497 @subsection Examples
498
499 @itemize
500 @item
501 Cross fade from one input to another:
502 @example
503 ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:c1=exp:c2=exp output.flac
504 @end example
505
506 @item
507 Cross fade from one input to another but without overlapping:
508 @example
509 ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:o=0:c1=exp:c2=exp output.flac
510 @end example
511 @end itemize
512
513 @section acrossover
514 Split audio stream into several bands.
515
516 This filter splits audio stream into two or more frequency ranges.
517 Summing all streams back will give flat output.
518
519 The filter accepts the following options:
520
521 @table @option
522 @item split
523 Set split frequencies. Those must be positive and increasing.
524
525 @item order
526 Set filter order, can be @var{2nd}, @var{4th} or @var{8th}.
527 Default is @var{4th}.
528 @end table
529
530 @section acrusher
531
532 Reduce audio bit resolution.
533
534 This filter is bit crusher with enhanced functionality. A bit crusher
535 is used to audibly reduce number of bits an audio signal is sampled
536 with. This doesn't change the bit depth at all, it just produces the
537 effect. Material reduced in bit depth sounds more harsh and "digital".
538 This filter is able to even round to continuous values instead of discrete
539 bit depths.
540 Additionally it has a D/C offset which results in different crushing of
541 the lower and the upper half of the signal.
542 An Anti-Aliasing setting is able to produce "softer" crushing sounds.
543
544 Another feature of this filter is the logarithmic mode.
545 This setting switches from linear distances between bits to logarithmic ones.
546 The result is a much more "natural" sounding crusher which doesn't gate low
547 signals for example. The human ear has a logarithmic perception,
548 so this kind of crushing is much more pleasant.
549 Logarithmic crushing is also able to get anti-aliased.
550
551 The filter accepts the following options:
552
553 @table @option
554 @item level_in
555 Set level in.
556
557 @item level_out
558 Set level out.
559
560 @item bits
561 Set bit reduction.
562
563 @item mix
564 Set mixing amount.
565
566 @item mode
567 Can be linear: @code{lin} or logarithmic: @code{log}.
568
569 @item dc
570 Set DC.
571
572 @item aa
573 Set anti-aliasing.
574
575 @item samples
576 Set sample reduction.
577
578 @item lfo
579 Enable LFO. By default disabled.
580
581 @item lforange
582 Set LFO range.
583
584 @item lforate
585 Set LFO rate.
586 @end table
587
588 @section acue
589
590 Delay audio filtering until a given wallclock timestamp. See the @ref{cue}
591 filter.
592
593 @section adeclick
594 Remove impulsive noise from input audio.
595
596 Samples detected as impulsive noise are replaced by interpolated samples using
597 autoregressive modelling.
598
599 @table @option
600 @item w
601 Set window size, in milliseconds. Allowed range is from @code{10} to
602 @code{100}. Default value is @code{55} milliseconds.
603 This sets size of window which will be processed at once.
604
605 @item o
606 Set window overlap, in percentage of window size. Allowed range is from
607 @code{50} to @code{95}. Default value is @code{75} percent.
608 Setting this to a very high value increases impulsive noise removal but makes
609 whole process much slower.
610
611 @item a
612 Set autoregression order, in percentage of window size. Allowed range is from
613 @code{0} to @code{25}. Default value is @code{2} percent. This option also
614 controls quality of interpolated samples using neighbour good samples.
615
616 @item t
617 Set threshold value. Allowed range is from @code{1} to @code{100}.
618 Default value is @code{2}.
619 This controls the strength of impulsive noise which is going to be removed.
620 The lower value, the more samples will be detected as impulsive noise.
621
622 @item b
623 Set burst fusion, in percentage of window size. Allowed range is @code{0} to
624 @code{10}. Default value is @code{2}.
625 If any two samples detected as noise are spaced less than this value then any
626 sample between those two samples will be also detected as noise.
627
628 @item m
629 Set overlap method.
630
631 It accepts the following values:
632 @table @option
633 @item a
634 Select overlap-add method. Even not interpolated samples are slightly
635 changed with this method.
636
637 @item s
638 Select overlap-save method. Not interpolated samples remain unchanged.
639 @end table
640
641 Default value is @code{a}.
642 @end table
643
644 @section adeclip
645 Remove clipped samples from input audio.
646
647 Samples detected as clipped are replaced by interpolated samples using
648 autoregressive modelling.
649
650 @table @option
651 @item w
652 Set window size, in milliseconds. Allowed range is from @code{10} to @code{100}.
653 Default value is @code{55} milliseconds.
654 This sets size of window which will be processed at once.
655
656 @item o
657 Set window overlap, in percentage of window size. Allowed range is from @code{50}
658 to @code{95}. Default value is @code{75} percent.
659
660 @item a
661 Set autoregression order, in percentage of window size. Allowed range is from
662 @code{0} to @code{25}. Default value is @code{8} percent. This option also controls
663 quality of interpolated samples using neighbour good samples.
664
665 @item t
666 Set threshold value. Allowed range is from @code{1} to @code{100}.
667 Default value is @code{10}. Higher values make clip detection less aggressive.
668
669 @item n
670 Set size of histogram used to detect clips. Allowed range is from @code{100} to @code{9999}.
671 Default value is @code{1000}. Higher values make clip detection less aggressive.
672
673 @item m
674 Set overlap method.
675
676 It accepts the following values:
677 @table @option
678 @item a
679 Select overlap-add method. Even not interpolated samples are slightly changed
680 with this method.
681
682 @item s
683 Select overlap-save method. Not interpolated samples remain unchanged.
684 @end table
685
686 Default value is @code{a}.
687 @end table
688
689 @section adelay
690
691 Delay one or more audio channels.
692
693 Samples in delayed channel are filled with silence.
694
695 The filter accepts the following option:
696
697 @table @option
698 @item delays
699 Set list of delays in milliseconds for each channel separated by '|'.
700 Unused delays will be silently ignored. If number of given delays is
701 smaller than number of channels all remaining channels will not be delayed.
702 If you want to delay exact number of samples, append 'S' to number.
703 If you want instead to delay in seconds, append 's' to number.
704
705 @item all
706 Use last set delay for all remaining channels. By default is disabled.
707 This option if enabled changes how option @code{delays} is interpreted.
708 @end table
709
710 @subsection Examples
711
712 @itemize
713 @item
714 Delay first channel by 1.5 seconds, the third channel by 0.5 seconds and leave
715 the second channel (and any other channels that may be present) unchanged.
716 @example
717 adelay=1500|0|500
718 @end example
719
720 @item
721 Delay second channel by 500 samples, the third channel by 700 samples and leave
722 the first channel (and any other channels that may be present) unchanged.
723 @example
724 adelay=0|500S|700S
725 @end example
726
727 @item
728 Delay all channels by same number of samples:
729 @example
730 adelay=delays=64S:all=1
731 @end example
732 @end itemize
733
734 @section aderivative, aintegral
735
736 Compute derivative/integral of audio stream.
737
738 Applying both filters one after another produces original audio.
739
740 @section aecho
741
742 Apply echoing to the input audio.
743
744 Echoes are reflected sound and can occur naturally amongst mountains
745 (and sometimes large buildings) when talking or shouting; digital echo
746 effects emulate this behaviour and are often used to help fill out the
747 sound of a single instrument or vocal. The time difference between the
748 original signal and the reflection is the @code{delay}, and the
749 loudness of the reflected signal is the @code{decay}.
750 Multiple echoes can have different delays and decays.
751
752 A description of the accepted parameters follows.
753
754 @table @option
755 @item in_gain
756 Set input gain of reflected signal. Default is @code{0.6}.
757
758 @item out_gain
759 Set output gain of reflected signal. Default is @code{0.3}.
760
761 @item delays
762 Set list of time intervals in milliseconds between original signal and reflections
763 separated by '|'. Allowed range for each @code{delay} is @code{(0 - 90000.0]}.
764 Default is @code{1000}.
765
766 @item decays
767 Set list of loudness of reflected signals separated by '|'.
768 Allowed range for each @code{decay} is @code{(0 - 1.0]}.
769 Default is @code{0.5}.
770 @end table
771
772 @subsection Examples
773
774 @itemize
775 @item
776 Make it sound as if there are twice as many instruments as are actually playing:
777 @example
778 aecho=0.8:0.88:60:0.4
779 @end example
780
781 @item
782 If delay is very short, then it sounds like a (metallic) robot playing music:
783 @example
784 aecho=0.8:0.88:6:0.4
785 @end example
786
787 @item
788 A longer delay will sound like an open air concert in the mountains:
789 @example
790 aecho=0.8:0.9:1000:0.3
791 @end example
792
793 @item
794 Same as above but with one more mountain:
795 @example
796 aecho=0.8:0.9:1000|1800:0.3|0.25
797 @end example
798 @end itemize
799
800 @section aemphasis
801 Audio emphasis filter creates or restores material directly taken from LPs or
802 emphased CDs with different filter curves. E.g. to store music on vinyl the
803 signal has to be altered by a filter first to even out the disadvantages of
804 this recording medium.
805 Once the material is played back the inverse filter has to be applied to
806 restore the distortion of the frequency response.
807
808 The filter accepts the following options:
809
810 @table @option
811 @item level_in
812 Set input gain.
813
814 @item level_out
815 Set output gain.
816
817 @item mode
818 Set filter mode. For restoring material use @code{reproduction} mode, otherwise
819 use @code{production} mode. Default is @code{reproduction} mode.
820
821 @item type
822 Set filter type. Selects medium. Can be one of the following:
823
824 @table @option
825 @item col
826 select Columbia.
827 @item emi
828 select EMI.
829 @item bsi
830 select BSI (78RPM).
831 @item riaa
832 select RIAA.
833 @item cd
834 select Compact Disc (CD).
835 @item 50fm
836 select 50µs (FM).
837 @item 75fm
838 select 75µs (FM).
839 @item 50kf
840 select 50µs (FM-KF).
841 @item 75kf
842 select 75µs (FM-KF).
843 @end table
844 @end table
845
846 @section aeval
847
848 Modify an audio signal according to the specified expressions.
849
850 This filter accepts one or more expressions (one for each channel),
851 which are evaluated and used to modify a corresponding audio signal.
852
853 It accepts the following parameters:
854
855 @table @option
856 @item exprs
857 Set the '|'-separated expressions list for each separate channel. If
858 the number of input channels is greater than the number of
859 expressions, the last specified expression is used for the remaining
860 output channels.
861
862 @item channel_layout, c
863 Set output channel layout. If not specified, the channel layout is
864 specified by the number of expressions. If set to @samp{same}, it will
865 use by default the same input channel layout.
866 @end table
867
868 Each expression in @var{exprs} can contain the following constants and functions:
869
870 @table @option
871 @item ch
872 channel number of the current expression
873
874 @item n
875 number of the evaluated sample, starting from 0
876
877 @item s
878 sample rate
879
880 @item t
881 time of the evaluated sample expressed in seconds
882
883 @item nb_in_channels
884 @item nb_out_channels
885 input and output number of channels
886
887 @item val(CH)
888 the value of input channel with number @var{CH}
889 @end table
890
891 Note: this filter is slow. For faster processing you should use a
892 dedicated filter.
893
894 @subsection Examples
895
896 @itemize
897 @item
898 Half volume:
899 @example
900 aeval=val(ch)/2:c=same
901 @end example
902
903 @item
904 Invert phase of the second channel:
905 @example
906 aeval=val(0)|-val(1)
907 @end example
908 @end itemize
909
910 @anchor{afade}
911 @section afade
912
913 Apply fade-in/out effect to input audio.
914
915 A description of the accepted parameters follows.
916
917 @table @option
918 @item type, t
919 Specify the effect type, can be either @code{in} for fade-in, or
920 @code{out} for a fade-out effect. Default is @code{in}.
921
922 @item start_sample, ss
923 Specify the number of the start sample for starting to apply the fade
924 effect. Default is 0.
925
926 @item nb_samples, ns
927 Specify the number of samples for which the fade effect has to last. At
928 the end of the fade-in effect the output audio will have the same
929 volume as the input audio, at the end of the fade-out transition
930 the output audio will be silence. Default is 44100.
931
932 @item start_time, st
933 Specify the start time of the fade effect. Default is 0.
934 The value must be specified as a time duration; see
935 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
936 for the accepted syntax.
937 If set this option is used instead of @var{start_sample}.
938
939 @item duration, d
940 Specify the duration of the fade effect. See
941 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
942 for the accepted syntax.
943 At the end of the fade-in effect the output audio will have the same
944 volume as the input audio, at the end of the fade-out transition
945 the output audio will be silence.
946 By default the duration is determined by @var{nb_samples}.
947 If set this option is used instead of @var{nb_samples}.
948
949 @item curve
950 Set curve for fade transition.
951
952 It accepts the following values:
953 @table @option
954 @item tri
955 select triangular, linear slope (default)
956 @item qsin
957 select quarter of sine wave
958 @item hsin
959 select half of sine wave
960 @item esin
961 select exponential sine wave
962 @item log
963 select logarithmic
964 @item ipar
965 select inverted parabola
966 @item qua
967 select quadratic
968 @item cub
969 select cubic
970 @item squ
971 select square root
972 @item cbr
973 select cubic root
974 @item par
975 select parabola
976 @item exp
977 select exponential
978 @item iqsin
979 select inverted quarter of sine wave
980 @item ihsin
981 select inverted half of sine wave
982 @item dese
983 select double-exponential seat
984 @item desi
985 select double-exponential sigmoid
986 @item losi
987 select logistic sigmoid
988 @item nofade
989 no fade applied
990 @end table
991 @end table
992
993 @subsection Examples
994
995 @itemize
996 @item
997 Fade in first 15 seconds of audio:
998 @example
999 afade=t=in:ss=0:d=15
1000 @end example
1001
1002 @item
1003 Fade out last 25 seconds of a 900 seconds audio:
1004 @example
1005 afade=t=out:st=875:d=25
1006 @end example
1007 @end itemize
1008
1009 @section afftdn
1010 Denoise audio samples with FFT.
1011
1012 A description of the accepted parameters follows.
1013
1014 @table @option
1015 @item nr
1016 Set the noise reduction in dB, allowed range is 0.01 to 97.
1017 Default value is 12 dB.
1018
1019 @item nf
1020 Set the noise floor in dB, allowed range is -80 to -20.
1021 Default value is -50 dB.
1022
1023 @item nt
1024 Set the noise type.
1025
1026 It accepts the following values:
1027 @table @option
1028 @item w
1029 Select white noise.
1030
1031 @item v
1032 Select vinyl noise.
1033
1034 @item s
1035 Select shellac noise.
1036
1037 @item c
1038 Select custom noise, defined in @code{bn} option.
1039
1040 Default value is white noise.
1041 @end table
1042
1043 @item bn
1044 Set custom band noise for every one of 15 bands.
1045 Bands are separated by ' ' or '|'.
1046
1047 @item rf
1048 Set the residual floor in dB, allowed range is -80 to -20.
1049 Default value is -38 dB.
1050
1051 @item tn
1052 Enable noise tracking. By default is disabled.
1053 With this enabled, noise floor is automatically adjusted.
1054
1055 @item tr
1056 Enable residual tracking. By default is disabled.
1057
1058 @item om
1059 Set the output mode.
1060
1061 It accepts the following values:
1062 @table @option
1063 @item i
1064 Pass input unchanged.
1065
1066 @item o
1067 Pass noise filtered out.
1068
1069 @item n
1070 Pass only noise.
1071
1072 Default value is @var{o}.
1073 @end table
1074 @end table
1075
1076 @subsection Commands
1077
1078 This filter supports the following commands:
1079 @table @option
1080 @item sample_noise, sn
1081 Start or stop measuring noise profile.
1082 Syntax for the command is : "start" or "stop" string.
1083 After measuring noise profile is stopped it will be
1084 automatically applied in filtering.
1085
1086 @item noise_reduction, nr
1087 Change noise reduction. Argument is single float number.
1088 Syntax for the command is : "@var{noise_reduction}"
1089
1090 @item noise_floor, nf
1091 Change noise floor. Argument is single float number.
1092 Syntax for the command is : "@var{noise_floor}"
1093
1094 @item output_mode, om
1095 Change output mode operation.
1096 Syntax for the command is : "i", "o" or "n" string.
1097 @end table
1098
1099 @section afftfilt
1100 Apply arbitrary expressions to samples in frequency domain.
1101
1102 @table @option
1103 @item real
1104 Set frequency domain real expression for each separate channel separated
1105 by '|'. Default is "re".
1106 If the number of input channels is greater than the number of
1107 expressions, the last specified expression is used for the remaining
1108 output channels.
1109
1110 @item imag
1111 Set frequency domain imaginary expression for each separate channel
1112 separated by '|'. Default is "im".
1113
1114 Each expression in @var{real} and @var{imag} can contain the following
1115 constants and functions:
1116
1117 @table @option
1118 @item sr
1119 sample rate
1120
1121 @item b
1122 current frequency bin number
1123
1124 @item nb
1125 number of available bins
1126
1127 @item ch
1128 channel number of the current expression
1129
1130 @item chs
1131 number of channels
1132
1133 @item pts
1134 current frame pts
1135
1136 @item re
1137 current real part of frequency bin of current channel
1138
1139 @item im
1140 current imaginary part of frequency bin of current channel
1141
1142 @item real(b, ch)
1143 Return the value of real part of frequency bin at location (@var{bin},@var{channel})
1144
1145 @item imag(b, ch)
1146 Return the value of imaginary part of frequency bin at location (@var{bin},@var{channel})
1147 @end table
1148
1149 @item win_size
1150 Set window size. Allowed range is from 16 to 131072.
1151 Default is @code{4096}
1152
1153 @item win_func
1154 Set window function. Default is @code{hann}.
1155
1156 @item overlap
1157 Set window overlap. If set to 1, the recommended overlap for selected
1158 window function will be picked. Default is @code{0.75}.
1159 @end table
1160
1161 @subsection Examples
1162
1163 @itemize
1164 @item
1165 Leave almost only low frequencies in audio:
1166 @example
1167 afftfilt="'real=re * (1-clip((b/nb)*b,0,1))':imag='im * (1-clip((b/nb)*b,0,1))'"
1168 @end example
1169
1170 @item
1171 Apply robotize effect:
1172 @example
1173 afftfilt="real='hypot(re,im)*sin(0)':imag='hypot(re,im)*cos(0)':win_size=512:overlap=0.75"
1174 @end example
1175
1176 @item
1177 Apply whisper effect:
1178 @example
1179 afftfilt="real='hypot(re,im)*cos((random(0)*2-1)*2*3.14)':imag='hypot(re,im)*sin((random(1)*2-1)*2*3.14)':win_size=128:overlap=0.8"
1180 @end example
1181 @end itemize
1182
1183 @anchor{afir}
1184 @section afir
1185
1186 Apply an arbitrary Finite Impulse Response filter.
1187
1188 This filter is designed for applying long FIR filters,
1189 up to 60 seconds long.
1190
1191 It can be used as component for digital crossover filters,
1192 room equalization, cross talk cancellation, wavefield synthesis,
1193 auralization, ambiophonics, ambisonics and spatialization.
1194
1195 This filter uses the streams higher than first one as FIR coefficients.
1196 If the non-first stream holds a single channel, it will be used
1197 for all input channels in the first stream, otherwise
1198 the number of channels in the non-first stream must be same as
1199 the number of channels in the first stream.
1200
1201 It accepts the following parameters:
1202
1203 @table @option
1204 @item dry
1205 Set dry gain. This sets input gain.
1206
1207 @item wet
1208 Set wet gain. This sets final output gain.
1209
1210 @item length
1211 Set Impulse Response filter length. Default is 1, which means whole IR is processed.
1212
1213 @item gtype
1214 Enable applying gain measured from power of IR.
1215
1216 Set which approach to use for auto gain measurement.
1217
1218 @table @option
1219 @item none
1220 Do not apply any gain.
1221
1222 @item peak
1223 select peak gain, very conservative approach. This is default value.
1224
1225 @item dc
1226 select DC gain, limited application.
1227
1228 @item gn
1229 select gain to noise approach, this is most popular one.
1230 @end table
1231
1232 @item irgain
1233 Set gain to be applied to IR coefficients before filtering.
1234 Allowed range is 0 to 1. This gain is applied after any gain applied with @var{gtype} option.
1235
1236 @item irfmt
1237 Set format of IR stream. Can be @code{mono} or @code{input}.
1238 Default is @code{input}.
1239
1240 @item maxir
1241 Set max allowed Impulse Response filter duration in seconds. Default is 30 seconds.
1242 Allowed range is 0.1 to 60 seconds.
1243
1244 @item response
1245 Show IR frequency response, magnitude(magenta), phase(green) and group delay(yellow) in additional video stream.
1246 By default it is disabled.
1247
1248 @item channel
1249 Set for which IR channel to display frequency response. By default is first channel
1250 displayed. This option is used only when @var{response} is enabled.
1251
1252 @item size
1253 Set video stream size. This option is used only when @var{response} is enabled.
1254
1255 @item rate
1256 Set video stream frame rate. This option is used only when @var{response} is enabled.
1257
1258 @item minp
1259 Set minimal partition size used for convolution. Default is @var{8192}.
1260 Allowed range is from @var{1} to @var{32768}.
1261 Lower values decreases latency at cost of higher CPU usage.
1262
1263 @item maxp
1264 Set maximal partition size used for convolution. Default is @var{8192}.
1265 Allowed range is from @var{8} to @var{32768}.
1266 Lower values may increase CPU usage.
1267
1268 @item nbirs
1269 Set number of input impulse responses streams which will be switchable at runtime.
1270 Allowed range is from @var{1} to @var{32}. Default is @var{1}.
1271
1272 @item ir
1273 Set IR stream which will be used for convolution, starting from @var{0}, should always be
1274 lower than supplied value by @code{nbirs} option. Default is @var{0}.
1275 This option can be changed at runtime via @ref{commands}.
1276 @end table
1277
1278 @subsection Examples
1279
1280 @itemize
1281 @item
1282 Apply reverb to stream using mono IR file as second input, complete command using ffmpeg:
1283 @example
1284 ffmpeg -i input.wav -i middle_tunnel_1way_mono.wav -lavfi afir output.wav
1285 @end example
1286 @end itemize
1287
1288 @anchor{aformat}
1289 @section aformat
1290
1291 Set output format constraints for the input audio. The framework will
1292 negotiate the most appropriate format to minimize conversions.
1293
1294 It accepts the following parameters:
1295 @table @option
1296
1297 @item sample_fmts, f
1298 A '|'-separated list of requested sample formats.
1299
1300 @item sample_rates, r
1301 A '|'-separated list of requested sample rates.
1302
1303 @item channel_layouts, cl
1304 A '|'-separated list of requested channel layouts.
1305
1306 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1307 for the required syntax.
1308 @end table
1309
1310 If a parameter is omitted, all values are allowed.
1311
1312 Force the output to either unsigned 8-bit or signed 16-bit stereo
1313 @example
1314 aformat=sample_fmts=u8|s16:channel_layouts=stereo
1315 @end example
1316
1317 @section agate
1318
1319 A gate is mainly used to reduce lower parts of a signal. This kind of signal
1320 processing reduces disturbing noise between useful signals.
1321
1322 Gating is done by detecting the volume below a chosen level @var{threshold}
1323 and dividing it by the factor set with @var{ratio}. The bottom of the noise
1324 floor is set via @var{range}. Because an exact manipulation of the signal
1325 would cause distortion of the waveform the reduction can be levelled over
1326 time. This is done by setting @var{attack} and @var{release}.
1327
1328 @var{attack} determines how long the signal has to fall below the threshold
1329 before any reduction will occur and @var{release} sets the time the signal
1330 has to rise above the threshold to reduce the reduction again.
1331 Shorter signals than the chosen attack time will be left untouched.
1332
1333 @table @option
1334 @item level_in
1335 Set input level before filtering.
1336 Default is 1. Allowed range is from 0.015625 to 64.
1337
1338 @item mode
1339 Set the mode of operation. Can be @code{upward} or @code{downward}.
1340 Default is @code{downward}. If set to @code{upward} mode, higher parts of signal
1341 will be amplified, expanding dynamic range in upward direction.
1342 Otherwise, in case of @code{downward} lower parts of signal will be reduced.
1343
1344 @item range
1345 Set the level of gain reduction when the signal is below the threshold.
1346 Default is 0.06125. Allowed range is from 0 to 1.
1347 Setting this to 0 disables reduction and then filter behaves like expander.
1348
1349 @item threshold
1350 If a signal rises above this level the gain reduction is released.
1351 Default is 0.125. Allowed range is from 0 to 1.
1352
1353 @item ratio
1354 Set a ratio by which the signal is reduced.
1355 Default is 2. Allowed range is from 1 to 9000.
1356
1357 @item attack
1358 Amount of milliseconds the signal has to rise above the threshold before gain
1359 reduction stops.
1360 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
1361
1362 @item release
1363 Amount of milliseconds the signal has to fall below the threshold before the
1364 reduction is increased again. Default is 250 milliseconds.
1365 Allowed range is from 0.01 to 9000.
1366
1367 @item makeup
1368 Set amount of amplification of signal after processing.
1369 Default is 1. Allowed range is from 1 to 64.
1370
1371 @item knee
1372 Curve the sharp knee around the threshold to enter gain reduction more softly.
1373 Default is 2.828427125. Allowed range is from 1 to 8.
1374
1375 @item detection
1376 Choose if exact signal should be taken for detection or an RMS like one.
1377 Default is @code{rms}. Can be @code{peak} or @code{rms}.
1378
1379 @item link
1380 Choose if the average level between all channels or the louder channel affects
1381 the reduction.
1382 Default is @code{average}. Can be @code{average} or @code{maximum}.
1383 @end table
1384
1385 @section aiir
1386
1387 Apply an arbitrary Infinite Impulse Response filter.
1388
1389 It accepts the following parameters:
1390
1391 @table @option
1392 @item zeros, z
1393 Set numerator/zeros coefficients.
1394
1395 @item poles, p
1396 Set denominator/poles coefficients.
1397
1398 @item gains, k
1399 Set channels gains.
1400
1401 @item dry_gain
1402 Set input gain.
1403
1404 @item wet_gain
1405 Set output gain.
1406
1407 @item format, f
1408 Set coefficients format.
1409
1410 @table @samp
1411 @item tf
1412 digital transfer function
1413 @item zp
1414 Z-plane zeros/poles, cartesian (default)
1415 @item pr
1416 Z-plane zeros/poles, polar radians
1417 @item pd
1418 Z-plane zeros/poles, polar degrees
1419 @item sp
1420 S-plane zeros/poles
1421 @end table
1422
1423 @item process, r
1424 Set kind of processing.
1425 Can be @code{d} - direct or @code{s} - serial cascading. Default is @code{s}.
1426
1427 @item precision, e
1428 Set filtering precision.
1429
1430 @table @samp
1431 @item dbl
1432 double-precision floating-point (default)
1433 @item flt
1434 single-precision floating-point
1435 @item i32
1436 32-bit integers
1437 @item i16
1438 16-bit integers
1439 @end table
1440
1441 @item normalize, n
1442 Normalize filter coefficients, by default is enabled.
1443 Enabling it will normalize magnitude response at DC to 0dB.
1444
1445 @item mix
1446 How much to use filtered signal in output. Default is 1.
1447 Range is between 0 and 1.
1448
1449 @item response
1450 Show IR frequency response, magnitude(magenta), phase(green) and group delay(yellow) in additional video stream.
1451 By default it is disabled.
1452
1453 @item channel
1454 Set for which IR channel to display frequency response. By default is first channel
1455 displayed. This option is used only when @var{response} is enabled.
1456
1457 @item size
1458 Set video stream size. This option is used only when @var{response} is enabled.
1459 @end table
1460
1461 Coefficients in @code{tf} format are separated by spaces and are in ascending
1462 order.
1463
1464 Coefficients in @code{zp} format are separated by spaces and order of coefficients
1465 doesn't matter. Coefficients in @code{zp} format are complex numbers with @var{i}
1466 imaginary unit.
1467
1468 Different coefficients and gains can be provided for every channel, in such case
1469 use '|' to separate coefficients or gains. Last provided coefficients will be
1470 used for all remaining channels.
1471
1472 @subsection Examples
1473
1474 @itemize
1475 @item
1476 Apply 2 pole elliptic notch at around 5000Hz for 48000 Hz sample rate:
1477 @example
1478 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
1479 @end example
1480
1481 @item
1482 Same as above but in @code{zp} format:
1483 @example
1484 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
1485 @end example
1486 @end itemize
1487
1488 @section alimiter
1489
1490 The limiter prevents an input signal from rising over a desired threshold.
1491 This limiter uses lookahead technology to prevent your signal from distorting.
1492 It means that there is a small delay after the signal is processed. Keep in mind
1493 that the delay it produces is the attack time you set.
1494
1495 The filter accepts the following options:
1496
1497 @table @option
1498 @item level_in
1499 Set input gain. Default is 1.
1500
1501 @item level_out
1502 Set output gain. Default is 1.
1503
1504 @item limit
1505 Don't let signals above this level pass the limiter. Default is 1.
1506
1507 @item attack
1508 The limiter will reach its attenuation level in this amount of time in
1509 milliseconds. Default is 5 milliseconds.
1510
1511 @item release
1512 Come back from limiting to attenuation 1.0 in this amount of milliseconds.
1513 Default is 50 milliseconds.
1514
1515 @item asc
1516 When gain reduction is always needed ASC takes care of releasing to an
1517 average reduction level rather than reaching a reduction of 0 in the release
1518 time.
1519
1520 @item asc_level
1521 Select how much the release time is affected by ASC, 0 means nearly no changes
1522 in release time while 1 produces higher release times.
1523
1524 @item level
1525 Auto level output signal. Default is enabled.
1526 This normalizes audio back to 0dB if enabled.
1527 @end table
1528
1529 Depending on picked setting it is recommended to upsample input 2x or 4x times
1530 with @ref{aresample} before applying this filter.
1531
1532 @section allpass
1533
1534 Apply a two-pole all-pass filter with central frequency (in Hz)
1535 @var{frequency}, and filter-width @var{width}.
1536 An all-pass filter changes the audio's frequency to phase relationship
1537 without changing its frequency to amplitude relationship.
1538
1539 The filter accepts the following options:
1540
1541 @table @option
1542 @item frequency, f
1543 Set frequency in Hz.
1544
1545 @item width_type, t
1546 Set method to specify band-width of filter.
1547 @table @option
1548 @item h
1549 Hz
1550 @item q
1551 Q-Factor
1552 @item o
1553 octave
1554 @item s
1555 slope
1556 @item k
1557 kHz
1558 @end table
1559
1560 @item width, w
1561 Specify the band-width of a filter in width_type units.
1562
1563 @item mix, m
1564 How much to use filtered signal in output. Default is 1.
1565 Range is between 0 and 1.
1566
1567 @item channels, c
1568 Specify which channels to filter, by default all available are filtered.
1569
1570 @item normalize, n
1571 Normalize biquad coefficients, by default is disabled.
1572 Enabling it will normalize magnitude response at DC to 0dB.
1573
1574 @item order, o
1575 Set the filter order, can be 1 or 2. Default is 2.
1576 @end table
1577
1578 @subsection Commands
1579
1580 This filter supports the following commands:
1581 @table @option
1582 @item frequency, f
1583 Change allpass frequency.
1584 Syntax for the command is : "@var{frequency}"
1585
1586 @item width_type, t
1587 Change allpass width_type.
1588 Syntax for the command is : "@var{width_type}"
1589
1590 @item width, w
1591 Change allpass width.
1592 Syntax for the command is : "@var{width}"
1593
1594 @item mix, m
1595 Change allpass mix.
1596 Syntax for the command is : "@var{mix}"
1597 @end table
1598
1599 @section aloop
1600
1601 Loop audio samples.
1602
1603 The filter accepts the following options:
1604
1605 @table @option
1606 @item loop
1607 Set the number of loops. Setting this value to -1 will result in infinite loops.
1608 Default is 0.
1609
1610 @item size
1611 Set maximal number of samples. Default is 0.
1612
1613 @item start
1614 Set first sample of loop. Default is 0.
1615 @end table
1616
1617 @anchor{amerge}
1618 @section amerge
1619
1620 Merge two or more audio streams into a single multi-channel stream.
1621
1622 The filter accepts the following options:
1623
1624 @table @option
1625
1626 @item inputs
1627 Set the number of inputs. Default is 2.
1628
1629 @end table
1630
1631 If the channel layouts of the inputs are disjoint, and therefore compatible,
1632 the channel layout of the output will be set accordingly and the channels
1633 will be reordered as necessary. If the channel layouts of the inputs are not
1634 disjoint, the output will have all the channels of the first input then all
1635 the channels of the second input, in that order, and the channel layout of
1636 the output will be the default value corresponding to the total number of
1637 channels.
1638
1639 For example, if the first input is in 2.1 (FL+FR+LF) and the second input
1640 is FC+BL+BR, then the output will be in 5.1, with the channels in the
1641 following order: a1, a2, b1, a3, b2, b3 (a1 is the first channel of the
1642 first input, b1 is the first channel of the second input).
1643
1644 On the other hand, if both input are in stereo, the output channels will be
1645 in the default order: a1, a2, b1, b2, and the channel layout will be
1646 arbitrarily set to 4.0, which may or may not be the expected value.
1647
1648 All inputs must have the same sample rate, and format.
1649
1650 If inputs do not have the same duration, the output will stop with the
1651 shortest.
1652
1653 @subsection Examples
1654
1655 @itemize
1656 @item
1657 Merge two mono files into a stereo stream:
1658 @example
1659 amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
1660 @end example
1661
1662 @item
1663 Multiple merges assuming 1 video stream and 6 audio streams in @file{input.mkv}:
1664 @example
1665 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
1666 @end example
1667 @end itemize
1668
1669 @section amix
1670
1671 Mixes multiple audio inputs into a single output.
1672
1673 Note that this filter only supports float samples (the @var{amerge}
1674 and @var{pan} audio filters support many formats). If the @var{amix}
1675 input has integer samples then @ref{aresample} will be automatically
1676 inserted to perform the conversion to float samples.
1677
1678 For example
1679 @example
1680 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
1681 @end example
1682 will mix 3 input audio streams to a single output with the same duration as the
1683 first input and a dropout transition time of 3 seconds.
1684
1685 It accepts the following parameters:
1686 @table @option
1687
1688 @item inputs
1689 The number of inputs. If unspecified, it defaults to 2.
1690
1691 @item duration
1692 How to determine the end-of-stream.
1693 @table @option
1694
1695 @item longest
1696 The duration of the longest input. (default)
1697
1698 @item shortest
1699 The duration of the shortest input.
1700
1701 @item first
1702 The duration of the first input.
1703
1704 @end table
1705
1706 @item dropout_transition
1707 The transition time, in seconds, for volume renormalization when an input
1708 stream ends. The default value is 2 seconds.
1709
1710 @item weights
1711 Specify weight of each input audio stream as sequence.
1712 Each weight is separated by space. By default all inputs have same weight.
1713 @end table
1714
1715 @subsection Commands
1716
1717 This filter supports the following commands:
1718 @table @option
1719 @item weights
1720 Syntax is same as option with same name.
1721 @end table
1722
1723 @section amultiply
1724
1725 Multiply first audio stream with second audio stream and store result
1726 in output audio stream. Multiplication is done by multiplying each
1727 sample from first stream with sample at same position from second stream.
1728
1729 With this element-wise multiplication one can create amplitude fades and
1730 amplitude modulations.
1731
1732 @section anequalizer
1733
1734 High-order parametric multiband equalizer for each channel.
1735
1736 It accepts the following parameters:
1737 @table @option
1738 @item params
1739
1740 This option string is in format:
1741 "c@var{chn} f=@var{cf} w=@var{w} g=@var{g} t=@var{f} | ..."
1742 Each equalizer band is separated by '|'.
1743
1744 @table @option
1745 @item chn
1746 Set channel number to which equalization will be applied.
1747 If input doesn't have that channel the entry is ignored.
1748
1749 @item f
1750 Set central frequency for band.
1751 If input doesn't have that frequency the entry is ignored.
1752
1753 @item w
1754 Set band width in hertz.
1755
1756 @item g
1757 Set band gain in dB.
1758
1759 @item t
1760 Set filter type for band, optional, can be:
1761
1762 @table @samp
1763 @item 0
1764 Butterworth, this is default.
1765
1766 @item 1
1767 Chebyshev type 1.
1768
1769 @item 2
1770 Chebyshev type 2.
1771 @end table
1772 @end table
1773
1774 @item curves
1775 With this option activated frequency response of anequalizer is displayed
1776 in video stream.
1777
1778 @item size
1779 Set video stream size. Only useful if curves option is activated.
1780
1781 @item mgain
1782 Set max gain that will be displayed. Only useful if curves option is activated.
1783 Setting this to a reasonable value makes it possible to display gain which is derived from
1784 neighbour bands which are too close to each other and thus produce higher gain
1785 when both are activated.
1786
1787 @item fscale
1788 Set frequency scale used to draw frequency response in video output.
1789 Can be linear or logarithmic. Default is logarithmic.
1790
1791 @item colors
1792 Set color for each channel curve which is going to be displayed in video stream.
1793 This is list of color names separated by space or by '|'.
1794 Unrecognised or missing colors will be replaced by white color.
1795 @end table
1796
1797 @subsection Examples
1798
1799 @itemize
1800 @item
1801 Lower gain by 10 of central frequency 200Hz and width 100 Hz
1802 for first 2 channels using Chebyshev type 1 filter:
1803 @example
1804 anequalizer=c0 f=200 w=100 g=-10 t=1|c1 f=200 w=100 g=-10 t=1
1805 @end example
1806 @end itemize
1807
1808 @subsection Commands
1809
1810 This filter supports the following commands:
1811 @table @option
1812 @item change
1813 Alter existing filter parameters.
1814 Syntax for the commands is : "@var{fN}|f=@var{freq}|w=@var{width}|g=@var{gain}"
1815
1816 @var{fN} is existing filter number, starting from 0, if no such filter is available
1817 error is returned.
1818 @var{freq} set new frequency parameter.
1819 @var{width} set new width parameter in herz.
1820 @var{gain} set new gain parameter in dB.
1821
1822 Full filter invocation with asendcmd may look like this:
1823 asendcmd=c='4.0 anequalizer change 0|f=200|w=50|g=1',anequalizer=...
1824 @end table
1825
1826 @section anlmdn
1827
1828 Reduce broadband noise in audio samples using Non-Local Means algorithm.
1829
1830 Each sample is adjusted by looking for other samples with similar contexts. This
1831 context similarity is defined by comparing their surrounding patches of size
1832 @option{p}. Patches are searched in an area of @option{r} around the sample.
1833
1834 The filter accepts the following options:
1835
1836 @table @option
1837 @item s
1838 Set denoising strength. Allowed range is from 0.00001 to 10. Default value is 0.00001.
1839
1840 @item p
1841 Set patch radius duration. Allowed range is from 1 to 100 milliseconds.
1842 Default value is 2 milliseconds.
1843
1844 @item r
1845 Set research radius duration. Allowed range is from 2 to 300 milliseconds.
1846 Default value is 6 milliseconds.
1847
1848 @item o
1849 Set the output mode.
1850
1851 It accepts the following values:
1852 @table @option
1853 @item i
1854 Pass input unchanged.
1855
1856 @item o
1857 Pass noise filtered out.
1858
1859 @item n
1860 Pass only noise.
1861
1862 Default value is @var{o}.
1863 @end table
1864
1865 @item m
1866 Set smooth factor. Default value is @var{11}. Allowed range is from @var{1} to @var{15}.
1867 @end table
1868
1869 @subsection Commands
1870
1871 This filter supports the following commands:
1872 @table @option
1873 @item s
1874 Change denoise strength. Argument is single float number.
1875 Syntax for the command is : "@var{s}"
1876
1877 @item o
1878 Change output mode.
1879 Syntax for the command is : "i", "o" or "n" string.
1880 @end table
1881
1882 @section anlms
1883 Apply Normalized Least-Mean-Squares algorithm to the first audio stream using the second audio stream.
1884
1885 This adaptive filter is used to mimic a desired filter by finding the filter coefficients that
1886 relate to producing the least mean square of the error signal (difference between the desired,
1887 2nd input audio stream and the actual signal, the 1st input audio stream).
1888
1889 A description of the accepted options follows.
1890
1891 @table @option
1892 @item order
1893 Set filter order.
1894
1895 @item mu
1896 Set filter mu.
1897
1898 @item eps
1899 Set the filter eps.
1900
1901 @item leakage
1902 Set the filter leakage.
1903
1904 @item out_mode
1905 It accepts the following values:
1906 @table @option
1907 @item i
1908 Pass the 1st input.
1909
1910 @item d
1911 Pass the 2nd input.
1912
1913 @item o
1914 Pass filtered samples.
1915
1916 @item n
1917 Pass difference between desired and filtered samples.
1918
1919 Default value is @var{o}.
1920 @end table
1921 @end table
1922
1923 @subsection Examples
1924
1925 @itemize
1926 @item
1927 One of many usages of this filter is noise reduction, input audio is filtered
1928 with same samples that are delayed by fixed amount, one such example for stereo audio is:
1929 @example
1930 asplit[a][b],[a]adelay=32S|32S[a],[b][a]anlms=order=128:leakage=0.0005:mu=.5:out_mode=o
1931 @end example
1932 @end itemize
1933
1934 @subsection Commands
1935
1936 This filter supports the same commands as options, excluding option @code{order}.
1937
1938 @section anull
1939
1940 Pass the audio source unchanged to the output.
1941
1942 @section apad
1943
1944 Pad the end of an audio stream with silence.
1945
1946 This can be used together with @command{ffmpeg} @option{-shortest} to
1947 extend audio streams to the same length as the video stream.
1948
1949 A description of the accepted options follows.
1950
1951 @table @option
1952 @item packet_size
1953 Set silence packet size. Default value is 4096.
1954
1955 @item pad_len
1956 Set the number of samples of silence to add to the end. After the
1957 value is reached, the stream is terminated. This option is mutually
1958 exclusive with @option{whole_len}.
1959
1960 @item whole_len
1961 Set the minimum total number of samples in the output audio stream. If
1962 the value is longer than the input audio length, silence is added to
1963 the end, until the value is reached. This option is mutually exclusive
1964 with @option{pad_len}.
1965
1966 @item pad_dur
1967 Specify the duration of samples of silence to add. See
1968 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1969 for the accepted syntax. Used only if set to non-zero value.
1970
1971 @item whole_dur
1972 Specify the minimum total duration in the output audio stream. See
1973 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1974 for the accepted syntax. Used only if set to non-zero value. If the value is longer than
1975 the input audio length, silence is added to the end, until the value is reached.
1976 This option is mutually exclusive with @option{pad_dur}
1977 @end table
1978
1979 If neither the @option{pad_len} nor the @option{whole_len} nor @option{pad_dur}
1980 nor @option{whole_dur} option is set, the filter will add silence to the end of
1981 the input stream indefinitely.
1982
1983 @subsection Examples
1984
1985 @itemize
1986 @item
1987 Add 1024 samples of silence to the end of the input:
1988 @example
1989 apad=pad_len=1024
1990 @end example
1991
1992 @item
1993 Make sure the audio output will contain at least 10000 samples, pad
1994 the input with silence if required:
1995 @example
1996 apad=whole_len=10000
1997 @end example
1998
1999 @item
2000 Use @command{ffmpeg} to pad the audio input with silence, so that the
2001 video stream will always result the shortest and will be converted
2002 until the end in the output file when using the @option{shortest}
2003 option:
2004 @example
2005 ffmpeg -i VIDEO -i AUDIO -filter_complex "[1:0]apad" -shortest OUTPUT
2006 @end example
2007 @end itemize
2008
2009 @section aphaser
2010 Add a phasing effect to the input audio.
2011
2012 A phaser filter creates series of peaks and troughs in the frequency spectrum.
2013 The position of the peaks and troughs are modulated so that they vary over time, creating a sweeping effect.
2014
2015 A description of the accepted parameters follows.
2016
2017 @table @option
2018 @item in_gain
2019 Set input gain. Default is 0.4.
2020
2021 @item out_gain
2022 Set output gain. Default is 0.74
2023
2024 @item delay
2025 Set delay in milliseconds. Default is 3.0.
2026
2027 @item decay
2028 Set decay. Default is 0.4.
2029
2030 @item speed
2031 Set modulation speed in Hz. Default is 0.5.
2032
2033 @item type
2034 Set modulation type. Default is triangular.
2035
2036 It accepts the following values:
2037 @table @samp
2038 @item triangular, t
2039 @item sinusoidal, s
2040 @end table
2041 @end table
2042
2043 @section apulsator
2044
2045 Audio pulsator is something between an autopanner and a tremolo.
2046 But it can produce funny stereo effects as well. Pulsator changes the volume
2047 of the left and right channel based on a LFO (low frequency oscillator) with
2048 different waveforms and shifted phases.
2049 This filter have the ability to define an offset between left and right
2050 channel. An offset of 0 means that both LFO shapes match each other.
2051 The left and right channel are altered equally - a conventional tremolo.
2052 An offset of 50% means that the shape of the right channel is exactly shifted
2053 in phase (or moved backwards about half of the frequency) - pulsator acts as
2054 an autopanner. At 1 both curves match again. Every setting in between moves the
2055 phase shift gapless between all stages and produces some "bypassing" sounds with
2056 sine and triangle waveforms. The more you set the offset near 1 (starting from
2057 the 0.5) the faster the signal passes from the left to the right speaker.
2058
2059 The filter accepts the following options:
2060
2061 @table @option
2062 @item level_in
2063 Set input gain. By default it is 1. Range is [0.015625 - 64].
2064
2065 @item level_out
2066 Set output gain. By default it is 1. Range is [0.015625 - 64].
2067
2068 @item mode
2069 Set waveform shape the LFO will use. Can be one of: sine, triangle, square,
2070 sawup or sawdown. Default is sine.
2071
2072 @item amount
2073 Set modulation. Define how much of original signal is affected by the LFO.
2074
2075 @item offset_l
2076 Set left channel offset. Default is 0. Allowed range is [0 - 1].
2077
2078 @item offset_r
2079 Set right channel offset. Default is 0.5. Allowed range is [0 - 1].
2080
2081 @item width
2082 Set pulse width. Default is 1. Allowed range is [0 - 2].
2083
2084 @item timing
2085 Set possible timing mode. Can be one of: bpm, ms or hz. Default is hz.
2086
2087 @item bpm
2088 Set bpm. Default is 120. Allowed range is [30 - 300]. Only used if timing
2089 is set to bpm.
2090
2091 @item ms
2092 Set ms. Default is 500. Allowed range is [10 - 2000]. Only used if timing
2093 is set to ms.
2094
2095 @item hz
2096 Set frequency in Hz. Default is 2. Allowed range is [0.01 - 100]. Only used
2097 if timing is set to hz.
2098 @end table
2099
2100 @anchor{aresample}
2101 @section aresample
2102
2103 Resample the input audio to the specified parameters, using the
2104 libswresample library. If none are specified then the filter will
2105 automatically convert between its input and output.
2106
2107 This filter is also able to stretch/squeeze the audio data to make it match
2108 the timestamps or to inject silence / cut out audio to make it match the
2109 timestamps, do a combination of both or do neither.
2110
2111 The filter accepts the syntax
2112 [@var{sample_rate}:]@var{resampler_options}, where @var{sample_rate}
2113 expresses a sample rate and @var{resampler_options} is a list of
2114 @var{key}=@var{value} pairs, separated by ":". See the
2115 @ref{Resampler Options,,"Resampler Options" section in the
2116 ffmpeg-resampler(1) manual,ffmpeg-resampler}
2117 for the complete list of supported options.
2118
2119 @subsection Examples
2120
2121 @itemize
2122 @item
2123 Resample the input audio to 44100Hz:
2124 @example
2125 aresample=44100
2126 @end example
2127
2128 @item
2129 Stretch/squeeze samples to the given timestamps, with a maximum of 1000
2130 samples per second compensation:
2131 @example
2132 aresample=async=1000
2133 @end example
2134 @end itemize
2135
2136 @section areverse
2137
2138 Reverse an audio clip.
2139
2140 Warning: This filter requires memory to buffer the entire clip, so trimming
2141 is suggested.
2142
2143 @subsection Examples
2144
2145 @itemize
2146 @item
2147 Take the first 5 seconds of a clip, and reverse it.
2148 @example
2149 atrim=end=5,areverse
2150 @end example
2151 @end itemize
2152
2153 @section arnndn
2154
2155 Reduce noise from speech using Recurrent Neural Networks.
2156
2157 This filter accepts the following options:
2158
2159 @table @option
2160 @item model, m
2161 Set train model file to load. This option is always required.
2162 @end table
2163
2164 @section asetnsamples
2165
2166 Set the number of samples per each output audio frame.
2167
2168 The last output packet may contain a different number of samples, as
2169 the filter will flush all the remaining samples when the input audio
2170 signals its end.
2171
2172 The filter accepts the following options:
2173
2174 @table @option
2175
2176 @item nb_out_samples, n
2177 Set the number of frames per each output audio frame. The number is
2178 intended as the number of samples @emph{per each channel}.
2179 Default value is 1024.
2180
2181 @item pad, p
2182 If set to 1, the filter will pad the last audio frame with zeroes, so
2183 that the last frame will contain the same number of samples as the
2184 previous ones. Default value is 1.
2185 @end table
2186
2187 For example, to set the number of per-frame samples to 1234 and
2188 disable padding for the last frame, use:
2189 @example
2190 asetnsamples=n=1234:p=0
2191 @end example
2192
2193 @section asetrate
2194
2195 Set the sample rate without altering the PCM data.
2196 This will result in a change of speed and pitch.
2197
2198 The filter accepts the following options:
2199
2200 @table @option
2201 @item sample_rate, r
2202 Set the output sample rate. Default is 44100 Hz.
2203 @end table
2204
2205 @section ashowinfo
2206
2207 Show a line containing various information for each input audio frame.
2208 The input audio is not modified.
2209
2210 The shown line contains a sequence of key/value pairs of the form
2211 @var{key}:@var{value}.
2212
2213 The following values are shown in the output:
2214
2215 @table @option
2216 @item n
2217 The (sequential) number of the input frame, starting from 0.
2218
2219 @item pts
2220 The presentation timestamp of the input frame, in time base units; the time base
2221 depends on the filter input pad, and is usually 1/@var{sample_rate}.
2222
2223 @item pts_time
2224 The presentation timestamp of the input frame in seconds.
2225
2226 @item pos
2227 position of the frame in the input stream, -1 if this information in
2228 unavailable and/or meaningless (for example in case of synthetic audio)
2229
2230 @item fmt
2231 The sample format.
2232
2233 @item chlayout
2234 The channel layout.
2235
2236 @item rate
2237 The sample rate for the audio frame.
2238
2239 @item nb_samples
2240 The number of samples (per channel) in the frame.
2241
2242 @item checksum
2243 The Adler-32 checksum (printed in hexadecimal) of the audio data. For planar
2244 audio, the data is treated as if all the planes were concatenated.
2245
2246 @item plane_checksums
2247 A list of Adler-32 checksums for each data plane.
2248 @end table
2249
2250 @section asoftclip
2251 Apply audio soft clipping.
2252
2253 Soft clipping is a type of distortion effect where the amplitude of a signal is saturated
2254 along a smooth curve, rather than the abrupt shape of hard-clipping.
2255
2256 This filter accepts the following options:
2257
2258 @table @option
2259 @item type
2260 Set type of soft-clipping.
2261
2262 It accepts the following values:
2263 @table @option
2264 @item tanh
2265 @item atan
2266 @item cubic
2267 @item exp
2268 @item alg
2269 @item quintic
2270 @item sin
2271 @end table
2272
2273 @item param
2274 Set additional parameter which controls sigmoid function.
2275 @end table
2276
2277 @subsection Commands
2278
2279 This filter supports the all above options as @ref{commands}.
2280
2281 @section asr
2282 Automatic Speech Recognition
2283
2284 This filter uses PocketSphinx for speech recognition. To enable
2285 compilation of this filter, you need to configure FFmpeg with
2286 @code{--enable-pocketsphinx}.
2287
2288 It accepts the following options:
2289
2290 @table @option
2291 @item rate
2292 Set sampling rate of input audio. Defaults is @code{16000}.
2293 This need to match speech models, otherwise one will get poor results.
2294
2295 @item hmm
2296 Set dictionary containing acoustic model files.
2297
2298 @item dict
2299 Set pronunciation dictionary.
2300
2301 @item lm
2302 Set language model file.
2303
2304 @item lmctl
2305 Set language model set.
2306
2307 @item lmname
2308 Set which language model to use.
2309
2310 @item logfn
2311 Set output for log messages.
2312 @end table
2313
2314 The filter exports recognized speech as the frame metadata @code{lavfi.asr.text}.
2315
2316 @anchor{astats}
2317 @section astats
2318
2319 Display time domain statistical information about the audio channels.
2320 Statistics are calculated and displayed for each audio channel and,
2321 where applicable, an overall figure is also given.
2322
2323 It accepts the following option:
2324 @table @option
2325 @item length
2326 Short window length in seconds, used for peak and trough RMS measurement.
2327 Default is @code{0.05} (50 milliseconds). Allowed range is @code{[0.01 - 10]}.
2328
2329 @item metadata
2330
2331 Set metadata injection. All the metadata keys are prefixed with @code{lavfi.astats.X},
2332 where @code{X} is channel number starting from 1 or string @code{Overall}. Default is
2333 disabled.
2334
2335 Available keys for each channel are:
2336 DC_offset
2337 Min_level
2338 Max_level
2339 Min_difference
2340 Max_difference
2341 Mean_difference
2342 RMS_difference
2343 Peak_level
2344 RMS_peak
2345 RMS_trough
2346 Crest_factor
2347 Flat_factor
2348 Peak_count
2349 Noise_floor
2350 Noise_floor_count
2351 Bit_depth
2352 Dynamic_range
2353 Zero_crossings
2354 Zero_crossings_rate
2355 Number_of_NaNs
2356 Number_of_Infs
2357 Number_of_denormals
2358
2359 and for Overall:
2360 DC_offset
2361 Min_level
2362 Max_level
2363 Min_difference
2364 Max_difference
2365 Mean_difference
2366 RMS_difference
2367 Peak_level
2368 RMS_level
2369 RMS_peak
2370 RMS_trough
2371 Flat_factor
2372 Peak_count
2373 Noise_floor
2374 Noise_floor_count
2375 Bit_depth
2376 Number_of_samples
2377 Number_of_NaNs
2378 Number_of_Infs
2379 Number_of_denormals
2380
2381 For example full key look like this @code{lavfi.astats.1.DC_offset} or
2382 this @code{lavfi.astats.Overall.Peak_count}.
2383
2384 For description what each key means read below.
2385
2386 @item reset
2387 Set number of frame after which stats are going to be recalculated.
2388 Default is disabled.
2389
2390 @item measure_perchannel
2391 Select the entries which need to be measured per channel. The metadata keys can
2392 be used as flags, default is @option{all} which measures everything.
2393 @option{none} disables all per channel measurement.
2394
2395 @item measure_overall
2396 Select the entries which need to be measured overall. The metadata keys can
2397 be used as flags, default is @option{all} which measures everything.
2398 @option{none} disables all overall measurement.
2399
2400 @end table
2401
2402 A description of each shown parameter follows:
2403
2404 @table @option
2405 @item DC offset
2406 Mean amplitude displacement from zero.
2407
2408 @item Min level
2409 Minimal sample level.
2410
2411 @item Max level
2412 Maximal sample level.
2413
2414 @item Min difference
2415 Minimal difference between two consecutive samples.
2416
2417 @item Max difference
2418 Maximal difference between two consecutive samples.
2419
2420 @item Mean difference
2421 Mean difference between two consecutive samples.
2422 The average of each difference between two consecutive samples.
2423
2424 @item RMS difference
2425 Root Mean Square difference between two consecutive samples.
2426
2427 @item Peak level dB
2428 @item RMS level dB
2429 Standard peak and RMS level measured in dBFS.
2430
2431 @item RMS peak dB
2432 @item RMS trough dB
2433 Peak and trough values for RMS level measured over a short window.
2434
2435 @item Crest factor
2436 Standard ratio of peak to RMS level (note: not in dB).
2437
2438 @item Flat factor
2439 Flatness (i.e. consecutive samples with the same value) of the signal at its peak levels
2440 (i.e. either @var{Min level} or @var{Max level}).
2441
2442 @item Peak count
2443 Number of occasions (not the number of samples) that the signal attained either
2444 @var{Min level} or @var{Max level}.
2445
2446 @item Noise floor dB
2447 Minimum local peak measured in dBFS over a short window.
2448
2449 @item Noise floor count
2450 Number of occasions (not the number of samples) that the signal attained
2451 @var{Noise floor}.
2452
2453 @item Bit depth
2454 Overall bit depth of audio. Number of bits used for each sample.
2455
2456 @item Dynamic range
2457 Measured dynamic range of audio in dB.
2458
2459 @item Zero crossings
2460 Number of points where the waveform crosses the zero level axis.
2461
2462 @item Zero crossings rate
2463 Rate of Zero crossings and number of audio samples.
2464 @end table
2465
2466 @section asubboost
2467 Boost subwoofer frequencies.
2468
2469 The filter accepts the following options:
2470
2471 @table @option
2472 @item dry
2473 Set dry gain, how much of original signal is kept. Allowed range is from 0 to 1.
2474 Default value is 0.5.
2475
2476 @item wet
2477 Set wet gain, how much of filtered signal is kept. Allowed range is from 0 to 1.
2478 Default value is 0.8.
2479
2480 @item decay
2481 Set delay line decay gain value. Allowed range is from 0 to 1.
2482 Default value is 0.7.
2483
2484 @item feedback
2485 Set delay line feedback gain value. Allowed range is from 0 to 1.
2486 Default value is 0.5.
2487
2488 @item cutoff
2489 Set cutoff frequency in herz. Allowed range is 50 to 900.
2490 Default value is 100.
2491
2492 @item slope
2493 Set slope amount for cutoff frequency. Allowed range is 0.0001 to 1.
2494 Default value is 0.5.
2495
2496 @item delay
2497 Set delay. Allowed range is from 1 to 100.
2498 Default value is 20.
2499 @end table
2500
2501 @subsection Commands
2502
2503 This filter supports the all above options as @ref{commands}.
2504
2505 @section atempo
2506
2507 Adjust audio tempo.
2508
2509 The filter accepts exactly one parameter, the audio tempo. If not
2510 specified then the filter will assume nominal 1.0 tempo. Tempo must
2511 be in the [0.5, 100.0] range.
2512
2513 Note that tempo greater than 2 will skip some samples rather than
2514 blend them in.  If for any reason this is a concern it is always
2515 possible to daisy-chain several instances of atempo to achieve the
2516 desired product tempo.
2517
2518 @subsection Examples
2519
2520 @itemize
2521 @item
2522 Slow down audio to 80% tempo:
2523 @example
2524 atempo=0.8
2525 @end example
2526
2527 @item
2528 To speed up audio to 300% tempo:
2529 @example
2530 atempo=3
2531 @end example
2532
2533 @item
2534 To speed up audio to 300% tempo by daisy-chaining two atempo instances:
2535 @example
2536 atempo=sqrt(3),atempo=sqrt(3)
2537 @end example
2538 @end itemize
2539
2540 @subsection Commands
2541
2542 This filter supports the following commands:
2543 @table @option
2544 @item tempo
2545 Change filter tempo scale factor.
2546 Syntax for the command is : "@var{tempo}"
2547 @end table
2548
2549 @section atrim
2550
2551 Trim the input so that the output contains one continuous subpart of the input.
2552
2553 It accepts the following parameters:
2554 @table @option
2555 @item start
2556 Timestamp (in seconds) of the start of the section to keep. I.e. the audio
2557 sample with the timestamp @var{start} will be the first sample in the output.
2558
2559 @item end
2560 Specify time of the first audio sample that will be dropped, i.e. the
2561 audio sample immediately preceding the one with the timestamp @var{end} will be
2562 the last sample in the output.
2563
2564 @item start_pts
2565 Same as @var{start}, except this option sets the start timestamp in samples
2566 instead of seconds.
2567
2568 @item end_pts
2569 Same as @var{end}, except this option sets the end timestamp in samples instead
2570 of seconds.
2571
2572 @item duration
2573 The maximum duration of the output in seconds.
2574
2575 @item start_sample
2576 The number of the first sample that should be output.
2577
2578 @item end_sample
2579 The number of the first sample that should be dropped.
2580 @end table
2581
2582 @option{start}, @option{end}, and @option{duration} are expressed as time
2583 duration specifications; see
2584 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}.
2585
2586 Note that the first two sets of the start/end options and the @option{duration}
2587 option look at the frame timestamp, while the _sample options simply count the
2588 samples that pass through the filter. So start/end_pts and start/end_sample will
2589 give different results when the timestamps are wrong, inexact or do not start at
2590 zero. Also note that this filter does not modify the timestamps. If you wish
2591 to have the output timestamps start at zero, insert the asetpts filter after the
2592 atrim filter.
2593
2594 If multiple start or end options are set, this filter tries to be greedy and
2595 keep all samples that match at least one of the specified constraints. To keep
2596 only the part that matches all the constraints at once, chain multiple atrim
2597 filters.
2598
2599 The defaults are such that all the input is kept. So it is possible to set e.g.
2600 just the end values to keep everything before the specified time.
2601
2602 Examples:
2603 @itemize
2604 @item
2605 Drop everything except the second minute of input:
2606 @example
2607 ffmpeg -i INPUT -af atrim=60:120
2608 @end example
2609
2610 @item
2611 Keep only the first 1000 samples:
2612 @example
2613 ffmpeg -i INPUT -af atrim=end_sample=1000
2614 @end example
2615
2616 @end itemize
2617
2618 @section axcorrelate
2619 Calculate normalized cross-correlation between two input audio streams.
2620
2621 Resulted samples are always between -1 and 1 inclusive.
2622 If result is 1 it means two input samples are highly correlated in that selected segment.
2623 Result 0 means they are not correlated at all.
2624 If result is -1 it means two input samples are out of phase, which means they cancel each
2625 other.
2626
2627 The filter accepts the following options:
2628
2629 @table @option
2630 @item size
2631 Set size of segment over which cross-correlation is calculated.
2632 Default is 256. Allowed range is from 2 to 131072.
2633
2634 @item algo
2635 Set algorithm for cross-correlation. Can be @code{slow} or @code{fast}.
2636 Default is @code{slow}. Fast algorithm assumes mean values over any given segment
2637 are always zero and thus need much less calculations to make.
2638 This is generally not true, but is valid for typical audio streams.
2639 @end table
2640
2641 @subsection Examples
2642
2643 @itemize
2644 @item
2645 Calculate correlation between channels in stereo audio stream:
2646 @example
2647 ffmpeg -i stereo.wav -af channelsplit,axcorrelate=size=1024:algo=fast correlation.wav
2648 @end example
2649 @end itemize
2650
2651 @section bandpass
2652
2653 Apply a two-pole Butterworth band-pass filter with central
2654 frequency @var{frequency}, and (3dB-point) band-width width.
2655 The @var{csg} option selects a constant skirt gain (peak gain = Q)
2656 instead of the default: constant 0dB peak gain.
2657 The filter roll off at 6dB per octave (20dB per decade).
2658
2659 The filter accepts the following options:
2660
2661 @table @option
2662 @item frequency, f
2663 Set the filter's central frequency. Default is @code{3000}.
2664
2665 @item csg
2666 Constant skirt gain if set to 1. Defaults to 0.
2667
2668 @item width_type, t
2669 Set method to specify band-width of filter.
2670 @table @option
2671 @item h
2672 Hz
2673 @item q
2674 Q-Factor
2675 @item o
2676 octave
2677 @item s
2678 slope
2679 @item k
2680 kHz
2681 @end table
2682
2683 @item width, w
2684 Specify the band-width of a filter in width_type units.
2685
2686 @item mix, m
2687 How much to use filtered signal in output. Default is 1.
2688 Range is between 0 and 1.
2689
2690 @item channels, c
2691 Specify which channels to filter, by default all available are filtered.
2692
2693 @item normalize, n
2694 Normalize biquad coefficients, by default is disabled.
2695 Enabling it will normalize magnitude response at DC to 0dB.
2696 @end table
2697
2698 @subsection Commands
2699
2700 This filter supports the following commands:
2701 @table @option
2702 @item frequency, f
2703 Change bandpass frequency.
2704 Syntax for the command is : "@var{frequency}"
2705
2706 @item width_type, t
2707 Change bandpass width_type.
2708 Syntax for the command is : "@var{width_type}"
2709
2710 @item width, w
2711 Change bandpass width.
2712 Syntax for the command is : "@var{width}"
2713
2714 @item mix, m
2715 Change bandpass mix.
2716 Syntax for the command is : "@var{mix}"
2717 @end table
2718
2719 @section bandreject
2720
2721 Apply a two-pole Butterworth band-reject filter with central
2722 frequency @var{frequency}, and (3dB-point) band-width @var{width}.
2723 The filter roll off at 6dB per octave (20dB per decade).
2724
2725 The filter accepts the following options:
2726
2727 @table @option
2728 @item frequency, f
2729 Set the filter's central frequency. Default is @code{3000}.
2730
2731 @item width_type, t
2732 Set method to specify band-width of filter.
2733 @table @option
2734 @item h
2735 Hz
2736 @item q
2737 Q-Factor
2738 @item o
2739 octave
2740 @item s
2741 slope
2742 @item k
2743 kHz
2744 @end table
2745
2746 @item width, w
2747 Specify the band-width of a filter in width_type units.
2748
2749 @item mix, m
2750 How much to use filtered signal in output. Default is 1.
2751 Range is between 0 and 1.
2752
2753 @item channels, c
2754 Specify which channels to filter, by default all available are filtered.
2755
2756 @item normalize, n
2757 Normalize biquad coefficients, by default is disabled.
2758 Enabling it will normalize magnitude response at DC to 0dB.
2759 @end table
2760
2761 @subsection Commands
2762
2763 This filter supports the following commands:
2764 @table @option
2765 @item frequency, f
2766 Change bandreject frequency.
2767 Syntax for the command is : "@var{frequency}"
2768
2769 @item width_type, t
2770 Change bandreject width_type.
2771 Syntax for the command is : "@var{width_type}"
2772
2773 @item width, w
2774 Change bandreject width.
2775 Syntax for the command is : "@var{width}"
2776
2777 @item mix, m
2778 Change bandreject mix.
2779 Syntax for the command is : "@var{mix}"
2780 @end table
2781
2782 @section bass, lowshelf
2783
2784 Boost or cut the bass (lower) frequencies of the audio using a two-pole
2785 shelving filter with a response similar to that of a standard
2786 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
2787
2788 The filter accepts the following options:
2789
2790 @table @option
2791 @item gain, g
2792 Give the gain at 0 Hz. Its useful range is about -20
2793 (for a large cut) to +20 (for a large boost).
2794 Beware of clipping when using a positive gain.
2795
2796 @item frequency, f
2797 Set the filter's central frequency and so can be used
2798 to extend or reduce the frequency range to be boosted or cut.
2799 The default value is @code{100} Hz.
2800
2801 @item width_type, t
2802 Set method to specify band-width of filter.
2803 @table @option
2804 @item h
2805 Hz
2806 @item q
2807 Q-Factor
2808 @item o
2809 octave
2810 @item s
2811 slope
2812 @item k
2813 kHz
2814 @end table
2815
2816 @item width, w
2817 Determine how steep is the filter's shelf transition.
2818
2819 @item mix, m
2820 How much to use filtered signal in output. Default is 1.
2821 Range is between 0 and 1.
2822
2823 @item channels, c
2824 Specify which channels to filter, by default all available are filtered.
2825
2826 @item normalize, n
2827 Normalize biquad coefficients, by default is disabled.
2828 Enabling it will normalize magnitude response at DC to 0dB.
2829 @end table
2830
2831 @subsection Commands
2832
2833 This filter supports the following commands:
2834 @table @option
2835 @item frequency, f
2836 Change bass frequency.
2837 Syntax for the command is : "@var{frequency}"
2838
2839 @item width_type, t
2840 Change bass width_type.
2841 Syntax for the command is : "@var{width_type}"
2842
2843 @item width, w
2844 Change bass width.
2845 Syntax for the command is : "@var{width}"
2846
2847 @item gain, g
2848 Change bass gain.
2849 Syntax for the command is : "@var{gain}"
2850
2851 @item mix, m
2852 Change bass mix.
2853 Syntax for the command is : "@var{mix}"
2854 @end table
2855
2856 @section biquad
2857
2858 Apply a biquad IIR filter with the given coefficients.
2859 Where @var{b0}, @var{b1}, @var{b2} and @var{a0}, @var{a1}, @var{a2}
2860 are the numerator and denominator coefficients respectively.
2861 and @var{channels}, @var{c} specify which channels to filter, by default all
2862 available are filtered.
2863
2864 @subsection Commands
2865
2866 This filter supports the following commands:
2867 @table @option
2868 @item a0
2869 @item a1
2870 @item a2
2871 @item b0
2872 @item b1
2873 @item b2
2874 Change biquad parameter.
2875 Syntax for the command is : "@var{value}"
2876
2877 @item mix, m
2878 How much to use filtered signal in output. Default is 1.
2879 Range is between 0 and 1.
2880
2881 @item channels, c
2882 Specify which channels to filter, by default all available are filtered.
2883
2884 @item normalize, n
2885 Normalize biquad coefficients, by default is disabled.
2886 Enabling it will normalize magnitude response at DC to 0dB.
2887 @end table
2888
2889 @section bs2b
2890 Bauer stereo to binaural transformation, which improves headphone listening of
2891 stereo audio records.
2892
2893 To enable compilation of this filter you need to configure FFmpeg with
2894 @code{--enable-libbs2b}.
2895
2896 It accepts the following parameters:
2897 @table @option
2898
2899 @item profile
2900 Pre-defined crossfeed level.
2901 @table @option
2902
2903 @item default
2904 Default level (fcut=700, feed=50).
2905
2906 @item cmoy
2907 Chu Moy circuit (fcut=700, feed=60).
2908
2909 @item jmeier
2910 Jan Meier circuit (fcut=650, feed=95).
2911
2912 @end table
2913
2914 @item fcut
2915 Cut frequency (in Hz).
2916
2917 @item feed
2918 Feed level (in Hz).
2919
2920 @end table
2921
2922 @section channelmap
2923
2924 Remap input channels to new locations.
2925
2926 It accepts the following parameters:
2927 @table @option
2928 @item map
2929 Map channels from input to output. The argument is a '|'-separated list of
2930 mappings, each in the @code{@var{in_channel}-@var{out_channel}} or
2931 @var{in_channel} form. @var{in_channel} can be either the name of the input
2932 channel (e.g. FL for front left) or its index in the input channel layout.
2933 @var{out_channel} is the name of the output channel or its index in the output
2934 channel layout. If @var{out_channel} is not given then it is implicitly an
2935 index, starting with zero and increasing by one for each mapping.
2936
2937 @item channel_layout
2938 The channel layout of the output stream.
2939 @end table
2940
2941 If no mapping is present, the filter will implicitly map input channels to
2942 output channels, preserving indices.
2943
2944 @subsection Examples
2945
2946 @itemize
2947 @item
2948 For example, assuming a 5.1+downmix input MOV file,
2949 @example
2950 ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
2951 @end example
2952 will create an output WAV file tagged as stereo from the downmix channels of
2953 the input.
2954
2955 @item
2956 To fix a 5.1 WAV improperly encoded in AAC's native channel order
2957 @example
2958 ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
2959 @end example
2960 @end itemize
2961
2962 @section channelsplit
2963
2964 Split each channel from an input audio stream into a separate output stream.
2965
2966 It accepts the following parameters:
2967 @table @option
2968 @item channel_layout
2969 The channel layout of the input stream. The default is "stereo".
2970 @item channels
2971 A channel layout describing the channels to be extracted as separate output streams
2972 or "all" to extract each input channel as a separate stream. The default is "all".
2973
2974 Choosing channels not present in channel layout in the input will result in an error.
2975 @end table
2976
2977 @subsection Examples
2978
2979 @itemize
2980 @item
2981 For example, assuming a stereo input MP3 file,
2982 @example
2983 ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
2984 @end example
2985 will create an output Matroska file with two audio streams, one containing only
2986 the left channel and the other the right channel.
2987
2988 @item
2989 Split a 5.1 WAV file into per-channel files:
2990 @example
2991 ffmpeg -i in.wav -filter_complex
2992 'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
2993 -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
2994 front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
2995 side_right.wav
2996 @end example
2997
2998 @item
2999 Extract only LFE from a 5.1 WAV file:
3000 @example
3001 ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1:channels=LFE[LFE]'
3002 -map '[LFE]' lfe.wav
3003 @end example
3004 @end itemize
3005
3006 @section chorus
3007 Add a chorus effect to the audio.
3008
3009 Can make a single vocal sound like a chorus, but can also be applied to instrumentation.
3010
3011 Chorus resembles an echo effect with a short delay, but whereas with echo the delay is
3012 constant, with chorus, it is varied using using sinusoidal or triangular modulation.
3013 The modulation depth defines the range the modulated delay is played before or after
3014 the delay. Hence the delayed sound will sound slower or faster, that is the delayed
3015 sound tuned around the original one, like in a chorus where some vocals are slightly
3016 off key.
3017
3018 It accepts the following parameters:
3019 @table @option
3020 @item in_gain
3021 Set input gain. Default is 0.4.
3022
3023 @item out_gain
3024 Set output gain. Default is 0.4.
3025
3026 @item delays
3027 Set delays. A typical delay is around 40ms to 60ms.
3028
3029 @item decays
3030 Set decays.
3031
3032 @item speeds
3033 Set speeds.
3034
3035 @item depths
3036 Set depths.
3037 @end table
3038
3039 @subsection Examples
3040
3041 @itemize
3042 @item
3043 A single delay:
3044 @example
3045 chorus=0.7:0.9:55:0.4:0.25:2
3046 @end example
3047
3048 @item
3049 Two delays:
3050 @example
3051 chorus=0.6:0.9:50|60:0.4|0.32:0.25|0.4:2|1.3
3052 @end example
3053
3054 @item
3055 Fuller sounding chorus with three delays:
3056 @example
3057 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
3058 @end example
3059 @end itemize
3060
3061 @section compand
3062 Compress or expand the audio's dynamic range.
3063
3064 It accepts the following parameters:
3065
3066 @table @option
3067
3068 @item attacks
3069 @item decays
3070 A list of times in seconds for each channel over which the instantaneous level
3071 of the input signal is averaged to determine its volume. @var{attacks} refers to
3072 increase of volume and @var{decays} refers to decrease of volume. For most
3073 situations, the attack time (response to the audio getting louder) should be
3074 shorter than the decay time, because the human ear is more sensitive to sudden
3075 loud audio than sudden soft audio. A typical value for attack is 0.3 seconds and
3076 a typical value for decay is 0.8 seconds.
3077 If specified number of attacks & decays is lower than number of channels, the last
3078 set attack/decay will be used for all remaining channels.
3079
3080 @item points
3081 A list of points for the transfer function, specified in dB relative to the
3082 maximum possible signal amplitude. Each key points list must be defined using
3083 the following syntax: @code{x0/y0|x1/y1|x2/y2|....} or
3084 @code{x0/y0 x1/y1 x2/y2 ....}
3085
3086 The input values must be in strictly increasing order but the transfer function
3087 does not have to be monotonically rising. The point @code{0/0} is assumed but
3088 may be overridden (by @code{0/out-dBn}). Typical values for the transfer
3089 function are @code{-70/-70|-60/-20|1/0}.
3090
3091 @item soft-knee
3092 Set the curve radius in dB for all joints. It defaults to 0.01.
3093
3094 @item gain
3095 Set the additional gain in dB to be applied at all points on the transfer
3096 function. This allows for easy adjustment of the overall gain.
3097 It defaults to 0.
3098
3099 @item volume
3100 Set an initial volume, in dB, to be assumed for each channel when filtering
3101 starts. This permits the user to supply a nominal level initially, so that, for
3102 example, a very large gain is not applied to initial signal levels before the
3103 companding has begun to operate. A typical value for audio which is initially
3104 quiet is -90 dB. It defaults to 0.
3105
3106 @item delay
3107 Set a delay, in seconds. The input audio is analyzed immediately, but audio is
3108 delayed before being fed to the volume adjuster. Specifying a delay
3109 approximately equal to the attack/decay times allows the filter to effectively
3110 operate in predictive rather than reactive mode. It defaults to 0.
3111
3112 @end table
3113
3114 @subsection Examples
3115
3116 @itemize
3117 @item
3118 Make music with both quiet and loud passages suitable for listening to in a
3119 noisy environment:
3120 @example
3121 compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
3122 @end example
3123
3124 Another example for audio with whisper and explosion parts:
3125 @example
3126 compand=0|0:1|1:-90/-900|-70/-70|-30/-9|0/-3:6:0:0:0
3127 @end example
3128
3129 @item
3130 A noise gate for when the noise is at a lower level than the signal:
3131 @example
3132 compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1
3133 @end example
3134
3135 @item
3136 Here is another noise gate, this time for when the noise is at a higher level
3137 than the signal (making it, in some ways, similar to squelch):
3138 @example
3139 compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1
3140 @end example
3141
3142 @item
3143 2:1 compression starting at -6dB:
3144 @example
3145 compand=points=-80/-80|-6/-6|0/-3.8|20/3.5
3146 @end example
3147
3148 @item
3149 2:1 compression starting at -9dB:
3150 @example
3151 compand=points=-80/-80|-9/-9|0/-5.3|20/2.9
3152 @end example
3153
3154 @item
3155 2:1 compression starting at -12dB:
3156 @example
3157 compand=points=-80/-80|-12/-12|0/-6.8|20/1.9
3158 @end example
3159
3160 @item
3161 2:1 compression starting at -18dB:
3162 @example
3163 compand=points=-80/-80|-18/-18|0/-9.8|20/0.7
3164 @end example
3165
3166 @item
3167 3:1 compression starting at -15dB:
3168 @example
3169 compand=points=-80/-80|-15/-15|0/-10.8|20/-5.2
3170 @end example
3171
3172 @item
3173 Compressor/Gate:
3174 @example
3175 compand=points=-80/-105|-62/-80|-15.4/-15.4|0/-12|20/-7.6
3176 @end example
3177
3178 @item
3179 Expander:
3180 @example
3181 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
3182 @end example
3183
3184 @item
3185 Hard limiter at -6dB:
3186 @example
3187 compand=attacks=0:points=-80/-80|-6/-6|20/-6
3188 @end example
3189
3190 @item
3191 Hard limiter at -12dB:
3192 @example
3193 compand=attacks=0:points=-80/-80|-12/-12|20/-12
3194 @end example
3195
3196 @item
3197 Hard noise gate at -35 dB:
3198 @example
3199 compand=attacks=0:points=-80/-115|-35.1/-80|-35/-35|20/20
3200 @end example
3201
3202 @item
3203 Soft limiter:
3204 @example
3205 compand=attacks=0:points=-80/-80|-12.4/-12.4|-6/-8|0/-6.8|20/-2.8
3206 @end example
3207 @end itemize
3208
3209 @section compensationdelay
3210
3211 Compensation Delay Line is a metric based delay to compensate differing
3212 positions of microphones or speakers.
3213
3214 For example, you have recorded guitar with two microphones placed in
3215 different locations. Because the front of sound wave has fixed speed in
3216 normal conditions, the phasing of microphones can vary and depends on
3217 their location and interposition. The best sound mix can be achieved when
3218 these microphones are in phase (synchronized). Note that a distance of
3219 ~30 cm between microphones makes one microphone capture the signal in
3220 antiphase to the other microphone. That makes the final mix sound moody.
3221 This filter helps to solve phasing problems by adding different delays
3222 to each microphone track and make them synchronized.
3223
3224 The best result can be reached when you take one track as base and
3225 synchronize other tracks one by one with it.
3226 Remember that synchronization/delay tolerance depends on sample rate, too.
3227 Higher sample rates will give more tolerance.
3228
3229 The filter accepts the following parameters:
3230
3231 @table @option
3232 @item mm
3233 Set millimeters distance. This is compensation distance for fine tuning.
3234 Default is 0.
3235
3236 @item cm
3237 Set cm distance. This is compensation distance for tightening distance setup.
3238 Default is 0.
3239
3240 @item m
3241 Set meters distance. This is compensation distance for hard distance setup.
3242 Default is 0.
3243
3244 @item dry
3245 Set dry amount. Amount of unprocessed (dry) signal.
3246 Default is 0.
3247
3248 @item wet
3249 Set wet amount. Amount of processed (wet) signal.
3250 Default is 1.
3251
3252 @item temp
3253 Set temperature in degrees Celsius. This is the temperature of the environment.
3254 Default is 20.
3255 @end table
3256
3257 @section crossfeed
3258 Apply headphone crossfeed filter.
3259
3260 Crossfeed is the process of blending the left and right channels of stereo
3261 audio recording.
3262 It is mainly used to reduce extreme stereo separation of low frequencies.
3263
3264 The intent is to produce more speaker like sound to the listener.
3265
3266 The filter accepts the following options:
3267
3268 @table @option
3269 @item strength
3270 Set strength of crossfeed. Default is 0.2. Allowed range is from 0 to 1.
3271 This sets gain of low shelf filter for side part of stereo image.
3272 Default is -6dB. Max allowed is -30db when strength is set to 1.
3273
3274 @item range
3275 Set soundstage wideness. Default is 0.5. Allowed range is from 0 to 1.
3276 This sets cut off frequency of low shelf filter. Default is cut off near
3277 1550 Hz. With range set to 1 cut off frequency is set to 2100 Hz.
3278
3279 @item slope
3280 Set curve slope of low shelf filter. Default is 0.5.
3281 Allowed range is from 0.01 to 1.
3282
3283 @item level_in
3284 Set input gain. Default is 0.9.
3285
3286 @item level_out
3287 Set output gain. Default is 1.
3288 @end table
3289
3290 @subsection Commands
3291
3292 This filter supports the all above options as @ref{commands}.
3293
3294 @section crystalizer
3295 Simple algorithm to expand audio dynamic range.
3296
3297 The filter accepts the following options:
3298
3299 @table @option
3300 @item i
3301 Sets the intensity of effect (default: 2.0). Must be in range between 0.0
3302 (unchanged sound) to 10.0 (maximum effect).
3303
3304 @item c
3305 Enable clipping. By default is enabled.
3306 @end table
3307
3308 @subsection Commands
3309
3310 This filter supports the all above options as @ref{commands}.
3311
3312 @section dcshift
3313 Apply a DC shift to the audio.
3314
3315 This can be useful to remove a DC offset (caused perhaps by a hardware problem
3316 in the recording chain) from the audio. The effect of a DC offset is reduced
3317 headroom and hence volume. The @ref{astats} filter can be used to determine if
3318 a signal has a DC offset.
3319
3320 @table @option
3321 @item shift
3322 Set the DC shift, allowed range is [-1, 1]. It indicates the amount to shift
3323 the audio.
3324
3325 @item limitergain
3326 Optional. It should have a value much less than 1 (e.g. 0.05 or 0.02) and is
3327 used to prevent clipping.
3328 @end table
3329
3330 @section deesser
3331
3332 Apply de-essing to the audio samples.
3333
3334 @table @option
3335 @item i
3336 Set intensity for triggering de-essing. Allowed range is from 0 to 1.
3337 Default is 0.
3338
3339 @item m
3340 Set amount of ducking on treble part of sound. Allowed range is from 0 to 1.
3341 Default is 0.5.
3342
3343 @item f
3344 How much of original frequency content to keep when de-essing. Allowed range is from 0 to 1.
3345 Default is 0.5.
3346
3347 @item s
3348 Set the output mode.
3349
3350 It accepts the following values:
3351 @table @option
3352 @item i
3353 Pass input unchanged.
3354
3355 @item o
3356 Pass ess filtered out.
3357
3358 @item e
3359 Pass only ess.
3360
3361 Default value is @var{o}.
3362 @end table
3363
3364 @end table
3365
3366 @section drmeter
3367 Measure audio dynamic range.
3368
3369 DR values of 14 and higher is found in very dynamic material. DR of 8 to 13
3370 is found in transition material. And anything less that 8 have very poor dynamics
3371 and is very compressed.
3372
3373 The filter accepts the following options:
3374
3375 @table @option
3376 @item length
3377 Set window length in seconds used to split audio into segments of equal length.
3378 Default is 3 seconds.
3379 @end table
3380
3381 @section dynaudnorm
3382 Dynamic Audio Normalizer.
3383
3384 This filter applies a certain amount of gain to the input audio in order
3385 to bring its peak magnitude to a target level (e.g. 0 dBFS). However, in
3386 contrast to more "simple" normalization algorithms, the Dynamic Audio
3387 Normalizer *dynamically* re-adjusts the gain factor to the input audio.
3388 This allows for applying extra gain to the "quiet" sections of the audio
3389 while avoiding distortions or clipping the "loud" sections. In other words:
3390 The Dynamic Audio Normalizer will "even out" the volume of quiet and loud
3391 sections, in the sense that the volume of each section is brought to the
3392 same target level. Note, however, that the Dynamic Audio Normalizer achieves
3393 this goal *without* applying "dynamic range compressing". It will retain 100%
3394 of the dynamic range *within* each section of the audio file.
3395
3396 @table @option
3397 @item framelen, f
3398 Set the frame length in milliseconds. In range from 10 to 8000 milliseconds.
3399 Default is 500 milliseconds.
3400 The Dynamic Audio Normalizer processes the input audio in small chunks,
3401 referred to as frames. This is required, because a peak magnitude has no
3402 meaning for just a single sample value. Instead, we need to determine the
3403 peak magnitude for a contiguous sequence of sample values. While a "standard"
3404 normalizer would simply use the peak magnitude of the complete file, the
3405 Dynamic Audio Normalizer determines the peak magnitude individually for each
3406 frame. The length of a frame is specified in milliseconds. By default, the
3407 Dynamic Audio Normalizer uses a frame length of 500 milliseconds, which has
3408 been found to give good results with most files.
3409 Note that the exact frame length, in number of samples, will be determined
3410 automatically, based on the sampling rate of the individual input audio file.
3411
3412 @item gausssize, g
3413 Set the Gaussian filter window size. In range from 3 to 301, must be odd
3414 number. Default is 31.
3415 Probably the most important parameter of the Dynamic Audio Normalizer is the
3416 @code{window size} of the Gaussian smoothing filter. The filter's window size
3417 is specified in frames, centered around the current frame. For the sake of
3418 simplicity, this must be an odd number. Consequently, the default value of 31
3419 takes into account the current frame, as well as the 15 preceding frames and
3420 the 15 subsequent frames. Using a larger window results in a stronger
3421 smoothing effect and thus in less gain variation, i.e. slower gain
3422 adaptation. Conversely, using a smaller window results in a weaker smoothing
3423 effect and thus in more gain variation, i.e. faster gain adaptation.
3424 In other words, the more you increase this value, the more the Dynamic Audio
3425 Normalizer will behave like a "traditional" normalization filter. On the
3426 contrary, the more you decrease this value, the more the Dynamic Audio
3427 Normalizer will behave like a dynamic range compressor.
3428
3429 @item peak, p
3430 Set the target peak value. This specifies the highest permissible magnitude
3431 level for the normalized audio input. This filter will try to approach the
3432 target peak magnitude as closely as possible, but at the same time it also
3433 makes sure that the normalized signal will never exceed the peak magnitude.
3434 A frame's maximum local gain factor is imposed directly by the target peak
3435 magnitude. The default value is 0.95 and thus leaves a headroom of 5%*.
3436 It is not recommended to go above this value.
3437
3438 @item maxgain, m
3439 Set the maximum gain factor. In range from 1.0 to 100.0. Default is 10.0.
3440 The Dynamic Audio Normalizer determines the maximum possible (local) gain
3441 factor for each input frame, i.e. the maximum gain factor that does not
3442 result in clipping or distortion. The maximum gain factor is determined by
3443 the frame's highest magnitude sample. However, the Dynamic Audio Normalizer
3444 additionally bounds the frame's maximum gain factor by a predetermined
3445 (global) maximum gain factor. This is done in order to avoid excessive gain
3446 factors in "silent" or almost silent frames. By default, the maximum gain
3447 factor is 10.0, For most inputs the default value should be sufficient and
3448 it usually is not recommended to increase this value. Though, for input
3449 with an extremely low overall volume level, it may be necessary to allow even
3450 higher gain factors. Note, however, that the Dynamic Audio Normalizer does
3451 not simply apply a "hard" threshold (i.e. cut off values above the threshold).
3452 Instead, a "sigmoid" threshold function will be applied. This way, the
3453 gain factors will smoothly approach the threshold value, but never exceed that
3454 value.
3455
3456 @item targetrms, r
3457 Set the target RMS. In range from 0.0 to 1.0. Default is 0.0 - disabled.
3458 By default, the Dynamic Audio Normalizer performs "peak" normalization.
3459 This means that the maximum local gain factor for each frame is defined
3460 (only) by the frame's highest magnitude sample. This way, the samples can
3461 be amplified as much as possible without exceeding the maximum signal
3462 level, i.e. without clipping. Optionally, however, the Dynamic Audio
3463 Normalizer can also take into account the frame's root mean square,
3464 abbreviated RMS. In electrical engineering, the RMS is commonly used to
3465 determine the power of a time-varying signal. It is therefore considered
3466 that the RMS is a better approximation of the "perceived loudness" than
3467 just looking at the signal's peak magnitude. Consequently, by adjusting all
3468 frames to a constant RMS value, a uniform "perceived loudness" can be
3469 established. If a target RMS value has been specified, a frame's local gain
3470 factor is defined as the factor that would result in exactly that RMS value.
3471 Note, however, that the maximum local gain factor is still restricted by the
3472 frame's highest magnitude sample, in order to prevent clipping.
3473
3474 @item coupling, n
3475 Enable channels coupling. By default is enabled.
3476 By default, the Dynamic Audio Normalizer will amplify all channels by the same
3477 amount. This means the same gain factor will be applied to all channels, i.e.
3478 the maximum possible gain factor is determined by the "loudest" channel.
3479 However, in some recordings, it may happen that the volume of the different
3480 channels is uneven, e.g. one channel may be "quieter" than the other one(s).
3481 In this case, this option can be used to disable the channel coupling. This way,
3482 the gain factor will be determined independently for each channel, depending
3483 only on the individual channel's highest magnitude sample. This allows for
3484 harmonizing the volume of the different channels.
3485
3486 @item correctdc, c
3487 Enable DC bias correction. By default is disabled.
3488 An audio signal (in the time domain) is a sequence of sample values.
3489 In the Dynamic Audio Normalizer these sample values are represented in the
3490 -1.0 to 1.0 range, regardless of the original input format. Normally, the
3491 audio signal, or "waveform", should be centered around the zero point.
3492 That means if we calculate the mean value of all samples in a file, or in a
3493 single frame, then the result should be 0.0 or at least very close to that
3494 value. If, however, there is a significant deviation of the mean value from
3495 0.0, in either positive or negative direction, this is referred to as a
3496 DC bias or DC offset. Since a DC bias is clearly undesirable, the Dynamic
3497 Audio Normalizer provides optional DC bias correction.
3498 With DC bias correction enabled, the Dynamic Audio Normalizer will determine
3499 the mean value, or "DC correction" offset, of each input frame and subtract
3500 that value from all of the frame's sample values which ensures those samples
3501 are centered around 0.0 again. Also, in order to avoid "gaps" at the frame
3502 boundaries, the DC correction offset values will be interpolated smoothly
3503 between neighbouring frames.
3504
3505 @item altboundary, b
3506 Enable alternative boundary mode. By default is disabled.
3507 The Dynamic Audio Normalizer takes into account a certain neighbourhood
3508 around each frame. This includes the preceding frames as well as the
3509 subsequent frames. However, for the "boundary" frames, located at the very
3510 beginning and at the very end of the audio file, not all neighbouring
3511 frames are available. In particular, for the first few frames in the audio
3512 file, the preceding frames are not known. And, similarly, for the last few
3513 frames in the audio file, the subsequent frames are not known. Thus, the
3514 question arises which gain factors should be assumed for the missing frames
3515 in the "boundary" region. The Dynamic Audio Normalizer implements two modes
3516 to deal with this situation. The default boundary mode assumes a gain factor
3517 of exactly 1.0 for the missing frames, resulting in a smooth "fade in" and
3518 "fade out" at the beginning and at the end of the input, respectively.
3519
3520 @item compress, s
3521 Set the compress factor. In range from 0.0 to 30.0. Default is 0.0.
3522 By default, the Dynamic Audio Normalizer does not apply "traditional"
3523 compression. This means that signal peaks will not be pruned and thus the
3524 full dynamic range will be retained within each local neighbourhood. However,
3525 in some cases it may be desirable to combine the Dynamic Audio Normalizer's
3526 normalization algorithm with a more "traditional" compression.
3527 For this purpose, the Dynamic Audio Normalizer provides an optional compression
3528 (thresholding) function. If (and only if) the compression feature is enabled,
3529 all input frames will be processed by a soft knee thresholding function prior
3530 to the actual normalization process. Put simply, the thresholding function is
3531 going to prune all samples whose magnitude exceeds a certain threshold value.
3532 However, the Dynamic Audio Normalizer does not simply apply a fixed threshold
3533 value. Instead, the threshold value will be adjusted for each individual
3534 frame.
3535 In general, smaller parameters result in stronger compression, and vice versa.
3536 Values below 3.0 are not recommended, because audible distortion may appear.
3537
3538 @item threshold, t
3539 Set the target threshold value. This specifies the lowest permissible
3540 magnitude level for the audio input which will be normalized.
3541 If input frame volume is above this value frame will be normalized.
3542 Otherwise frame may not be normalized at all. The default value is set
3543 to 0, which means all input frames will be normalized.
3544 This option is mostly useful if digital noise is not wanted to be amplified.
3545 @end table
3546
3547 @subsection Commands
3548
3549 This filter supports the all above options as @ref{commands}.
3550
3551 @section earwax
3552
3553 Make audio easier to listen to on headphones.
3554
3555 This filter adds `cues' to 44.1kHz stereo (i.e. audio CD format) audio
3556 so that when listened to on headphones the stereo image is moved from
3557 inside your head (standard for headphones) to outside and in front of
3558 the listener (standard for speakers).
3559
3560 Ported from SoX.
3561
3562 @section equalizer
3563
3564 Apply a two-pole peaking equalisation (EQ) filter. With this
3565 filter, the signal-level at and around a selected frequency can
3566 be increased or decreased, whilst (unlike bandpass and bandreject
3567 filters) that at all other frequencies is unchanged.
3568
3569 In order to produce complex equalisation curves, this filter can
3570 be given several times, each with a different central frequency.
3571
3572 The filter accepts the following options:
3573
3574 @table @option
3575 @item frequency, f
3576 Set the filter's central frequency in Hz.
3577
3578 @item width_type, t
3579 Set method to specify band-width of filter.
3580 @table @option
3581 @item h
3582 Hz
3583 @item q
3584 Q-Factor
3585 @item o
3586 octave
3587 @item s
3588 slope
3589 @item k
3590 kHz
3591 @end table
3592
3593 @item width, w
3594 Specify the band-width of a filter in width_type units.
3595
3596 @item gain, g
3597 Set the required gain or attenuation in dB.
3598 Beware of clipping when using a positive gain.
3599
3600 @item mix, m
3601 How much to use filtered signal in output. Default is 1.
3602 Range is between 0 and 1.
3603
3604 @item channels, c
3605 Specify which channels to filter, by default all available are filtered.
3606
3607 @item normalize, n
3608 Normalize biquad coefficients, by default is disabled.
3609 Enabling it will normalize magnitude response at DC to 0dB.
3610 @end table
3611
3612 @subsection Examples
3613 @itemize
3614 @item
3615 Attenuate 10 dB at 1000 Hz, with a bandwidth of 200 Hz:
3616 @example
3617 equalizer=f=1000:t=h:width=200:g=-10
3618 @end example
3619
3620 @item
3621 Apply 2 dB gain at 1000 Hz with Q 1 and attenuate 5 dB at 100 Hz with Q 2:
3622 @example
3623 equalizer=f=1000:t=q:w=1:g=2,equalizer=f=100:t=q:w=2:g=-5
3624 @end example
3625 @end itemize
3626
3627 @subsection Commands
3628
3629 This filter supports the following commands:
3630 @table @option
3631 @item frequency, f
3632 Change equalizer frequency.
3633 Syntax for the command is : "@var{frequency}"
3634
3635 @item width_type, t
3636 Change equalizer width_type.
3637 Syntax for the command is : "@var{width_type}"
3638
3639 @item width, w
3640 Change equalizer width.
3641 Syntax for the command is : "@var{width}"
3642
3643 @item gain, g
3644 Change equalizer gain.
3645 Syntax for the command is : "@var{gain}"
3646
3647 @item mix, m
3648 Change equalizer mix.
3649 Syntax for the command is : "@var{mix}"
3650 @end table
3651
3652 @section extrastereo
3653
3654 Linearly increases the difference between left and right channels which
3655 adds some sort of "live" effect to playback.
3656
3657 The filter accepts the following options:
3658
3659 @table @option
3660 @item m
3661 Sets the difference coefficient (default: 2.5). 0.0 means mono sound
3662 (average of both channels), with 1.0 sound will be unchanged, with
3663 -1.0 left and right channels will be swapped.
3664
3665 @item c
3666 Enable clipping. By default is enabled.
3667 @end table
3668
3669 @subsection Commands
3670
3671 This filter supports the all above options as @ref{commands}.
3672
3673 @section firequalizer
3674 Apply FIR Equalization using arbitrary frequency response.
3675
3676 The filter accepts the following option:
3677
3678 @table @option
3679 @item gain
3680 Set gain curve equation (in dB). The expression can contain variables:
3681 @table @option
3682 @item f
3683 the evaluated frequency
3684 @item sr
3685 sample rate
3686 @item ch
3687 channel number, set to 0 when multichannels evaluation is disabled
3688 @item chid
3689 channel id, see libavutil/channel_layout.h, set to the first channel id when
3690 multichannels evaluation is disabled
3691 @item chs
3692 number of channels
3693 @item chlayout
3694 channel_layout, see libavutil/channel_layout.h
3695
3696 @end table
3697 and functions:
3698 @table @option
3699 @item gain_interpolate(f)
3700 interpolate gain on frequency f based on gain_entry
3701 @item cubic_interpolate(f)
3702 same as gain_interpolate, but smoother
3703 @end table
3704 This option is also available as command. Default is @code{gain_interpolate(f)}.
3705
3706 @item gain_entry
3707 Set gain entry for gain_interpolate function. The expression can
3708 contain functions:
3709 @table @option
3710 @item entry(f, g)
3711 store gain entry at frequency f with value g
3712 @end table
3713 This option is also available as command.
3714
3715 @item delay
3716 Set filter delay in seconds. Higher value means more accurate.
3717 Default is @code{0.01}.
3718
3719 @item accuracy
3720 Set filter accuracy in Hz. Lower value means more accurate.
3721 Default is @code{5}.
3722
3723 @item wfunc
3724 Set window function. Acceptable values are:
3725 @table @option
3726 @item rectangular
3727 rectangular window, useful when gain curve is already smooth
3728 @item hann
3729 hann window (default)
3730 @item hamming
3731 hamming window
3732 @item blackman
3733 blackman window
3734 @item nuttall3
3735 3-terms continuous 1st derivative nuttall window
3736 @item mnuttall3
3737 minimum 3-terms discontinuous nuttall window
3738 @item nuttall
3739 4-terms continuous 1st derivative nuttall window
3740 @item bnuttall
3741 minimum 4-terms discontinuous nuttall (blackman-nuttall) window
3742 @item bharris
3743 blackman-harris window
3744 @item tukey
3745 tukey window
3746 @end table
3747
3748 @item fixed
3749 If enabled, use fixed number of audio samples. This improves speed when
3750 filtering with large delay. Default is disabled.
3751
3752 @item multi
3753 Enable multichannels evaluation on gain. Default is disabled.
3754
3755 @item zero_phase
3756 Enable zero phase mode by subtracting timestamp to compensate delay.
3757 Default is disabled.
3758
3759 @item scale
3760 Set scale used by gain. Acceptable values are:
3761 @table @option
3762 @item linlin
3763 linear frequency, linear gain
3764 @item linlog
3765 linear frequency, logarithmic (in dB) gain (default)
3766 @item loglin
3767 logarithmic (in octave scale where 20 Hz is 0) frequency, linear gain
3768 @item loglog
3769 logarithmic frequency, logarithmic gain
3770 @end table
3771
3772 @item dumpfile
3773 Set file for dumping, suitable for gnuplot.
3774
3775 @item dumpscale
3776 Set scale for dumpfile. Acceptable values are same with scale option.
3777 Default is linlog.
3778
3779 @item fft2
3780 Enable 2-channel convolution using complex FFT. This improves speed significantly.
3781 Default is disabled.
3782
3783 @item min_phase
3784 Enable minimum phase impulse response. Default is disabled.
3785 @end table
3786
3787 @subsection Examples
3788 @itemize
3789 @item
3790 lowpass at 1000 Hz:
3791 @example
3792 firequalizer=gain='if(lt(f,1000), 0, -INF)'
3793 @end example
3794 @item
3795 lowpass at 1000 Hz with gain_entry:
3796 @example
3797 firequalizer=gain_entry='entry(1000,0); entry(1001, -INF)'
3798 @end example
3799 @item
3800 custom equalization:
3801 @example
3802 firequalizer=gain_entry='entry(100,0); entry(400, -4); entry(1000, -6); entry(2000, 0)'
3803 @end example
3804 @item
3805 higher delay with zero phase to compensate delay:
3806 @example
3807 firequalizer=delay=0.1:fixed=on:zero_phase=on
3808 @end example
3809 @item
3810 lowpass on left channel, highpass on right channel:
3811 @example
3812 firequalizer=gain='if(eq(chid,1), gain_interpolate(f), if(eq(chid,2), gain_interpolate(1e6+f), 0))'
3813 :gain_entry='entry(1000, 0); entry(1001,-INF); entry(1e6+1000,0)':multi=on
3814 @end example
3815 @end itemize
3816
3817 @section flanger
3818 Apply a flanging effect to the audio.
3819
3820 The filter accepts the following options:
3821
3822 @table @option
3823 @item delay
3824 Set base delay in milliseconds. Range from 0 to 30. Default value is 0.
3825
3826 @item depth
3827 Set added sweep delay in milliseconds. Range from 0 to 10. Default value is 2.
3828
3829 @item regen
3830 Set percentage regeneration (delayed signal feedback). Range from -95 to 95.
3831 Default value is 0.
3832
3833 @item width
3834 Set percentage of delayed signal mixed with original. Range from 0 to 100.
3835 Default value is 71.
3836
3837 @item speed
3838 Set sweeps per second (Hz). Range from 0.1 to 10. Default value is 0.5.
3839
3840 @item shape
3841 Set swept wave shape, can be @var{triangular} or @var{sinusoidal}.
3842 Default value is @var{sinusoidal}.
3843
3844 @item phase
3845 Set swept wave percentage-shift for multi channel. Range from 0 to 100.
3846 Default value is 25.
3847
3848 @item interp
3849 Set delay-line interpolation, @var{linear} or @var{quadratic}.
3850 Default is @var{linear}.
3851 @end table
3852
3853 @section haas
3854 Apply Haas effect to audio.
3855
3856 Note that this makes most sense to apply on mono signals.
3857 With this filter applied to mono signals it give some directionality and
3858 stretches its stereo image.
3859
3860 The filter accepts the following options:
3861
3862 @table @option
3863 @item level_in
3864 Set input level. By default is @var{1}, or 0dB
3865
3866 @item level_out
3867 Set output level. By default is @var{1}, or 0dB.
3868
3869 @item side_gain
3870 Set gain applied to side part of signal. By default is @var{1}.
3871
3872 @item middle_source
3873 Set kind of middle source. Can be one of the following:
3874
3875 @table @samp
3876 @item left
3877 Pick left channel.
3878
3879 @item right
3880 Pick right channel.
3881
3882 @item mid
3883 Pick middle part signal of stereo image.
3884
3885 @item side
3886 Pick side part signal of stereo image.
3887 @end table
3888
3889 @item middle_phase
3890 Change middle phase. By default is disabled.
3891
3892 @item left_delay
3893 Set left channel delay. By default is @var{2.05} milliseconds.
3894
3895 @item left_balance
3896 Set left channel balance. By default is @var{-1}.
3897
3898 @item left_gain
3899 Set left channel gain. By default is @var{1}.
3900
3901 @item left_phase
3902 Change left phase. By default is disabled.
3903
3904 @item right_delay
3905 Set right channel delay. By defaults is @var{2.12} milliseconds.
3906
3907 @item right_balance
3908 Set right channel balance. By default is @var{1}.
3909
3910 @item right_gain
3911 Set right channel gain. By default is @var{1}.
3912
3913 @item right_phase
3914 Change right phase. By default is enabled.
3915 @end table
3916
3917 @section hdcd
3918
3919 Decodes High Definition Compatible Digital (HDCD) data. A 16-bit PCM stream with
3920 embedded HDCD codes is expanded into a 20-bit PCM stream.
3921
3922 The filter supports the Peak Extend and Low-level Gain Adjustment features
3923 of HDCD, and detects the Transient Filter flag.
3924
3925 @example
3926 ffmpeg -i HDCD16.flac -af hdcd OUT24.flac
3927 @end example
3928
3929 When using the filter with wav, note the default encoding for wav is 16-bit,
3930 so the resulting 20-bit stream will be truncated back to 16-bit. Use something
3931 like @command{-acodec pcm_s24le} after the filter to get 24-bit PCM output.
3932 @example
3933 ffmpeg -i HDCD16.wav -af hdcd OUT16.wav
3934 ffmpeg -i HDCD16.wav -af hdcd -c:a pcm_s24le OUT24.wav
3935 @end example
3936
3937 The filter accepts the following options:
3938
3939 @table @option
3940 @item disable_autoconvert
3941 Disable any automatic format conversion or resampling in the filter graph.
3942
3943 @item process_stereo
3944 Process the stereo channels together. If target_gain does not match between
3945 channels, consider it invalid and use the last valid target_gain.
3946
3947 @item cdt_ms
3948 Set the code detect timer period in ms.
3949
3950 @item force_pe
3951 Always extend peaks above -3dBFS even if PE isn't signaled.
3952
3953 @item analyze_mode
3954 Replace audio with a solid tone and adjust the amplitude to signal some
3955 specific aspect of the decoding process. The output file can be loaded in
3956 an audio editor alongside the original to aid analysis.
3957
3958 @code{analyze_mode=pe:force_pe=true} can be used to see all samples above the PE level.
3959
3960 Modes are:
3961 @table @samp
3962 @item 0, off
3963 Disabled
3964 @item 1, lle
3965 Gain adjustment level at each sample
3966 @item 2, pe
3967 Samples where peak extend occurs
3968 @item 3, cdt
3969 Samples where the code detect timer is active
3970 @item 4, tgm
3971 Samples where the target gain does not match between channels
3972 @end table
3973 @end table
3974
3975 @section headphone
3976
3977 Apply head-related transfer functions (HRTFs) to create virtual
3978 loudspeakers around the user for binaural listening via headphones.
3979 The HRIRs are provided via additional streams, for each channel
3980 one stereo input stream is needed.
3981
3982 The filter accepts the following options:
3983
3984 @table @option
3985 @item map
3986 Set mapping of input streams for convolution.
3987 The argument is a '|'-separated list of channel names in order as they
3988 are given as additional stream inputs for filter.
3989 This also specify number of input streams. Number of input streams
3990 must be not less than number of channels in first stream plus one.
3991
3992 @item gain
3993 Set gain applied to audio. Value is in dB. Default is 0.
3994
3995 @item type
3996 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
3997 processing audio in time domain which is slow.
3998 @var{freq} is processing audio in frequency domain which is fast.
3999 Default is @var{freq}.
4000
4001 @item lfe
4002 Set custom gain for LFE channels. Value is in dB. Default is 0.
4003
4004 @item size
4005 Set size of frame in number of samples which will be processed at once.
4006 Default value is @var{1024}. Allowed range is from 1024 to 96000.
4007
4008 @item hrir
4009 Set format of hrir stream.
4010 Default value is @var{stereo}. Alternative value is @var{multich}.
4011 If value is set to @var{stereo}, number of additional streams should
4012 be greater or equal to number of input channels in first input stream.
4013 Also each additional stream should have stereo number of channels.
4014 If value is set to @var{multich}, number of additional streams should
4015 be exactly one. Also number of input channels of additional stream
4016 should be equal or greater than twice number of channels of first input
4017 stream.
4018 @end table
4019
4020 @subsection Examples
4021
4022 @itemize
4023 @item
4024 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
4025 each amovie filter use stereo file with IR coefficients as input.
4026 The files give coefficients for each position of virtual loudspeaker:
4027 @example
4028 ffmpeg -i input.wav
4029 -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"
4030 output.wav
4031 @end example
4032
4033 @item
4034 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
4035 but now in @var{multich} @var{hrir} format.
4036 @example
4037 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"
4038 output.wav
4039 @end example
4040 @end itemize
4041
4042 @section highpass
4043
4044 Apply a high-pass filter with 3dB point frequency.
4045 The filter can be either single-pole, or double-pole (the default).
4046 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
4047
4048 The filter accepts the following options:
4049
4050 @table @option
4051 @item frequency, f
4052 Set frequency in Hz. Default is 3000.
4053
4054 @item poles, p
4055 Set number of poles. Default is 2.
4056
4057 @item width_type, t
4058 Set method to specify band-width of filter.
4059 @table @option
4060 @item h
4061 Hz
4062 @item q
4063 Q-Factor
4064 @item o
4065 octave
4066 @item s
4067 slope
4068 @item k
4069 kHz
4070 @end table
4071
4072 @item width, w
4073 Specify the band-width of a filter in width_type units.
4074 Applies only to double-pole filter.
4075 The default is 0.707q and gives a Butterworth response.
4076
4077 @item mix, m
4078 How much to use filtered signal in output. Default is 1.
4079 Range is between 0 and 1.
4080
4081 @item channels, c
4082 Specify which channels to filter, by default all available are filtered.
4083
4084 @item normalize, n
4085 Normalize biquad coefficients, by default is disabled.
4086 Enabling it will normalize magnitude response at DC to 0dB.
4087 @end table
4088
4089 @subsection Commands
4090
4091 This filter supports the following commands:
4092 @table @option
4093 @item frequency, f
4094 Change highpass frequency.
4095 Syntax for the command is : "@var{frequency}"
4096
4097 @item width_type, t
4098 Change highpass width_type.
4099 Syntax for the command is : "@var{width_type}"
4100
4101 @item width, w
4102 Change highpass width.
4103 Syntax for the command is : "@var{width}"
4104
4105 @item mix, m
4106 Change highpass mix.
4107 Syntax for the command is : "@var{mix}"
4108 @end table
4109
4110 @section join
4111
4112 Join multiple input streams into one multi-channel stream.
4113
4114 It accepts the following parameters:
4115 @table @option
4116
4117 @item inputs
4118 The number of input streams. It defaults to 2.
4119
4120 @item channel_layout
4121 The desired output channel layout. It defaults to stereo.
4122
4123 @item map
4124 Map channels from inputs to output. The argument is a '|'-separated list of
4125 mappings, each in the @code{@var{input_idx}.@var{in_channel}-@var{out_channel}}
4126 form. @var{input_idx} is the 0-based index of the input stream. @var{in_channel}
4127 can be either the name of the input channel (e.g. FL for front left) or its
4128 index in the specified input stream. @var{out_channel} is the name of the output
4129 channel.
4130 @end table
4131
4132 The filter will attempt to guess the mappings when they are not specified
4133 explicitly. It does so by first trying to find an unused matching input channel
4134 and if that fails it picks the first unused input channel.
4135
4136 Join 3 inputs (with properly set channel layouts):
4137 @example
4138 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
4139 @end example
4140
4141 Build a 5.1 output from 6 single-channel streams:
4142 @example
4143 ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
4144 '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'
4145 out
4146 @end example
4147
4148 @section ladspa
4149
4150 Load a LADSPA (Linux Audio Developer's Simple Plugin API) plugin.
4151
4152 To enable compilation of this filter you need to configure FFmpeg with
4153 @code{--enable-ladspa}.
4154
4155 @table @option
4156 @item file, f
4157 Specifies the name of LADSPA plugin library to load. If the environment
4158 variable @env{LADSPA_PATH} is defined, the LADSPA plugin is searched in
4159 each one of the directories specified by the colon separated list in
4160 @env{LADSPA_PATH}, otherwise in the standard LADSPA paths, which are in
4161 this order: @file{HOME/.ladspa/lib/}, @file{/usr/local/lib/ladspa/},
4162 @file{/usr/lib/ladspa/}.
4163
4164 @item plugin, p
4165 Specifies the plugin within the library. Some libraries contain only
4166 one plugin, but others contain many of them. If this is not set filter
4167 will list all available plugins within the specified library.
4168
4169 @item controls, c
4170 Set the '|' separated list of controls which are zero or more floating point
4171 values that determine the behavior of the loaded plugin (for example delay,
4172 threshold or gain).
4173 Controls need to be defined using the following syntax:
4174 c0=@var{value0}|c1=@var{value1}|c2=@var{value2}|..., where
4175 @var{valuei} is the value set on the @var{i}-th control.
4176 Alternatively they can be also defined using the following syntax:
4177 @var{value0}|@var{value1}|@var{value2}|..., where
4178 @var{valuei} is the value set on the @var{i}-th control.
4179 If @option{controls} is set to @code{help}, all available controls and
4180 their valid ranges are printed.
4181
4182 @item sample_rate, s
4183 Specify the sample rate, default to 44100. Only used if plugin have
4184 zero inputs.
4185
4186 @item nb_samples, n
4187 Set the number of samples per channel per each output frame, default
4188 is 1024. Only used if plugin have zero inputs.
4189
4190 @item duration, d
4191 Set the minimum duration of the sourced audio. See
4192 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4193 for the accepted syntax.
4194 Note that the resulting duration may be greater than the specified duration,
4195 as the generated audio is always cut at the end of a complete frame.
4196 If not specified, or the expressed duration is negative, the audio is
4197 supposed to be generated forever.
4198 Only used if plugin have zero inputs.
4199
4200 @item latency, l
4201 Enable latency compensation, by default is disabled.
4202 Only used if plugin have inputs.
4203 @end table
4204
4205 @subsection Examples
4206
4207 @itemize
4208 @item
4209 List all available plugins within amp (LADSPA example plugin) library:
4210 @example
4211 ladspa=file=amp
4212 @end example
4213
4214 @item
4215 List all available controls and their valid ranges for @code{vcf_notch}
4216 plugin from @code{VCF} library:
4217 @example
4218 ladspa=f=vcf:p=vcf_notch:c=help
4219 @end example
4220
4221 @item
4222 Simulate low quality audio equipment using @code{Computer Music Toolkit} (CMT)
4223 plugin library:
4224 @example
4225 ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
4226 @end example
4227
4228 @item
4229 Add reverberation to the audio using TAP-plugins
4230 (Tom's Audio Processing plugins):
4231 @example
4232 ladspa=file=tap_reverb:tap_reverb
4233 @end example
4234
4235 @item
4236 Generate white noise, with 0.2 amplitude:
4237 @example
4238 ladspa=file=cmt:noise_source_white:c=c0=.2
4239 @end example
4240
4241 @item
4242 Generate 20 bpm clicks using plugin @code{C* Click - Metronome} from the
4243 @code{C* Audio Plugin Suite} (CAPS) library:
4244 @example
4245 ladspa=file=caps:Click:c=c1=20'
4246 @end example
4247
4248 @item
4249 Apply @code{C* Eq10X2 - Stereo 10-band equaliser} effect:
4250 @example
4251 ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
4252 @end example
4253
4254 @item
4255 Increase volume by 20dB using fast lookahead limiter from Steve Harris
4256 @code{SWH Plugins} collection:
4257 @example
4258 ladspa=fast_lookahead_limiter_1913:fastLookaheadLimiter:20|0|2
4259 @end example
4260
4261 @item
4262 Attenuate low frequencies using Multiband EQ from Steve Harris
4263 @code{SWH Plugins} collection:
4264 @example
4265 ladspa=mbeq_1197:mbeq:-24|-24|-24|0|0|0|0|0|0|0|0|0|0|0|0
4266 @end example
4267
4268 @item
4269 Reduce stereo image using @code{Narrower} from the @code{C* Audio Plugin Suite}
4270 (CAPS) library:
4271 @example
4272 ladspa=caps:Narrower
4273 @end example
4274
4275 @item
4276 Another white noise, now using @code{C* Audio Plugin Suite} (CAPS) library:
4277 @example
4278 ladspa=caps:White:.2
4279 @end example
4280
4281 @item
4282 Some fractal noise, using @code{C* Audio Plugin Suite} (CAPS) library:
4283 @example
4284 ladspa=caps:Fractal:c=c1=1
4285 @end example
4286
4287 @item
4288 Dynamic volume normalization using @code{VLevel} plugin:
4289 @example
4290 ladspa=vlevel-ladspa:vlevel_mono
4291 @end example
4292 @end itemize
4293
4294 @subsection Commands
4295
4296 This filter supports the following commands:
4297 @table @option
4298 @item cN
4299 Modify the @var{N}-th control value.
4300
4301 If the specified value is not valid, it is ignored and prior one is kept.
4302 @end table
4303
4304 @section loudnorm
4305
4306 EBU R128 loudness normalization. Includes both dynamic and linear normalization modes.
4307 Support for both single pass (livestreams, files) and double pass (files) modes.
4308 This algorithm can target IL, LRA, and maximum true peak. In dynamic mode, to accurately
4309 detect true peaks, the audio stream will be upsampled to 192 kHz.
4310 Use the @code{-ar} option or @code{aresample} filter to explicitly set an output sample rate.
4311
4312 The filter accepts the following options:
4313
4314 @table @option
4315 @item I, i
4316 Set integrated loudness target.
4317 Range is -70.0 - -5.0. Default value is -24.0.
4318
4319 @item LRA, lra
4320 Set loudness range target.
4321 Range is 1.0 - 20.0. Default value is 7.0.
4322
4323 @item TP, tp
4324 Set maximum true peak.
4325 Range is -9.0 - +0.0. Default value is -2.0.
4326
4327 @item measured_I, measured_i
4328 Measured IL of input file.
4329 Range is -99.0 - +0.0.
4330
4331 @item measured_LRA, measured_lra
4332 Measured LRA of input file.
4333 Range is  0.0 - 99.0.
4334
4335 @item measured_TP, measured_tp
4336 Measured true peak of input file.
4337 Range is  -99.0 - +99.0.
4338
4339 @item measured_thresh
4340 Measured threshold of input file.
4341 Range is -99.0 - +0.0.
4342
4343 @item offset
4344 Set offset gain. Gain is applied before the true-peak limiter.
4345 Range is  -99.0 - +99.0. Default is +0.0.
4346
4347 @item linear
4348 Normalize by linearly scaling the source audio.
4349 @code{measured_I}, @code{measured_LRA}, @code{measured_TP},
4350 and @code{measured_thresh} must all be specified. Target LRA shouldn't
4351 be lower than source LRA and the change in integrated loudness shouldn't
4352 result in a true peak which exceeds the target TP. If any of these
4353 conditions aren't met, normalization mode will revert to @var{dynamic}.
4354 Options are @code{true} or @code{false}. Default is @code{true}.
4355
4356 @item dual_mono
4357 Treat mono input files as "dual-mono". If a mono file is intended for playback
4358 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
4359 If set to @code{true}, this option will compensate for this effect.
4360 Multi-channel input files are not affected by this option.
4361 Options are true or false. Default is false.
4362
4363 @item print_format
4364 Set print format for stats. Options are summary, json, or none.
4365 Default value is none.
4366 @end table
4367
4368 @section lowpass
4369
4370 Apply a low-pass filter with 3dB point frequency.
4371 The filter can be either single-pole or double-pole (the default).
4372 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
4373
4374 The filter accepts the following options:
4375
4376 @table @option
4377 @item frequency, f
4378 Set frequency in Hz. Default is 500.
4379
4380 @item poles, p
4381 Set number of poles. Default is 2.
4382
4383 @item width_type, t
4384 Set method to specify band-width of filter.
4385 @table @option
4386 @item h
4387 Hz
4388 @item q
4389 Q-Factor
4390 @item o
4391 octave
4392 @item s
4393 slope
4394 @item k
4395 kHz
4396 @end table
4397
4398 @item width, w
4399 Specify the band-width of a filter in width_type units.
4400 Applies only to double-pole filter.
4401 The default is 0.707q and gives a Butterworth response.
4402
4403 @item mix, m
4404 How much to use filtered signal in output. Default is 1.
4405 Range is between 0 and 1.
4406
4407 @item channels, c
4408 Specify which channels to filter, by default all available are filtered.
4409
4410 @item normalize, n
4411 Normalize biquad coefficients, by default is disabled.
4412 Enabling it will normalize magnitude response at DC to 0dB.
4413 @end table
4414
4415 @subsection Examples
4416 @itemize
4417 @item
4418 Lowpass only LFE channel, it LFE is not present it does nothing:
4419 @example
4420 lowpass=c=LFE
4421 @end example
4422 @end itemize
4423
4424 @subsection Commands
4425
4426 This filter supports the following commands:
4427 @table @option
4428 @item frequency, f
4429 Change lowpass frequency.
4430 Syntax for the command is : "@var{frequency}"
4431
4432 @item width_type, t
4433 Change lowpass width_type.
4434 Syntax for the command is : "@var{width_type}"
4435
4436 @item width, w
4437 Change lowpass width.
4438 Syntax for the command is : "@var{width}"
4439
4440 @item mix, m
4441 Change lowpass mix.
4442 Syntax for the command is : "@var{mix}"
4443 @end table
4444
4445 @section lv2
4446
4447 Load a LV2 (LADSPA Version 2) plugin.
4448
4449 To enable compilation of this filter you need to configure FFmpeg with
4450 @code{--enable-lv2}.
4451
4452 @table @option
4453 @item plugin, p
4454 Specifies the plugin URI. You may need to escape ':'.
4455
4456 @item controls, c
4457 Set the '|' separated list of controls which are zero or more floating point
4458 values that determine the behavior of the loaded plugin (for example delay,
4459 threshold or gain).
4460 If @option{controls} is set to @code{help}, all available controls and
4461 their valid ranges are printed.
4462
4463 @item sample_rate, s
4464 Specify the sample rate, default to 44100. Only used if plugin have
4465 zero inputs.
4466
4467 @item nb_samples, n
4468 Set the number of samples per channel per each output frame, default
4469 is 1024. Only used if plugin have zero inputs.
4470
4471 @item duration, d
4472 Set the minimum duration of the sourced audio. See
4473 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4474 for the accepted syntax.
4475 Note that the resulting duration may be greater than the specified duration,
4476 as the generated audio is always cut at the end of a complete frame.
4477 If not specified, or the expressed duration is negative, the audio is
4478 supposed to be generated forever.
4479 Only used if plugin have zero inputs.
4480 @end table
4481
4482 @subsection Examples
4483
4484 @itemize
4485 @item
4486 Apply bass enhancer plugin from Calf:
4487 @example
4488 lv2=p=http\\\\://calf.sourceforge.net/plugins/BassEnhancer:c=amount=2
4489 @end example
4490
4491 @item
4492 Apply vinyl plugin from Calf:
4493 @example
4494 lv2=p=http\\\\://calf.sourceforge.net/plugins/Vinyl:c=drone=0.2|aging=0.5
4495 @end example
4496
4497 @item
4498 Apply bit crusher plugin from ArtyFX:
4499 @example
4500 lv2=p=http\\\\://www.openavproductions.com/artyfx#bitta:c=crush=0.3
4501 @end example
4502 @end itemize
4503
4504 @section mcompand
4505 Multiband Compress or expand the audio's dynamic range.
4506
4507 The input audio is divided into bands using 4th order Linkwitz-Riley IIRs.
4508 This is akin to the crossover of a loudspeaker, and results in flat frequency
4509 response when absent compander action.
4510
4511 It accepts the following parameters:
4512
4513 @table @option
4514 @item args
4515 This option syntax is:
4516 attack,decay,[attack,decay..] soft-knee points crossover_frequency [delay [initial_volume [gain]]] | attack,decay ...
4517 For explanation of each item refer to compand filter documentation.
4518 @end table
4519
4520 @anchor{pan}
4521 @section pan
4522
4523 Mix channels with specific gain levels. The filter accepts the output
4524 channel layout followed by a set of channels definitions.
4525
4526 This filter is also designed to efficiently remap the channels of an audio
4527 stream.
4528
4529 The filter accepts parameters of the form:
4530 "@var{l}|@var{outdef}|@var{outdef}|..."
4531
4532 @table @option
4533 @item l
4534 output channel layout or number of channels
4535
4536 @item outdef
4537 output channel specification, of the form:
4538 "@var{out_name}=[@var{gain}*]@var{in_name}[(+-)[@var{gain}*]@var{in_name}...]"
4539
4540 @item out_name
4541 output channel to define, either a channel name (FL, FR, etc.) or a channel
4542 number (c0, c1, etc.)
4543
4544 @item gain
4545 multiplicative coefficient for the channel, 1 leaving the volume unchanged
4546
4547 @item in_name
4548 input channel to use, see out_name for details; it is not possible to mix
4549 named and numbered input channels
4550 @end table
4551
4552 If the `=' in a channel specification is replaced by `<', then the gains for
4553 that specification will be renormalized so that the total is 1, thus
4554 avoiding clipping noise.
4555
4556 @subsection Mixing examples
4557
4558 For example, if you want to down-mix from stereo to mono, but with a bigger
4559 factor for the left channel:
4560 @example
4561 pan=1c|c0=0.9*c0+0.1*c1
4562 @end example
4563
4564 A customized down-mix to stereo that works automatically for 3-, 4-, 5- and
4565 7-channels surround:
4566 @example
4567 pan=stereo| FL < FL + 0.5*FC + 0.6*BL + 0.6*SL | FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
4568 @end example
4569
4570 Note that @command{ffmpeg} integrates a default down-mix (and up-mix) system
4571 that should be preferred (see "-ac" option) unless you have very specific
4572 needs.
4573
4574 @subsection Remapping examples
4575
4576 The channel remapping will be effective if, and only if:
4577
4578 @itemize
4579 @item gain coefficients are zeroes or ones,
4580 @item only one input per channel output,
4581 @end itemize
4582
4583 If all these conditions are satisfied, the filter will notify the user ("Pure
4584 channel mapping detected"), and use an optimized and lossless method to do the
4585 remapping.
4586
4587 For example, if you have a 5.1 source and want a stereo audio stream by
4588 dropping the extra channels:
4589 @example
4590 pan="stereo| c0=FL | c1=FR"
4591 @end example
4592
4593 Given the same source, you can also switch front left and front right channels
4594 and keep the input channel layout:
4595 @example
4596 pan="5.1| c0=c1 | c1=c0 | c2=c2 | c3=c3 | c4=c4 | c5=c5"
4597 @end example
4598
4599 If the input is a stereo audio stream, you can mute the front left channel (and
4600 still keep the stereo channel layout) with:
4601 @example
4602 pan="stereo|c1=c1"
4603 @end example
4604
4605 Still with a stereo audio stream input, you can copy the right channel in both
4606 front left and right:
4607 @example
4608 pan="stereo| c0=FR | c1=FR"
4609 @end example
4610
4611 @section replaygain
4612
4613 ReplayGain scanner filter. This filter takes an audio stream as an input and
4614 outputs it unchanged.
4615 At end of filtering it displays @code{track_gain} and @code{track_peak}.
4616
4617 @section resample
4618
4619 Convert the audio sample format, sample rate and channel layout. It is
4620 not meant to be used directly.
4621
4622 @section rubberband
4623 Apply time-stretching and pitch-shifting with librubberband.
4624
4625 To enable compilation of this filter, you need to configure FFmpeg with
4626 @code{--enable-librubberband}.
4627
4628 The filter accepts the following options:
4629
4630 @table @option
4631 @item tempo
4632 Set tempo scale factor.
4633
4634 @item pitch
4635 Set pitch scale factor.
4636
4637 @item transients
4638 Set transients detector.
4639 Possible values are:
4640 @table @var
4641 @item crisp
4642 @item mixed
4643 @item smooth
4644 @end table
4645
4646 @item detector
4647 Set detector.
4648 Possible values are:
4649 @table @var
4650 @item compound
4651 @item percussive
4652 @item soft
4653 @end table
4654
4655 @item phase
4656 Set phase.
4657 Possible values are:
4658 @table @var
4659 @item laminar
4660 @item independent
4661 @end table
4662
4663 @item window
4664 Set processing window size.
4665 Possible values are:
4666 @table @var
4667 @item standard
4668 @item short
4669 @item long
4670 @end table
4671
4672 @item smoothing
4673 Set smoothing.
4674 Possible values are:
4675 @table @var
4676 @item off
4677 @item on
4678 @end table
4679
4680 @item formant
4681 Enable formant preservation when shift pitching.
4682 Possible values are:
4683 @table @var
4684 @item shifted
4685 @item preserved
4686 @end table
4687
4688 @item pitchq
4689 Set pitch quality.
4690 Possible values are:
4691 @table @var
4692 @item quality
4693 @item speed
4694 @item consistency
4695 @end table
4696
4697 @item channels
4698 Set channels.
4699 Possible values are:
4700 @table @var
4701 @item apart
4702 @item together
4703 @end table
4704 @end table
4705
4706 @subsection Commands
4707
4708 This filter supports the following commands:
4709 @table @option
4710 @item tempo
4711 Change filter tempo scale factor.
4712 Syntax for the command is : "@var{tempo}"
4713
4714 @item pitch
4715 Change filter pitch scale factor.
4716 Syntax for the command is : "@var{pitch}"
4717 @end table
4718
4719 @section sidechaincompress
4720
4721 This filter acts like normal compressor but has the ability to compress
4722 detected signal using second input signal.
4723 It needs two input streams and returns one output stream.
4724 First input stream will be processed depending on second stream signal.
4725 The filtered signal then can be filtered with other filters in later stages of
4726 processing. See @ref{pan} and @ref{amerge} filter.
4727
4728 The filter accepts the following options:
4729
4730 @table @option
4731 @item level_in
4732 Set input gain. Default is 1. Range is between 0.015625 and 64.
4733
4734 @item mode
4735 Set mode of compressor operation. Can be @code{upward} or @code{downward}.
4736 Default is @code{downward}.
4737
4738 @item threshold
4739 If a signal of second stream raises above this level it will affect the gain
4740 reduction of first stream.
4741 By default is 0.125. Range is between 0.00097563 and 1.
4742
4743 @item ratio
4744 Set a ratio about which the signal is reduced. 1:2 means that if the level
4745 raised 4dB above the threshold, it will be only 2dB above after the reduction.
4746 Default is 2. Range is between 1 and 20.
4747
4748 @item attack
4749 Amount of milliseconds the signal has to rise above the threshold before gain
4750 reduction starts. Default is 20. Range is between 0.01 and 2000.
4751
4752 @item release
4753 Amount of milliseconds the signal has to fall below the threshold before
4754 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
4755
4756 @item makeup
4757 Set the amount by how much signal will be amplified after processing.
4758 Default is 1. Range is from 1 to 64.
4759
4760 @item knee
4761 Curve the sharp knee around the threshold to enter gain reduction more softly.
4762 Default is 2.82843. Range is between 1 and 8.
4763
4764 @item link
4765 Choose if the @code{average} level between all channels of side-chain stream
4766 or the louder(@code{maximum}) channel of side-chain stream affects the
4767 reduction. Default is @code{average}.
4768
4769 @item detection
4770 Should the exact signal be taken in case of @code{peak} or an RMS one in case
4771 of @code{rms}. Default is @code{rms} which is mainly smoother.
4772
4773 @item level_sc
4774 Set sidechain gain. Default is 1. Range is between 0.015625 and 64.
4775
4776 @item mix
4777 How much to use compressed signal in output. Default is 1.
4778 Range is between 0 and 1.
4779 @end table
4780
4781 @subsection Commands
4782
4783 This filter supports the all above options as @ref{commands}.
4784
4785 @subsection Examples
4786
4787 @itemize
4788 @item
4789 Full ffmpeg example taking 2 audio inputs, 1st input to be compressed
4790 depending on the signal of 2nd input and later compressed signal to be
4791 merged with 2nd input:
4792 @example
4793 ffmpeg -i main.flac -i sidechain.flac -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress[compr];[compr][mix]amerge"
4794 @end example
4795 @end itemize
4796
4797 @section sidechaingate
4798
4799 A sidechain gate acts like a normal (wideband) gate but has the ability to
4800 filter the detected signal before sending it to the gain reduction stage.
4801 Normally a gate uses the full range signal to detect a level above the
4802 threshold.
4803 For example: If you cut all lower frequencies from your sidechain signal
4804 the gate will decrease the volume of your track only if not enough highs
4805 appear. With this technique you are able to reduce the resonation of a
4806 natural drum or remove "rumbling" of muted strokes from a heavily distorted
4807 guitar.
4808 It needs two input streams and returns one output stream.
4809 First input stream will be processed depending on second stream signal.
4810
4811 The filter accepts the following options:
4812
4813 @table @option
4814 @item level_in
4815 Set input level before filtering.
4816 Default is 1. Allowed range is from 0.015625 to 64.
4817
4818 @item mode
4819 Set the mode of operation. Can be @code{upward} or @code{downward}.
4820 Default is @code{downward}. If set to @code{upward} mode, higher parts of signal
4821 will be amplified, expanding dynamic range in upward direction.
4822 Otherwise, in case of @code{downward} lower parts of signal will be reduced.
4823
4824 @item range
4825 Set the level of gain reduction when the signal is below the threshold.
4826 Default is 0.06125. Allowed range is from 0 to 1.
4827 Setting this to 0 disables reduction and then filter behaves like expander.
4828
4829 @item threshold
4830 If a signal rises above this level the gain reduction is released.
4831 Default is 0.125. Allowed range is from 0 to 1.
4832
4833 @item ratio
4834 Set a ratio about which the signal is reduced.
4835 Default is 2. Allowed range is from 1 to 9000.
4836
4837 @item attack
4838 Amount of milliseconds the signal has to rise above the threshold before gain
4839 reduction stops.
4840 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
4841
4842 @item release
4843 Amount of milliseconds the signal has to fall below the threshold before the
4844 reduction is increased again. Default is 250 milliseconds.
4845 Allowed range is from 0.01 to 9000.
4846
4847 @item makeup
4848 Set amount of amplification of signal after processing.
4849 Default is 1. Allowed range is from 1 to 64.
4850
4851 @item knee
4852 Curve the sharp knee around the threshold to enter gain reduction more softly.
4853 Default is 2.828427125. Allowed range is from 1 to 8.
4854
4855 @item detection
4856 Choose if exact signal should be taken for detection or an RMS like one.
4857 Default is rms. Can be peak or rms.
4858
4859 @item link
4860 Choose if the average level between all channels or the louder channel affects
4861 the reduction.
4862 Default is average. Can be average or maximum.
4863
4864 @item level_sc
4865 Set sidechain gain. Default is 1. Range is from 0.015625 to 64.
4866 @end table
4867
4868 @section silencedetect
4869
4870 Detect silence in an audio stream.
4871
4872 This filter logs a message when it detects that the input audio volume is less
4873 or equal to a noise tolerance value for a duration greater or equal to the
4874 minimum detected noise duration.
4875
4876 The printed times and duration are expressed in seconds. The
4877 @code{lavfi.silence_start} or @code{lavfi.silence_start.X} metadata key
4878 is set on the first frame whose timestamp equals or exceeds the detection
4879 duration and it contains the timestamp of the first frame of the silence.
4880
4881 The @code{lavfi.silence_duration} or @code{lavfi.silence_duration.X}
4882 and @code{lavfi.silence_end} or @code{lavfi.silence_end.X} metadata
4883 keys are set on the first frame after the silence. If @option{mono} is
4884 enabled, and each channel is evaluated separately, the @code{.X}
4885 suffixed keys are used, and @code{X} corresponds to the channel number.
4886
4887 The filter accepts the following options:
4888
4889 @table @option
4890 @item noise, n
4891 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
4892 specified value) or amplitude ratio. Default is -60dB, or 0.001.
4893
4894 @item duration, d
4895 Set silence duration until notification (default is 2 seconds). See
4896 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4897 for the accepted syntax.
4898
4899 @item mono, m
4900 Process each channel separately, instead of combined. By default is disabled.
4901 @end table
4902
4903 @subsection Examples
4904
4905 @itemize
4906 @item
4907 Detect 5 seconds of silence with -50dB noise tolerance:
4908 @example
4909 silencedetect=n=-50dB:d=5
4910 @end example
4911
4912 @item
4913 Complete example with @command{ffmpeg} to detect silence with 0.0001 noise
4914 tolerance in @file{silence.mp3}:
4915 @example
4916 ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
4917 @end example
4918 @end itemize
4919
4920 @section silenceremove
4921
4922 Remove silence from the beginning, middle or end of the audio.
4923
4924 The filter accepts the following options:
4925
4926 @table @option
4927 @item start_periods
4928 This value is used to indicate if audio should be trimmed at beginning of
4929 the audio. A value of zero indicates no silence should be trimmed from the
4930 beginning. When specifying a non-zero value, it trims audio up until it
4931 finds non-silence. Normally, when trimming silence from beginning of audio
4932 the @var{start_periods} will be @code{1} but it can be increased to higher
4933 values to trim all audio up to specific count of non-silence periods.
4934 Default value is @code{0}.
4935
4936 @item start_duration
4937 Specify the amount of time that non-silence must be detected before it stops
4938 trimming audio. By increasing the duration, bursts of noises can be treated
4939 as silence and trimmed off. Default value is @code{0}.
4940
4941 @item start_threshold
4942 This indicates what sample value should be treated as silence. For digital
4943 audio, a value of @code{0} may be fine but for audio recorded from analog,
4944 you may wish to increase the value to account for background noise.
4945 Can be specified in dB (in case "dB" is appended to the specified value)
4946 or amplitude ratio. Default value is @code{0}.
4947
4948 @item start_silence
4949 Specify max duration of silence at beginning that will be kept after
4950 trimming. Default is 0, which is equal to trimming all samples detected
4951 as silence.
4952
4953 @item start_mode
4954 Specify mode of detection of silence end in start of multi-channel audio.
4955 Can be @var{any} or @var{all}. Default is @var{any}.
4956 With @var{any}, any sample that is detected as non-silence will cause
4957 stopped trimming of silence.
4958 With @var{all}, only if all channels are detected as non-silence will cause
4959 stopped trimming of silence.
4960
4961 @item stop_periods
4962 Set the count for trimming silence from the end of audio.
4963 To remove silence from the middle of a file, specify a @var{stop_periods}
4964 that is negative. This value is then treated as a positive value and is
4965 used to indicate the effect should restart processing as specified by
4966 @var{start_periods}, making it suitable for removing periods of silence
4967 in the middle of the audio.
4968 Default value is @code{0}.
4969
4970 @item stop_duration
4971 Specify a duration of silence that must exist before audio is not copied any
4972 more. By specifying a higher duration, silence that is wanted can be left in
4973 the audio.
4974 Default value is @code{0}.
4975
4976 @item stop_threshold
4977 This is the same as @option{start_threshold} but for trimming silence from
4978 the end of audio.
4979 Can be specified in dB (in case "dB" is appended to the specified value)
4980 or amplitude ratio. Default value is @code{0}.
4981
4982 @item stop_silence
4983 Specify max duration of silence at end that will be kept after
4984 trimming. Default is 0, which is equal to trimming all samples detected
4985 as silence.
4986
4987 @item stop_mode
4988 Specify mode of detection of silence start in end of multi-channel audio.
4989 Can be @var{any} or @var{all}. Default is @var{any}.
4990 With @var{any}, any sample that is detected as non-silence will cause
4991 stopped trimming of silence.
4992 With @var{all}, only if all channels are detected as non-silence will cause
4993 stopped trimming of silence.
4994
4995 @item detection
4996 Set how is silence detected. Can be @code{rms} or @code{peak}. Second is faster
4997 and works better with digital silence which is exactly 0.
4998 Default value is @code{rms}.
4999
5000 @item window
5001 Set duration in number of seconds used to calculate size of window in number
5002 of samples for detecting silence.
5003 Default value is @code{0.02}. Allowed range is from @code{0} to @code{10}.
5004 @end table
5005
5006 @subsection Examples
5007
5008 @itemize
5009 @item
5010 The following example shows how this filter can be used to start a recording
5011 that does not contain the delay at the start which usually occurs between
5012 pressing the record button and the start of the performance:
5013 @example
5014 silenceremove=start_periods=1:start_duration=5:start_threshold=0.02
5015 @end example
5016
5017 @item
5018 Trim all silence encountered from beginning to end where there is more than 1
5019 second of silence in audio:
5020 @example
5021 silenceremove=stop_periods=-1:stop_duration=1:stop_threshold=-90dB
5022 @end example
5023
5024 @item
5025 Trim all digital silence samples, using peak detection, from beginning to end
5026 where there is more than 0 samples of digital silence in audio and digital
5027 silence is detected in all channels at same positions in stream:
5028 @example
5029 silenceremove=window=0:detection=peak:stop_mode=all:start_mode=all:stop_periods=-1:stop_threshold=0
5030 @end example
5031 @end itemize
5032
5033 @section sofalizer
5034
5035 SOFAlizer uses head-related transfer functions (HRTFs) to create virtual
5036 loudspeakers around the user for binaural listening via headphones (audio
5037 formats up to 9 channels supported).
5038 The HRTFs are stored in SOFA files (see @url{http://www.sofacoustics.org/} for a database).
5039 SOFAlizer is developed at the Acoustics Research Institute (ARI) of the
5040 Austrian Academy of Sciences.
5041
5042 To enable compilation of this filter you need to configure FFmpeg with
5043 @code{--enable-libmysofa}.
5044
5045 The filter accepts the following options:
5046
5047 @table @option
5048 @item sofa
5049 Set the SOFA file used for rendering.
5050
5051 @item gain
5052 Set gain applied to audio. Value is in dB. Default is 0.
5053
5054 @item rotation
5055 Set rotation of virtual loudspeakers in deg. Default is 0.
5056
5057 @item elevation
5058 Set elevation of virtual speakers in deg. Default is 0.
5059
5060 @item radius
5061 Set distance in meters between loudspeakers and the listener with near-field
5062 HRTFs. Default is 1.
5063
5064 @item type
5065 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
5066 processing audio in time domain which is slow.
5067 @var{freq} is processing audio in frequency domain which is fast.
5068 Default is @var{freq}.
5069
5070 @item speakers
5071 Set custom positions of virtual loudspeakers. Syntax for this option is:
5072 <CH> <AZIM> <ELEV>[|<CH> <AZIM> <ELEV>|...].
5073 Each virtual loudspeaker is described with short channel name following with
5074 azimuth and elevation in degrees.
5075 Each virtual loudspeaker description is separated by '|'.
5076 For example to override front left and front right channel positions use:
5077 'speakers=FL 45 15|FR 345 15'.
5078 Descriptions with unrecognised channel names are ignored.
5079
5080 @item lfegain
5081 Set custom gain for LFE channels. Value is in dB. Default is 0.
5082
5083 @item framesize
5084 Set custom frame size in number of samples. Default is 1024.
5085 Allowed range is from 1024 to 96000. Only used if option @samp{type}
5086 is set to @var{freq}.
5087
5088 @item normalize
5089 Should all IRs be normalized upon importing SOFA file.
5090 By default is enabled.
5091
5092 @item interpolate
5093 Should nearest IRs be interpolated with neighbor IRs if exact position
5094 does not match. By default is disabled.
5095
5096 @item minphase
5097 Minphase all IRs upon loading of SOFA file. By default is disabled.
5098
5099 @item anglestep
5100 Set neighbor search angle step. Only used if option @var{interpolate} is enabled.
5101
5102 @item radstep
5103 Set neighbor search radius step. Only used if option @var{interpolate} is enabled.
5104 @end table
5105
5106 @subsection Examples
5107
5108 @itemize
5109 @item
5110 Using ClubFritz6 sofa file:
5111 @example
5112 sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=1
5113 @end example
5114
5115 @item
5116 Using ClubFritz12 sofa file and bigger radius with small rotation:
5117 @example
5118 sofalizer=sofa=/path/to/ClubFritz12.sofa:type=freq:radius=2:rotation=5
5119 @end example
5120
5121 @item
5122 Similar as above but with custom speaker positions for front left, front right, back left and back right
5123 and also with custom gain:
5124 @example
5125 "sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=2:speakers=FL 45|FR 315|BL 135|BR 225:gain=28"
5126 @end example
5127 @end itemize
5128
5129 @section stereotools
5130
5131 This filter has some handy utilities to manage stereo signals, for converting
5132 M/S stereo recordings to L/R signal while having control over the parameters
5133 or spreading the stereo image of master track.
5134
5135 The filter accepts the following options:
5136
5137 @table @option
5138 @item level_in
5139 Set input level before filtering for both channels. Defaults is 1.
5140 Allowed range is from 0.015625 to 64.
5141
5142 @item level_out
5143 Set output level after filtering for both channels. Defaults is 1.
5144 Allowed range is from 0.015625 to 64.
5145
5146 @item balance_in
5147 Set input balance between both channels. Default is 0.
5148 Allowed range is from -1 to 1.
5149
5150 @item balance_out
5151 Set output balance between both channels. Default is 0.
5152 Allowed range is from -1 to 1.
5153
5154 @item softclip
5155 Enable softclipping. Results in analog distortion instead of harsh digital 0dB
5156 clipping. Disabled by default.
5157
5158 @item mutel
5159 Mute the left channel. Disabled by default.
5160
5161 @item muter
5162 Mute the right channel. Disabled by default.
5163
5164 @item phasel
5165 Change the phase of the left channel. Disabled by default.
5166
5167 @item phaser
5168 Change the phase of the right channel. Disabled by default.
5169
5170 @item mode
5171 Set stereo mode. Available values are:
5172
5173 @table @samp
5174 @item lr>lr
5175 Left/Right to Left/Right, this is default.
5176
5177 @item lr>ms
5178 Left/Right to Mid/Side.
5179
5180 @item ms>lr
5181 Mid/Side to Left/Right.
5182
5183 @item lr>ll
5184 Left/Right to Left/Left.
5185
5186 @item lr>rr
5187 Left/Right to Right/Right.
5188
5189 @item lr>l+r
5190 Left/Right to Left + Right.
5191
5192 @item lr>rl
5193 Left/Right to Right/Left.
5194
5195 @item ms>ll
5196 Mid/Side to Left/Left.
5197
5198 @item ms>rr
5199 Mid/Side to Right/Right.
5200 @end table
5201
5202 @item slev
5203 Set level of side signal. Default is 1.
5204 Allowed range is from 0.015625 to 64.
5205
5206 @item sbal
5207 Set balance of side signal. Default is 0.
5208 Allowed range is from -1 to 1.
5209
5210 @item mlev
5211 Set level of the middle signal. Default is 1.
5212 Allowed range is from 0.015625 to 64.
5213
5214 @item mpan
5215 Set middle signal pan. Default is 0. Allowed range is from -1 to 1.
5216
5217 @item base
5218 Set stereo base between mono and inversed channels. Default is 0.
5219 Allowed range is from -1 to 1.
5220
5221 @item delay
5222 Set delay in milliseconds how much to delay left from right channel and
5223 vice versa. Default is 0. Allowed range is from -20 to 20.
5224
5225 @item sclevel
5226 Set S/C level. Default is 1. Allowed range is from 1 to 100.
5227
5228 @item phase
5229 Set the stereo phase in degrees. Default is 0. Allowed range is from 0 to 360.
5230
5231 @item bmode_in, bmode_out
5232 Set balance mode for balance_in/balance_out option.
5233
5234 Can be one of the following:
5235
5236 @table @samp
5237 @item balance
5238 Classic balance mode. Attenuate one channel at time.
5239 Gain is raised up to 1.
5240
5241 @item amplitude
5242 Similar as classic mode above but gain is raised up to 2.
5243
5244 @item power
5245 Equal power distribution, from -6dB to +6dB range.
5246 @end table
5247 @end table
5248
5249 @subsection Examples
5250
5251 @itemize
5252 @item
5253 Apply karaoke like effect:
5254 @example
5255 stereotools=mlev=0.015625
5256 @end example
5257
5258 @item
5259 Convert M/S signal to L/R:
5260 @example
5261 "stereotools=mode=ms>lr"
5262 @end example
5263 @end itemize
5264
5265 @section stereowiden
5266
5267 This filter enhance the stereo effect by suppressing signal common to both
5268 channels and by delaying the signal of left into right and vice versa,
5269 thereby widening the stereo effect.
5270
5271 The filter accepts the following options:
5272
5273 @table @option
5274 @item delay
5275 Time in milliseconds of the delay of left signal into right and vice versa.
5276 Default is 20 milliseconds.
5277
5278 @item feedback
5279 Amount of gain in delayed signal into right and vice versa. Gives a delay
5280 effect of left signal in right output and vice versa which gives widening
5281 effect. Default is 0.3.
5282
5283 @item crossfeed
5284 Cross feed of left into right with inverted phase. This helps in suppressing
5285 the mono. If the value is 1 it will cancel all the signal common to both
5286 channels. Default is 0.3.
5287
5288 @item drymix
5289 Set level of input signal of original channel. Default is 0.8.
5290 @end table
5291
5292 @subsection Commands
5293
5294 This filter supports the all above options except @code{delay} as @ref{commands}.
5295
5296 @section superequalizer
5297 Apply 18 band equalizer.
5298
5299 The filter accepts the following options:
5300 @table @option
5301 @item 1b
5302 Set 65Hz band gain.
5303 @item 2b
5304 Set 92Hz band gain.
5305 @item 3b
5306 Set 131Hz band gain.
5307 @item 4b
5308 Set 185Hz band gain.
5309 @item 5b
5310 Set 262Hz band gain.
5311 @item 6b
5312 Set 370Hz band gain.
5313 @item 7b
5314 Set 523Hz band gain.
5315 @item 8b
5316 Set 740Hz band gain.
5317 @item 9b
5318 Set 1047Hz band gain.
5319 @item 10b
5320 Set 1480Hz band gain.
5321 @item 11b
5322 Set 2093Hz band gain.
5323 @item 12b
5324 Set 2960Hz band gain.
5325 @item 13b
5326 Set 4186Hz band gain.
5327 @item 14b
5328 Set 5920Hz band gain.
5329 @item 15b
5330 Set 8372Hz band gain.
5331 @item 16b
5332 Set 11840Hz band gain.
5333 @item 17b
5334 Set 16744Hz band gain.
5335 @item 18b
5336 Set 20000Hz band gain.
5337 @end table
5338
5339 @section surround
5340 Apply audio surround upmix filter.
5341
5342 This filter allows to produce multichannel output from audio stream.
5343
5344 The filter accepts the following options:
5345
5346 @table @option
5347 @item chl_out
5348 Set output channel layout. By default, this is @var{5.1}.
5349
5350 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5351 for the required syntax.
5352
5353 @item chl_in
5354 Set input channel layout. By default, this is @var{stereo}.
5355
5356 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5357 for the required syntax.
5358
5359 @item level_in
5360 Set input volume level. By default, this is @var{1}.
5361
5362 @item level_out
5363 Set output volume level. By default, this is @var{1}.
5364
5365 @item lfe
5366 Enable LFE channel output if output channel layout has it. By default, this is enabled.
5367
5368 @item lfe_low
5369 Set LFE low cut off frequency. By default, this is @var{128} Hz.
5370
5371 @item lfe_high
5372 Set LFE high cut off frequency. By default, this is @var{256} Hz.
5373
5374 @item lfe_mode
5375 Set LFE mode, can be @var{add} or @var{sub}. Default is @var{add}.
5376 In @var{add} mode, LFE channel is created from input audio and added to output.
5377 In @var{sub} mode, LFE channel is created from input audio and added to output but
5378 also all non-LFE output channels are subtracted with output LFE channel.
5379
5380 @item angle
5381 Set angle of stereo surround transform, Allowed range is from @var{0} to @var{360}.
5382 Default is @var{90}.
5383
5384 @item fc_in
5385 Set front center input volume. By default, this is @var{1}.
5386
5387 @item fc_out
5388 Set front center output volume. By default, this is @var{1}.
5389
5390 @item fl_in
5391 Set front left input volume. By default, this is @var{1}.
5392
5393 @item fl_out
5394 Set front left output volume. By default, this is @var{1}.
5395
5396 @item fr_in
5397 Set front right input volume. By default, this is @var{1}.
5398
5399 @item fr_out
5400 Set front right output volume. By default, this is @var{1}.
5401
5402 @item sl_in
5403 Set side left input volume. By default, this is @var{1}.
5404
5405 @item sl_out
5406 Set side left output volume. By default, this is @var{1}.
5407
5408 @item sr_in
5409 Set side right input volume. By default, this is @var{1}.
5410
5411 @item sr_out
5412 Set side right output volume. By default, this is @var{1}.
5413
5414 @item bl_in
5415 Set back left input volume. By default, this is @var{1}.
5416
5417 @item bl_out
5418 Set back left output volume. By default, this is @var{1}.
5419
5420 @item br_in
5421 Set back right input volume. By default, this is @var{1}.
5422
5423 @item br_out
5424 Set back right output volume. By default, this is @var{1}.
5425
5426 @item bc_in
5427 Set back center input volume. By default, this is @var{1}.
5428
5429 @item bc_out
5430 Set back center output volume. By default, this is @var{1}.
5431
5432 @item lfe_in
5433 Set LFE input volume. By default, this is @var{1}.
5434
5435 @item lfe_out
5436 Set LFE output volume. By default, this is @var{1}.
5437
5438 @item allx
5439 Set spread usage of stereo image across X axis for all channels.
5440
5441 @item ally
5442 Set spread usage of stereo image across Y axis for all channels.
5443
5444 @item fcx, flx, frx, blx, brx, slx, srx, bcx
5445 Set spread usage of stereo image across X axis for each channel.
5446
5447 @item fcy, fly, fry, bly, bry, sly, sry, bcy
5448 Set spread usage of stereo image across Y axis for each channel.
5449
5450 @item win_size
5451 Set window size. Allowed range is from @var{1024} to @var{65536}. Default size is @var{4096}.
5452
5453 @item win_func
5454 Set window function.
5455
5456 It accepts the following values:
5457 @table @samp
5458 @item rect
5459 @item bartlett
5460 @item hann, hanning
5461 @item hamming
5462 @item blackman
5463 @item welch
5464 @item flattop
5465 @item bharris
5466 @item bnuttall
5467 @item bhann
5468 @item sine
5469 @item nuttall
5470 @item lanczos
5471 @item gauss
5472 @item tukey
5473 @item dolph
5474 @item cauchy
5475 @item parzen
5476 @item poisson
5477 @item bohman
5478 @end table
5479 Default is @code{hann}.
5480
5481 @item overlap
5482 Set window overlap. If set to 1, the recommended overlap for selected
5483 window function will be picked. Default is @code{0.5}.
5484 @end table
5485
5486 @section treble, highshelf
5487
5488 Boost or cut treble (upper) frequencies of the audio using a two-pole
5489 shelving filter with a response similar to that of a standard
5490 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
5491
5492 The filter accepts the following options:
5493
5494 @table @option
5495 @item gain, g
5496 Give the gain at whichever is the lower of ~22 kHz and the
5497 Nyquist frequency. Its useful range is about -20 (for a large cut)
5498 to +20 (for a large boost). Beware of clipping when using a positive gain.
5499
5500 @item frequency, f
5501 Set the filter's central frequency and so can be used
5502 to extend or reduce the frequency range to be boosted or cut.
5503 The default value is @code{3000} Hz.
5504
5505 @item width_type, t
5506 Set method to specify band-width of filter.
5507 @table @option
5508 @item h
5509 Hz
5510 @item q
5511 Q-Factor
5512 @item o
5513 octave
5514 @item s
5515 slope
5516 @item k
5517 kHz
5518 @end table
5519
5520 @item width, w
5521 Determine how steep is the filter's shelf transition.
5522
5523 @item mix, m
5524 How much to use filtered signal in output. Default is 1.
5525 Range is between 0 and 1.
5526
5527 @item channels, c
5528 Specify which channels to filter, by default all available are filtered.
5529
5530 @item normalize, n
5531 Normalize biquad coefficients, by default is disabled.
5532 Enabling it will normalize magnitude response at DC to 0dB.
5533 @end table
5534
5535 @subsection Commands
5536
5537 This filter supports the following commands:
5538 @table @option
5539 @item frequency, f
5540 Change treble frequency.
5541 Syntax for the command is : "@var{frequency}"
5542
5543 @item width_type, t
5544 Change treble width_type.
5545 Syntax for the command is : "@var{width_type}"
5546
5547 @item width, w
5548 Change treble width.
5549 Syntax for the command is : "@var{width}"
5550
5551 @item gain, g
5552 Change treble gain.
5553 Syntax for the command is : "@var{gain}"
5554
5555 @item mix, m
5556 Change treble mix.
5557 Syntax for the command is : "@var{mix}"
5558 @end table
5559
5560 @section tremolo
5561
5562 Sinusoidal amplitude modulation.
5563
5564 The filter accepts the following options:
5565
5566 @table @option
5567 @item f
5568 Modulation frequency in Hertz. Modulation frequencies in the subharmonic range
5569 (20 Hz or lower) will result in a tremolo effect.
5570 This filter may also be used as a ring modulator by specifying
5571 a modulation frequency higher than 20 Hz.
5572 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
5573
5574 @item d
5575 Depth of modulation as a percentage. Range is 0.0 - 1.0.
5576 Default value is 0.5.
5577 @end table
5578
5579 @section vibrato
5580
5581 Sinusoidal phase modulation.
5582
5583 The filter accepts the following options:
5584
5585 @table @option
5586 @item f
5587 Modulation frequency in Hertz.
5588 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
5589
5590 @item d
5591 Depth of modulation as a percentage. Range is 0.0 - 1.0.
5592 Default value is 0.5.
5593 @end table
5594
5595 @section volume
5596
5597 Adjust the input audio volume.
5598
5599 It accepts the following parameters:
5600 @table @option
5601
5602 @item volume
5603 Set audio volume expression.
5604
5605 Output values are clipped to the maximum value.
5606
5607 The output audio volume is given by the relation:
5608 @example
5609 @var{output_volume} = @var{volume} * @var{input_volume}
5610 @end example
5611
5612 The default value for @var{volume} is "1.0".
5613
5614 @item precision
5615 This parameter represents the mathematical precision.
5616
5617 It determines which input sample formats will be allowed, which affects the
5618 precision of the volume scaling.
5619
5620 @table @option
5621 @item fixed
5622 8-bit fixed-point; this limits input sample format to U8, S16, and S32.
5623 @item float
5624 32-bit floating-point; this limits input sample format to FLT. (default)
5625 @item double
5626 64-bit floating-point; this limits input sample format to DBL.
5627 @end table
5628
5629 @item replaygain
5630 Choose the behaviour on encountering ReplayGain side data in input frames.
5631
5632 @table @option
5633 @item drop
5634 Remove ReplayGain side data, ignoring its contents (the default).
5635
5636 @item ignore
5637 Ignore ReplayGain side data, but leave it in the frame.
5638
5639 @item track
5640 Prefer the track gain, if present.
5641
5642 @item album
5643 Prefer the album gain, if present.
5644 @end table
5645
5646 @item replaygain_preamp
5647 Pre-amplification gain in dB to apply to the selected replaygain gain.
5648
5649 Default value for @var{replaygain_preamp} is 0.0.
5650
5651 @item replaygain_noclip
5652 Prevent clipping by limiting the gain applied.
5653
5654 Default value for @var{replaygain_noclip} is 1.
5655
5656 @item eval
5657 Set when the volume expression is evaluated.
5658
5659 It accepts the following values:
5660 @table @samp
5661 @item once
5662 only evaluate expression once during the filter initialization, or
5663 when the @samp{volume} command is sent
5664
5665 @item frame
5666 evaluate expression for each incoming frame
5667 @end table
5668
5669 Default value is @samp{once}.
5670 @end table
5671
5672 The volume expression can contain the following parameters.
5673
5674 @table @option
5675 @item n
5676 frame number (starting at zero)
5677 @item nb_channels
5678 number of channels
5679 @item nb_consumed_samples
5680 number of samples consumed by the filter
5681 @item nb_samples
5682 number of samples in the current frame
5683 @item pos
5684 original frame position in the file
5685 @item pts
5686 frame PTS
5687 @item sample_rate
5688 sample rate
5689 @item startpts
5690 PTS at start of stream
5691 @item startt
5692 time at start of stream
5693 @item t
5694 frame time
5695 @item tb
5696 timestamp timebase
5697 @item volume
5698 last set volume value
5699 @end table
5700
5701 Note that when @option{eval} is set to @samp{once} only the
5702 @var{sample_rate} and @var{tb} variables are available, all other
5703 variables will evaluate to NAN.
5704
5705 @subsection Commands
5706
5707 This filter supports the following commands:
5708 @table @option
5709 @item volume
5710 Modify the volume expression.
5711 The command accepts the same syntax of the corresponding option.
5712
5713 If the specified expression is not valid, it is kept at its current
5714 value.
5715 @end table
5716
5717 @subsection Examples
5718
5719 @itemize
5720 @item
5721 Halve the input audio volume:
5722 @example
5723 volume=volume=0.5
5724 volume=volume=1/2
5725 volume=volume=-6.0206dB
5726 @end example
5727
5728 In all the above example the named key for @option{volume} can be
5729 omitted, for example like in:
5730 @example
5731 volume=0.5
5732 @end example
5733
5734 @item
5735 Increase input audio power by 6 decibels using fixed-point precision:
5736 @example
5737 volume=volume=6dB:precision=fixed
5738 @end example
5739
5740 @item
5741 Fade volume after time 10 with an annihilation period of 5 seconds:
5742 @example
5743 volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
5744 @end example
5745 @end itemize
5746
5747 @section volumedetect
5748
5749 Detect the volume of the input video.
5750
5751 The filter has no parameters. The input is not modified. Statistics about
5752 the volume will be printed in the log when the input stream end is reached.
5753
5754 In particular it will show the mean volume (root mean square), maximum
5755 volume (on a per-sample basis), and the beginning of a histogram of the
5756 registered volume values (from the maximum value to a cumulated 1/1000 of
5757 the samples).
5758
5759 All volumes are in decibels relative to the maximum PCM value.
5760
5761 @subsection Examples
5762
5763 Here is an excerpt of the output:
5764 @example
5765 [Parsed_volumedetect_0 @ 0xa23120] mean_volume: -27 dB
5766 [Parsed_volumedetect_0 @ 0xa23120] max_volume: -4 dB
5767 [Parsed_volumedetect_0 @ 0xa23120] histogram_4db: 6
5768 [Parsed_volumedetect_0 @ 0xa23120] histogram_5db: 62
5769 [Parsed_volumedetect_0 @ 0xa23120] histogram_6db: 286
5770 [Parsed_volumedetect_0 @ 0xa23120] histogram_7db: 1042
5771 [Parsed_volumedetect_0 @ 0xa23120] histogram_8db: 2551
5772 [Parsed_volumedetect_0 @ 0xa23120] histogram_9db: 4609
5773 [Parsed_volumedetect_0 @ 0xa23120] histogram_10db: 8409
5774 @end example
5775
5776 It means that:
5777 @itemize
5778 @item
5779 The mean square energy is approximately -27 dB, or 10^-2.7.
5780 @item
5781 The largest sample is at -4 dB, or more precisely between -4 dB and -5 dB.
5782 @item
5783 There are 6 samples at -4 dB, 62 at -5 dB, 286 at -6 dB, etc.
5784 @end itemize
5785
5786 In other words, raising the volume by +4 dB does not cause any clipping,
5787 raising it by +5 dB causes clipping for 6 samples, etc.
5788
5789 @c man end AUDIO FILTERS
5790
5791 @chapter Audio Sources
5792 @c man begin AUDIO SOURCES
5793
5794 Below is a description of the currently available audio sources.
5795
5796 @section abuffer
5797
5798 Buffer audio frames, and make them available to the filter chain.
5799
5800 This source is mainly intended for a programmatic use, in particular
5801 through the interface defined in @file{libavfilter/asrc_abuffer.h}.
5802
5803 It accepts the following parameters:
5804 @table @option
5805
5806 @item time_base
5807 The timebase which will be used for timestamps of submitted frames. It must be
5808 either a floating-point number or in @var{numerator}/@var{denominator} form.
5809
5810 @item sample_rate
5811 The sample rate of the incoming audio buffers.
5812
5813 @item sample_fmt
5814 The sample format of the incoming audio buffers.
5815 Either a sample format name or its corresponding integer representation from
5816 the enum AVSampleFormat in @file{libavutil/samplefmt.h}
5817
5818 @item channel_layout
5819 The channel layout of the incoming audio buffers.
5820 Either a channel layout name from channel_layout_map in
5821 @file{libavutil/channel_layout.c} or its corresponding integer representation
5822 from the AV_CH_LAYOUT_* macros in @file{libavutil/channel_layout.h}
5823
5824 @item channels
5825 The number of channels of the incoming audio buffers.
5826 If both @var{channels} and @var{channel_layout} are specified, then they
5827 must be consistent.
5828
5829 @end table
5830
5831 @subsection Examples
5832
5833 @example
5834 abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
5835 @end example
5836
5837 will instruct the source to accept planar 16bit signed stereo at 44100Hz.
5838 Since the sample format with name "s16p" corresponds to the number
5839 6 and the "stereo" channel layout corresponds to the value 0x3, this is
5840 equivalent to:
5841 @example
5842 abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
5843 @end example
5844
5845 @section aevalsrc
5846
5847 Generate an audio signal specified by an expression.
5848
5849 This source accepts in input one or more expressions (one for each
5850 channel), which are evaluated and used to generate a corresponding
5851 audio signal.
5852
5853 This source accepts the following options:
5854
5855 @table @option
5856 @item exprs
5857 Set the '|'-separated expressions list for each separate channel. In case the
5858 @option{channel_layout} option is not specified, the selected channel layout
5859 depends on the number of provided expressions. Otherwise the last
5860 specified expression is applied to the remaining output channels.
5861
5862 @item channel_layout, c
5863 Set the channel layout. The number of channels in the specified layout
5864 must be equal to the number of specified expressions.
5865
5866 @item duration, d
5867 Set the minimum duration of the sourced audio. See
5868 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5869 for the accepted syntax.
5870 Note that the resulting duration may be greater than the specified
5871 duration, as the generated audio is always cut at the end of a
5872 complete frame.
5873
5874 If not specified, or the expressed duration is negative, the audio is
5875 supposed to be generated forever.
5876
5877 @item nb_samples, n
5878 Set the number of samples per channel per each output frame,
5879 default to 1024.
5880
5881 @item sample_rate, s
5882 Specify the sample rate, default to 44100.
5883 @end table
5884
5885 Each expression in @var{exprs} can contain the following constants:
5886
5887 @table @option
5888 @item n
5889 number of the evaluated sample, starting from 0
5890
5891 @item t
5892 time of the evaluated sample expressed in seconds, starting from 0
5893
5894 @item s
5895 sample rate
5896
5897 @end table
5898
5899 @subsection Examples
5900
5901 @itemize
5902 @item
5903 Generate silence:
5904 @example
5905 aevalsrc=0
5906 @end example
5907
5908 @item
5909 Generate a sin signal with frequency of 440 Hz, set sample rate to
5910 8000 Hz:
5911 @example
5912 aevalsrc="sin(440*2*PI*t):s=8000"
5913 @end example
5914
5915 @item
5916 Generate a two channels signal, specify the channel layout (Front
5917 Center + Back Center) explicitly:
5918 @example
5919 aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
5920 @end example
5921
5922 @item
5923 Generate white noise:
5924 @example
5925 aevalsrc="-2+random(0)"
5926 @end example
5927
5928 @item
5929 Generate an amplitude modulated signal:
5930 @example
5931 aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
5932 @end example
5933
5934 @item
5935 Generate 2.5 Hz binaural beats on a 360 Hz carrier:
5936 @example
5937 aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
5938 @end example
5939
5940 @end itemize
5941
5942 @section afirsrc
5943
5944 Generate a FIR coefficients using frequency sampling method.
5945
5946 The resulting stream can be used with @ref{afir} filter for filtering the audio signal.
5947
5948 The filter accepts the following options:
5949
5950 @table @option
5951 @item taps, t
5952 Set number of filter coefficents in output audio stream.
5953 Default value is 1025.
5954
5955 @item frequency, f
5956 Set frequency points from where magnitude and phase are set.
5957 This must be in non decreasing order, and first element must be 0, while last element
5958 must be 1. Elements are separated by white spaces.
5959
5960 @item magnitude, m
5961 Set magnitude value for every frequency point set by @option{frequency}.
5962 Number of values must be same as number of frequency points.
5963 Values are separated by white spaces.
5964
5965 @item phase, p
5966 Set phase value for every frequency point set by @option{frequency}.
5967 Number of values must be same as number of frequency points.
5968 Values are separated by white spaces.
5969
5970 @item sample_rate, r
5971 Set sample rate, default is 44100.
5972
5973 @item nb_samples, n
5974 Set number of samples per each frame. Default is 1024.
5975
5976 @item win_func, w
5977 Set window function. Default is blackman.
5978 @end table
5979
5980 @section anullsrc
5981
5982 The null audio source, return unprocessed audio frames. It is mainly useful
5983 as a template and to be employed in analysis / debugging tools, or as
5984 the source for filters which ignore the input data (for example the sox
5985 synth filter).
5986
5987 This source accepts the following options:
5988
5989 @table @option
5990
5991 @item channel_layout, cl
5992
5993 Specifies the channel layout, and can be either an integer or a string
5994 representing a channel layout. The default value of @var{channel_layout}
5995 is "stereo".
5996
5997 Check the channel_layout_map definition in
5998 @file{libavutil/channel_layout.c} for the mapping between strings and
5999 channel layout values.
6000
6001 @item sample_rate, r
6002 Specifies the sample rate, and defaults to 44100.
6003
6004 @item nb_samples, n
6005 Set the number of samples per requested frames.
6006
6007 @end table
6008
6009 @subsection Examples
6010
6011 @itemize
6012 @item
6013 Set the sample rate to 48000 Hz and the channel layout to AV_CH_LAYOUT_MONO.
6014 @example
6015 anullsrc=r=48000:cl=4
6016 @end example
6017
6018 @item
6019 Do the same operation with a more obvious syntax:
6020 @example
6021 anullsrc=r=48000:cl=mono
6022 @end example
6023 @end itemize
6024
6025 All the parameters need to be explicitly defined.
6026
6027 @section flite
6028
6029 Synthesize a voice utterance using the libflite library.
6030
6031 To enable compilation of this filter you need to configure FFmpeg with
6032 @code{--enable-libflite}.
6033
6034 Note that versions of the flite library prior to 2.0 are not thread-safe.
6035
6036 The filter accepts the following options:
6037
6038 @table @option
6039
6040 @item list_voices
6041 If set to 1, list the names of the available voices and exit
6042 immediately. Default value is 0.
6043
6044 @item nb_samples, n
6045 Set the maximum number of samples per frame. Default value is 512.
6046
6047 @item textfile
6048 Set the filename containing the text to speak.
6049
6050 @item text
6051 Set the text to speak.
6052
6053 @item voice, v
6054 Set the voice to use for the speech synthesis. Default value is
6055 @code{kal}. See also the @var{list_voices} option.
6056 @end table
6057
6058 @subsection Examples
6059
6060 @itemize
6061 @item
6062 Read from file @file{speech.txt}, and synthesize the text using the
6063 standard flite voice:
6064 @example
6065 flite=textfile=speech.txt
6066 @end example
6067
6068 @item
6069 Read the specified text selecting the @code{slt} voice:
6070 @example
6071 flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
6072 @end example
6073
6074 @item
6075 Input text to ffmpeg:
6076 @example
6077 ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
6078 @end example
6079
6080 @item
6081 Make @file{ffplay} speak the specified text, using @code{flite} and
6082 the @code{lavfi} device:
6083 @example
6084 ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
6085 @end example
6086 @end itemize
6087
6088 For more information about libflite, check:
6089 @url{http://www.festvox.org/flite/}
6090
6091 @section anoisesrc
6092
6093 Generate a noise audio signal.
6094
6095 The filter accepts the following options:
6096
6097 @table @option
6098 @item sample_rate, r
6099 Specify the sample rate. Default value is 48000 Hz.
6100
6101 @item amplitude, a
6102 Specify the amplitude (0.0 - 1.0) of the generated audio stream. Default value
6103 is 1.0.
6104
6105 @item duration, d
6106 Specify the duration of the generated audio stream. Not specifying this option
6107 results in noise with an infinite length.
6108
6109 @item color, colour, c
6110 Specify the color of noise. Available noise colors are white, pink, brown,
6111 blue, violet and velvet. Default color is white.
6112
6113 @item seed, s
6114 Specify a value used to seed the PRNG.
6115
6116 @item nb_samples, n
6117 Set the number of samples per each output frame, default is 1024.
6118 @end table
6119
6120 @subsection Examples
6121
6122 @itemize
6123
6124 @item
6125 Generate 60 seconds of pink noise, with a 44.1 kHz sampling rate and an amplitude of 0.5:
6126 @example
6127 anoisesrc=d=60:c=pink:r=44100:a=0.5
6128 @end example
6129 @end itemize
6130
6131 @section hilbert
6132
6133 Generate odd-tap Hilbert transform FIR coefficients.
6134
6135 The resulting stream can be used with @ref{afir} filter for phase-shifting
6136 the signal by 90 degrees.
6137
6138 This is used in many matrix coding schemes and for analytic signal generation.
6139 The process is often written as a multiplication by i (or j), the imaginary unit.
6140
6141 The filter accepts the following options:
6142
6143 @table @option
6144
6145 @item sample_rate, s
6146 Set sample rate, default is 44100.
6147
6148 @item taps, t
6149 Set length of FIR filter, default is 22051.
6150
6151 @item nb_samples, n
6152 Set number of samples per each frame.
6153
6154 @item win_func, w
6155 Set window function to be used when generating FIR coefficients.
6156 @end table
6157
6158 @section sinc
6159
6160 Generate a sinc kaiser-windowed low-pass, high-pass, band-pass, or band-reject FIR coefficients.
6161
6162 The resulting stream can be used with @ref{afir} filter for filtering the audio signal.
6163
6164 The filter accepts the following options:
6165
6166 @table @option
6167 @item sample_rate, r
6168 Set sample rate, default is 44100.
6169
6170 @item nb_samples, n
6171 Set number of samples per each frame. Default is 1024.
6172
6173 @item hp
6174 Set high-pass frequency. Default is 0.
6175
6176 @item lp
6177 Set low-pass frequency. Default is 0.
6178 If high-pass frequency is lower than low-pass frequency and low-pass frequency
6179 is higher than 0 then filter will create band-pass filter coefficients,
6180 otherwise band-reject filter coefficients.
6181
6182 @item phase
6183 Set filter phase response. Default is 50. Allowed range is from 0 to 100.
6184
6185 @item beta
6186 Set Kaiser window beta.
6187
6188 @item att
6189 Set stop-band attenuation. Default is 120dB, allowed range is from 40 to 180 dB.
6190
6191 @item round
6192 Enable rounding, by default is disabled.
6193
6194 @item hptaps
6195 Set number of taps for high-pass filter.
6196
6197 @item lptaps
6198 Set number of taps for low-pass filter.
6199 @end table
6200
6201 @section sine
6202
6203 Generate an audio signal made of a sine wave with amplitude 1/8.
6204
6205 The audio signal is bit-exact.
6206
6207 The filter accepts the following options:
6208
6209 @table @option
6210
6211 @item frequency, f
6212 Set the carrier frequency. Default is 440 Hz.
6213
6214 @item beep_factor, b
6215 Enable a periodic beep every second with frequency @var{beep_factor} times
6216 the carrier frequency. Default is 0, meaning the beep is disabled.
6217
6218 @item sample_rate, r
6219 Specify the sample rate, default is 44100.
6220
6221 @item duration, d
6222 Specify the duration of the generated audio stream.
6223
6224 @item samples_per_frame
6225 Set the number of samples per output frame.
6226
6227 The expression can contain the following constants:
6228
6229 @table @option
6230 @item n
6231 The (sequential) number of the output audio frame, starting from 0.
6232
6233 @item pts
6234 The PTS (Presentation TimeStamp) of the output audio frame,
6235 expressed in @var{TB} units.
6236
6237 @item t
6238 The PTS of the output audio frame, expressed in seconds.
6239
6240 @item TB
6241 The timebase of the output audio frames.
6242 @end table
6243
6244 Default is @code{1024}.
6245 @end table
6246
6247 @subsection Examples
6248
6249 @itemize
6250
6251 @item
6252 Generate a simple 440 Hz sine wave:
6253 @example
6254 sine
6255 @end example
6256
6257 @item
6258 Generate a 220 Hz sine wave with a 880 Hz beep each second, for 5 seconds:
6259 @example
6260 sine=220:4:d=5
6261 sine=f=220:b=4:d=5
6262 sine=frequency=220:beep_factor=4:duration=5
6263 @end example
6264
6265 @item
6266 Generate a 1 kHz sine wave following @code{1602,1601,1602,1601,1602} NTSC
6267 pattern:
6268 @example
6269 sine=1000:samples_per_frame='st(0,mod(n,5)); 1602-not(not(eq(ld(0),1)+eq(ld(0),3)))'
6270 @end example
6271 @end itemize
6272
6273 @c man end AUDIO SOURCES
6274
6275 @chapter Audio Sinks
6276 @c man begin AUDIO SINKS
6277
6278 Below is a description of the currently available audio sinks.
6279
6280 @section abuffersink
6281
6282 Buffer audio frames, and make them available to the end of filter chain.
6283
6284 This sink is mainly intended for programmatic use, in particular
6285 through the interface defined in @file{libavfilter/buffersink.h}
6286 or the options system.
6287
6288 It accepts a pointer to an AVABufferSinkContext structure, which
6289 defines the incoming buffers' formats, to be passed as the opaque
6290 parameter to @code{avfilter_init_filter} for initialization.
6291 @section anullsink
6292
6293 Null audio sink; do absolutely nothing with the input audio. It is
6294 mainly useful as a template and for use in analysis / debugging
6295 tools.
6296
6297 @c man end AUDIO SINKS
6298
6299 @chapter Video Filters
6300 @c man begin VIDEO FILTERS
6301
6302 When you configure your FFmpeg build, you can disable any of the
6303 existing filters using @code{--disable-filters}.
6304 The configure output will show the video filters included in your
6305 build.
6306
6307 Below is a description of the currently available video filters.
6308
6309 @section addroi
6310
6311 Mark a region of interest in a video frame.
6312
6313 The frame data is passed through unchanged, but metadata is attached
6314 to the frame indicating regions of interest which can affect the
6315 behaviour of later encoding.  Multiple regions can be marked by
6316 applying the filter multiple times.
6317
6318 @table @option
6319 @item x
6320 Region distance in pixels from the left edge of the frame.
6321 @item y
6322 Region distance in pixels from the top edge of the frame.
6323 @item w
6324 Region width in pixels.
6325 @item h
6326 Region height in pixels.
6327
6328 The parameters @var{x}, @var{y}, @var{w} and @var{h} are expressions,
6329 and may contain the following variables:
6330 @table @option
6331 @item iw
6332 Width of the input frame.
6333 @item ih
6334 Height of the input frame.
6335 @end table
6336
6337 @item qoffset
6338 Quantisation offset to apply within the region.
6339
6340 This must be a real value in the range -1 to +1.  A value of zero
6341 indicates no quality change.  A negative value asks for better quality
6342 (less quantisation), while a positive value asks for worse quality
6343 (greater quantisation).
6344
6345 The range is calibrated so that the extreme values indicate the
6346 largest possible offset - if the rest of the frame is encoded with the
6347 worst possible quality, an offset of -1 indicates that this region
6348 should be encoded with the best possible quality anyway.  Intermediate
6349 values are then interpolated in some codec-dependent way.
6350
6351 For example, in 10-bit H.264 the quantisation parameter varies between
6352 -12 and 51.  A typical qoffset value of -1/10 therefore indicates that
6353 this region should be encoded with a QP around one-tenth of the full
6354 range better than the rest of the frame.  So, if most of the frame
6355 were to be encoded with a QP of around 30, this region would get a QP
6356 of around 24 (an offset of approximately -1/10 * (51 - -12) = -6.3).
6357 An extreme value of -1 would indicate that this region should be
6358 encoded with the best possible quality regardless of the treatment of
6359 the rest of the frame - that is, should be encoded at a QP of -12.
6360 @item clear
6361 If set to true, remove any existing regions of interest marked on the
6362 frame before adding the new one.
6363 @end table
6364
6365 @subsection Examples
6366
6367 @itemize
6368 @item
6369 Mark the centre quarter of the frame as interesting.
6370 @example
6371 addroi=iw/4:ih/4:iw/2:ih/2:-1/10
6372 @end example
6373 @item
6374 Mark the 100-pixel-wide region on the left edge of the frame as very
6375 uninteresting (to be encoded at much lower quality than the rest of
6376 the frame).
6377 @example
6378 addroi=0:0:100:ih:+1/5
6379 @end example
6380 @end itemize
6381
6382 @section alphaextract
6383
6384 Extract the alpha component from the input as a grayscale video. This
6385 is especially useful with the @var{alphamerge} filter.
6386
6387 @section alphamerge
6388
6389 Add or replace the alpha component of the primary input with the
6390 grayscale value of a second input. This is intended for use with
6391 @var{alphaextract} to allow the transmission or storage of frame
6392 sequences that have alpha in a format that doesn't support an alpha
6393 channel.
6394
6395 For example, to reconstruct full frames from a normal YUV-encoded video
6396 and a separate video created with @var{alphaextract}, you might use:
6397 @example
6398 movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
6399 @end example
6400
6401 Since this filter is designed for reconstruction, it operates on frame
6402 sequences without considering timestamps, and terminates when either
6403 input reaches end of stream. This will cause problems if your encoding
6404 pipeline drops frames. If you're trying to apply an image as an
6405 overlay to a video stream, consider the @var{overlay} filter instead.
6406
6407 @section amplify
6408
6409 Amplify differences between current pixel and pixels of adjacent frames in
6410 same pixel location.
6411
6412 This filter accepts the following options:
6413
6414 @table @option
6415 @item radius
6416 Set frame radius. Default is 2. Allowed range is from 1 to 63.
6417 For example radius of 3 will instruct filter to calculate average of 7 frames.
6418
6419 @item factor
6420 Set factor to amplify difference. Default is 2. Allowed range is from 0 to 65535.
6421
6422 @item threshold
6423 Set threshold for difference amplification. Any difference greater or equal to
6424 this value will not alter source pixel. Default is 10.
6425 Allowed range is from 0 to 65535.
6426
6427 @item tolerance
6428 Set tolerance for difference amplification. Any difference lower to
6429 this value will not alter source pixel. Default is 0.
6430 Allowed range is from 0 to 65535.
6431
6432 @item low
6433 Set lower limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
6434 This option controls maximum possible value that will decrease source pixel value.
6435
6436 @item high
6437 Set high limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
6438 This option controls maximum possible value that will increase source pixel value.
6439
6440 @item planes
6441 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
6442 @end table
6443
6444 @subsection Commands
6445
6446 This filter supports the following @ref{commands} that corresponds to option of same name:
6447 @table @option
6448 @item factor
6449 @item threshold
6450 @item tolerance
6451 @item low
6452 @item high
6453 @item planes
6454 @end table
6455
6456 @section ass
6457
6458 Same as the @ref{subtitles} filter, except that it doesn't require libavcodec
6459 and libavformat to work. On the other hand, it is limited to ASS (Advanced
6460 Substation Alpha) subtitles files.
6461
6462 This filter accepts the following option in addition to the common options from
6463 the @ref{subtitles} filter:
6464
6465 @table @option
6466 @item shaping
6467 Set the shaping engine
6468
6469 Available values are:
6470 @table @samp
6471 @item auto
6472 The default libass shaping engine, which is the best available.
6473 @item simple
6474 Fast, font-agnostic shaper that can do only substitutions
6475 @item complex
6476 Slower shaper using OpenType for substitutions and positioning
6477 @end table
6478
6479 The default is @code{auto}.
6480 @end table
6481
6482 @section atadenoise
6483 Apply an Adaptive Temporal Averaging Denoiser to the video input.
6484
6485 The filter accepts the following options:
6486
6487 @table @option
6488 @item 0a
6489 Set threshold A for 1st plane. Default is 0.02.
6490 Valid range is 0 to 0.3.
6491
6492 @item 0b
6493 Set threshold B for 1st plane. Default is 0.04.
6494 Valid range is 0 to 5.
6495
6496 @item 1a
6497 Set threshold A for 2nd plane. Default is 0.02.
6498 Valid range is 0 to 0.3.
6499
6500 @item 1b
6501 Set threshold B for 2nd plane. Default is 0.04.
6502 Valid range is 0 to 5.
6503
6504 @item 2a
6505 Set threshold A for 3rd plane. Default is 0.02.
6506 Valid range is 0 to 0.3.
6507
6508 @item 2b
6509 Set threshold B for 3rd plane. Default is 0.04.
6510 Valid range is 0 to 5.
6511
6512 Threshold A is designed to react on abrupt changes in the input signal and
6513 threshold B is designed to react on continuous changes in the input signal.
6514
6515 @item s
6516 Set number of frames filter will use for averaging. Default is 9. Must be odd
6517 number in range [5, 129].
6518
6519 @item p
6520 Set what planes of frame filter will use for averaging. Default is all.
6521
6522 @item a
6523 Set what variant of algorithm filter will use for averaging. Default is @code{p} parallel.
6524 Alternatively can be set to @code{s} serial.
6525
6526 Parallel can be faster then serial, while other way around is never true.
6527 Parallel will abort early on first change being greater then thresholds, while serial
6528 will continue processing other side of frames if they are equal or bellow thresholds.
6529 @end table
6530
6531 @subsection Commands
6532 This filter supports same @ref{commands} as options except option @code{s}.
6533 The command accepts the same syntax of the corresponding option.
6534
6535 @section avgblur
6536
6537 Apply average blur filter.
6538
6539 The filter accepts the following options:
6540
6541 @table @option
6542 @item sizeX
6543 Set horizontal radius size.
6544
6545 @item planes
6546 Set which planes to filter. By default all planes are filtered.
6547
6548 @item sizeY
6549 Set vertical radius size, if zero it will be same as @code{sizeX}.
6550 Default is @code{0}.
6551 @end table
6552
6553 @subsection Commands
6554 This filter supports same commands as options.
6555 The command accepts the same syntax of the corresponding option.
6556
6557 If the specified expression is not valid, it is kept at its current
6558 value.
6559
6560 @section bbox
6561
6562 Compute the bounding box for the non-black pixels in the input frame
6563 luminance plane.
6564
6565 This filter computes the bounding box containing all the pixels with a
6566 luminance value greater than the minimum allowed value.
6567 The parameters describing the bounding box are printed on the filter
6568 log.
6569
6570 The filter accepts the following option:
6571
6572 @table @option
6573 @item min_val
6574 Set the minimal luminance value. Default is @code{16}.
6575 @end table
6576
6577 @section bilateral
6578 Apply bilateral filter, spatial smoothing while preserving edges.
6579
6580 The filter accepts the following options:
6581 @table @option
6582 @item sigmaS
6583 Set sigma of gaussian function to calculate spatial weight.
6584 Allowed range is 0 to 10. Default is 0.1.
6585
6586 @item sigmaR
6587 Set sigma of gaussian function to calculate range weight.
6588 Allowed range is 0 to 1. Default is 0.1.
6589
6590 @item planes
6591 Set planes to filter. Default is first only.
6592 @end table
6593
6594 @section bitplanenoise
6595
6596 Show and measure bit plane noise.
6597
6598 The filter accepts the following options:
6599
6600 @table @option
6601 @item bitplane
6602 Set which plane to analyze. Default is @code{1}.
6603
6604 @item filter
6605 Filter out noisy pixels from @code{bitplane} set above.
6606 Default is disabled.
6607 @end table
6608
6609 @section blackdetect
6610
6611 Detect video intervals that are (almost) completely black. Can be
6612 useful to detect chapter transitions, commercials, or invalid
6613 recordings.
6614
6615 The filter outputs its detection analysis to both the log as well as
6616 frame metadata. If a black segment of at least the specified minimum
6617 duration is found, a line with the start and end timestamps as well
6618 as duration is printed to the log with level @code{info}. In addition,
6619 a log line with level @code{debug} is printed per frame showing the
6620 black amount detected for that frame.
6621
6622 The filter also attaches metadata to the first frame of a black
6623 segment with key @code{lavfi.black_start} and to the first frame
6624 after the black segment ends with key @code{lavfi.black_end}. The
6625 value is the frame's timestamp. This metadata is added regardless
6626 of the minimum duration specified.
6627
6628 The filter accepts the following options:
6629
6630 @table @option
6631 @item black_min_duration, d
6632 Set the minimum detected black duration expressed in seconds. It must
6633 be a non-negative floating point number.
6634
6635 Default value is 2.0.
6636
6637 @item picture_black_ratio_th, pic_th
6638 Set the threshold for considering a picture "black".
6639 Express the minimum value for the ratio:
6640 @example
6641 @var{nb_black_pixels} / @var{nb_pixels}
6642 @end example
6643
6644 for which a picture is considered black.
6645 Default value is 0.98.
6646
6647 @item pixel_black_th, pix_th
6648 Set the threshold for considering a pixel "black".
6649
6650 The threshold expresses the maximum pixel luminance value for which a
6651 pixel is considered "black". The provided value is scaled according to
6652 the following equation:
6653 @example
6654 @var{absolute_threshold} = @var{luminance_minimum_value} + @var{pixel_black_th} * @var{luminance_range_size}
6655 @end example
6656
6657 @var{luminance_range_size} and @var{luminance_minimum_value} depend on
6658 the input video format, the range is [0-255] for YUV full-range
6659 formats and [16-235] for YUV non full-range formats.
6660
6661 Default value is 0.10.
6662 @end table
6663
6664 The following example sets the maximum pixel threshold to the minimum
6665 value, and detects only black intervals of 2 or more seconds:
6666 @example
6667 blackdetect=d=2:pix_th=0.00
6668 @end example
6669
6670 @section blackframe
6671
6672 Detect frames that are (almost) completely black. Can be useful to
6673 detect chapter transitions or commercials. Output lines consist of
6674 the frame number of the detected frame, the percentage of blackness,
6675 the position in the file if known or -1 and the timestamp in seconds.
6676
6677 In order to display the output lines, you need to set the loglevel at
6678 least to the AV_LOG_INFO value.
6679
6680 This filter exports frame metadata @code{lavfi.blackframe.pblack}.
6681 The value represents the percentage of pixels in the picture that
6682 are below the threshold value.
6683
6684 It accepts the following parameters:
6685
6686 @table @option
6687
6688 @item amount
6689 The percentage of the pixels that have to be below the threshold; it defaults to
6690 @code{98}.
6691
6692 @item threshold, thresh
6693 The threshold below which a pixel value is considered black; it defaults to
6694 @code{32}.
6695
6696 @end table
6697
6698 @anchor{blend}
6699 @section blend
6700
6701 Blend two video frames into each other.
6702
6703 The @code{blend} filter takes two input streams and outputs one
6704 stream, the first input is the "top" layer and second input is
6705 "bottom" layer.  By default, the output terminates when the longest input terminates.
6706
6707 The @code{tblend} (time blend) filter takes two consecutive frames
6708 from one single stream, and outputs the result obtained by blending
6709 the new frame on top of the old frame.
6710
6711 A description of the accepted options follows.
6712
6713 @table @option
6714 @item c0_mode
6715 @item c1_mode
6716 @item c2_mode
6717 @item c3_mode
6718 @item all_mode
6719 Set blend mode for specific pixel component or all pixel components in case
6720 of @var{all_mode}. Default value is @code{normal}.
6721
6722 Available values for component modes are:
6723 @table @samp
6724 @item addition
6725 @item grainmerge
6726 @item and
6727 @item average
6728 @item burn
6729 @item darken
6730 @item difference
6731 @item grainextract
6732 @item divide
6733 @item dodge
6734 @item freeze
6735 @item exclusion
6736 @item extremity
6737 @item glow
6738 @item hardlight
6739 @item hardmix
6740 @item heat
6741 @item lighten
6742 @item linearlight
6743 @item multiply
6744 @item multiply128
6745 @item negation
6746 @item normal
6747 @item or
6748 @item overlay
6749 @item phoenix
6750 @item pinlight
6751 @item reflect
6752 @item screen
6753 @item softlight
6754 @item subtract
6755 @item vividlight
6756 @item xor
6757 @end table
6758
6759 @item c0_opacity
6760 @item c1_opacity
6761 @item c2_opacity
6762 @item c3_opacity
6763 @item all_opacity
6764 Set blend opacity for specific pixel component or all pixel components in case
6765 of @var{all_opacity}. Only used in combination with pixel component blend modes.
6766
6767 @item c0_expr
6768 @item c1_expr
6769 @item c2_expr
6770 @item c3_expr
6771 @item all_expr
6772 Set blend expression for specific pixel component or all pixel components in case
6773 of @var{all_expr}. Note that related mode options will be ignored if those are set.
6774
6775 The expressions can use the following variables:
6776
6777 @table @option
6778 @item N
6779 The sequential number of the filtered frame, starting from @code{0}.
6780
6781 @item X
6782 @item Y
6783 the coordinates of the current sample
6784
6785 @item W
6786 @item H
6787 the width and height of currently filtered plane
6788
6789 @item SW
6790 @item SH
6791 Width and height scale for the plane being filtered. It is the
6792 ratio between the dimensions of the current plane to the luma plane,
6793 e.g. for a @code{yuv420p} frame, the values are @code{1,1} for
6794 the luma plane and @code{0.5,0.5} for the chroma planes.
6795
6796 @item T
6797 Time of the current frame, expressed in seconds.
6798
6799 @item TOP, A
6800 Value of pixel component at current location for first video frame (top layer).
6801
6802 @item BOTTOM, B
6803 Value of pixel component at current location for second video frame (bottom layer).
6804 @end table
6805 @end table
6806
6807 The @code{blend} filter also supports the @ref{framesync} options.
6808
6809 @subsection Examples
6810
6811 @itemize
6812 @item
6813 Apply transition from bottom layer to top layer in first 10 seconds:
6814 @example
6815 blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
6816 @end example
6817
6818 @item
6819 Apply linear horizontal transition from top layer to bottom layer:
6820 @example
6821 blend=all_expr='A*(X/W)+B*(1-X/W)'
6822 @end example
6823
6824 @item
6825 Apply 1x1 checkerboard effect:
6826 @example
6827 blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
6828 @end example
6829
6830 @item
6831 Apply uncover left effect:
6832 @example
6833 blend=all_expr='if(gte(N*SW+X,W),A,B)'
6834 @end example
6835
6836 @item
6837 Apply uncover down effect:
6838 @example
6839 blend=all_expr='if(gte(Y-N*SH,0),A,B)'
6840 @end example
6841
6842 @item
6843 Apply uncover up-left effect:
6844 @example
6845 blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
6846 @end example
6847
6848 @item
6849 Split diagonally video and shows top and bottom layer on each side:
6850 @example
6851 blend=all_expr='if(gt(X,Y*(W/H)),A,B)'
6852 @end example
6853
6854 @item
6855 Display differences between the current and the previous frame:
6856 @example
6857 tblend=all_mode=grainextract
6858 @end example
6859 @end itemize
6860
6861 @section bm3d
6862
6863 Denoise frames using Block-Matching 3D algorithm.
6864
6865 The filter accepts the following options.
6866
6867 @table @option
6868 @item sigma
6869 Set denoising strength. Default value is 1.
6870 Allowed range is from 0 to 999.9.
6871 The denoising algorithm is very sensitive to sigma, so adjust it
6872 according to the source.
6873
6874 @item block
6875 Set local patch size. This sets dimensions in 2D.
6876
6877 @item bstep
6878 Set sliding step for processing blocks. Default value is 4.
6879 Allowed range is from 1 to 64.
6880 Smaller values allows processing more reference blocks and is slower.
6881
6882 @item group
6883 Set maximal number of similar blocks for 3rd dimension. Default value is 1.
6884 When set to 1, no block matching is done. Larger values allows more blocks
6885 in single group.
6886 Allowed range is from 1 to 256.
6887
6888 @item range
6889 Set radius for search block matching. Default is 9.
6890 Allowed range is from 1 to INT32_MAX.
6891
6892 @item mstep
6893 Set step between two search locations for block matching. Default is 1.
6894 Allowed range is from 1 to 64. Smaller is slower.
6895
6896 @item thmse
6897 Set threshold of mean square error for block matching. Valid range is 0 to
6898 INT32_MAX.
6899
6900 @item hdthr
6901 Set thresholding parameter for hard thresholding in 3D transformed domain.
6902 Larger values results in stronger hard-thresholding filtering in frequency
6903 domain.
6904
6905 @item estim
6906 Set filtering estimation mode. Can be @code{basic} or @code{final}.
6907 Default is @code{basic}.
6908
6909 @item ref
6910 If enabled, filter will use 2nd stream for block matching.
6911 Default is disabled for @code{basic} value of @var{estim} option,
6912 and always enabled if value of @var{estim} is @code{final}.
6913
6914 @item planes
6915 Set planes to filter. Default is all available except alpha.
6916 @end table
6917
6918 @subsection Examples
6919
6920 @itemize
6921 @item
6922 Basic filtering with bm3d:
6923 @example
6924 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic
6925 @end example
6926
6927 @item
6928 Same as above, but filtering only luma:
6929 @example
6930 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic:planes=1
6931 @end example
6932
6933 @item
6934 Same as above, but with both estimation modes:
6935 @example
6936 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
6937 @end example
6938
6939 @item
6940 Same as above, but prefilter with @ref{nlmeans} filter instead:
6941 @example
6942 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
6943 @end example
6944 @end itemize
6945
6946 @section boxblur
6947
6948 Apply a boxblur algorithm to the input video.
6949
6950 It accepts the following parameters:
6951
6952 @table @option
6953
6954 @item luma_radius, lr
6955 @item luma_power, lp
6956 @item chroma_radius, cr
6957 @item chroma_power, cp
6958 @item alpha_radius, ar
6959 @item alpha_power, ap
6960
6961 @end table
6962
6963 A description of the accepted options follows.
6964
6965 @table @option
6966 @item luma_radius, lr
6967 @item chroma_radius, cr
6968 @item alpha_radius, ar
6969 Set an expression for the box radius in pixels used for blurring the
6970 corresponding input plane.
6971
6972 The radius value must be a non-negative number, and must not be
6973 greater than the value of the expression @code{min(w,h)/2} for the
6974 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
6975 planes.
6976
6977 Default value for @option{luma_radius} is "2". If not specified,
6978 @option{chroma_radius} and @option{alpha_radius} default to the
6979 corresponding value set for @option{luma_radius}.
6980
6981 The expressions can contain the following constants:
6982 @table @option
6983 @item w
6984 @item h
6985 The input width and height in pixels.
6986
6987 @item cw
6988 @item ch
6989 The input chroma image width and height in pixels.
6990
6991 @item hsub
6992 @item vsub
6993 The horizontal and vertical chroma subsample values. For example, for the
6994 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
6995 @end table
6996
6997 @item luma_power, lp
6998 @item chroma_power, cp
6999 @item alpha_power, ap
7000 Specify how many times the boxblur filter is applied to the
7001 corresponding plane.
7002
7003 Default value for @option{luma_power} is 2. If not specified,
7004 @option{chroma_power} and @option{alpha_power} default to the
7005 corresponding value set for @option{luma_power}.
7006
7007 A value of 0 will disable the effect.
7008 @end table
7009
7010 @subsection Examples
7011
7012 @itemize
7013 @item
7014 Apply a boxblur filter with the luma, chroma, and alpha radii
7015 set to 2:
7016 @example
7017 boxblur=luma_radius=2:luma_power=1
7018 boxblur=2:1
7019 @end example
7020
7021 @item
7022 Set the luma radius to 2, and alpha and chroma radius to 0:
7023 @example
7024 boxblur=2:1:cr=0:ar=0
7025 @end example
7026
7027 @item
7028 Set the luma and chroma radii to a fraction of the video dimension:
7029 @example
7030 boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
7031 @end example
7032 @end itemize
7033
7034 @section bwdif
7035
7036 Deinterlace the input video ("bwdif" stands for "Bob Weaver
7037 Deinterlacing Filter").
7038
7039 Motion adaptive deinterlacing based on yadif with the use of w3fdif and cubic
7040 interpolation algorithms.
7041 It accepts the following parameters:
7042
7043 @table @option
7044 @item mode
7045 The interlacing mode to adopt. It accepts one of the following values:
7046
7047 @table @option
7048 @item 0, send_frame
7049 Output one frame for each frame.
7050 @item 1, send_field
7051 Output one frame for each field.
7052 @end table
7053
7054 The default value is @code{send_field}.
7055
7056 @item parity
7057 The picture field parity assumed for the input interlaced video. It accepts one
7058 of the following values:
7059
7060 @table @option
7061 @item 0, tff
7062 Assume the top field is first.
7063 @item 1, bff
7064 Assume the bottom field is first.
7065 @item -1, auto
7066 Enable automatic detection of field parity.
7067 @end table
7068
7069 The default value is @code{auto}.
7070 If the interlacing is unknown or the decoder does not export this information,
7071 top field first will be assumed.
7072
7073 @item deint
7074 Specify which frames to deinterlace. Accepts one of the following
7075 values:
7076
7077 @table @option
7078 @item 0, all
7079 Deinterlace all frames.
7080 @item 1, interlaced
7081 Only deinterlace frames marked as interlaced.
7082 @end table
7083
7084 The default value is @code{all}.
7085 @end table
7086
7087 @section cas
7088
7089 Apply Contrast Adaptive Sharpen filter to video stream.
7090
7091 The filter accepts the following options:
7092
7093 @table @option
7094 @item strength
7095 Set the sharpening strength. Default value is 0.
7096
7097 @item planes
7098 Set planes to filter. Default value is to filter all
7099 planes except alpha plane.
7100 @end table
7101
7102 @section chromahold
7103 Remove all color information for all colors except for certain one.
7104
7105 The filter accepts the following options:
7106
7107 @table @option
7108 @item color
7109 The color which will not be replaced with neutral chroma.
7110
7111 @item similarity
7112 Similarity percentage with the above color.
7113 0.01 matches only the exact key color, while 1.0 matches everything.
7114
7115 @item blend
7116 Blend percentage.
7117 0.0 makes pixels either fully gray, or not gray at all.
7118 Higher values result in more preserved color.
7119
7120 @item yuv
7121 Signals that the color passed is already in YUV instead of RGB.
7122
7123 Literal colors like "green" or "red" don't make sense with this enabled anymore.
7124 This can be used to pass exact YUV values as hexadecimal numbers.
7125 @end table
7126
7127 @subsection Commands
7128 This filter supports same @ref{commands} as options.
7129 The command accepts the same syntax of the corresponding option.
7130
7131 If the specified expression is not valid, it is kept at its current
7132 value.
7133
7134 @section chromakey
7135 YUV colorspace color/chroma keying.
7136
7137 The filter accepts the following options:
7138
7139 @table @option
7140 @item color
7141 The color which will be replaced with transparency.
7142
7143 @item similarity
7144 Similarity percentage with the key color.
7145
7146 0.01 matches only the exact key color, while 1.0 matches everything.
7147
7148 @item blend
7149 Blend percentage.
7150
7151 0.0 makes pixels either fully transparent, or not transparent at all.
7152
7153 Higher values result in semi-transparent pixels, with a higher transparency
7154 the more similar the pixels color is to the key color.
7155
7156 @item yuv
7157 Signals that the color passed is already in YUV instead of RGB.
7158
7159 Literal colors like "green" or "red" don't make sense with this enabled anymore.
7160 This can be used to pass exact YUV values as hexadecimal numbers.
7161 @end table
7162
7163 @subsection Commands
7164 This filter supports same @ref{commands} as options.
7165 The command accepts the same syntax of the corresponding option.
7166
7167 If the specified expression is not valid, it is kept at its current
7168 value.
7169
7170 @subsection Examples
7171
7172 @itemize
7173 @item
7174 Make every green pixel in the input image transparent:
7175 @example
7176 ffmpeg -i input.png -vf chromakey=green out.png
7177 @end example
7178
7179 @item
7180 Overlay a greenscreen-video on top of a static black background.
7181 @example
7182 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
7183 @end example
7184 @end itemize
7185
7186 @section chromashift
7187 Shift chroma pixels horizontally and/or vertically.
7188
7189 The filter accepts the following options:
7190 @table @option
7191 @item cbh
7192 Set amount to shift chroma-blue horizontally.
7193 @item cbv
7194 Set amount to shift chroma-blue vertically.
7195 @item crh
7196 Set amount to shift chroma-red horizontally.
7197 @item crv
7198 Set amount to shift chroma-red vertically.
7199 @item edge
7200 Set edge mode, can be @var{smear}, default, or @var{warp}.
7201 @end table
7202
7203 @subsection Commands
7204
7205 This filter supports the all above options as @ref{commands}.
7206
7207 @section ciescope
7208
7209 Display CIE color diagram with pixels overlaid onto it.
7210
7211 The filter accepts the following options:
7212
7213 @table @option
7214 @item system
7215 Set color system.
7216
7217 @table @samp
7218 @item ntsc, 470m
7219 @item ebu, 470bg
7220 @item smpte
7221 @item 240m
7222 @item apple
7223 @item widergb
7224 @item cie1931
7225 @item rec709, hdtv
7226 @item uhdtv, rec2020
7227 @item dcip3
7228 @end table
7229
7230 @item cie
7231 Set CIE system.
7232
7233 @table @samp
7234 @item xyy
7235 @item ucs
7236 @item luv
7237 @end table
7238
7239 @item gamuts
7240 Set what gamuts to draw.
7241
7242 See @code{system} option for available values.
7243
7244 @item size, s
7245 Set ciescope size, by default set to 512.
7246
7247 @item intensity, i
7248 Set intensity used to map input pixel values to CIE diagram.
7249
7250 @item contrast
7251 Set contrast used to draw tongue colors that are out of active color system gamut.
7252
7253 @item corrgamma
7254 Correct gamma displayed on scope, by default enabled.
7255
7256 @item showwhite
7257 Show white point on CIE diagram, by default disabled.
7258
7259 @item gamma
7260 Set input gamma. Used only with XYZ input color space.
7261 @end table
7262
7263 @section codecview
7264
7265 Visualize information exported by some codecs.
7266
7267 Some codecs can export information through frames using side-data or other
7268 means. For example, some MPEG based codecs export motion vectors through the
7269 @var{export_mvs} flag in the codec @option{flags2} option.
7270
7271 The filter accepts the following option:
7272
7273 @table @option
7274 @item mv
7275 Set motion vectors to visualize.
7276
7277 Available flags for @var{mv} are:
7278
7279 @table @samp
7280 @item pf
7281 forward predicted MVs of P-frames
7282 @item bf
7283 forward predicted MVs of B-frames
7284 @item bb
7285 backward predicted MVs of B-frames
7286 @end table
7287
7288 @item qp
7289 Display quantization parameters using the chroma planes.
7290
7291 @item mv_type, mvt
7292 Set motion vectors type to visualize. Includes MVs from all frames unless specified by @var{frame_type} option.
7293
7294 Available flags for @var{mv_type} are:
7295
7296 @table @samp
7297 @item fp
7298 forward predicted MVs
7299 @item bp
7300 backward predicted MVs
7301 @end table
7302
7303 @item frame_type, ft
7304 Set frame type to visualize motion vectors of.
7305
7306 Available flags for @var{frame_type} are:
7307
7308 @table @samp
7309 @item if
7310 intra-coded frames (I-frames)
7311 @item pf
7312 predicted frames (P-frames)
7313 @item bf
7314 bi-directionally predicted frames (B-frames)
7315 @end table
7316 @end table
7317
7318 @subsection Examples
7319
7320 @itemize
7321 @item
7322 Visualize forward predicted MVs of all frames using @command{ffplay}:
7323 @example
7324 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp
7325 @end example
7326
7327 @item
7328 Visualize multi-directionals MVs of P and B-Frames using @command{ffplay}:
7329 @example
7330 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
7331 @end example
7332 @end itemize
7333
7334 @section colorbalance
7335 Modify intensity of primary colors (red, green and blue) of input frames.
7336
7337 The filter allows an input frame to be adjusted in the shadows, midtones or highlights
7338 regions for the red-cyan, green-magenta or blue-yellow balance.
7339
7340 A positive adjustment value shifts the balance towards the primary color, a negative
7341 value towards the complementary color.
7342
7343 The filter accepts the following options:
7344
7345 @table @option
7346 @item rs
7347 @item gs
7348 @item bs
7349 Adjust red, green and blue shadows (darkest pixels).
7350
7351 @item rm
7352 @item gm
7353 @item bm
7354 Adjust red, green and blue midtones (medium pixels).
7355
7356 @item rh
7357 @item gh
7358 @item bh
7359 Adjust red, green and blue highlights (brightest pixels).
7360
7361 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
7362
7363 @item pl
7364 Preserve lightness when changing color balance. Default is disabled.
7365 @end table
7366
7367 @subsection Examples
7368
7369 @itemize
7370 @item
7371 Add red color cast to shadows:
7372 @example
7373 colorbalance=rs=.3
7374 @end example
7375 @end itemize
7376
7377 @subsection Commands
7378
7379 This filter supports the all above options as @ref{commands}.
7380
7381 @section colorchannelmixer
7382
7383 Adjust video input frames by re-mixing color channels.
7384
7385 This filter modifies a color channel by adding the values associated to
7386 the other channels of the same pixels. For example if the value to
7387 modify is red, the output value will be:
7388 @example
7389 @var{red}=@var{red}*@var{rr} + @var{blue}*@var{rb} + @var{green}*@var{rg} + @var{alpha}*@var{ra}
7390 @end example
7391
7392 The filter accepts the following options:
7393
7394 @table @option
7395 @item rr
7396 @item rg
7397 @item rb
7398 @item ra
7399 Adjust contribution of input red, green, blue and alpha channels for output red channel.
7400 Default is @code{1} for @var{rr}, and @code{0} for @var{rg}, @var{rb} and @var{ra}.
7401
7402 @item gr
7403 @item gg
7404 @item gb
7405 @item ga
7406 Adjust contribution of input red, green, blue and alpha channels for output green channel.
7407 Default is @code{1} for @var{gg}, and @code{0} for @var{gr}, @var{gb} and @var{ga}.
7408
7409 @item br
7410 @item bg
7411 @item bb
7412 @item ba
7413 Adjust contribution of input red, green, blue and alpha channels for output blue channel.
7414 Default is @code{1} for @var{bb}, and @code{0} for @var{br}, @var{bg} and @var{ba}.
7415
7416 @item ar
7417 @item ag
7418 @item ab
7419 @item aa
7420 Adjust contribution of input red, green, blue and alpha channels for output alpha channel.
7421 Default is @code{1} for @var{aa}, and @code{0} for @var{ar}, @var{ag} and @var{ab}.
7422
7423 Allowed ranges for options are @code{[-2.0, 2.0]}.
7424 @end table
7425
7426 @subsection Examples
7427
7428 @itemize
7429 @item
7430 Convert source to grayscale:
7431 @example
7432 colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
7433 @end example
7434 @item
7435 Simulate sepia tones:
7436 @example
7437 colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
7438 @end example
7439 @end itemize
7440
7441 @subsection Commands
7442
7443 This filter supports the all above options as @ref{commands}.
7444
7445 @section colorkey
7446 RGB colorspace color keying.
7447
7448 The filter accepts the following options:
7449
7450 @table @option
7451 @item color
7452 The color which will be replaced with transparency.
7453
7454 @item similarity
7455 Similarity percentage with the key color.
7456
7457 0.01 matches only the exact key color, while 1.0 matches everything.
7458
7459 @item blend
7460 Blend percentage.
7461
7462 0.0 makes pixels either fully transparent, or not transparent at all.
7463
7464 Higher values result in semi-transparent pixels, with a higher transparency
7465 the more similar the pixels color is to the key color.
7466 @end table
7467
7468 @subsection Examples
7469
7470 @itemize
7471 @item
7472 Make every green pixel in the input image transparent:
7473 @example
7474 ffmpeg -i input.png -vf colorkey=green out.png
7475 @end example
7476
7477 @item
7478 Overlay a greenscreen-video on top of a static background image.
7479 @example
7480 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
7481 @end example
7482 @end itemize
7483
7484 @subsection Commands
7485 This filter supports same @ref{commands} as options.
7486 The command accepts the same syntax of the corresponding option.
7487
7488 If the specified expression is not valid, it is kept at its current
7489 value.
7490
7491 @section colorhold
7492 Remove all color information for all RGB colors except for certain one.
7493
7494 The filter accepts the following options:
7495
7496 @table @option
7497 @item color
7498 The color which will not be replaced with neutral gray.
7499
7500 @item similarity
7501 Similarity percentage with the above color.
7502 0.01 matches only the exact key color, while 1.0 matches everything.
7503
7504 @item blend
7505 Blend percentage. 0.0 makes pixels fully gray.
7506 Higher values result in more preserved color.
7507 @end table
7508
7509 @subsection Commands
7510 This filter supports same @ref{commands} as options.
7511 The command accepts the same syntax of the corresponding option.
7512
7513 If the specified expression is not valid, it is kept at its current
7514 value.
7515
7516 @section colorlevels
7517
7518 Adjust video input frames using levels.
7519
7520 The filter accepts the following options:
7521
7522 @table @option
7523 @item rimin
7524 @item gimin
7525 @item bimin
7526 @item aimin
7527 Adjust red, green, blue and alpha input black point.
7528 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
7529
7530 @item rimax
7531 @item gimax
7532 @item bimax
7533 @item aimax
7534 Adjust red, green, blue and alpha input white point.
7535 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{1}.
7536
7537 Input levels are used to lighten highlights (bright tones), darken shadows
7538 (dark tones), change the balance of bright and dark tones.
7539
7540 @item romin
7541 @item gomin
7542 @item bomin
7543 @item aomin
7544 Adjust red, green, blue and alpha output black point.
7545 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{0}.
7546
7547 @item romax
7548 @item gomax
7549 @item bomax
7550 @item aomax
7551 Adjust red, green, blue and alpha output white point.
7552 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{1}.
7553
7554 Output levels allows manual selection of a constrained output level range.
7555 @end table
7556
7557 @subsection Examples
7558
7559 @itemize
7560 @item
7561 Make video output darker:
7562 @example
7563 colorlevels=rimin=0.058:gimin=0.058:bimin=0.058
7564 @end example
7565
7566 @item
7567 Increase contrast:
7568 @example
7569 colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96
7570 @end example
7571
7572 @item
7573 Make video output lighter:
7574 @example
7575 colorlevels=rimax=0.902:gimax=0.902:bimax=0.902
7576 @end example
7577
7578 @item
7579 Increase brightness:
7580 @example
7581 colorlevels=romin=0.5:gomin=0.5:bomin=0.5
7582 @end example
7583 @end itemize
7584
7585 @subsection Commands
7586
7587 This filter supports the all above options as @ref{commands}.
7588
7589 @section colormatrix
7590
7591 Convert color matrix.
7592
7593 The filter accepts the following options:
7594
7595 @table @option
7596 @item src
7597 @item dst
7598 Specify the source and destination color matrix. Both values must be
7599 specified.
7600
7601 The accepted values are:
7602 @table @samp
7603 @item bt709
7604 BT.709
7605
7606 @item fcc
7607 FCC
7608
7609 @item bt601
7610 BT.601
7611
7612 @item bt470
7613 BT.470
7614
7615 @item bt470bg
7616 BT.470BG
7617
7618 @item smpte170m
7619 SMPTE-170M
7620
7621 @item smpte240m
7622 SMPTE-240M
7623
7624 @item bt2020
7625 BT.2020
7626 @end table
7627 @end table
7628
7629 For example to convert from BT.601 to SMPTE-240M, use the command:
7630 @example
7631 colormatrix=bt601:smpte240m
7632 @end example
7633
7634 @section colorspace
7635
7636 Convert colorspace, transfer characteristics or color primaries.
7637 Input video needs to have an even size.
7638
7639 The filter accepts the following options:
7640
7641 @table @option
7642 @anchor{all}
7643 @item all
7644 Specify all color properties at once.
7645
7646 The accepted values are:
7647 @table @samp
7648 @item bt470m
7649 BT.470M
7650
7651 @item bt470bg
7652 BT.470BG
7653
7654 @item bt601-6-525
7655 BT.601-6 525
7656
7657 @item bt601-6-625
7658 BT.601-6 625
7659
7660 @item bt709
7661 BT.709
7662
7663 @item smpte170m
7664 SMPTE-170M
7665
7666 @item smpte240m
7667 SMPTE-240M
7668
7669 @item bt2020
7670 BT.2020
7671
7672 @end table
7673
7674 @anchor{space}
7675 @item space
7676 Specify output colorspace.
7677
7678 The accepted values are:
7679 @table @samp
7680 @item bt709
7681 BT.709
7682
7683 @item fcc
7684 FCC
7685
7686 @item bt470bg
7687 BT.470BG or BT.601-6 625
7688
7689 @item smpte170m
7690 SMPTE-170M or BT.601-6 525
7691
7692 @item smpte240m
7693 SMPTE-240M
7694
7695 @item ycgco
7696 YCgCo
7697
7698 @item bt2020ncl
7699 BT.2020 with non-constant luminance
7700
7701 @end table
7702
7703 @anchor{trc}
7704 @item trc
7705 Specify output transfer characteristics.
7706
7707 The accepted values are:
7708 @table @samp
7709 @item bt709
7710 BT.709
7711
7712 @item bt470m
7713 BT.470M
7714
7715 @item bt470bg
7716 BT.470BG
7717
7718 @item gamma22
7719 Constant gamma of 2.2
7720
7721 @item gamma28
7722 Constant gamma of 2.8
7723
7724 @item smpte170m
7725 SMPTE-170M, BT.601-6 625 or BT.601-6 525
7726
7727 @item smpte240m
7728 SMPTE-240M
7729
7730 @item srgb
7731 SRGB
7732
7733 @item iec61966-2-1
7734 iec61966-2-1
7735
7736 @item iec61966-2-4
7737 iec61966-2-4
7738
7739 @item xvycc
7740 xvycc
7741
7742 @item bt2020-10
7743 BT.2020 for 10-bits content
7744
7745 @item bt2020-12
7746 BT.2020 for 12-bits content
7747
7748 @end table
7749
7750 @anchor{primaries}
7751 @item primaries
7752 Specify output color primaries.
7753
7754 The accepted values are:
7755 @table @samp
7756 @item bt709
7757 BT.709
7758
7759 @item bt470m
7760 BT.470M
7761
7762 @item bt470bg
7763 BT.470BG or BT.601-6 625
7764
7765 @item smpte170m
7766 SMPTE-170M or BT.601-6 525
7767
7768 @item smpte240m
7769 SMPTE-240M
7770
7771 @item film
7772 film
7773
7774 @item smpte431
7775 SMPTE-431
7776
7777 @item smpte432
7778 SMPTE-432
7779
7780 @item bt2020
7781 BT.2020
7782
7783 @item jedec-p22
7784 JEDEC P22 phosphors
7785
7786 @end table
7787
7788 @anchor{range}
7789 @item range
7790 Specify output color range.
7791
7792 The accepted values are:
7793 @table @samp
7794 @item tv
7795 TV (restricted) range
7796
7797 @item mpeg
7798 MPEG (restricted) range
7799
7800 @item pc
7801 PC (full) range
7802
7803 @item jpeg
7804 JPEG (full) range
7805
7806 @end table
7807
7808 @item format
7809 Specify output color format.
7810
7811 The accepted values are:
7812 @table @samp
7813 @item yuv420p
7814 YUV 4:2:0 planar 8-bits
7815
7816 @item yuv420p10
7817 YUV 4:2:0 planar 10-bits
7818
7819 @item yuv420p12
7820 YUV 4:2:0 planar 12-bits
7821
7822 @item yuv422p
7823 YUV 4:2:2 planar 8-bits
7824
7825 @item yuv422p10
7826 YUV 4:2:2 planar 10-bits
7827
7828 @item yuv422p12
7829 YUV 4:2:2 planar 12-bits
7830
7831 @item yuv444p
7832 YUV 4:4:4 planar 8-bits
7833
7834 @item yuv444p10
7835 YUV 4:4:4 planar 10-bits
7836
7837 @item yuv444p12
7838 YUV 4:4:4 planar 12-bits
7839
7840 @end table
7841
7842 @item fast
7843 Do a fast conversion, which skips gamma/primary correction. This will take
7844 significantly less CPU, but will be mathematically incorrect. To get output
7845 compatible with that produced by the colormatrix filter, use fast=1.
7846
7847 @item dither
7848 Specify dithering mode.
7849
7850 The accepted values are:
7851 @table @samp
7852 @item none
7853 No dithering
7854
7855 @item fsb
7856 Floyd-Steinberg dithering
7857 @end table
7858
7859 @item wpadapt
7860 Whitepoint adaptation mode.
7861
7862 The accepted values are:
7863 @table @samp
7864 @item bradford
7865 Bradford whitepoint adaptation
7866
7867 @item vonkries
7868 von Kries whitepoint adaptation
7869
7870 @item identity
7871 identity whitepoint adaptation (i.e. no whitepoint adaptation)
7872 @end table
7873
7874 @item iall
7875 Override all input properties at once. Same accepted values as @ref{all}.
7876
7877 @item ispace
7878 Override input colorspace. Same accepted values as @ref{space}.
7879
7880 @item iprimaries
7881 Override input color primaries. Same accepted values as @ref{primaries}.
7882
7883 @item itrc
7884 Override input transfer characteristics. Same accepted values as @ref{trc}.
7885
7886 @item irange
7887 Override input color range. Same accepted values as @ref{range}.
7888
7889 @end table
7890
7891 The filter converts the transfer characteristics, color space and color
7892 primaries to the specified user values. The output value, if not specified,
7893 is set to a default value based on the "all" property. If that property is
7894 also not specified, the filter will log an error. The output color range and
7895 format default to the same value as the input color range and format. The
7896 input transfer characteristics, color space, color primaries and color range
7897 should be set on the input data. If any of these are missing, the filter will
7898 log an error and no conversion will take place.
7899
7900 For example to convert the input to SMPTE-240M, use the command:
7901 @example
7902 colorspace=smpte240m
7903 @end example
7904
7905 @section convolution
7906
7907 Apply convolution of 3x3, 5x5, 7x7 or horizontal/vertical up to 49 elements.
7908
7909 The filter accepts the following options:
7910
7911 @table @option
7912 @item 0m
7913 @item 1m
7914 @item 2m
7915 @item 3m
7916 Set matrix for each plane.
7917 Matrix is sequence of 9, 25 or 49 signed integers in @var{square} mode,
7918 and from 1 to 49 odd number of signed integers in @var{row} mode.
7919
7920 @item 0rdiv
7921 @item 1rdiv
7922 @item 2rdiv
7923 @item 3rdiv
7924 Set multiplier for calculated value for each plane.
7925 If unset or 0, it will be sum of all matrix elements.
7926
7927 @item 0bias
7928 @item 1bias
7929 @item 2bias
7930 @item 3bias
7931 Set bias for each plane. This value is added to the result of the multiplication.
7932 Useful for making the overall image brighter or darker. Default is 0.0.
7933
7934 @item 0mode
7935 @item 1mode
7936 @item 2mode
7937 @item 3mode
7938 Set matrix mode for each plane. Can be @var{square}, @var{row} or @var{column}.
7939 Default is @var{square}.
7940 @end table
7941
7942 @subsection Examples
7943
7944 @itemize
7945 @item
7946 Apply sharpen:
7947 @example
7948 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"
7949 @end example
7950
7951 @item
7952 Apply blur:
7953 @example
7954 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"
7955 @end example
7956
7957 @item
7958 Apply edge enhance:
7959 @example
7960 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"
7961 @end example
7962
7963 @item
7964 Apply edge detect:
7965 @example
7966 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"
7967 @end example
7968
7969 @item
7970 Apply laplacian edge detector which includes diagonals:
7971 @example
7972 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"
7973 @end example
7974
7975 @item
7976 Apply emboss:
7977 @example
7978 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"
7979 @end example
7980 @end itemize
7981
7982 @section convolve
7983
7984 Apply 2D convolution of video stream in frequency domain using second stream
7985 as impulse.
7986
7987 The filter accepts the following options:
7988
7989 @table @option
7990 @item planes
7991 Set which planes to process.
7992
7993 @item impulse
7994 Set which impulse video frames will be processed, can be @var{first}
7995 or @var{all}. Default is @var{all}.
7996 @end table
7997
7998 The @code{convolve} filter also supports the @ref{framesync} options.
7999
8000 @section copy
8001
8002 Copy the input video source unchanged to the output. This is mainly useful for
8003 testing purposes.
8004
8005 @anchor{coreimage}
8006 @section coreimage
8007 Video filtering on GPU using Apple's CoreImage API on OSX.
8008
8009 Hardware acceleration is based on an OpenGL context. Usually, this means it is
8010 processed by video hardware. However, software-based OpenGL implementations
8011 exist which means there is no guarantee for hardware processing. It depends on
8012 the respective OSX.
8013
8014 There are many filters and image generators provided by Apple that come with a
8015 large variety of options. The filter has to be referenced by its name along
8016 with its options.
8017
8018 The coreimage filter accepts the following options:
8019 @table @option
8020 @item list_filters
8021 List all available filters and generators along with all their respective
8022 options as well as possible minimum and maximum values along with the default
8023 values.
8024 @example
8025 list_filters=true
8026 @end example
8027
8028 @item filter
8029 Specify all filters by their respective name and options.
8030 Use @var{list_filters} to determine all valid filter names and options.
8031 Numerical options are specified by a float value and are automatically clamped
8032 to their respective value range.  Vector and color options have to be specified
8033 by a list of space separated float values. Character escaping has to be done.
8034 A special option name @code{default} is available to use default options for a
8035 filter.
8036
8037 It is required to specify either @code{default} or at least one of the filter options.
8038 All omitted options are used with their default values.
8039 The syntax of the filter string is as follows:
8040 @example
8041 filter=<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...][#<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...]][#...]
8042 @end example
8043
8044 @item output_rect
8045 Specify a rectangle where the output of the filter chain is copied into the
8046 input image. It is given by a list of space separated float values:
8047 @example
8048 output_rect=x\ y\ width\ height
8049 @end example
8050 If not given, the output rectangle equals the dimensions of the input image.
8051 The output rectangle is automatically cropped at the borders of the input
8052 image. Negative values are valid for each component.
8053 @example
8054 output_rect=25\ 25\ 100\ 100
8055 @end example
8056 @end table
8057
8058 Several filters can be chained for successive processing without GPU-HOST
8059 transfers allowing for fast processing of complex filter chains.
8060 Currently, only filters with zero (generators) or exactly one (filters) input
8061 image and one output image are supported. Also, transition filters are not yet
8062 usable as intended.
8063
8064 Some filters generate output images with additional padding depending on the
8065 respective filter kernel. The padding is automatically removed to ensure the
8066 filter output has the same size as the input image.
8067
8068 For image generators, the size of the output image is determined by the
8069 previous output image of the filter chain or the input image of the whole
8070 filterchain, respectively. The generators do not use the pixel information of
8071 this image to generate their output. However, the generated output is
8072 blended onto this image, resulting in partial or complete coverage of the
8073 output image.
8074
8075 The @ref{coreimagesrc} video source can be used for generating input images
8076 which are directly fed into the filter chain. By using it, providing input
8077 images by another video source or an input video is not required.
8078
8079 @subsection Examples
8080
8081 @itemize
8082
8083 @item
8084 List all filters available:
8085 @example
8086 coreimage=list_filters=true
8087 @end example
8088
8089 @item
8090 Use the CIBoxBlur filter with default options to blur an image:
8091 @example
8092 coreimage=filter=CIBoxBlur@@default
8093 @end example
8094
8095 @item
8096 Use a filter chain with CISepiaTone at default values and CIVignetteEffect with
8097 its center at 100x100 and a radius of 50 pixels:
8098 @example
8099 coreimage=filter=CIBoxBlur@@default#CIVignetteEffect@@inputCenter=100\ 100@@inputRadius=50
8100 @end example
8101
8102 @item
8103 Use nullsrc and CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
8104 given as complete and escaped command-line for Apple's standard bash shell:
8105 @example
8106 ffmpeg -f lavfi -i nullsrc=s=100x100,coreimage=filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
8107 @end example
8108 @end itemize
8109
8110 @section cover_rect
8111
8112 Cover a rectangular object
8113
8114 It accepts the following options:
8115
8116 @table @option
8117 @item cover
8118 Filepath of the optional cover image, needs to be in yuv420.
8119
8120 @item mode
8121 Set covering mode.
8122
8123 It accepts the following values:
8124 @table @samp
8125 @item cover
8126 cover it by the supplied image
8127 @item blur
8128 cover it by interpolating the surrounding pixels
8129 @end table
8130
8131 Default value is @var{blur}.
8132 @end table
8133
8134 @subsection Examples
8135
8136 @itemize
8137 @item
8138 Cover a rectangular object by the supplied image of a given video using @command{ffmpeg}:
8139 @example
8140 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
8141 @end example
8142 @end itemize
8143
8144 @section crop
8145
8146 Crop the input video to given dimensions.
8147
8148 It accepts the following parameters:
8149
8150 @table @option
8151 @item w, out_w
8152 The width of the output video. It defaults to @code{iw}.
8153 This expression is evaluated only once during the filter
8154 configuration, or when the @samp{w} or @samp{out_w} command is sent.
8155
8156 @item h, out_h
8157 The height of the output video. It defaults to @code{ih}.
8158 This expression is evaluated only once during the filter
8159 configuration, or when the @samp{h} or @samp{out_h} command is sent.
8160
8161 @item x
8162 The horizontal position, in the input video, of the left edge of the output
8163 video. It defaults to @code{(in_w-out_w)/2}.
8164 This expression is evaluated per-frame.
8165
8166 @item y
8167 The vertical position, in the input video, of the top edge of the output video.
8168 It defaults to @code{(in_h-out_h)/2}.
8169 This expression is evaluated per-frame.
8170
8171 @item keep_aspect
8172 If set to 1 will force the output display aspect ratio
8173 to be the same of the input, by changing the output sample aspect
8174 ratio. It defaults to 0.
8175
8176 @item exact
8177 Enable exact cropping. If enabled, subsampled videos will be cropped at exact
8178 width/height/x/y as specified and will not be rounded to nearest smaller value.
8179 It defaults to 0.
8180 @end table
8181
8182 The @var{out_w}, @var{out_h}, @var{x}, @var{y} parameters are
8183 expressions containing the following constants:
8184
8185 @table @option
8186 @item x
8187 @item y
8188 The computed values for @var{x} and @var{y}. They are evaluated for
8189 each new frame.
8190
8191 @item in_w
8192 @item in_h
8193 The input width and height.
8194
8195 @item iw
8196 @item ih
8197 These are the same as @var{in_w} and @var{in_h}.
8198
8199 @item out_w
8200 @item out_h
8201 The output (cropped) width and height.
8202
8203 @item ow
8204 @item oh
8205 These are the same as @var{out_w} and @var{out_h}.
8206
8207 @item a
8208 same as @var{iw} / @var{ih}
8209
8210 @item sar
8211 input sample aspect ratio
8212
8213 @item dar
8214 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
8215
8216 @item hsub
8217 @item vsub
8218 horizontal and vertical chroma subsample values. For example for the
8219 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
8220
8221 @item n
8222 The number of the input frame, starting from 0.
8223
8224 @item pos
8225 the position in the file of the input frame, NAN if unknown
8226
8227 @item t
8228 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
8229
8230 @end table
8231
8232 The expression for @var{out_w} may depend on the value of @var{out_h},
8233 and the expression for @var{out_h} may depend on @var{out_w}, but they
8234 cannot depend on @var{x} and @var{y}, as @var{x} and @var{y} are
8235 evaluated after @var{out_w} and @var{out_h}.
8236
8237 The @var{x} and @var{y} parameters specify the expressions for the
8238 position of the top-left corner of the output (non-cropped) area. They
8239 are evaluated for each frame. If the evaluated value is not valid, it
8240 is approximated to the nearest valid value.
8241
8242 The expression for @var{x} may depend on @var{y}, and the expression
8243 for @var{y} may depend on @var{x}.
8244
8245 @subsection Examples
8246
8247 @itemize
8248 @item
8249 Crop area with size 100x100 at position (12,34).
8250 @example
8251 crop=100:100:12:34
8252 @end example
8253
8254 Using named options, the example above becomes:
8255 @example
8256 crop=w=100:h=100:x=12:y=34
8257 @end example
8258
8259 @item
8260 Crop the central input area with size 100x100:
8261 @example
8262 crop=100:100
8263 @end example
8264
8265 @item
8266 Crop the central input area with size 2/3 of the input video:
8267 @example
8268 crop=2/3*in_w:2/3*in_h
8269 @end example
8270
8271 @item
8272 Crop the input video central square:
8273 @example
8274 crop=out_w=in_h
8275 crop=in_h
8276 @end example
8277
8278 @item
8279 Delimit the rectangle with the top-left corner placed at position
8280 100:100 and the right-bottom corner corresponding to the right-bottom
8281 corner of the input image.
8282 @example
8283 crop=in_w-100:in_h-100:100:100
8284 @end example
8285
8286 @item
8287 Crop 10 pixels from the left and right borders, and 20 pixels from
8288 the top and bottom borders
8289 @example
8290 crop=in_w-2*10:in_h-2*20
8291 @end example
8292
8293 @item
8294 Keep only the bottom right quarter of the input image:
8295 @example
8296 crop=in_w/2:in_h/2:in_w/2:in_h/2
8297 @end example
8298
8299 @item
8300 Crop height for getting Greek harmony:
8301 @example
8302 crop=in_w:1/PHI*in_w
8303 @end example
8304
8305 @item
8306 Apply trembling effect:
8307 @example
8308 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)
8309 @end example
8310
8311 @item
8312 Apply erratic camera effect depending on timestamp:
8313 @example
8314 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)"
8315 @end example
8316
8317 @item
8318 Set x depending on the value of y:
8319 @example
8320 crop=in_w/2:in_h/2:y:10+10*sin(n/10)
8321 @end example
8322 @end itemize
8323
8324 @subsection Commands
8325
8326 This filter supports the following commands:
8327 @table @option
8328 @item w, out_w
8329 @item h, out_h
8330 @item x
8331 @item y
8332 Set width/height of the output video and the horizontal/vertical position
8333 in the input video.
8334 The command accepts the same syntax of the corresponding option.
8335
8336 If the specified expression is not valid, it is kept at its current
8337 value.
8338 @end table
8339
8340 @section cropdetect
8341
8342 Auto-detect the crop size.
8343
8344 It calculates the necessary cropping parameters and prints the
8345 recommended parameters via the logging system. The detected dimensions
8346 correspond to the non-black area of the input video.
8347
8348 It accepts the following parameters:
8349
8350 @table @option
8351
8352 @item limit
8353 Set higher black value threshold, which can be optionally specified
8354 from nothing (0) to everything (255 for 8-bit based formats). An intensity
8355 value greater to the set value is considered non-black. It defaults to 24.
8356 You can also specify a value between 0.0 and 1.0 which will be scaled depending
8357 on the bitdepth of the pixel format.
8358
8359 @item round
8360 The value which the width/height should be divisible by. It defaults to
8361 16. The offset is automatically adjusted to center the video. Use 2 to
8362 get only even dimensions (needed for 4:2:2 video). 16 is best when
8363 encoding to most video codecs.
8364
8365 @item reset_count, reset
8366 Set the counter that determines after how many frames cropdetect will
8367 reset the previously detected largest video area and start over to
8368 detect the current optimal crop area. Default value is 0.
8369
8370 This can be useful when channel logos distort the video area. 0
8371 indicates 'never reset', and returns the largest area encountered during
8372 playback.
8373 @end table
8374
8375 @anchor{cue}
8376 @section cue
8377
8378 Delay video filtering until a given wallclock timestamp. The filter first
8379 passes on @option{preroll} amount of frames, then it buffers at most
8380 @option{buffer} amount of frames and waits for the cue. After reaching the cue
8381 it forwards the buffered frames and also any subsequent frames coming in its
8382 input.
8383
8384 The filter can be used synchronize the output of multiple ffmpeg processes for
8385 realtime output devices like decklink. By putting the delay in the filtering
8386 chain and pre-buffering frames the process can pass on data to output almost
8387 immediately after the target wallclock timestamp is reached.
8388
8389 Perfect frame accuracy cannot be guaranteed, but the result is good enough for
8390 some use cases.
8391
8392 @table @option
8393
8394 @item cue
8395 The cue timestamp expressed in a UNIX timestamp in microseconds. Default is 0.
8396
8397 @item preroll
8398 The duration of content to pass on as preroll expressed in seconds. Default is 0.
8399
8400 @item buffer
8401 The maximum duration of content to buffer before waiting for the cue expressed
8402 in seconds. Default is 0.
8403
8404 @end table
8405
8406 @anchor{curves}
8407 @section curves
8408
8409 Apply color adjustments using curves.
8410
8411 This filter is similar to the Adobe Photoshop and GIMP curves tools. Each
8412 component (red, green and blue) has its values defined by @var{N} key points
8413 tied from each other using a smooth curve. The x-axis represents the pixel
8414 values from the input frame, and the y-axis the new pixel values to be set for
8415 the output frame.
8416
8417 By default, a component curve is defined by the two points @var{(0;0)} and
8418 @var{(1;1)}. This creates a straight line where each original pixel value is
8419 "adjusted" to its own value, which means no change to the image.
8420
8421 The filter allows you to redefine these two points and add some more. A new
8422 curve (using a natural cubic spline interpolation) will be define to pass
8423 smoothly through all these new coordinates. The new defined points needs to be
8424 strictly increasing over the x-axis, and their @var{x} and @var{y} values must
8425 be in the @var{[0;1]} interval.  If the computed curves happened to go outside
8426 the vector spaces, the values will be clipped accordingly.
8427
8428 The filter accepts the following options:
8429
8430 @table @option
8431 @item preset
8432 Select one of the available color presets. This option can be used in addition
8433 to the @option{r}, @option{g}, @option{b} parameters; in this case, the later
8434 options takes priority on the preset values.
8435 Available presets are:
8436 @table @samp
8437 @item none
8438 @item color_negative
8439 @item cross_process
8440 @item darker
8441 @item increase_contrast
8442 @item lighter
8443 @item linear_contrast
8444 @item medium_contrast
8445 @item negative
8446 @item strong_contrast
8447 @item vintage
8448 @end table
8449 Default is @code{none}.
8450 @item master, m
8451 Set the master key points. These points will define a second pass mapping. It
8452 is sometimes called a "luminance" or "value" mapping. It can be used with
8453 @option{r}, @option{g}, @option{b} or @option{all} since it acts like a
8454 post-processing LUT.
8455 @item red, r
8456 Set the key points for the red component.
8457 @item green, g
8458 Set the key points for the green component.
8459 @item blue, b
8460 Set the key points for the blue component.
8461 @item all
8462 Set the key points for all components (not including master).
8463 Can be used in addition to the other key points component
8464 options. In this case, the unset component(s) will fallback on this
8465 @option{all} setting.
8466 @item psfile
8467 Specify a Photoshop curves file (@code{.acv}) to import the settings from.
8468 @item plot
8469 Save Gnuplot script of the curves in specified file.
8470 @end table
8471
8472 To avoid some filtergraph syntax conflicts, each key points list need to be
8473 defined using the following syntax: @code{x0/y0 x1/y1 x2/y2 ...}.
8474
8475 @subsection Examples
8476
8477 @itemize
8478 @item
8479 Increase slightly the middle level of blue:
8480 @example
8481 curves=blue='0/0 0.5/0.58 1/1'
8482 @end example
8483
8484 @item
8485 Vintage effect:
8486 @example
8487 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'
8488 @end example
8489 Here we obtain the following coordinates for each components:
8490 @table @var
8491 @item red
8492 @code{(0;0.11) (0.42;0.51) (1;0.95)}
8493 @item green
8494 @code{(0;0) (0.50;0.48) (1;1)}
8495 @item blue
8496 @code{(0;0.22) (0.49;0.44) (1;0.80)}
8497 @end table
8498
8499 @item
8500 The previous example can also be achieved with the associated built-in preset:
8501 @example
8502 curves=preset=vintage
8503 @end example
8504
8505 @item
8506 Or simply:
8507 @example
8508 curves=vintage
8509 @end example
8510
8511 @item
8512 Use a Photoshop preset and redefine the points of the green component:
8513 @example
8514 curves=psfile='MyCurvesPresets/purple.acv':green='0/0 0.45/0.53 1/1'
8515 @end example
8516
8517 @item
8518 Check out the curves of the @code{cross_process} profile using @command{ffmpeg}
8519 and @command{gnuplot}:
8520 @example
8521 ffmpeg -f lavfi -i color -vf curves=cross_process:plot=/tmp/curves.plt -frames:v 1 -f null -
8522 gnuplot -p /tmp/curves.plt
8523 @end example
8524 @end itemize
8525
8526 @section datascope
8527
8528 Video data analysis filter.
8529
8530 This filter shows hexadecimal pixel values of part of video.
8531
8532 The filter accepts the following options:
8533
8534 @table @option
8535 @item size, s
8536 Set output video size.
8537
8538 @item x
8539 Set x offset from where to pick pixels.
8540
8541 @item y
8542 Set y offset from where to pick pixels.
8543
8544 @item mode
8545 Set scope mode, can be one of the following:
8546 @table @samp
8547 @item mono
8548 Draw hexadecimal pixel values with white color on black background.
8549
8550 @item color
8551 Draw hexadecimal pixel values with input video pixel color on black
8552 background.
8553
8554 @item color2
8555 Draw hexadecimal pixel values on color background picked from input video,
8556 the text color is picked in such way so its always visible.
8557 @end table
8558
8559 @item axis
8560 Draw rows and columns numbers on left and top of video.
8561
8562 @item opacity
8563 Set background opacity.
8564
8565 @item format
8566 Set display number format. Can be @code{hex}, or @code{dec}. Default is @code{hex}.
8567 @end table
8568
8569 @section dblur
8570 Apply Directional blur filter.
8571
8572 The filter accepts the following options:
8573
8574 @table @option
8575 @item angle
8576 Set angle of directional blur. Default is @code{45}.
8577
8578 @item radius
8579 Set radius of directional blur. Default is @code{5}.
8580
8581 @item planes
8582 Set which planes to filter. By default all planes are filtered.
8583 @end table
8584
8585 @subsection Commands
8586 This filter supports same @ref{commands} as options.
8587 The command accepts the same syntax of the corresponding option.
8588
8589 If the specified expression is not valid, it is kept at its current
8590 value.
8591
8592 @section dctdnoiz
8593
8594 Denoise frames using 2D DCT (frequency domain filtering).
8595
8596 This filter is not designed for real time.
8597
8598 The filter accepts the following options:
8599
8600 @table @option
8601 @item sigma, s
8602 Set the noise sigma constant.
8603
8604 This @var{sigma} defines a hard threshold of @code{3 * sigma}; every DCT
8605 coefficient (absolute value) below this threshold with be dropped.
8606
8607 If you need a more advanced filtering, see @option{expr}.
8608
8609 Default is @code{0}.
8610
8611 @item overlap
8612 Set number overlapping pixels for each block. Since the filter can be slow, you
8613 may want to reduce this value, at the cost of a less effective filter and the
8614 risk of various artefacts.
8615
8616 If the overlapping value doesn't permit processing the whole input width or
8617 height, a warning will be displayed and according borders won't be denoised.
8618
8619 Default value is @var{blocksize}-1, which is the best possible setting.
8620
8621 @item expr, e
8622 Set the coefficient factor expression.
8623
8624 For each coefficient of a DCT block, this expression will be evaluated as a
8625 multiplier value for the coefficient.
8626
8627 If this is option is set, the @option{sigma} option will be ignored.
8628
8629 The absolute value of the coefficient can be accessed through the @var{c}
8630 variable.
8631
8632 @item n
8633 Set the @var{blocksize} using the number of bits. @code{1<<@var{n}} defines the
8634 @var{blocksize}, which is the width and height of the processed blocks.
8635
8636 The default value is @var{3} (8x8) and can be raised to @var{4} for a
8637 @var{blocksize} of 16x16. Note that changing this setting has huge consequences
8638 on the speed processing. Also, a larger block size does not necessarily means a
8639 better de-noising.
8640 @end table
8641
8642 @subsection Examples
8643
8644 Apply a denoise with a @option{sigma} of @code{4.5}:
8645 @example
8646 dctdnoiz=4.5
8647 @end example
8648
8649 The same operation can be achieved using the expression system:
8650 @example
8651 dctdnoiz=e='gte(c, 4.5*3)'
8652 @end example
8653
8654 Violent denoise using a block size of @code{16x16}:
8655 @example
8656 dctdnoiz=15:n=4
8657 @end example
8658
8659 @section deband
8660
8661 Remove banding artifacts from input video.
8662 It works by replacing banded pixels with average value of referenced pixels.
8663
8664 The filter accepts the following options:
8665
8666 @table @option
8667 @item 1thr
8668 @item 2thr
8669 @item 3thr
8670 @item 4thr
8671 Set banding detection threshold for each plane. Default is 0.02.
8672 Valid range is 0.00003 to 0.5.
8673 If difference between current pixel and reference pixel is less than threshold,
8674 it will be considered as banded.
8675
8676 @item range, r
8677 Banding detection range in pixels. Default is 16. If positive, random number
8678 in range 0 to set value will be used. If negative, exact absolute value
8679 will be used.
8680 The range defines square of four pixels around current pixel.
8681
8682 @item direction, d
8683 Set direction in radians from which four pixel will be compared. If positive,
8684 random direction from 0 to set direction will be picked. If negative, exact of
8685 absolute value will be picked. For example direction 0, -PI or -2*PI radians
8686 will pick only pixels on same row and -PI/2 will pick only pixels on same
8687 column.
8688
8689 @item blur, b
8690 If enabled, current pixel is compared with average value of all four
8691 surrounding pixels. The default is enabled. If disabled current pixel is
8692 compared with all four surrounding pixels. The pixel is considered banded
8693 if only all four differences with surrounding pixels are less than threshold.
8694
8695 @item coupling, c
8696 If enabled, current pixel is changed if and only if all pixel components are banded,
8697 e.g. banding detection threshold is triggered for all color components.
8698 The default is disabled.
8699 @end table
8700
8701 @section deblock
8702
8703 Remove blocking artifacts from input video.
8704
8705 The filter accepts the following options:
8706
8707 @table @option
8708 @item filter
8709 Set filter type, can be @var{weak} or @var{strong}. Default is @var{strong}.
8710 This controls what kind of deblocking is applied.
8711
8712 @item block
8713 Set size of block, allowed range is from 4 to 512. Default is @var{8}.
8714
8715 @item alpha
8716 @item beta
8717 @item gamma
8718 @item delta
8719 Set blocking detection thresholds. Allowed range is 0 to 1.
8720 Defaults are: @var{0.098} for @var{alpha} and @var{0.05} for the rest.
8721 Using higher threshold gives more deblocking strength.
8722 Setting @var{alpha} controls threshold detection at exact edge of block.
8723 Remaining options controls threshold detection near the edge. Each one for
8724 below/above or left/right. Setting any of those to @var{0} disables
8725 deblocking.
8726
8727 @item planes
8728 Set planes to filter. Default is to filter all available planes.
8729 @end table
8730
8731 @subsection Examples
8732
8733 @itemize
8734 @item
8735 Deblock using weak filter and block size of 4 pixels.
8736 @example
8737 deblock=filter=weak:block=4
8738 @end example
8739
8740 @item
8741 Deblock using strong filter, block size of 4 pixels and custom thresholds for
8742 deblocking more edges.
8743 @example
8744 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05
8745 @end example
8746
8747 @item
8748 Similar as above, but filter only first plane.
8749 @example
8750 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=1
8751 @end example
8752
8753 @item
8754 Similar as above, but filter only second and third plane.
8755 @example
8756 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=6
8757 @end example
8758 @end itemize
8759
8760 @anchor{decimate}
8761 @section decimate
8762
8763 Drop duplicated frames at regular intervals.
8764
8765 The filter accepts the following options:
8766
8767 @table @option
8768 @item cycle
8769 Set the number of frames from which one will be dropped. Setting this to
8770 @var{N} means one frame in every batch of @var{N} frames will be dropped.
8771 Default is @code{5}.
8772
8773 @item dupthresh
8774 Set the threshold for duplicate detection. If the difference metric for a frame
8775 is less than or equal to this value, then it is declared as duplicate. Default
8776 is @code{1.1}
8777
8778 @item scthresh
8779 Set scene change threshold. Default is @code{15}.
8780
8781 @item blockx
8782 @item blocky
8783 Set the size of the x and y-axis blocks used during metric calculations.
8784 Larger blocks give better noise suppression, but also give worse detection of
8785 small movements. Must be a power of two. Default is @code{32}.
8786
8787 @item ppsrc
8788 Mark main input as a pre-processed input and activate clean source input
8789 stream. This allows the input to be pre-processed with various filters to help
8790 the metrics calculation while keeping the frame selection lossless. When set to
8791 @code{1}, the first stream is for the pre-processed input, and the second
8792 stream is the clean source from where the kept frames are chosen. Default is
8793 @code{0}.
8794
8795 @item chroma
8796 Set whether or not chroma is considered in the metric calculations. Default is
8797 @code{1}.
8798 @end table
8799
8800 @section deconvolve
8801
8802 Apply 2D deconvolution of video stream in frequency domain using second stream
8803 as impulse.
8804
8805 The filter accepts the following options:
8806
8807 @table @option
8808 @item planes
8809 Set which planes to process.
8810
8811 @item impulse
8812 Set which impulse video frames will be processed, can be @var{first}
8813 or @var{all}. Default is @var{all}.
8814
8815 @item noise
8816 Set noise when doing divisions. Default is @var{0.0000001}. Useful when width
8817 and height are not same and not power of 2 or if stream prior to convolving
8818 had noise.
8819 @end table
8820
8821 The @code{deconvolve} filter also supports the @ref{framesync} options.
8822
8823 @section dedot
8824
8825 Reduce cross-luminance (dot-crawl) and cross-color (rainbows) from video.
8826
8827 It accepts the following options:
8828
8829 @table @option
8830 @item m
8831 Set mode of operation. Can be combination of @var{dotcrawl} for cross-luminance reduction and/or
8832 @var{rainbows} for cross-color reduction.
8833
8834 @item lt
8835 Set spatial luma threshold. Lower values increases reduction of cross-luminance.
8836
8837 @item tl
8838 Set tolerance for temporal luma. Higher values increases reduction of cross-luminance.
8839
8840 @item tc
8841 Set tolerance for chroma temporal variation. Higher values increases reduction of cross-color.
8842
8843 @item ct
8844 Set temporal chroma threshold. Lower values increases reduction of cross-color.
8845 @end table
8846
8847 @section deflate
8848
8849 Apply deflate effect to the video.
8850
8851 This filter replaces the pixel by the local(3x3) average by taking into account
8852 only values lower than the pixel.
8853
8854 It accepts the following options:
8855
8856 @table @option
8857 @item threshold0
8858 @item threshold1
8859 @item threshold2
8860 @item threshold3
8861 Limit the maximum change for each plane, default is 65535.
8862 If 0, plane will remain unchanged.
8863 @end table
8864
8865 @subsection Commands
8866
8867 This filter supports the all above options as @ref{commands}.
8868
8869 @section deflicker
8870
8871 Remove temporal frame luminance variations.
8872
8873 It accepts the following options:
8874
8875 @table @option
8876 @item size, s
8877 Set moving-average filter size in frames. Default is 5. Allowed range is 2 - 129.
8878
8879 @item mode, m
8880 Set averaging mode to smooth temporal luminance variations.
8881
8882 Available values are:
8883 @table @samp
8884 @item am
8885 Arithmetic mean
8886
8887 @item gm
8888 Geometric mean
8889
8890 @item hm
8891 Harmonic mean
8892
8893 @item qm
8894 Quadratic mean
8895
8896 @item cm
8897 Cubic mean
8898
8899 @item pm
8900 Power mean
8901
8902 @item median
8903 Median
8904 @end table
8905
8906 @item bypass
8907 Do not actually modify frame. Useful when one only wants metadata.
8908 @end table
8909
8910 @section dejudder
8911
8912 Remove judder produced by partially interlaced telecined content.
8913
8914 Judder can be introduced, for instance, by @ref{pullup} filter. If the original
8915 source was partially telecined content then the output of @code{pullup,dejudder}
8916 will have a variable frame rate. May change the recorded frame rate of the
8917 container. Aside from that change, this filter will not affect constant frame
8918 rate video.
8919
8920 The option available in this filter is:
8921 @table @option
8922
8923 @item cycle
8924 Specify the length of the window over which the judder repeats.
8925
8926 Accepts any integer greater than 1. Useful values are:
8927 @table @samp
8928
8929 @item 4
8930 If the original was telecined from 24 to 30 fps (Film to NTSC).
8931
8932 @item 5
8933 If the original was telecined from 25 to 30 fps (PAL to NTSC).
8934
8935 @item 20
8936 If a mixture of the two.
8937 @end table
8938
8939 The default is @samp{4}.
8940 @end table
8941
8942 @section delogo
8943
8944 Suppress a TV station logo by a simple interpolation of the surrounding
8945 pixels. Just set a rectangle covering the logo and watch it disappear
8946 (and sometimes something even uglier appear - your mileage may vary).
8947
8948 It accepts the following parameters:
8949 @table @option
8950
8951 @item x
8952 @item y
8953 Specify the top left corner coordinates of the logo. They must be
8954 specified.
8955
8956 @item w
8957 @item h
8958 Specify the width and height of the logo to clear. They must be
8959 specified.
8960
8961 @item band, t
8962 Specify the thickness of the fuzzy edge of the rectangle (added to
8963 @var{w} and @var{h}). The default value is 1. This option is
8964 deprecated, setting higher values should no longer be necessary and
8965 is not recommended.
8966
8967 @item show
8968 When set to 1, a green rectangle is drawn on the screen to simplify
8969 finding the right @var{x}, @var{y}, @var{w}, and @var{h} parameters.
8970 The default value is 0.
8971
8972 The rectangle is drawn on the outermost pixels which will be (partly)
8973 replaced with interpolated values. The values of the next pixels
8974 immediately outside this rectangle in each direction will be used to
8975 compute the interpolated pixel values inside the rectangle.
8976
8977 @end table
8978
8979 @subsection Examples
8980
8981 @itemize
8982 @item
8983 Set a rectangle covering the area with top left corner coordinates 0,0
8984 and size 100x77, and a band of size 10:
8985 @example
8986 delogo=x=0:y=0:w=100:h=77:band=10
8987 @end example
8988
8989 @end itemize
8990
8991 @anchor{derain}
8992 @section derain
8993
8994 Remove the rain in the input image/video by applying the derain methods based on
8995 convolutional neural networks. Supported models:
8996
8997 @itemize
8998 @item
8999 Recurrent Squeeze-and-Excitation Context Aggregation Net (RESCAN).
9000 See @url{http://openaccess.thecvf.com/content_ECCV_2018/papers/Xia_Li_Recurrent_Squeeze-and-Excitation_Context_ECCV_2018_paper.pdf}.
9001 @end itemize
9002
9003 Training as well as model generation scripts are provided in
9004 the repository at @url{https://github.com/XueweiMeng/derain_filter.git}.
9005
9006 Native model files (.model) can be generated from TensorFlow model
9007 files (.pb) by using tools/python/convert.py
9008
9009 The filter accepts the following options:
9010
9011 @table @option
9012 @item filter_type
9013 Specify which filter to use. This option accepts the following values:
9014
9015 @table @samp
9016 @item derain
9017 Derain filter. To conduct derain filter, you need to use a derain model.
9018
9019 @item dehaze
9020 Dehaze filter. To conduct dehaze filter, you need to use a dehaze model.
9021 @end table
9022 Default value is @samp{derain}.
9023
9024 @item dnn_backend
9025 Specify which DNN backend to use for model loading and execution. This option accepts
9026 the following values:
9027
9028 @table @samp
9029 @item native
9030 Native implementation of DNN loading and execution.
9031
9032 @item tensorflow
9033 TensorFlow backend. To enable this backend you
9034 need to install the TensorFlow for C library (see
9035 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
9036 @code{--enable-libtensorflow}
9037 @end table
9038 Default value is @samp{native}.
9039
9040 @item model
9041 Set path to model file specifying network architecture and its parameters.
9042 Note that different backends use different file formats. TensorFlow and native
9043 backend can load files for only its format.
9044 @end table
9045
9046 It can also be finished with @ref{dnn_processing} filter.
9047
9048 @section deshake
9049
9050 Attempt to fix small changes in horizontal and/or vertical shift. This
9051 filter helps remove camera shake from hand-holding a camera, bumping a
9052 tripod, moving on a vehicle, etc.
9053
9054 The filter accepts the following options:
9055
9056 @table @option
9057
9058 @item x
9059 @item y
9060 @item w
9061 @item h
9062 Specify a rectangular area where to limit the search for motion
9063 vectors.
9064 If desired the search for motion vectors can be limited to a
9065 rectangular area of the frame defined by its top left corner, width
9066 and height. These parameters have the same meaning as the drawbox
9067 filter which can be used to visualise the position of the bounding
9068 box.
9069
9070 This is useful when simultaneous movement of subjects within the frame
9071 might be confused for camera motion by the motion vector search.
9072
9073 If any or all of @var{x}, @var{y}, @var{w} and @var{h} are set to -1
9074 then the full frame is used. This allows later options to be set
9075 without specifying the bounding box for the motion vector search.
9076
9077 Default - search the whole frame.
9078
9079 @item rx
9080 @item ry
9081 Specify the maximum extent of movement in x and y directions in the
9082 range 0-64 pixels. Default 16.
9083
9084 @item edge
9085 Specify how to generate pixels to fill blanks at the edge of the
9086 frame. Available values are:
9087 @table @samp
9088 @item blank, 0
9089 Fill zeroes at blank locations
9090 @item original, 1
9091 Original image at blank locations
9092 @item clamp, 2
9093 Extruded edge value at blank locations
9094 @item mirror, 3
9095 Mirrored edge at blank locations
9096 @end table
9097 Default value is @samp{mirror}.
9098
9099 @item blocksize
9100 Specify the blocksize to use for motion search. Range 4-128 pixels,
9101 default 8.
9102
9103 @item contrast
9104 Specify the contrast threshold for blocks. Only blocks with more than
9105 the specified contrast (difference between darkest and lightest
9106 pixels) will be considered. Range 1-255, default 125.
9107
9108 @item search
9109 Specify the search strategy. Available values are:
9110 @table @samp
9111 @item exhaustive, 0
9112 Set exhaustive search
9113 @item less, 1
9114 Set less exhaustive search.
9115 @end table
9116 Default value is @samp{exhaustive}.
9117
9118 @item filename
9119 If set then a detailed log of the motion search is written to the
9120 specified file.
9121
9122 @end table
9123
9124 @section despill
9125
9126 Remove unwanted contamination of foreground colors, caused by reflected color of
9127 greenscreen or bluescreen.
9128
9129 This filter accepts the following options:
9130
9131 @table @option
9132 @item type
9133 Set what type of despill to use.
9134
9135 @item mix
9136 Set how spillmap will be generated.
9137
9138 @item expand
9139 Set how much to get rid of still remaining spill.
9140
9141 @item red
9142 Controls amount of red in spill area.
9143
9144 @item green
9145 Controls amount of green in spill area.
9146 Should be -1 for greenscreen.
9147
9148 @item blue
9149 Controls amount of blue in spill area.
9150 Should be -1 for bluescreen.
9151
9152 @item brightness
9153 Controls brightness of spill area, preserving colors.
9154
9155 @item alpha
9156 Modify alpha from generated spillmap.
9157 @end table
9158
9159 @section detelecine
9160
9161 Apply an exact inverse of the telecine operation. It requires a predefined
9162 pattern specified using the pattern option which must be the same as that passed
9163 to the telecine filter.
9164
9165 This filter accepts the following options:
9166
9167 @table @option
9168 @item first_field
9169 @table @samp
9170 @item top, t
9171 top field first
9172 @item bottom, b
9173 bottom field first
9174 The default value is @code{top}.
9175 @end table
9176
9177 @item pattern
9178 A string of numbers representing the pulldown pattern you wish to apply.
9179 The default value is @code{23}.
9180
9181 @item start_frame
9182 A number representing position of the first frame with respect to the telecine
9183 pattern. This is to be used if the stream is cut. The default value is @code{0}.
9184 @end table
9185
9186 @section dilation
9187
9188 Apply dilation effect to the video.
9189
9190 This filter replaces the pixel by the local(3x3) maximum.
9191
9192 It accepts the following options:
9193
9194 @table @option
9195 @item threshold0
9196 @item threshold1
9197 @item threshold2
9198 @item threshold3
9199 Limit the maximum change for each plane, default is 65535.
9200 If 0, plane will remain unchanged.
9201
9202 @item coordinates
9203 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
9204 pixels are used.
9205
9206 Flags to local 3x3 coordinates maps like this:
9207
9208     1 2 3
9209     4   5
9210     6 7 8
9211 @end table
9212
9213 @subsection Commands
9214
9215 This filter supports the all above options as @ref{commands}.
9216
9217 @section displace
9218
9219 Displace pixels as indicated by second and third input stream.
9220
9221 It takes three input streams and outputs one stream, the first input is the
9222 source, and second and third input are displacement maps.
9223
9224 The second input specifies how much to displace pixels along the
9225 x-axis, while the third input specifies how much to displace pixels
9226 along the y-axis.
9227 If one of displacement map streams terminates, last frame from that
9228 displacement map will be used.
9229
9230 Note that once generated, displacements maps can be reused over and over again.
9231
9232 A description of the accepted options follows.
9233
9234 @table @option
9235 @item edge
9236 Set displace behavior for pixels that are out of range.
9237
9238 Available values are:
9239 @table @samp
9240 @item blank
9241 Missing pixels are replaced by black pixels.
9242
9243 @item smear
9244 Adjacent pixels will spread out to replace missing pixels.
9245
9246 @item wrap
9247 Out of range pixels are wrapped so they point to pixels of other side.
9248
9249 @item mirror
9250 Out of range pixels will be replaced with mirrored pixels.
9251 @end table
9252 Default is @samp{smear}.
9253
9254 @end table
9255
9256 @subsection Examples
9257
9258 @itemize
9259 @item
9260 Add ripple effect to rgb input of video size hd720:
9261 @example
9262 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
9263 @end example
9264
9265 @item
9266 Add wave effect to rgb input of video size hd720:
9267 @example
9268 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
9269 @end example
9270 @end itemize
9271
9272 @anchor{dnn_processing}
9273 @section dnn_processing
9274
9275 Do image processing with deep neural networks. It works together with another filter
9276 which converts the pixel format of the Frame to what the dnn network requires.
9277
9278 The filter accepts the following options:
9279
9280 @table @option
9281 @item dnn_backend
9282 Specify which DNN backend to use for model loading and execution. This option accepts
9283 the following values:
9284
9285 @table @samp
9286 @item native
9287 Native implementation of DNN loading and execution.
9288
9289 @item tensorflow
9290 TensorFlow backend. To enable this backend you
9291 need to install the TensorFlow for C library (see
9292 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
9293 @code{--enable-libtensorflow}
9294
9295 @item openvino
9296 OpenVINO backend. To enable this backend you
9297 need to build and install the OpenVINO for C library (see
9298 @url{https://github.com/openvinotoolkit/openvino/blob/master/build-instruction.md}) and configure FFmpeg with
9299 @code{--enable-libopenvino} (--extra-cflags=-I... --extra-ldflags=-L... might
9300 be needed if the header files and libraries are not installed into system path)
9301
9302 @end table
9303
9304 Default value is @samp{native}.
9305
9306 @item model
9307 Set path to model file specifying network architecture and its parameters.
9308 Note that different backends use different file formats. TensorFlow, OpenVINO and native
9309 backend can load files for only its format.
9310
9311 Native model file (.model) can be generated from TensorFlow model file (.pb) by using tools/python/convert.py
9312
9313 @item input
9314 Set the input name of the dnn network.
9315
9316 @item output
9317 Set the output name of the dnn network.
9318
9319 @end table
9320
9321 @subsection Examples
9322
9323 @itemize
9324 @item
9325 Remove rain in rgb24 frame with can.pb (see @ref{derain} filter):
9326 @example
9327 ./ffmpeg -i rain.jpg -vf format=rgb24,dnn_processing=dnn_backend=tensorflow:model=can.pb:input=x:output=y derain.jpg
9328 @end example
9329
9330 @item
9331 Halve the pixel value of the frame with format gray32f:
9332 @example
9333 ffmpeg -i input.jpg -vf format=grayf32,dnn_processing=model=halve_gray_float.model:input=dnn_in:output=dnn_out:dnn_backend=native -y out.native.png
9334 @end example
9335
9336 @item
9337 Handle the Y channel with srcnn.pb (see @ref{sr} filter) for frame with yuv420p (planar YUV formats supported):
9338 @example
9339 ./ffmpeg -i 480p.jpg -vf format=yuv420p,scale=w=iw*2:h=ih*2,dnn_processing=dnn_backend=tensorflow:model=srcnn.pb:input=x:output=y -y srcnn.jpg
9340 @end example
9341
9342 @item
9343 Handle the Y channel with espcn.pb (see @ref{sr} filter), which changes frame size, for format yuv420p (planar YUV formats supported):
9344 @example
9345 ./ffmpeg -i 480p.jpg -vf format=yuv420p,dnn_processing=dnn_backend=tensorflow:model=espcn.pb:input=x:output=y -y tmp.espcn.jpg
9346 @end example
9347
9348 @end itemize
9349
9350 @section drawbox
9351
9352 Draw a colored box on the input image.
9353
9354 It accepts the following parameters:
9355
9356 @table @option
9357 @item x
9358 @item y
9359 The expressions which specify the top left corner coordinates of the box. It defaults to 0.
9360
9361 @item width, w
9362 @item height, h
9363 The expressions which specify the width and height of the box; if 0 they are interpreted as
9364 the input width and height. It defaults to 0.
9365
9366 @item color, c
9367 Specify the color of the box to write. For the general syntax of this option,
9368 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
9369 value @code{invert} is used, the box edge color is the same as the
9370 video with inverted luma.
9371
9372 @item thickness, t
9373 The expression which sets the thickness of the box edge.
9374 A value of @code{fill} will create a filled box. Default value is @code{3}.
9375
9376 See below for the list of accepted constants.
9377
9378 @item replace
9379 Applicable if the input has alpha. With value @code{1}, the pixels of the painted box
9380 will overwrite the video's color and alpha pixels.
9381 Default is @code{0}, which composites the box onto the input, leaving the video's alpha intact.
9382 @end table
9383
9384 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
9385 following constants:
9386
9387 @table @option
9388 @item dar
9389 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
9390
9391 @item hsub
9392 @item vsub
9393 horizontal and vertical chroma subsample values. For example for the
9394 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
9395
9396 @item in_h, ih
9397 @item in_w, iw
9398 The input width and height.
9399
9400 @item sar
9401 The input sample aspect ratio.
9402
9403 @item x
9404 @item y
9405 The x and y offset coordinates where the box is drawn.
9406
9407 @item w
9408 @item h
9409 The width and height of the drawn box.
9410
9411 @item t
9412 The thickness of the drawn box.
9413
9414 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
9415 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
9416
9417 @end table
9418
9419 @subsection Examples
9420
9421 @itemize
9422 @item
9423 Draw a black box around the edge of the input image:
9424 @example
9425 drawbox
9426 @end example
9427
9428 @item
9429 Draw a box with color red and an opacity of 50%:
9430 @example
9431 drawbox=10:20:200:60:red@@0.5
9432 @end example
9433
9434 The previous example can be specified as:
9435 @example
9436 drawbox=x=10:y=20:w=200:h=60:color=red@@0.5
9437 @end example
9438
9439 @item
9440 Fill the box with pink color:
9441 @example
9442 drawbox=x=10:y=10:w=100:h=100:color=pink@@0.5:t=fill
9443 @end example
9444
9445 @item
9446 Draw a 2-pixel red 2.40:1 mask:
9447 @example
9448 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
9449 @end example
9450 @end itemize
9451
9452 @subsection Commands
9453 This filter supports same commands as options.
9454 The command accepts the same syntax of the corresponding option.
9455
9456 If the specified expression is not valid, it is kept at its current
9457 value.
9458
9459 @anchor{drawgraph}
9460 @section drawgraph
9461 Draw a graph using input video metadata.
9462
9463 It accepts the following parameters:
9464
9465 @table @option
9466 @item m1
9467 Set 1st frame metadata key from which metadata values will be used to draw a graph.
9468
9469 @item fg1
9470 Set 1st foreground color expression.
9471
9472 @item m2
9473 Set 2nd frame metadata key from which metadata values will be used to draw a graph.
9474
9475 @item fg2
9476 Set 2nd foreground color expression.
9477
9478 @item m3
9479 Set 3rd frame metadata key from which metadata values will be used to draw a graph.
9480
9481 @item fg3
9482 Set 3rd foreground color expression.
9483
9484 @item m4
9485 Set 4th frame metadata key from which metadata values will be used to draw a graph.
9486
9487 @item fg4
9488 Set 4th foreground color expression.
9489
9490 @item min
9491 Set minimal value of metadata value.
9492
9493 @item max
9494 Set maximal value of metadata value.
9495
9496 @item bg
9497 Set graph background color. Default is white.
9498
9499 @item mode
9500 Set graph mode.
9501
9502 Available values for mode is:
9503 @table @samp
9504 @item bar
9505 @item dot
9506 @item line
9507 @end table
9508
9509 Default is @code{line}.
9510
9511 @item slide
9512 Set slide mode.
9513
9514 Available values for slide is:
9515 @table @samp
9516 @item frame
9517 Draw new frame when right border is reached.
9518
9519 @item replace
9520 Replace old columns with new ones.
9521
9522 @item scroll
9523 Scroll from right to left.
9524
9525 @item rscroll
9526 Scroll from left to right.
9527
9528 @item picture
9529 Draw single picture.
9530 @end table
9531
9532 Default is @code{frame}.
9533
9534 @item size
9535 Set size of graph video. For the syntax of this option, check the
9536 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
9537 The default value is @code{900x256}.
9538
9539 @item rate, r
9540 Set the output frame rate. Default value is @code{25}.
9541
9542 The foreground color expressions can use the following variables:
9543 @table @option
9544 @item MIN
9545 Minimal value of metadata value.
9546
9547 @item MAX
9548 Maximal value of metadata value.
9549
9550 @item VAL
9551 Current metadata key value.
9552 @end table
9553
9554 The color is defined as 0xAABBGGRR.
9555 @end table
9556
9557 Example using metadata from @ref{signalstats} filter:
9558 @example
9559 signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255
9560 @end example
9561
9562 Example using metadata from @ref{ebur128} filter:
9563 @example
9564 ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-120:max=5
9565 @end example
9566
9567 @section drawgrid
9568
9569 Draw a grid on the input image.
9570
9571 It accepts the following parameters:
9572
9573 @table @option
9574 @item x
9575 @item y
9576 The expressions which specify the coordinates of some point of grid intersection (meant to configure offset). Both default to 0.
9577
9578 @item width, w
9579 @item height, h
9580 The expressions which specify the width and height of the grid cell, if 0 they are interpreted as the
9581 input width and height, respectively, minus @code{thickness}, so image gets
9582 framed. Default to 0.
9583
9584 @item color, c
9585 Specify the color of the grid. For the general syntax of this option,
9586 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
9587 value @code{invert} is used, the grid color is the same as the
9588 video with inverted luma.
9589
9590 @item thickness, t
9591 The expression which sets the thickness of the grid line. Default value is @code{1}.
9592
9593 See below for the list of accepted constants.
9594
9595 @item replace
9596 Applicable if the input has alpha. With @code{1} the pixels of the painted grid
9597 will overwrite the video's color and alpha pixels.
9598 Default is @code{0}, which composites the grid onto the input, leaving the video's alpha intact.
9599 @end table
9600
9601 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
9602 following constants:
9603
9604 @table @option
9605 @item dar
9606 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
9607
9608 @item hsub
9609 @item vsub
9610 horizontal and vertical chroma subsample values. For example for the
9611 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
9612
9613 @item in_h, ih
9614 @item in_w, iw
9615 The input grid cell width and height.
9616
9617 @item sar
9618 The input sample aspect ratio.
9619
9620 @item x
9621 @item y
9622 The x and y coordinates of some point of grid intersection (meant to configure offset).
9623
9624 @item w
9625 @item h
9626 The width and height of the drawn cell.
9627
9628 @item t
9629 The thickness of the drawn cell.
9630
9631 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
9632 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
9633
9634 @end table
9635
9636 @subsection Examples
9637
9638 @itemize
9639 @item
9640 Draw a grid with cell 100x100 pixels, thickness 2 pixels, with color red and an opacity of 50%:
9641 @example
9642 drawgrid=width=100:height=100:thickness=2:color=red@@0.5
9643 @end example
9644
9645 @item
9646 Draw a white 3x3 grid with an opacity of 50%:
9647 @example
9648 drawgrid=w=iw/3:h=ih/3:t=2:c=white@@0.5
9649 @end example
9650 @end itemize
9651
9652 @subsection Commands
9653 This filter supports same commands as options.
9654 The command accepts the same syntax of the corresponding option.
9655
9656 If the specified expression is not valid, it is kept at its current
9657 value.
9658
9659 @anchor{drawtext}
9660 @section drawtext
9661
9662 Draw a text string or text from a specified file on top of a video, using the
9663 libfreetype library.
9664
9665 To enable compilation of this filter, you need to configure FFmpeg with
9666 @code{--enable-libfreetype}.
9667 To enable default font fallback and the @var{font} option you need to
9668 configure FFmpeg with @code{--enable-libfontconfig}.
9669 To enable the @var{text_shaping} option, you need to configure FFmpeg with
9670 @code{--enable-libfribidi}.
9671
9672 @subsection Syntax
9673
9674 It accepts the following parameters:
9675
9676 @table @option
9677
9678 @item box
9679 Used to draw a box around text using the background color.
9680 The value must be either 1 (enable) or 0 (disable).
9681 The default value of @var{box} is 0.
9682
9683 @item boxborderw
9684 Set the width of the border to be drawn around the box using @var{boxcolor}.
9685 The default value of @var{boxborderw} is 0.
9686
9687 @item boxcolor
9688 The color to be used for drawing box around text. For the syntax of this
9689 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
9690
9691 The default value of @var{boxcolor} is "white".
9692
9693 @item line_spacing
9694 Set the line spacing in pixels of the border to be drawn around the box using @var{box}.
9695 The default value of @var{line_spacing} is 0.
9696
9697 @item borderw
9698 Set the width of the border to be drawn around the text using @var{bordercolor}.
9699 The default value of @var{borderw} is 0.
9700
9701 @item bordercolor
9702 Set the color to be used for drawing border around text. For the syntax of this
9703 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
9704
9705 The default value of @var{bordercolor} is "black".
9706
9707 @item expansion
9708 Select how the @var{text} is expanded. Can be either @code{none},
9709 @code{strftime} (deprecated) or
9710 @code{normal} (default). See the @ref{drawtext_expansion, Text expansion} section
9711 below for details.
9712
9713 @item basetime
9714 Set a start time for the count. Value is in microseconds. Only applied
9715 in the deprecated strftime expansion mode. To emulate in normal expansion
9716 mode use the @code{pts} function, supplying the start time (in seconds)
9717 as the second argument.
9718
9719 @item fix_bounds
9720 If true, check and fix text coords to avoid clipping.
9721
9722 @item fontcolor
9723 The color to be used for drawing fonts. For the syntax of this option, check
9724 the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
9725
9726 The default value of @var{fontcolor} is "black".
9727
9728 @item fontcolor_expr
9729 String which is expanded the same way as @var{text} to obtain dynamic
9730 @var{fontcolor} value. By default this option has empty value and is not
9731 processed. When this option is set, it overrides @var{fontcolor} option.
9732
9733 @item font
9734 The font family to be used for drawing text. By default Sans.
9735
9736 @item fontfile
9737 The font file to be used for drawing text. The path must be included.
9738 This parameter is mandatory if the fontconfig support is disabled.
9739
9740 @item alpha
9741 Draw the text applying alpha blending. The value can
9742 be a number between 0.0 and 1.0.
9743 The expression accepts the same variables @var{x, y} as well.
9744 The default value is 1.
9745 Please see @var{fontcolor_expr}.
9746
9747 @item fontsize
9748 The font size to be used for drawing text.
9749 The default value of @var{fontsize} is 16.
9750
9751 @item text_shaping
9752 If set to 1, attempt to shape the text (for example, reverse the order of
9753 right-to-left text and join Arabic characters) before drawing it.
9754 Otherwise, just draw the text exactly as given.
9755 By default 1 (if supported).
9756
9757 @item ft_load_flags
9758 The flags to be used for loading the fonts.
9759
9760 The flags map the corresponding flags supported by libfreetype, and are
9761 a combination of the following values:
9762 @table @var
9763 @item default
9764 @item no_scale
9765 @item no_hinting
9766 @item render
9767 @item no_bitmap
9768 @item vertical_layout
9769 @item force_autohint
9770 @item crop_bitmap
9771 @item pedantic
9772 @item ignore_global_advance_width
9773 @item no_recurse
9774 @item ignore_transform
9775 @item monochrome
9776 @item linear_design
9777 @item no_autohint
9778 @end table
9779
9780 Default value is "default".
9781
9782 For more information consult the documentation for the FT_LOAD_*
9783 libfreetype flags.
9784
9785 @item shadowcolor
9786 The color to be used for drawing a shadow behind the drawn text. For the
9787 syntax of this option, check the @ref{color syntax,,"Color" section in the
9788 ffmpeg-utils manual,ffmpeg-utils}.
9789
9790 The default value of @var{shadowcolor} is "black".
9791
9792 @item shadowx
9793 @item shadowy
9794 The x and y offsets for the text shadow position with respect to the
9795 position of the text. They can be either positive or negative
9796 values. The default value for both is "0".
9797
9798 @item start_number
9799 The starting frame number for the n/frame_num variable. The default value
9800 is "0".
9801
9802 @item tabsize
9803 The size in number of spaces to use for rendering the tab.
9804 Default value is 4.
9805
9806 @item timecode
9807 Set the initial timecode representation in "hh:mm:ss[:;.]ff"
9808 format. It can be used with or without text parameter. @var{timecode_rate}
9809 option must be specified.
9810
9811 @item timecode_rate, rate, r
9812 Set the timecode frame rate (timecode only). Value will be rounded to nearest
9813 integer. Minimum value is "1".
9814 Drop-frame timecode is supported for frame rates 30 & 60.
9815
9816 @item tc24hmax
9817 If set to 1, the output of the timecode option will wrap around at 24 hours.
9818 Default is 0 (disabled).
9819
9820 @item text
9821 The text string to be drawn. The text must be a sequence of UTF-8
9822 encoded characters.
9823 This parameter is mandatory if no file is specified with the parameter
9824 @var{textfile}.
9825
9826 @item textfile
9827 A text file containing text to be drawn. The text must be a sequence
9828 of UTF-8 encoded characters.
9829
9830 This parameter is mandatory if no text string is specified with the
9831 parameter @var{text}.
9832
9833 If both @var{text} and @var{textfile} are specified, an error is thrown.
9834
9835 @item reload
9836 If set to 1, the @var{textfile} will be reloaded before each frame.
9837 Be sure to update it atomically, or it may be read partially, or even fail.
9838
9839 @item x
9840 @item y
9841 The expressions which specify the offsets where text will be drawn
9842 within the video frame. They are relative to the top/left border of the
9843 output image.
9844
9845 The default value of @var{x} and @var{y} is "0".
9846
9847 See below for the list of accepted constants and functions.
9848 @end table
9849
9850 The parameters for @var{x} and @var{y} are expressions containing the
9851 following constants and functions:
9852
9853 @table @option
9854 @item dar
9855 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
9856
9857 @item hsub
9858 @item vsub
9859 horizontal and vertical chroma subsample values. For example for the
9860 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
9861
9862 @item line_h, lh
9863 the height of each text line
9864
9865 @item main_h, h, H
9866 the input height
9867
9868 @item main_w, w, W
9869 the input width
9870
9871 @item max_glyph_a, ascent
9872 the maximum distance from the baseline to the highest/upper grid
9873 coordinate used to place a glyph outline point, for all the rendered
9874 glyphs.
9875 It is a positive value, due to the grid's orientation with the Y axis
9876 upwards.
9877
9878 @item max_glyph_d, descent
9879 the maximum distance from the baseline to the lowest grid coordinate
9880 used to place a glyph outline point, for all the rendered glyphs.
9881 This is a negative value, due to the grid's orientation, with the Y axis
9882 upwards.
9883
9884 @item max_glyph_h
9885 maximum glyph height, that is the maximum height for all the glyphs
9886 contained in the rendered text, it is equivalent to @var{ascent} -
9887 @var{descent}.
9888
9889 @item max_glyph_w
9890 maximum glyph width, that is the maximum width for all the glyphs
9891 contained in the rendered text
9892
9893 @item n
9894 the number of input frame, starting from 0
9895
9896 @item rand(min, max)
9897 return a random number included between @var{min} and @var{max}
9898
9899 @item sar
9900 The input sample aspect ratio.
9901
9902 @item t
9903 timestamp expressed in seconds, NAN if the input timestamp is unknown
9904
9905 @item text_h, th
9906 the height of the rendered text
9907
9908 @item text_w, tw
9909 the width of the rendered text
9910
9911 @item x
9912 @item y
9913 the x and y offset coordinates where the text is drawn.
9914
9915 These parameters allow the @var{x} and @var{y} expressions to refer
9916 to each other, so you can for example specify @code{y=x/dar}.
9917
9918 @item pict_type
9919 A one character description of the current frame's picture type.
9920
9921 @item pkt_pos
9922 The current packet's position in the input file or stream
9923 (in bytes, from the start of the input). A value of -1 indicates
9924 this info is not available.
9925
9926 @item pkt_duration
9927 The current packet's duration, in seconds.
9928
9929 @item pkt_size
9930 The current packet's size (in bytes).
9931 @end table
9932
9933 @anchor{drawtext_expansion}
9934 @subsection Text expansion
9935
9936 If @option{expansion} is set to @code{strftime},
9937 the filter recognizes strftime() sequences in the provided text and
9938 expands them accordingly. Check the documentation of strftime(). This
9939 feature is deprecated.
9940
9941 If @option{expansion} is set to @code{none}, the text is printed verbatim.
9942
9943 If @option{expansion} is set to @code{normal} (which is the default),
9944 the following expansion mechanism is used.
9945
9946 The backslash character @samp{\}, followed by any character, always expands to
9947 the second character.
9948
9949 Sequences of the form @code{%@{...@}} are expanded. The text between the
9950 braces is a function name, possibly followed by arguments separated by ':'.
9951 If the arguments contain special characters or delimiters (':' or '@}'),
9952 they should be escaped.
9953
9954 Note that they probably must also be escaped as the value for the
9955 @option{text} option in the filter argument string and as the filter
9956 argument in the filtergraph description, and possibly also for the shell,
9957 that makes up to four levels of escaping; using a text file avoids these
9958 problems.
9959
9960 The following functions are available:
9961
9962 @table @command
9963
9964 @item expr, e
9965 The expression evaluation result.
9966
9967 It must take one argument specifying the expression to be evaluated,
9968 which accepts the same constants and functions as the @var{x} and
9969 @var{y} values. Note that not all constants should be used, for
9970 example the text size is not known when evaluating the expression, so
9971 the constants @var{text_w} and @var{text_h} will have an undefined
9972 value.
9973
9974 @item expr_int_format, eif
9975 Evaluate the expression's value and output as formatted integer.
9976
9977 The first argument is the expression to be evaluated, just as for the @var{expr} function.
9978 The second argument specifies the output format. Allowed values are @samp{x},
9979 @samp{X}, @samp{d} and @samp{u}. They are treated exactly as in the
9980 @code{printf} function.
9981 The third parameter is optional and sets the number of positions taken by the output.
9982 It can be used to add padding with zeros from the left.
9983
9984 @item gmtime
9985 The time at which the filter is running, expressed in UTC.
9986 It can accept an argument: a strftime() format string.
9987
9988 @item localtime
9989 The time at which the filter is running, expressed in the local time zone.
9990 It can accept an argument: a strftime() format string.
9991
9992 @item metadata
9993 Frame metadata. Takes one or two arguments.
9994
9995 The first argument is mandatory and specifies the metadata key.
9996
9997 The second argument is optional and specifies a default value, used when the
9998 metadata key is not found or empty.
9999
10000 Available metadata can be identified by inspecting entries
10001 starting with TAG included within each frame section
10002 printed by running @code{ffprobe -show_frames}.
10003
10004 String metadata generated in filters leading to
10005 the drawtext filter are also available.
10006
10007 @item n, frame_num
10008 The frame number, starting from 0.
10009
10010 @item pict_type
10011 A one character description of the current picture type.
10012
10013 @item pts
10014 The timestamp of the current frame.
10015 It can take up to three arguments.
10016
10017 The first argument is the format of the timestamp; it defaults to @code{flt}
10018 for seconds as a decimal number with microsecond accuracy; @code{hms} stands
10019 for a formatted @var{[-]HH:MM:SS.mmm} timestamp with millisecond accuracy.
10020 @code{gmtime} stands for the timestamp of the frame formatted as UTC time;
10021 @code{localtime} stands for the timestamp of the frame formatted as
10022 local time zone time.
10023
10024 The second argument is an offset added to the timestamp.
10025
10026 If the format is set to @code{hms}, a third argument @code{24HH} may be
10027 supplied to present the hour part of the formatted timestamp in 24h format
10028 (00-23).
10029
10030 If the format is set to @code{localtime} or @code{gmtime},
10031 a third argument may be supplied: a strftime() format string.
10032 By default, @var{YYYY-MM-DD HH:MM:SS} format will be used.
10033 @end table
10034
10035 @subsection Commands
10036
10037 This filter supports altering parameters via commands:
10038 @table @option
10039 @item reinit
10040 Alter existing filter parameters.
10041
10042 Syntax for the argument is the same as for filter invocation, e.g.
10043
10044 @example
10045 fontsize=56:fontcolor=green:text='Hello World'
10046 @end example
10047
10048 Full filter invocation with sendcmd would look like this:
10049
10050 @example
10051 sendcmd=c='56.0 drawtext reinit fontsize=56\:fontcolor=green\:text=Hello\\ World'
10052 @end example
10053 @end table
10054
10055 If the entire argument can't be parsed or applied as valid values then the filter will
10056 continue with its existing parameters.
10057
10058 @subsection Examples
10059
10060 @itemize
10061 @item
10062 Draw "Test Text" with font FreeSerif, using the default values for the
10063 optional parameters.
10064
10065 @example
10066 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
10067 @end example
10068
10069 @item
10070 Draw 'Test Text' with font FreeSerif of size 24 at position x=100
10071 and y=50 (counting from the top-left corner of the screen), text is
10072 yellow with a red box around it. Both the text and the box have an
10073 opacity of 20%.
10074
10075 @example
10076 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
10077           x=100: y=50: fontsize=24: fontcolor=yellow@@0.2: box=1: boxcolor=red@@0.2"
10078 @end example
10079
10080 Note that the double quotes are not necessary if spaces are not used
10081 within the parameter list.
10082
10083 @item
10084 Show the text at the center of the video frame:
10085 @example
10086 drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h)/2"
10087 @end example
10088
10089 @item
10090 Show the text at a random position, switching to a new position every 30 seconds:
10091 @example
10092 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)"
10093 @end example
10094
10095 @item
10096 Show a text line sliding from right to left in the last row of the video
10097 frame. The file @file{LONG_LINE} is assumed to contain a single line
10098 with no newlines.
10099 @example
10100 drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
10101 @end example
10102
10103 @item
10104 Show the content of file @file{CREDITS} off the bottom of the frame and scroll up.
10105 @example
10106 drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
10107 @end example
10108
10109 @item
10110 Draw a single green letter "g", at the center of the input video.
10111 The glyph baseline is placed at half screen height.
10112 @example
10113 drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
10114 @end example
10115
10116 @item
10117 Show text for 1 second every 3 seconds:
10118 @example
10119 drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'"
10120 @end example
10121
10122 @item
10123 Use fontconfig to set the font. Note that the colons need to be escaped.
10124 @example
10125 drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
10126 @end example
10127
10128 @item
10129 Print the date of a real-time encoding (see strftime(3)):
10130 @example
10131 drawtext='fontfile=FreeSans.ttf:text=%@{localtime\:%a %b %d %Y@}'
10132 @end example
10133
10134 @item
10135 Show text fading in and out (appearing/disappearing):
10136 @example
10137 #!/bin/sh
10138 DS=1.0 # display start
10139 DE=10.0 # display end
10140 FID=1.5 # fade in duration
10141 FOD=5 # fade out duration
10142 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 @}"
10143 @end example
10144
10145 @item
10146 Horizontally align multiple separate texts. Note that @option{max_glyph_a}
10147 and the @option{fontsize} value are included in the @option{y} offset.
10148 @example
10149 drawtext=fontfile=FreeSans.ttf:text=DOG:fontsize=24:x=10:y=20+24-max_glyph_a,
10150 drawtext=fontfile=FreeSans.ttf:text=cow:fontsize=24:x=80:y=20+24-max_glyph_a
10151 @end example
10152
10153 @item
10154 Plot special @var{lavf.image2dec.source_basename} metadata onto each frame if
10155 such metadata exists. Otherwise, plot the string "NA". Note that image2 demuxer
10156 must have option @option{-export_path_metadata 1} for the special metadata fields
10157 to be available for filters.
10158 @example
10159 drawtext="fontsize=20:fontcolor=white:fontfile=FreeSans.ttf:text='%@{metadata\:lavf.image2dec.source_basename\:NA@}':x=10:y=10"
10160 @end example
10161
10162 @end itemize
10163
10164 For more information about libfreetype, check:
10165 @url{http://www.freetype.org/}.
10166
10167 For more information about fontconfig, check:
10168 @url{http://freedesktop.org/software/fontconfig/fontconfig-user.html}.
10169
10170 For more information about libfribidi, check:
10171 @url{http://fribidi.org/}.
10172
10173 @section edgedetect
10174
10175 Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
10176
10177 The filter accepts the following options:
10178
10179 @table @option
10180 @item low
10181 @item high
10182 Set low and high threshold values used by the Canny thresholding
10183 algorithm.
10184
10185 The high threshold selects the "strong" edge pixels, which are then
10186 connected through 8-connectivity with the "weak" edge pixels selected
10187 by the low threshold.
10188
10189 @var{low} and @var{high} threshold values must be chosen in the range
10190 [0,1], and @var{low} should be lesser or equal to @var{high}.
10191
10192 Default value for @var{low} is @code{20/255}, and default value for @var{high}
10193 is @code{50/255}.
10194
10195 @item mode
10196 Define the drawing mode.
10197
10198 @table @samp
10199 @item wires
10200 Draw white/gray wires on black background.
10201
10202 @item colormix
10203 Mix the colors to create a paint/cartoon effect.
10204
10205 @item canny
10206 Apply Canny edge detector on all selected planes.
10207 @end table
10208 Default value is @var{wires}.
10209
10210 @item planes
10211 Select planes for filtering. By default all available planes are filtered.
10212 @end table
10213
10214 @subsection Examples
10215
10216 @itemize
10217 @item
10218 Standard edge detection with custom values for the hysteresis thresholding:
10219 @example
10220 edgedetect=low=0.1:high=0.4
10221 @end example
10222
10223 @item
10224 Painting effect without thresholding:
10225 @example
10226 edgedetect=mode=colormix:high=0
10227 @end example
10228 @end itemize
10229
10230 @section elbg
10231
10232 Apply a posterize effect using the ELBG (Enhanced LBG) algorithm.
10233
10234 For each input image, the filter will compute the optimal mapping from
10235 the input to the output given the codebook length, that is the number
10236 of distinct output colors.
10237
10238 This filter accepts the following options.
10239
10240 @table @option
10241 @item codebook_length, l
10242 Set codebook length. The value must be a positive integer, and
10243 represents the number of distinct output colors. Default value is 256.
10244
10245 @item nb_steps, n
10246 Set the maximum number of iterations to apply for computing the optimal
10247 mapping. The higher the value the better the result and the higher the
10248 computation time. Default value is 1.
10249
10250 @item seed, s
10251 Set a random seed, must be an integer included between 0 and
10252 UINT32_MAX. If not specified, or if explicitly set to -1, the filter
10253 will try to use a good random seed on a best effort basis.
10254
10255 @item pal8
10256 Set pal8 output pixel format. This option does not work with codebook
10257 length greater than 256.
10258 @end table
10259
10260 @section entropy
10261
10262 Measure graylevel entropy in histogram of color channels of video frames.
10263
10264 It accepts the following parameters:
10265
10266 @table @option
10267 @item mode
10268 Can be either @var{normal} or @var{diff}. Default is @var{normal}.
10269
10270 @var{diff} mode measures entropy of histogram delta values, absolute differences
10271 between neighbour histogram values.
10272 @end table
10273
10274 @section eq
10275 Set brightness, contrast, saturation and approximate gamma adjustment.
10276
10277 The filter accepts the following options:
10278
10279 @table @option
10280 @item contrast
10281 Set the contrast expression. The value must be a float value in range
10282 @code{-1000.0} to @code{1000.0}. The default value is "1".
10283
10284 @item brightness
10285 Set the brightness expression. The value must be a float value in
10286 range @code{-1.0} to @code{1.0}. The default value is "0".
10287
10288 @item saturation
10289 Set the saturation expression. The value must be a float in
10290 range @code{0.0} to @code{3.0}. The default value is "1".
10291
10292 @item gamma
10293 Set the gamma expression. The value must be a float in range
10294 @code{0.1} to @code{10.0}.  The default value is "1".
10295
10296 @item gamma_r
10297 Set the gamma expression for red. The value must be a float in
10298 range @code{0.1} to @code{10.0}. The default value is "1".
10299
10300 @item gamma_g
10301 Set the gamma expression for green. The value must be a float in range
10302 @code{0.1} to @code{10.0}. The default value is "1".
10303
10304 @item gamma_b
10305 Set the gamma expression for blue. The value must be a float in range
10306 @code{0.1} to @code{10.0}. The default value is "1".
10307
10308 @item gamma_weight
10309 Set the gamma weight expression. It can be used to reduce the effect
10310 of a high gamma value on bright image areas, e.g. keep them from
10311 getting overamplified and just plain white. The value must be a float
10312 in range @code{0.0} to @code{1.0}. A value of @code{0.0} turns the
10313 gamma correction all the way down while @code{1.0} leaves it at its
10314 full strength. Default is "1".
10315
10316 @item eval
10317 Set when the expressions for brightness, contrast, saturation and
10318 gamma expressions are evaluated.
10319
10320 It accepts the following values:
10321 @table @samp
10322 @item init
10323 only evaluate expressions once during the filter initialization or
10324 when a command is processed
10325
10326 @item frame
10327 evaluate expressions for each incoming frame
10328 @end table
10329
10330 Default value is @samp{init}.
10331 @end table
10332
10333 The expressions accept the following parameters:
10334 @table @option
10335 @item n
10336 frame count of the input frame starting from 0
10337
10338 @item pos
10339 byte position of the corresponding packet in the input file, NAN if
10340 unspecified
10341
10342 @item r
10343 frame rate of the input video, NAN if the input frame rate is unknown
10344
10345 @item t
10346 timestamp expressed in seconds, NAN if the input timestamp is unknown
10347 @end table
10348
10349 @subsection Commands
10350 The filter supports the following commands:
10351
10352 @table @option
10353 @item contrast
10354 Set the contrast expression.
10355
10356 @item brightness
10357 Set the brightness expression.
10358
10359 @item saturation
10360 Set the saturation expression.
10361
10362 @item gamma
10363 Set the gamma expression.
10364
10365 @item gamma_r
10366 Set the gamma_r expression.
10367
10368 @item gamma_g
10369 Set gamma_g expression.
10370
10371 @item gamma_b
10372 Set gamma_b expression.
10373
10374 @item gamma_weight
10375 Set gamma_weight expression.
10376
10377 The command accepts the same syntax of the corresponding option.
10378
10379 If the specified expression is not valid, it is kept at its current
10380 value.
10381
10382 @end table
10383
10384 @section erosion
10385
10386 Apply erosion effect to the video.
10387
10388 This filter replaces the pixel by the local(3x3) minimum.
10389
10390 It accepts the following options:
10391
10392 @table @option
10393 @item threshold0
10394 @item threshold1
10395 @item threshold2
10396 @item threshold3
10397 Limit the maximum change for each plane, default is 65535.
10398 If 0, plane will remain unchanged.
10399
10400 @item coordinates
10401 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
10402 pixels are used.
10403
10404 Flags to local 3x3 coordinates maps like this:
10405
10406     1 2 3
10407     4   5
10408     6 7 8
10409 @end table
10410
10411 @subsection Commands
10412
10413 This filter supports the all above options as @ref{commands}.
10414
10415 @section extractplanes
10416
10417 Extract color channel components from input video stream into
10418 separate grayscale video streams.
10419
10420 The filter accepts the following option:
10421
10422 @table @option
10423 @item planes
10424 Set plane(s) to extract.
10425
10426 Available values for planes are:
10427 @table @samp
10428 @item y
10429 @item u
10430 @item v
10431 @item a
10432 @item r
10433 @item g
10434 @item b
10435 @end table
10436
10437 Choosing planes not available in the input will result in an error.
10438 That means you cannot select @code{r}, @code{g}, @code{b} planes
10439 with @code{y}, @code{u}, @code{v} planes at same time.
10440 @end table
10441
10442 @subsection Examples
10443
10444 @itemize
10445 @item
10446 Extract luma, u and v color channel component from input video frame
10447 into 3 grayscale outputs:
10448 @example
10449 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
10450 @end example
10451 @end itemize
10452
10453 @section fade
10454
10455 Apply a fade-in/out effect to the input video.
10456
10457 It accepts the following parameters:
10458
10459 @table @option
10460 @item type, t
10461 The effect type can be either "in" for a fade-in, or "out" for a fade-out
10462 effect.
10463 Default is @code{in}.
10464
10465 @item start_frame, s
10466 Specify the number of the frame to start applying the fade
10467 effect at. Default is 0.
10468
10469 @item nb_frames, n
10470 The number of frames that the fade effect lasts. At the end of the
10471 fade-in effect, the output video will have the same intensity as the input video.
10472 At the end of the fade-out transition, the output video will be filled with the
10473 selected @option{color}.
10474 Default is 25.
10475
10476 @item alpha
10477 If set to 1, fade only alpha channel, if one exists on the input.
10478 Default value is 0.
10479
10480 @item start_time, st
10481 Specify the timestamp (in seconds) of the frame to start to apply the fade
10482 effect. If both start_frame and start_time are specified, the fade will start at
10483 whichever comes last.  Default is 0.
10484
10485 @item duration, d
10486 The number of seconds for which the fade effect has to last. At the end of the
10487 fade-in effect the output video will have the same intensity as the input video,
10488 at the end of the fade-out transition the output video will be filled with the
10489 selected @option{color}.
10490 If both duration and nb_frames are specified, duration is used. Default is 0
10491 (nb_frames is used by default).
10492
10493 @item color, c
10494 Specify the color of the fade. Default is "black".
10495 @end table
10496
10497 @subsection Examples
10498
10499 @itemize
10500 @item
10501 Fade in the first 30 frames of video:
10502 @example
10503 fade=in:0:30
10504 @end example
10505
10506 The command above is equivalent to:
10507 @example
10508 fade=t=in:s=0:n=30
10509 @end example
10510
10511 @item
10512 Fade out the last 45 frames of a 200-frame video:
10513 @example
10514 fade=out:155:45
10515 fade=type=out:start_frame=155:nb_frames=45
10516 @end example
10517
10518 @item
10519 Fade in the first 25 frames and fade out the last 25 frames of a 1000-frame video:
10520 @example
10521 fade=in:0:25, fade=out:975:25
10522 @end example
10523
10524 @item
10525 Make the first 5 frames yellow, then fade in from frame 5-24:
10526 @example
10527 fade=in:5:20:color=yellow
10528 @end example
10529
10530 @item
10531 Fade in alpha over first 25 frames of video:
10532 @example
10533 fade=in:0:25:alpha=1
10534 @end example
10535
10536 @item
10537 Make the first 5.5 seconds black, then fade in for 0.5 seconds:
10538 @example
10539 fade=t=in:st=5.5:d=0.5
10540 @end example
10541
10542 @end itemize
10543
10544 @section fftdnoiz
10545 Denoise frames using 3D FFT (frequency domain filtering).
10546
10547 The filter accepts the following options:
10548
10549 @table @option
10550 @item sigma
10551 Set the noise sigma constant. This sets denoising strength.
10552 Default value is 1. Allowed range is from 0 to 30.
10553 Using very high sigma with low overlap may give blocking artifacts.
10554
10555 @item amount
10556 Set amount of denoising. By default all detected noise is reduced.
10557 Default value is 1. Allowed range is from 0 to 1.
10558
10559 @item block
10560 Set size of block, Default is 4, can be 3, 4, 5 or 6.
10561 Actual size of block in pixels is 2 to power of @var{block}, so by default
10562 block size in pixels is 2^4 which is 16.
10563
10564 @item overlap
10565 Set block overlap. Default is 0.5. Allowed range is from 0.2 to 0.8.
10566
10567 @item prev
10568 Set number of previous frames to use for denoising. By default is set to 0.
10569
10570 @item next
10571 Set number of next frames to to use for denoising. By default is set to 0.
10572
10573 @item planes
10574 Set planes which will be filtered, by default are all available filtered
10575 except alpha.
10576 @end table
10577
10578 @section fftfilt
10579 Apply arbitrary expressions to samples in frequency domain
10580
10581 @table @option
10582 @item dc_Y
10583 Adjust the dc value (gain) of the luma plane of the image. The filter
10584 accepts an integer value in range @code{0} to @code{1000}. The default
10585 value is set to @code{0}.
10586
10587 @item dc_U
10588 Adjust the dc value (gain) of the 1st chroma plane of the image. The
10589 filter accepts an integer value in range @code{0} to @code{1000}. The
10590 default value is set to @code{0}.
10591
10592 @item dc_V
10593 Adjust the dc value (gain) of the 2nd chroma plane of the image. The
10594 filter accepts an integer value in range @code{0} to @code{1000}. The
10595 default value is set to @code{0}.
10596
10597 @item weight_Y
10598 Set the frequency domain weight expression for the luma plane.
10599
10600 @item weight_U
10601 Set the frequency domain weight expression for the 1st chroma plane.
10602
10603 @item weight_V
10604 Set the frequency domain weight expression for the 2nd chroma plane.
10605
10606 @item eval
10607 Set when the expressions are evaluated.
10608
10609 It accepts the following values:
10610 @table @samp
10611 @item init
10612 Only evaluate expressions once during the filter initialization.
10613
10614 @item frame
10615 Evaluate expressions for each incoming frame.
10616 @end table
10617
10618 Default value is @samp{init}.
10619
10620 The filter accepts the following variables:
10621 @item X
10622 @item Y
10623 The coordinates of the current sample.
10624
10625 @item W
10626 @item H
10627 The width and height of the image.
10628
10629 @item N
10630 The number of input frame, starting from 0.
10631 @end table
10632
10633 @subsection Examples
10634
10635 @itemize
10636 @item
10637 High-pass:
10638 @example
10639 fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)'
10640 @end example
10641
10642 @item
10643 Low-pass:
10644 @example
10645 fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)'
10646 @end example
10647
10648 @item
10649 Sharpen:
10650 @example
10651 fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)'
10652 @end example
10653
10654 @item
10655 Blur:
10656 @example
10657 fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))'
10658 @end example
10659
10660 @end itemize
10661
10662 @section field
10663
10664 Extract a single field from an interlaced image using stride
10665 arithmetic to avoid wasting CPU time. The output frames are marked as
10666 non-interlaced.
10667
10668 The filter accepts the following options:
10669
10670 @table @option
10671 @item type
10672 Specify whether to extract the top (if the value is @code{0} or
10673 @code{top}) or the bottom field (if the value is @code{1} or
10674 @code{bottom}).
10675 @end table
10676
10677 @section fieldhint
10678
10679 Create new frames by copying the top and bottom fields from surrounding frames
10680 supplied as numbers by the hint file.
10681
10682 @table @option
10683 @item hint
10684 Set file containing hints: absolute/relative frame numbers.
10685
10686 There must be one line for each frame in a clip. Each line must contain two
10687 numbers separated by the comma, optionally followed by @code{-} or @code{+}.
10688 Numbers supplied on each line of file can not be out of [N-1,N+1] where N
10689 is current frame number for @code{absolute} mode or out of [-1, 1] range
10690 for @code{relative} mode. First number tells from which frame to pick up top
10691 field and second number tells from which frame to pick up bottom field.
10692
10693 If optionally followed by @code{+} output frame will be marked as interlaced,
10694 else if followed by @code{-} output frame will be marked as progressive, else
10695 it will be marked same as input frame.
10696 If optionally followed by @code{t} output frame will use only top field, or in
10697 case of @code{b} it will use only bottom field.
10698 If line starts with @code{#} or @code{;} that line is skipped.
10699
10700 @item mode
10701 Can be item @code{absolute} or @code{relative}. Default is @code{absolute}.
10702 @end table
10703
10704 Example of first several lines of @code{hint} file for @code{relative} mode:
10705 @example
10706 0,0 - # first frame
10707 1,0 - # second frame, use third's frame top field and second's frame bottom field
10708 1,0 - # third frame, use fourth's frame top field and third's frame bottom field
10709 1,0 -
10710 0,0 -
10711 0,0 -
10712 1,0 -
10713 1,0 -
10714 1,0 -
10715 0,0 -
10716 0,0 -
10717 1,0 -
10718 1,0 -
10719 1,0 -
10720 0,0 -
10721 @end example
10722
10723 @section fieldmatch
10724
10725 Field matching filter for inverse telecine. It is meant to reconstruct the
10726 progressive frames from a telecined stream. The filter does not drop duplicated
10727 frames, so to achieve a complete inverse telecine @code{fieldmatch} needs to be
10728 followed by a decimation filter such as @ref{decimate} in the filtergraph.
10729
10730 The separation of the field matching and the decimation is notably motivated by
10731 the possibility of inserting a de-interlacing filter fallback between the two.
10732 If the source has mixed telecined and real interlaced content,
10733 @code{fieldmatch} will not be able to match fields for the interlaced parts.
10734 But these remaining combed frames will be marked as interlaced, and thus can be
10735 de-interlaced by a later filter such as @ref{yadif} before decimation.
10736
10737 In addition to the various configuration options, @code{fieldmatch} can take an
10738 optional second stream, activated through the @option{ppsrc} option. If
10739 enabled, the frames reconstruction will be based on the fields and frames from
10740 this second stream. This allows the first input to be pre-processed in order to
10741 help the various algorithms of the filter, while keeping the output lossless
10742 (assuming the fields are matched properly). Typically, a field-aware denoiser,
10743 or brightness/contrast adjustments can help.
10744
10745 Note that this filter uses the same algorithms as TIVTC/TFM (AviSynth project)
10746 and VIVTC/VFM (VapourSynth project). The later is a light clone of TFM from
10747 which @code{fieldmatch} is based on. While the semantic and usage are very
10748 close, some behaviour and options names can differ.
10749
10750 The @ref{decimate} filter currently only works for constant frame rate input.
10751 If your input has mixed telecined (30fps) and progressive content with a lower
10752 framerate like 24fps use the following filterchain to produce the necessary cfr
10753 stream: @code{dejudder,fps=30000/1001,fieldmatch,decimate}.
10754
10755 The filter accepts the following options:
10756
10757 @table @option
10758 @item order
10759 Specify the assumed field order of the input stream. Available values are:
10760
10761 @table @samp
10762 @item auto
10763 Auto detect parity (use FFmpeg's internal parity value).
10764 @item bff
10765 Assume bottom field first.
10766 @item tff
10767 Assume top field first.
10768 @end table
10769
10770 Note that it is sometimes recommended not to trust the parity announced by the
10771 stream.
10772
10773 Default value is @var{auto}.
10774
10775 @item mode
10776 Set the matching mode or strategy to use. @option{pc} mode is the safest in the
10777 sense that it won't risk creating jerkiness due to duplicate frames when
10778 possible, but if there are bad edits or blended fields it will end up
10779 outputting combed frames when a good match might actually exist. On the other
10780 hand, @option{pcn_ub} mode is the most risky in terms of creating jerkiness,
10781 but will almost always find a good frame if there is one. The other values are
10782 all somewhere in between @option{pc} and @option{pcn_ub} in terms of risking
10783 jerkiness and creating duplicate frames versus finding good matches in sections
10784 with bad edits, orphaned fields, blended fields, etc.
10785
10786 More details about p/c/n/u/b are available in @ref{p/c/n/u/b meaning} section.
10787
10788 Available values are:
10789
10790 @table @samp
10791 @item pc
10792 2-way matching (p/c)
10793 @item pc_n
10794 2-way matching, and trying 3rd match if still combed (p/c + n)
10795 @item pc_u
10796 2-way matching, and trying 3rd match (same order) if still combed (p/c + u)
10797 @item pc_n_ub
10798 2-way matching, trying 3rd match if still combed, and trying 4th/5th matches if
10799 still combed (p/c + n + u/b)
10800 @item pcn
10801 3-way matching (p/c/n)
10802 @item pcn_ub
10803 3-way matching, and trying 4th/5th matches if all 3 of the original matches are
10804 detected as combed (p/c/n + u/b)
10805 @end table
10806
10807 The parenthesis at the end indicate the matches that would be used for that
10808 mode assuming @option{order}=@var{tff} (and @option{field} on @var{auto} or
10809 @var{top}).
10810
10811 In terms of speed @option{pc} mode is by far the fastest and @option{pcn_ub} is
10812 the slowest.
10813
10814 Default value is @var{pc_n}.
10815
10816 @item ppsrc
10817 Mark the main input stream as a pre-processed input, and enable the secondary
10818 input stream as the clean source to pick the fields from. See the filter
10819 introduction for more details. It is similar to the @option{clip2} feature from
10820 VFM/TFM.
10821
10822 Default value is @code{0} (disabled).
10823
10824 @item field
10825 Set the field to match from. It is recommended to set this to the same value as
10826 @option{order} unless you experience matching failures with that setting. In
10827 certain circumstances changing the field that is used to match from can have a
10828 large impact on matching performance. Available values are:
10829
10830 @table @samp
10831 @item auto
10832 Automatic (same value as @option{order}).
10833 @item bottom
10834 Match from the bottom field.
10835 @item top
10836 Match from the top field.
10837 @end table
10838
10839 Default value is @var{auto}.
10840
10841 @item mchroma
10842 Set whether or not chroma is included during the match comparisons. In most
10843 cases it is recommended to leave this enabled. You should set this to @code{0}
10844 only if your clip has bad chroma problems such as heavy rainbowing or other
10845 artifacts. Setting this to @code{0} could also be used to speed things up at
10846 the cost of some accuracy.
10847
10848 Default value is @code{1}.
10849
10850 @item y0
10851 @item y1
10852 These define an exclusion band which excludes the lines between @option{y0} and
10853 @option{y1} from being included in the field matching decision. An exclusion
10854 band can be used to ignore subtitles, a logo, or other things that may
10855 interfere with the matching. @option{y0} sets the starting scan line and
10856 @option{y1} sets the ending line; all lines in between @option{y0} and
10857 @option{y1} (including @option{y0} and @option{y1}) will be ignored. Setting
10858 @option{y0} and @option{y1} to the same value will disable the feature.
10859 @option{y0} and @option{y1} defaults to @code{0}.
10860
10861 @item scthresh
10862 Set the scene change detection threshold as a percentage of maximum change on
10863 the luma plane. Good values are in the @code{[8.0, 14.0]} range. Scene change
10864 detection is only relevant in case @option{combmatch}=@var{sc}.  The range for
10865 @option{scthresh} is @code{[0.0, 100.0]}.
10866
10867 Default value is @code{12.0}.
10868
10869 @item combmatch
10870 When @option{combatch} is not @var{none}, @code{fieldmatch} will take into
10871 account the combed scores of matches when deciding what match to use as the
10872 final match. Available values are:
10873
10874 @table @samp
10875 @item none
10876 No final matching based on combed scores.
10877 @item sc
10878 Combed scores are only used when a scene change is detected.
10879 @item full
10880 Use combed scores all the time.
10881 @end table
10882
10883 Default is @var{sc}.
10884
10885 @item combdbg
10886 Force @code{fieldmatch} to calculate the combed metrics for certain matches and
10887 print them. This setting is known as @option{micout} in TFM/VFM vocabulary.
10888 Available values are:
10889
10890 @table @samp
10891 @item none
10892 No forced calculation.
10893 @item pcn
10894 Force p/c/n calculations.
10895 @item pcnub
10896 Force p/c/n/u/b calculations.
10897 @end table
10898
10899 Default value is @var{none}.
10900
10901 @item cthresh
10902 This is the area combing threshold used for combed frame detection. This
10903 essentially controls how "strong" or "visible" combing must be to be detected.
10904 Larger values mean combing must be more visible and smaller values mean combing
10905 can be less visible or strong and still be detected. Valid settings are from
10906 @code{-1} (every pixel will be detected as combed) to @code{255} (no pixel will
10907 be detected as combed). This is basically a pixel difference value. A good
10908 range is @code{[8, 12]}.
10909
10910 Default value is @code{9}.
10911
10912 @item chroma
10913 Sets whether or not chroma is considered in the combed frame decision.  Only
10914 disable this if your source has chroma problems (rainbowing, etc.) that are
10915 causing problems for the combed frame detection with chroma enabled. Actually,
10916 using @option{chroma}=@var{0} is usually more reliable, except for the case
10917 where there is chroma only combing in the source.
10918
10919 Default value is @code{0}.
10920
10921 @item blockx
10922 @item blocky
10923 Respectively set the x-axis and y-axis size of the window used during combed
10924 frame detection. This has to do with the size of the area in which
10925 @option{combpel} pixels are required to be detected as combed for a frame to be
10926 declared combed. See the @option{combpel} parameter description for more info.
10927 Possible values are any number that is a power of 2 starting at 4 and going up
10928 to 512.
10929
10930 Default value is @code{16}.
10931
10932 @item combpel
10933 The number of combed pixels inside any of the @option{blocky} by
10934 @option{blockx} size blocks on the frame for the frame to be detected as
10935 combed. While @option{cthresh} controls how "visible" the combing must be, this
10936 setting controls "how much" combing there must be in any localized area (a
10937 window defined by the @option{blockx} and @option{blocky} settings) on the
10938 frame. Minimum value is @code{0} and maximum is @code{blocky x blockx} (at
10939 which point no frames will ever be detected as combed). This setting is known
10940 as @option{MI} in TFM/VFM vocabulary.
10941
10942 Default value is @code{80}.
10943 @end table
10944
10945 @anchor{p/c/n/u/b meaning}
10946 @subsection p/c/n/u/b meaning
10947
10948 @subsubsection p/c/n
10949
10950 We assume the following telecined stream:
10951
10952 @example
10953 Top fields:     1 2 2 3 4
10954 Bottom fields:  1 2 3 4 4
10955 @end example
10956
10957 The numbers correspond to the progressive frame the fields relate to. Here, the
10958 first two frames are progressive, the 3rd and 4th are combed, and so on.
10959
10960 When @code{fieldmatch} is configured to run a matching from bottom
10961 (@option{field}=@var{bottom}) this is how this input stream get transformed:
10962
10963 @example
10964 Input stream:
10965                 T     1 2 2 3 4
10966                 B     1 2 3 4 4   <-- matching reference
10967
10968 Matches:              c c n n c
10969
10970 Output stream:
10971                 T     1 2 3 4 4
10972                 B     1 2 3 4 4
10973 @end example
10974
10975 As a result of the field matching, we can see that some frames get duplicated.
10976 To perform a complete inverse telecine, you need to rely on a decimation filter
10977 after this operation. See for instance the @ref{decimate} filter.
10978
10979 The same operation now matching from top fields (@option{field}=@var{top})
10980 looks like this:
10981
10982 @example
10983 Input stream:
10984                 T     1 2 2 3 4   <-- matching reference
10985                 B     1 2 3 4 4
10986
10987 Matches:              c c p p c
10988
10989 Output stream:
10990                 T     1 2 2 3 4
10991                 B     1 2 2 3 4
10992 @end example
10993
10994 In these examples, we can see what @var{p}, @var{c} and @var{n} mean;
10995 basically, they refer to the frame and field of the opposite parity:
10996
10997 @itemize
10998 @item @var{p} matches the field of the opposite parity in the previous frame
10999 @item @var{c} matches the field of the opposite parity in the current frame
11000 @item @var{n} matches the field of the opposite parity in the next frame
11001 @end itemize
11002
11003 @subsubsection u/b
11004
11005 The @var{u} and @var{b} matching are a bit special in the sense that they match
11006 from the opposite parity flag. In the following examples, we assume that we are
11007 currently matching the 2nd frame (Top:2, bottom:2). According to the match, a
11008 'x' is placed above and below each matched fields.
11009
11010 With bottom matching (@option{field}=@var{bottom}):
11011 @example
11012 Match:           c         p           n          b          u
11013
11014                  x       x               x        x          x
11015   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
11016   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
11017                  x         x           x        x              x
11018
11019 Output frames:
11020                  2          1          2          2          2
11021                  2          2          2          1          3
11022 @end example
11023
11024 With top matching (@option{field}=@var{top}):
11025 @example
11026 Match:           c         p           n          b          u
11027
11028                  x         x           x        x              x
11029   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
11030   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
11031                  x       x               x        x          x
11032
11033 Output frames:
11034                  2          2          2          1          2
11035                  2          1          3          2          2
11036 @end example
11037
11038 @subsection Examples
11039
11040 Simple IVTC of a top field first telecined stream:
11041 @example
11042 fieldmatch=order=tff:combmatch=none, decimate
11043 @end example
11044
11045 Advanced IVTC, with fallback on @ref{yadif} for still combed frames:
11046 @example
11047 fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
11048 @end example
11049
11050 @section fieldorder
11051
11052 Transform the field order of the input video.
11053
11054 It accepts the following parameters:
11055
11056 @table @option
11057
11058 @item order
11059 The output field order. Valid values are @var{tff} for top field first or @var{bff}
11060 for bottom field first.
11061 @end table
11062
11063 The default value is @samp{tff}.
11064
11065 The transformation is done by shifting the picture content up or down
11066 by one line, and filling the remaining line with appropriate picture content.
11067 This method is consistent with most broadcast field order converters.
11068
11069 If the input video is not flagged as being interlaced, or it is already
11070 flagged as being of the required output field order, then this filter does
11071 not alter the incoming video.
11072
11073 It is very useful when converting to or from PAL DV material,
11074 which is bottom field first.
11075
11076 For example:
11077 @example
11078 ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
11079 @end example
11080
11081 @section fifo, afifo
11082
11083 Buffer input images and send them when they are requested.
11084
11085 It is mainly useful when auto-inserted by the libavfilter
11086 framework.
11087
11088 It does not take parameters.
11089
11090 @section fillborders
11091
11092 Fill borders of the input video, without changing video stream dimensions.
11093 Sometimes video can have garbage at the four edges and you may not want to
11094 crop video input to keep size multiple of some number.
11095
11096 This filter accepts the following options:
11097
11098 @table @option
11099 @item left
11100 Number of pixels to fill from left border.
11101
11102 @item right
11103 Number of pixels to fill from right border.
11104
11105 @item top
11106 Number of pixels to fill from top border.
11107
11108 @item bottom
11109 Number of pixels to fill from bottom border.
11110
11111 @item mode
11112 Set fill mode.
11113
11114 It accepts the following values:
11115 @table @samp
11116 @item smear
11117 fill pixels using outermost pixels
11118
11119 @item mirror
11120 fill pixels using mirroring
11121
11122 @item fixed
11123 fill pixels with constant value
11124 @end table
11125
11126 Default is @var{smear}.
11127
11128 @item color
11129 Set color for pixels in fixed mode. Default is @var{black}.
11130 @end table
11131
11132 @subsection Commands
11133 This filter supports same @ref{commands} as options.
11134 The command accepts the same syntax of the corresponding option.
11135
11136 If the specified expression is not valid, it is kept at its current
11137 value.
11138
11139 @section find_rect
11140
11141 Find a rectangular object
11142
11143 It accepts the following options:
11144
11145 @table @option
11146 @item object
11147 Filepath of the object image, needs to be in gray8.
11148
11149 @item threshold
11150 Detection threshold, default is 0.5.
11151
11152 @item mipmaps
11153 Number of mipmaps, default is 3.
11154
11155 @item xmin, ymin, xmax, ymax
11156 Specifies the rectangle in which to search.
11157 @end table
11158
11159 @subsection Examples
11160
11161 @itemize
11162 @item
11163 Cover a rectangular object by the supplied image of a given video using @command{ffmpeg}:
11164 @example
11165 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
11166 @end example
11167 @end itemize
11168
11169 @section floodfill
11170
11171 Flood area with values of same pixel components with another values.
11172
11173 It accepts the following options:
11174 @table @option
11175 @item x
11176 Set pixel x coordinate.
11177
11178 @item y
11179 Set pixel y coordinate.
11180
11181 @item s0
11182 Set source #0 component value.
11183
11184 @item s1
11185 Set source #1 component value.
11186
11187 @item s2
11188 Set source #2 component value.
11189
11190 @item s3
11191 Set source #3 component value.
11192
11193 @item d0
11194 Set destination #0 component value.
11195
11196 @item d1
11197 Set destination #1 component value.
11198
11199 @item d2
11200 Set destination #2 component value.
11201
11202 @item d3
11203 Set destination #3 component value.
11204 @end table
11205
11206 @anchor{format}
11207 @section format
11208
11209 Convert the input video to one of the specified pixel formats.
11210 Libavfilter will try to pick one that is suitable as input to
11211 the next filter.
11212
11213 It accepts the following parameters:
11214 @table @option
11215
11216 @item pix_fmts
11217 A '|'-separated list of pixel format names, such as
11218 "pix_fmts=yuv420p|monow|rgb24".
11219
11220 @end table
11221
11222 @subsection Examples
11223
11224 @itemize
11225 @item
11226 Convert the input video to the @var{yuv420p} format
11227 @example
11228 format=pix_fmts=yuv420p
11229 @end example
11230
11231 Convert the input video to any of the formats in the list
11232 @example
11233 format=pix_fmts=yuv420p|yuv444p|yuv410p
11234 @end example
11235 @end itemize
11236
11237 @anchor{fps}
11238 @section fps
11239
11240 Convert the video to specified constant frame rate by duplicating or dropping
11241 frames as necessary.
11242
11243 It accepts the following parameters:
11244 @table @option
11245
11246 @item fps
11247 The desired output frame rate. The default is @code{25}.
11248
11249 @item start_time
11250 Assume the first PTS should be the given value, in seconds. This allows for
11251 padding/trimming at the start of stream. By default, no assumption is made
11252 about the first frame's expected PTS, so no padding or trimming is done.
11253 For example, this could be set to 0 to pad the beginning with duplicates of
11254 the first frame if a video stream starts after the audio stream or to trim any
11255 frames with a negative PTS.
11256
11257 @item round
11258 Timestamp (PTS) rounding method.
11259
11260 Possible values are:
11261 @table @option
11262 @item zero
11263 round towards 0
11264 @item inf
11265 round away from 0
11266 @item down
11267 round towards -infinity
11268 @item up
11269 round towards +infinity
11270 @item near
11271 round to nearest
11272 @end table
11273 The default is @code{near}.
11274
11275 @item eof_action
11276 Action performed when reading the last frame.
11277
11278 Possible values are:
11279 @table @option
11280 @item round
11281 Use same timestamp rounding method as used for other frames.
11282 @item pass
11283 Pass through last frame if input duration has not been reached yet.
11284 @end table
11285 The default is @code{round}.
11286
11287 @end table
11288
11289 Alternatively, the options can be specified as a flat string:
11290 @var{fps}[:@var{start_time}[:@var{round}]].
11291
11292 See also the @ref{setpts} filter.
11293
11294 @subsection Examples
11295
11296 @itemize
11297 @item
11298 A typical usage in order to set the fps to 25:
11299 @example
11300 fps=fps=25
11301 @end example
11302
11303 @item
11304 Sets the fps to 24, using abbreviation and rounding method to round to nearest:
11305 @example
11306 fps=fps=film:round=near
11307 @end example
11308 @end itemize
11309
11310 @section framepack
11311
11312 Pack two different video streams into a stereoscopic video, setting proper
11313 metadata on supported codecs. The two views should have the same size and
11314 framerate and processing will stop when the shorter video ends. Please note
11315 that you may conveniently adjust view properties with the @ref{scale} and
11316 @ref{fps} filters.
11317
11318 It accepts the following parameters:
11319 @table @option
11320
11321 @item format
11322 The desired packing format. Supported values are:
11323
11324 @table @option
11325
11326 @item sbs
11327 The views are next to each other (default).
11328
11329 @item tab
11330 The views are on top of each other.
11331
11332 @item lines
11333 The views are packed by line.
11334
11335 @item columns
11336 The views are packed by column.
11337
11338 @item frameseq
11339 The views are temporally interleaved.
11340
11341 @end table
11342
11343 @end table
11344
11345 Some examples:
11346
11347 @example
11348 # Convert left and right views into a frame-sequential video
11349 ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT
11350
11351 # Convert views into a side-by-side video with the same output resolution as the input
11352 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
11353 @end example
11354
11355 @section framerate
11356
11357 Change the frame rate by interpolating new video output frames from the source
11358 frames.
11359
11360 This filter is not designed to function correctly with interlaced media. If
11361 you wish to change the frame rate of interlaced media then you are required
11362 to deinterlace before this filter and re-interlace after this filter.
11363
11364 A description of the accepted options follows.
11365
11366 @table @option
11367 @item fps
11368 Specify the output frames per second. This option can also be specified
11369 as a value alone. The default is @code{50}.
11370
11371 @item interp_start
11372 Specify the start of a range where the output frame will be created as a
11373 linear interpolation of two frames. The range is [@code{0}-@code{255}],
11374 the default is @code{15}.
11375
11376 @item interp_end
11377 Specify the end of a range where the output frame will be created as a
11378 linear interpolation of two frames. The range is [@code{0}-@code{255}],
11379 the default is @code{240}.
11380
11381 @item scene
11382 Specify the level at which a scene change is detected as a value between
11383 0 and 100 to indicate a new scene; a low value reflects a low
11384 probability for the current frame to introduce a new scene, while a higher
11385 value means the current frame is more likely to be one.
11386 The default is @code{8.2}.
11387
11388 @item flags
11389 Specify flags influencing the filter process.
11390
11391 Available value for @var{flags} is:
11392
11393 @table @option
11394 @item scene_change_detect, scd
11395 Enable scene change detection using the value of the option @var{scene}.
11396 This flag is enabled by default.
11397 @end table
11398 @end table
11399
11400 @section framestep
11401
11402 Select one frame every N-th frame.
11403
11404 This filter accepts the following option:
11405 @table @option
11406 @item step
11407 Select frame after every @code{step} frames.
11408 Allowed values are positive integers higher than 0. Default value is @code{1}.
11409 @end table
11410
11411 @section freezedetect
11412
11413 Detect frozen video.
11414
11415 This filter logs a message and sets frame metadata when it detects that the
11416 input video has no significant change in content during a specified duration.
11417 Video freeze detection calculates the mean average absolute difference of all
11418 the components of video frames and compares it to a noise floor.
11419
11420 The printed times and duration are expressed in seconds. The
11421 @code{lavfi.freezedetect.freeze_start} metadata key is set on the first frame
11422 whose timestamp equals or exceeds the detection duration and it contains the
11423 timestamp of the first frame of the freeze. The
11424 @code{lavfi.freezedetect.freeze_duration} and
11425 @code{lavfi.freezedetect.freeze_end} metadata keys are set on the first frame
11426 after the freeze.
11427
11428 The filter accepts the following options:
11429
11430 @table @option
11431 @item noise, n
11432 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
11433 specified value) or as a difference ratio between 0 and 1. Default is -60dB, or
11434 0.001.
11435
11436 @item duration, d
11437 Set freeze duration until notification (default is 2 seconds).
11438 @end table
11439
11440 @section freezeframes
11441
11442 Freeze video frames.
11443
11444 This filter freezes video frames using frame from 2nd input.
11445
11446 The filter accepts the following options:
11447
11448 @table @option
11449 @item first
11450 Set number of first frame from which to start freeze.
11451
11452 @item last
11453 Set number of last frame from which to end freeze.
11454
11455 @item replace
11456 Set number of frame from 2nd input which will be used instead of replaced frames.
11457 @end table
11458
11459 @anchor{frei0r}
11460 @section frei0r
11461
11462 Apply a frei0r effect to the input video.
11463
11464 To enable the compilation of this filter, you need to install the frei0r
11465 header and configure FFmpeg with @code{--enable-frei0r}.
11466
11467 It accepts the following parameters:
11468
11469 @table @option
11470
11471 @item filter_name
11472 The name of the frei0r effect to load. If the environment variable
11473 @env{FREI0R_PATH} is defined, the frei0r effect is searched for in each of the
11474 directories specified by the colon-separated list in @env{FREI0R_PATH}.
11475 Otherwise, the standard frei0r paths are searched, in this order:
11476 @file{HOME/.frei0r-1/lib/}, @file{/usr/local/lib/frei0r-1/},
11477 @file{/usr/lib/frei0r-1/}.
11478
11479 @item filter_params
11480 A '|'-separated list of parameters to pass to the frei0r effect.
11481
11482 @end table
11483
11484 A frei0r effect parameter can be a boolean (its value is either
11485 "y" or "n"), a double, a color (specified as
11486 @var{R}/@var{G}/@var{B}, where @var{R}, @var{G}, and @var{B} are floating point
11487 numbers between 0.0 and 1.0, inclusive) or a color description as specified in the
11488 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils},
11489 a position (specified as @var{X}/@var{Y}, where
11490 @var{X} and @var{Y} are floating point numbers) and/or a string.
11491
11492 The number and types of parameters depend on the loaded effect. If an
11493 effect parameter is not specified, the default value is set.
11494
11495 @subsection Examples
11496
11497 @itemize
11498 @item
11499 Apply the distort0r effect, setting the first two double parameters:
11500 @example
11501 frei0r=filter_name=distort0r:filter_params=0.5|0.01
11502 @end example
11503
11504 @item
11505 Apply the colordistance effect, taking a color as the first parameter:
11506 @example
11507 frei0r=colordistance:0.2/0.3/0.4
11508 frei0r=colordistance:violet
11509 frei0r=colordistance:0x112233
11510 @end example
11511
11512 @item
11513 Apply the perspective effect, specifying the top left and top right image
11514 positions:
11515 @example
11516 frei0r=perspective:0.2/0.2|0.8/0.2
11517 @end example
11518 @end itemize
11519
11520 For more information, see
11521 @url{http://frei0r.dyne.org}
11522
11523 @section fspp
11524
11525 Apply fast and simple postprocessing. It is a faster version of @ref{spp}.
11526
11527 It splits (I)DCT into horizontal/vertical passes. Unlike the simple post-
11528 processing filter, one of them is performed once per block, not per pixel.
11529 This allows for much higher speed.
11530
11531 The filter accepts the following options:
11532
11533 @table @option
11534 @item quality
11535 Set quality. This option defines the number of levels for averaging. It accepts
11536 an integer in the range 4-5. Default value is @code{4}.
11537
11538 @item qp
11539 Force a constant quantization parameter. It accepts an integer in range 0-63.
11540 If not set, the filter will use the QP from the video stream (if available).
11541
11542 @item strength
11543 Set filter strength. It accepts an integer in range -15 to 32. Lower values mean
11544 more details but also more artifacts, while higher values make the image smoother
11545 but also blurrier. Default value is @code{0} âˆ’ PSNR optimal.
11546
11547 @item use_bframe_qp
11548 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
11549 option may cause flicker since the B-Frames have often larger QP. Default is
11550 @code{0} (not enabled).
11551
11552 @end table
11553
11554 @section gblur
11555
11556 Apply Gaussian blur filter.
11557
11558 The filter accepts the following options:
11559
11560 @table @option
11561 @item sigma
11562 Set horizontal sigma, standard deviation of Gaussian blur. Default is @code{0.5}.
11563
11564 @item steps
11565 Set number of steps for Gaussian approximation. Default is @code{1}.
11566
11567 @item planes
11568 Set which planes to filter. By default all planes are filtered.
11569
11570 @item sigmaV
11571 Set vertical sigma, if negative it will be same as @code{sigma}.
11572 Default is @code{-1}.
11573 @end table
11574
11575 @subsection Commands
11576 This filter supports same commands as options.
11577 The command accepts the same syntax of the corresponding option.
11578
11579 If the specified expression is not valid, it is kept at its current
11580 value.
11581
11582 @section geq
11583
11584 Apply generic equation to each pixel.
11585
11586 The filter accepts the following options:
11587
11588 @table @option
11589 @item lum_expr, lum
11590 Set the luminance expression.
11591 @item cb_expr, cb
11592 Set the chrominance blue expression.
11593 @item cr_expr, cr
11594 Set the chrominance red expression.
11595 @item alpha_expr, a
11596 Set the alpha expression.
11597 @item red_expr, r
11598 Set the red expression.
11599 @item green_expr, g
11600 Set the green expression.
11601 @item blue_expr, b
11602 Set the blue expression.
11603 @end table
11604
11605 The colorspace is selected according to the specified options. If one
11606 of the @option{lum_expr}, @option{cb_expr}, or @option{cr_expr}
11607 options is specified, the filter will automatically select a YCbCr
11608 colorspace. If one of the @option{red_expr}, @option{green_expr}, or
11609 @option{blue_expr} options is specified, it will select an RGB
11610 colorspace.
11611
11612 If one of the chrominance expression is not defined, it falls back on the other
11613 one. If no alpha expression is specified it will evaluate to opaque value.
11614 If none of chrominance expressions are specified, they will evaluate
11615 to the luminance expression.
11616
11617 The expressions can use the following variables and functions:
11618
11619 @table @option
11620 @item N
11621 The sequential number of the filtered frame, starting from @code{0}.
11622
11623 @item X
11624 @item Y
11625 The coordinates of the current sample.
11626
11627 @item W
11628 @item H
11629 The width and height of the image.
11630
11631 @item SW
11632 @item SH
11633 Width and height scale depending on the currently filtered plane. It is the
11634 ratio between the corresponding luma plane number of pixels and the current
11635 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
11636 @code{0.5,0.5} for chroma planes.
11637
11638 @item T
11639 Time of the current frame, expressed in seconds.
11640
11641 @item p(x, y)
11642 Return the value of the pixel at location (@var{x},@var{y}) of the current
11643 plane.
11644
11645 @item lum(x, y)
11646 Return the value of the pixel at location (@var{x},@var{y}) of the luminance
11647 plane.
11648
11649 @item cb(x, y)
11650 Return the value of the pixel at location (@var{x},@var{y}) of the
11651 blue-difference chroma plane. Return 0 if there is no such plane.
11652
11653 @item cr(x, y)
11654 Return the value of the pixel at location (@var{x},@var{y}) of the
11655 red-difference chroma plane. Return 0 if there is no such plane.
11656
11657 @item r(x, y)
11658 @item g(x, y)
11659 @item b(x, y)
11660 Return the value of the pixel at location (@var{x},@var{y}) of the
11661 red/green/blue component. Return 0 if there is no such component.
11662
11663 @item alpha(x, y)
11664 Return the value of the pixel at location (@var{x},@var{y}) of the alpha
11665 plane. Return 0 if there is no such plane.
11666
11667 @item psum(x,y), lumsum(x, y), cbsum(x,y), crsum(x,y), rsum(x,y), gsum(x,y), bsum(x,y), alphasum(x,y)
11668 Sum of sample values in the rectangle from (0,0) to (x,y), this allows obtaining
11669 sums of samples within a rectangle. See the functions without the sum postfix.
11670
11671 @item interpolation
11672 Set one of interpolation methods:
11673 @table @option
11674 @item nearest, n
11675 @item bilinear, b
11676 @end table
11677 Default is bilinear.
11678 @end table
11679
11680 For functions, if @var{x} and @var{y} are outside the area, the value will be
11681 automatically clipped to the closer edge.
11682
11683 Please note that this filter can use multiple threads in which case each slice
11684 will have its own expression state. If you want to use only a single expression
11685 state because your expressions depend on previous state then you should limit
11686 the number of filter threads to 1.
11687
11688 @subsection Examples
11689
11690 @itemize
11691 @item
11692 Flip the image horizontally:
11693 @example
11694 geq=p(W-X\,Y)
11695 @end example
11696
11697 @item
11698 Generate a bidimensional sine wave, with angle @code{PI/3} and a
11699 wavelength of 100 pixels:
11700 @example
11701 geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
11702 @end example
11703
11704 @item
11705 Generate a fancy enigmatic moving light:
11706 @example
11707 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
11708 @end example
11709
11710 @item
11711 Generate a quick emboss effect:
11712 @example
11713 format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
11714 @end example
11715
11716 @item
11717 Modify RGB components depending on pixel position:
11718 @example
11719 geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
11720 @end example
11721
11722 @item
11723 Create a radial gradient that is the same size as the input (also see
11724 the @ref{vignette} filter):
11725 @example
11726 geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
11727 @end example
11728 @end itemize
11729
11730 @section gradfun
11731
11732 Fix the banding artifacts that are sometimes introduced into nearly flat
11733 regions by truncation to 8-bit color depth.
11734 Interpolate the gradients that should go where the bands are, and
11735 dither them.
11736
11737 It is designed for playback only.  Do not use it prior to
11738 lossy compression, because compression tends to lose the dither and
11739 bring back the bands.
11740
11741 It accepts the following parameters:
11742
11743 @table @option
11744
11745 @item strength
11746 The maximum amount by which the filter will change any one pixel. This is also
11747 the threshold for detecting nearly flat regions. Acceptable values range from
11748 .51 to 64; the default value is 1.2. Out-of-range values will be clipped to the
11749 valid range.
11750
11751 @item radius
11752 The neighborhood to fit the gradient to. A larger radius makes for smoother
11753 gradients, but also prevents the filter from modifying the pixels near detailed
11754 regions. Acceptable values are 8-32; the default value is 16. Out-of-range
11755 values will be clipped to the valid range.
11756
11757 @end table
11758
11759 Alternatively, the options can be specified as a flat string:
11760 @var{strength}[:@var{radius}]
11761
11762 @subsection Examples
11763
11764 @itemize
11765 @item
11766 Apply the filter with a @code{3.5} strength and radius of @code{8}:
11767 @example
11768 gradfun=3.5:8
11769 @end example
11770
11771 @item
11772 Specify radius, omitting the strength (which will fall-back to the default
11773 value):
11774 @example
11775 gradfun=radius=8
11776 @end example
11777
11778 @end itemize
11779
11780 @anchor{graphmonitor}
11781 @section graphmonitor
11782 Show various filtergraph stats.
11783
11784 With this filter one can debug complete filtergraph.
11785 Especially issues with links filling with queued frames.
11786
11787 The filter accepts the following options:
11788
11789 @table @option
11790 @item size, s
11791 Set video output size. Default is @var{hd720}.
11792
11793 @item opacity, o
11794 Set video opacity. Default is @var{0.9}. Allowed range is from @var{0} to @var{1}.
11795
11796 @item mode, m
11797 Set output mode, can be @var{fulll} or @var{compact}.
11798 In @var{compact} mode only filters with some queued frames have displayed stats.
11799
11800 @item flags, f
11801 Set flags which enable which stats are shown in video.
11802
11803 Available values for flags are:
11804 @table @samp
11805 @item queue
11806 Display number of queued frames in each link.
11807
11808 @item frame_count_in
11809 Display number of frames taken from filter.
11810
11811 @item frame_count_out
11812 Display number of frames given out from filter.
11813
11814 @item pts
11815 Display current filtered frame pts.
11816
11817 @item time
11818 Display current filtered frame time.
11819
11820 @item timebase
11821 Display time base for filter link.
11822
11823 @item format
11824 Display used format for filter link.
11825
11826 @item size
11827 Display video size or number of audio channels in case of audio used by filter link.
11828
11829 @item rate
11830 Display video frame rate or sample rate in case of audio used by filter link.
11831 @end table
11832
11833 @item rate, r
11834 Set upper limit for video rate of output stream, Default value is @var{25}.
11835 This guarantee that output video frame rate will not be higher than this value.
11836 @end table
11837
11838 @section greyedge
11839 A color constancy variation filter which estimates scene illumination via grey edge algorithm
11840 and corrects the scene colors accordingly.
11841
11842 See: @url{https://staff.science.uva.nl/th.gevers/pub/GeversTIP07.pdf}
11843
11844 The filter accepts the following options:
11845
11846 @table @option
11847 @item difford
11848 The order of differentiation to be applied on the scene. Must be chosen in the range
11849 [0,2] and default value is 1.
11850
11851 @item minknorm
11852 The Minkowski parameter to be used for calculating the Minkowski distance. Must
11853 be chosen in the range [0,20] and default value is 1. Set to 0 for getting
11854 max value instead of calculating Minkowski distance.
11855
11856 @item sigma
11857 The standard deviation of Gaussian blur to be applied on the scene. Must be
11858 chosen in the range [0,1024.0] and default value = 1. floor( @var{sigma} * break_off_sigma(3) )
11859 can't be equal to 0 if @var{difford} is greater than 0.
11860 @end table
11861
11862 @subsection Examples
11863 @itemize
11864
11865 @item
11866 Grey Edge:
11867 @example
11868 greyedge=difford=1:minknorm=5:sigma=2
11869 @end example
11870
11871 @item
11872 Max Edge:
11873 @example
11874 greyedge=difford=1:minknorm=0:sigma=2
11875 @end example
11876
11877 @end itemize
11878
11879 @anchor{haldclut}
11880 @section haldclut
11881
11882 Apply a Hald CLUT to a video stream.
11883
11884 First input is the video stream to process, and second one is the Hald CLUT.
11885 The Hald CLUT input can be a simple picture or a complete video stream.
11886
11887 The filter accepts the following options:
11888
11889 @table @option
11890 @item shortest
11891 Force termination when the shortest input terminates. Default is @code{0}.
11892 @item repeatlast
11893 Continue applying the last CLUT after the end of the stream. A value of
11894 @code{0} disable the filter after the last frame of the CLUT is reached.
11895 Default is @code{1}.
11896 @end table
11897
11898 @code{haldclut} also has the same interpolation options as @ref{lut3d} (both
11899 filters share the same internals).
11900
11901 This filter also supports the @ref{framesync} options.
11902
11903 More information about the Hald CLUT can be found on Eskil Steenberg's website
11904 (Hald CLUT author) at @url{http://www.quelsolaar.com/technology/clut.html}.
11905
11906 @subsection Workflow examples
11907
11908 @subsubsection Hald CLUT video stream
11909
11910 Generate an identity Hald CLUT stream altered with various effects:
11911 @example
11912 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
11913 @end example
11914
11915 Note: make sure you use a lossless codec.
11916
11917 Then use it with @code{haldclut} to apply it on some random stream:
11918 @example
11919 ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
11920 @end example
11921
11922 The Hald CLUT will be applied to the 10 first seconds (duration of
11923 @file{clut.nut}), then the latest picture of that CLUT stream will be applied
11924 to the remaining frames of the @code{mandelbrot} stream.
11925
11926 @subsubsection Hald CLUT with preview
11927
11928 A Hald CLUT is supposed to be a squared image of @code{Level*Level*Level} by
11929 @code{Level*Level*Level} pixels. For a given Hald CLUT, FFmpeg will select the
11930 biggest possible square starting at the top left of the picture. The remaining
11931 padding pixels (bottom or right) will be ignored. This area can be used to add
11932 a preview of the Hald CLUT.
11933
11934 Typically, the following generated Hald CLUT will be supported by the
11935 @code{haldclut} filter:
11936
11937 @example
11938 ffmpeg -f lavfi -i @ref{haldclutsrc}=8 -vf "
11939    pad=iw+320 [padded_clut];
11940    smptebars=s=320x256, split [a][b];
11941    [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
11942    [main][b] overlay=W-320" -frames:v 1 clut.png
11943 @end example
11944
11945 It contains the original and a preview of the effect of the CLUT: SMPTE color
11946 bars are displayed on the right-top, and below the same color bars processed by
11947 the color changes.
11948
11949 Then, the effect of this Hald CLUT can be visualized with:
11950 @example
11951 ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
11952 @end example
11953
11954 @section hflip
11955
11956 Flip the input video horizontally.
11957
11958 For example, to horizontally flip the input video with @command{ffmpeg}:
11959 @example
11960 ffmpeg -i in.avi -vf "hflip" out.avi
11961 @end example
11962
11963 @section histeq
11964 This filter applies a global color histogram equalization on a
11965 per-frame basis.
11966
11967 It can be used to correct video that has a compressed range of pixel
11968 intensities.  The filter redistributes the pixel intensities to
11969 equalize their distribution across the intensity range. It may be
11970 viewed as an "automatically adjusting contrast filter". This filter is
11971 useful only for correcting degraded or poorly captured source
11972 video.
11973
11974 The filter accepts the following options:
11975
11976 @table @option
11977 @item strength
11978 Determine the amount of equalization to be applied.  As the strength
11979 is reduced, the distribution of pixel intensities more-and-more
11980 approaches that of the input frame. The value must be a float number
11981 in the range [0,1] and defaults to 0.200.
11982
11983 @item intensity
11984 Set the maximum intensity that can generated and scale the output
11985 values appropriately.  The strength should be set as desired and then
11986 the intensity can be limited if needed to avoid washing-out. The value
11987 must be a float number in the range [0,1] and defaults to 0.210.
11988
11989 @item antibanding
11990 Set the antibanding level. If enabled the filter will randomly vary
11991 the luminance of output pixels by a small amount to avoid banding of
11992 the histogram. Possible values are @code{none}, @code{weak} or
11993 @code{strong}. It defaults to @code{none}.
11994 @end table
11995
11996 @anchor{histogram}
11997 @section histogram
11998
11999 Compute and draw a color distribution histogram for the input video.
12000
12001 The computed histogram is a representation of the color component
12002 distribution in an image.
12003
12004 Standard histogram displays the color components distribution in an image.
12005 Displays color graph for each color component. Shows distribution of
12006 the Y, U, V, A or R, G, B components, depending on input format, in the
12007 current frame. Below each graph a color component scale meter is shown.
12008
12009 The filter accepts the following options:
12010
12011 @table @option
12012 @item level_height
12013 Set height of level. Default value is @code{200}.
12014 Allowed range is [50, 2048].
12015
12016 @item scale_height
12017 Set height of color scale. Default value is @code{12}.
12018 Allowed range is [0, 40].
12019
12020 @item display_mode
12021 Set display mode.
12022 It accepts the following values:
12023 @table @samp
12024 @item stack
12025 Per color component graphs are placed below each other.
12026
12027 @item parade
12028 Per color component graphs are placed side by side.
12029
12030 @item overlay
12031 Presents information identical to that in the @code{parade}, except
12032 that the graphs representing color components are superimposed directly
12033 over one another.
12034 @end table
12035 Default is @code{stack}.
12036
12037 @item levels_mode
12038 Set mode. Can be either @code{linear}, or @code{logarithmic}.
12039 Default is @code{linear}.
12040
12041 @item components
12042 Set what color components to display.
12043 Default is @code{7}.
12044
12045 @item fgopacity
12046 Set foreground opacity. Default is @code{0.7}.
12047
12048 @item bgopacity
12049 Set background opacity. Default is @code{0.5}.
12050 @end table
12051
12052 @subsection Examples
12053
12054 @itemize
12055
12056 @item
12057 Calculate and draw histogram:
12058 @example
12059 ffplay -i input -vf histogram
12060 @end example
12061
12062 @end itemize
12063
12064 @anchor{hqdn3d}
12065 @section hqdn3d
12066
12067 This is a high precision/quality 3d denoise filter. It aims to reduce
12068 image noise, producing smooth images and making still images really
12069 still. It should enhance compressibility.
12070
12071 It accepts the following optional parameters:
12072
12073 @table @option
12074 @item luma_spatial
12075 A non-negative floating point number which specifies spatial luma strength.
12076 It defaults to 4.0.
12077
12078 @item chroma_spatial
12079 A non-negative floating point number which specifies spatial chroma strength.
12080 It defaults to 3.0*@var{luma_spatial}/4.0.
12081
12082 @item luma_tmp
12083 A floating point number which specifies luma temporal strength. It defaults to
12084 6.0*@var{luma_spatial}/4.0.
12085
12086 @item chroma_tmp
12087 A floating point number which specifies chroma temporal strength. It defaults to
12088 @var{luma_tmp}*@var{chroma_spatial}/@var{luma_spatial}.
12089 @end table
12090
12091 @subsection Commands
12092 This filter supports same @ref{commands} as options.
12093 The command accepts the same syntax of the corresponding option.
12094
12095 If the specified expression is not valid, it is kept at its current
12096 value.
12097
12098 @anchor{hwdownload}
12099 @section hwdownload
12100
12101 Download hardware frames to system memory.
12102
12103 The input must be in hardware frames, and the output a non-hardware format.
12104 Not all formats will be supported on the output - it may be necessary to insert
12105 an additional @option{format} filter immediately following in the graph to get
12106 the output in a supported format.
12107
12108 @section hwmap
12109
12110 Map hardware frames to system memory or to another device.
12111
12112 This filter has several different modes of operation; which one is used depends
12113 on the input and output formats:
12114 @itemize
12115 @item
12116 Hardware frame input, normal frame output
12117
12118 Map the input frames to system memory and pass them to the output.  If the
12119 original hardware frame is later required (for example, after overlaying
12120 something else on part of it), the @option{hwmap} filter can be used again
12121 in the next mode to retrieve it.
12122 @item
12123 Normal frame input, hardware frame output
12124
12125 If the input is actually a software-mapped hardware frame, then unmap it -
12126 that is, return the original hardware frame.
12127
12128 Otherwise, a device must be provided.  Create new hardware surfaces on that
12129 device for the output, then map them back to the software format at the input
12130 and give those frames to the preceding filter.  This will then act like the
12131 @option{hwupload} filter, but may be able to avoid an additional copy when
12132 the input is already in a compatible format.
12133 @item
12134 Hardware frame input and output
12135
12136 A device must be supplied for the output, either directly or with the
12137 @option{derive_device} option.  The input and output devices must be of
12138 different types and compatible - the exact meaning of this is
12139 system-dependent, but typically it means that they must refer to the same
12140 underlying hardware context (for example, refer to the same graphics card).
12141
12142 If the input frames were originally created on the output device, then unmap
12143 to retrieve the original frames.
12144
12145 Otherwise, map the frames to the output device - create new hardware frames
12146 on the output corresponding to the frames on the input.
12147 @end itemize
12148
12149 The following additional parameters are accepted:
12150
12151 @table @option
12152 @item mode
12153 Set the frame mapping mode.  Some combination of:
12154 @table @var
12155 @item read
12156 The mapped frame should be readable.
12157 @item write
12158 The mapped frame should be writeable.
12159 @item overwrite
12160 The mapping will always overwrite the entire frame.
12161
12162 This may improve performance in some cases, as the original contents of the
12163 frame need not be loaded.
12164 @item direct
12165 The mapping must not involve any copying.
12166
12167 Indirect mappings to copies of frames are created in some cases where either
12168 direct mapping is not possible or it would have unexpected properties.
12169 Setting this flag ensures that the mapping is direct and will fail if that is
12170 not possible.
12171 @end table
12172 Defaults to @var{read+write} if not specified.
12173
12174 @item derive_device @var{type}
12175 Rather than using the device supplied at initialisation, instead derive a new
12176 device of type @var{type} from the device the input frames exist on.
12177
12178 @item reverse
12179 In a hardware to hardware mapping, map in reverse - create frames in the sink
12180 and map them back to the source.  This may be necessary in some cases where
12181 a mapping in one direction is required but only the opposite direction is
12182 supported by the devices being used.
12183
12184 This option is dangerous - it may break the preceding filter in undefined
12185 ways if there are any additional constraints on that filter's output.
12186 Do not use it without fully understanding the implications of its use.
12187 @end table
12188
12189 @anchor{hwupload}
12190 @section hwupload
12191
12192 Upload system memory frames to hardware surfaces.
12193
12194 The device to upload to must be supplied when the filter is initialised.  If
12195 using ffmpeg, select the appropriate device with the @option{-filter_hw_device}
12196 option or with the @option{derive_device} option.  The input and output devices
12197 must be of different types and compatible - the exact meaning of this is
12198 system-dependent, but typically it means that they must refer to the same
12199 underlying hardware context (for example, refer to the same graphics card).
12200
12201 The following additional parameters are accepted:
12202
12203 @table @option
12204 @item derive_device @var{type}
12205 Rather than using the device supplied at initialisation, instead derive a new
12206 device of type @var{type} from the device the input frames exist on.
12207 @end table
12208
12209 @anchor{hwupload_cuda}
12210 @section hwupload_cuda
12211
12212 Upload system memory frames to a CUDA device.
12213
12214 It accepts the following optional parameters:
12215
12216 @table @option
12217 @item device
12218 The number of the CUDA device to use
12219 @end table
12220
12221 @section hqx
12222
12223 Apply a high-quality magnification filter designed for pixel art. This filter
12224 was originally created by Maxim Stepin.
12225
12226 It accepts the following option:
12227
12228 @table @option
12229 @item n
12230 Set the scaling dimension: @code{2} for @code{hq2x}, @code{3} for
12231 @code{hq3x} and @code{4} for @code{hq4x}.
12232 Default is @code{3}.
12233 @end table
12234
12235 @section hstack
12236 Stack input videos horizontally.
12237
12238 All streams must be of same pixel format and of same height.
12239
12240 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
12241 to create same output.
12242
12243 The filter accepts the following option:
12244
12245 @table @option
12246 @item inputs
12247 Set number of input streams. Default is 2.
12248
12249 @item shortest
12250 If set to 1, force the output to terminate when the shortest input
12251 terminates. Default value is 0.
12252 @end table
12253
12254 @section hue
12255
12256 Modify the hue and/or the saturation of the input.
12257
12258 It accepts the following parameters:
12259
12260 @table @option
12261 @item h
12262 Specify the hue angle as a number of degrees. It accepts an expression,
12263 and defaults to "0".
12264
12265 @item s
12266 Specify the saturation in the [-10,10] range. It accepts an expression and
12267 defaults to "1".
12268
12269 @item H
12270 Specify the hue angle as a number of radians. It accepts an
12271 expression, and defaults to "0".
12272
12273 @item b
12274 Specify the brightness in the [-10,10] range. It accepts an expression and
12275 defaults to "0".
12276 @end table
12277
12278 @option{h} and @option{H} are mutually exclusive, and can't be
12279 specified at the same time.
12280
12281 The @option{b}, @option{h}, @option{H} and @option{s} option values are
12282 expressions containing the following constants:
12283
12284 @table @option
12285 @item n
12286 frame count of the input frame starting from 0
12287
12288 @item pts
12289 presentation timestamp of the input frame expressed in time base units
12290
12291 @item r
12292 frame rate of the input video, NAN if the input frame rate is unknown
12293
12294 @item t
12295 timestamp expressed in seconds, NAN if the input timestamp is unknown
12296
12297 @item tb
12298 time base of the input video
12299 @end table
12300
12301 @subsection Examples
12302
12303 @itemize
12304 @item
12305 Set the hue to 90 degrees and the saturation to 1.0:
12306 @example
12307 hue=h=90:s=1
12308 @end example
12309
12310 @item
12311 Same command but expressing the hue in radians:
12312 @example
12313 hue=H=PI/2:s=1
12314 @end example
12315
12316 @item
12317 Rotate hue and make the saturation swing between 0
12318 and 2 over a period of 1 second:
12319 @example
12320 hue="H=2*PI*t: s=sin(2*PI*t)+1"
12321 @end example
12322
12323 @item
12324 Apply a 3 seconds saturation fade-in effect starting at 0:
12325 @example
12326 hue="s=min(t/3\,1)"
12327 @end example
12328
12329 The general fade-in expression can be written as:
12330 @example
12331 hue="s=min(0\, max((t-START)/DURATION\, 1))"
12332 @end example
12333
12334 @item
12335 Apply a 3 seconds saturation fade-out effect starting at 5 seconds:
12336 @example
12337 hue="s=max(0\, min(1\, (8-t)/3))"
12338 @end example
12339
12340 The general fade-out expression can be written as:
12341 @example
12342 hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
12343 @end example
12344
12345 @end itemize
12346
12347 @subsection Commands
12348
12349 This filter supports the following commands:
12350 @table @option
12351 @item b
12352 @item s
12353 @item h
12354 @item H
12355 Modify the hue and/or the saturation and/or brightness of the input video.
12356 The command accepts the same syntax of the corresponding option.
12357
12358 If the specified expression is not valid, it is kept at its current
12359 value.
12360 @end table
12361
12362 @section hysteresis
12363
12364 Grow first stream into second stream by connecting components.
12365 This makes it possible to build more robust edge masks.
12366
12367 This filter accepts the following options:
12368
12369 @table @option
12370 @item planes
12371 Set which planes will be processed as bitmap, unprocessed planes will be
12372 copied from first stream.
12373 By default value 0xf, all planes will be processed.
12374
12375 @item threshold
12376 Set threshold which is used in filtering. If pixel component value is higher than
12377 this value filter algorithm for connecting components is activated.
12378 By default value is 0.
12379 @end table
12380
12381 The @code{hysteresis} filter also supports the @ref{framesync} options.
12382
12383 @section idet
12384
12385 Detect video interlacing type.
12386
12387 This filter tries to detect if the input frames are interlaced, progressive,
12388 top or bottom field first. It will also try to detect fields that are
12389 repeated between adjacent frames (a sign of telecine).
12390
12391 Single frame detection considers only immediately adjacent frames when classifying each frame.
12392 Multiple frame detection incorporates the classification history of previous frames.
12393
12394 The filter will log these metadata values:
12395
12396 @table @option
12397 @item single.current_frame
12398 Detected type of current frame using single-frame detection. One of:
12399 ``tff'' (top field first), ``bff'' (bottom field first),
12400 ``progressive'', or ``undetermined''
12401
12402 @item single.tff
12403 Cumulative number of frames detected as top field first using single-frame detection.
12404
12405 @item multiple.tff
12406 Cumulative number of frames detected as top field first using multiple-frame detection.
12407
12408 @item single.bff
12409 Cumulative number of frames detected as bottom field first using single-frame detection.
12410
12411 @item multiple.current_frame
12412 Detected type of current frame using multiple-frame detection. One of:
12413 ``tff'' (top field first), ``bff'' (bottom field first),
12414 ``progressive'', or ``undetermined''
12415
12416 @item multiple.bff
12417 Cumulative number of frames detected as bottom field first using multiple-frame detection.
12418
12419 @item single.progressive
12420 Cumulative number of frames detected as progressive using single-frame detection.
12421
12422 @item multiple.progressive
12423 Cumulative number of frames detected as progressive using multiple-frame detection.
12424
12425 @item single.undetermined
12426 Cumulative number of frames that could not be classified using single-frame detection.
12427
12428 @item multiple.undetermined
12429 Cumulative number of frames that could not be classified using multiple-frame detection.
12430
12431 @item repeated.current_frame
12432 Which field in the current frame is repeated from the last. One of ``neither'', ``top'', or ``bottom''.
12433
12434 @item repeated.neither
12435 Cumulative number of frames with no repeated field.
12436
12437 @item repeated.top
12438 Cumulative number of frames with the top field repeated from the previous frame's top field.
12439
12440 @item repeated.bottom
12441 Cumulative number of frames with the bottom field repeated from the previous frame's bottom field.
12442 @end table
12443
12444 The filter accepts the following options:
12445
12446 @table @option
12447 @item intl_thres
12448 Set interlacing threshold.
12449 @item prog_thres
12450 Set progressive threshold.
12451 @item rep_thres
12452 Threshold for repeated field detection.
12453 @item half_life
12454 Number of frames after which a given frame's contribution to the
12455 statistics is halved (i.e., it contributes only 0.5 to its
12456 classification). The default of 0 means that all frames seen are given
12457 full weight of 1.0 forever.
12458 @item analyze_interlaced_flag
12459 When this is not 0 then idet will use the specified number of frames to determine
12460 if the interlaced flag is accurate, it will not count undetermined frames.
12461 If the flag is found to be accurate it will be used without any further
12462 computations, if it is found to be inaccurate it will be cleared without any
12463 further computations. This allows inserting the idet filter as a low computational
12464 method to clean up the interlaced flag
12465 @end table
12466
12467 @section il
12468
12469 Deinterleave or interleave fields.
12470
12471 This filter allows one to process interlaced images fields without
12472 deinterlacing them. Deinterleaving splits the input frame into 2
12473 fields (so called half pictures). Odd lines are moved to the top
12474 half of the output image, even lines to the bottom half.
12475 You can process (filter) them independently and then re-interleave them.
12476
12477 The filter accepts the following options:
12478
12479 @table @option
12480 @item luma_mode, l
12481 @item chroma_mode, c
12482 @item alpha_mode, a
12483 Available values for @var{luma_mode}, @var{chroma_mode} and
12484 @var{alpha_mode} are:
12485
12486 @table @samp
12487 @item none
12488 Do nothing.
12489
12490 @item deinterleave, d
12491 Deinterleave fields, placing one above the other.
12492
12493 @item interleave, i
12494 Interleave fields. Reverse the effect of deinterleaving.
12495 @end table
12496 Default value is @code{none}.
12497
12498 @item luma_swap, ls
12499 @item chroma_swap, cs
12500 @item alpha_swap, as
12501 Swap luma/chroma/alpha fields. Exchange even & odd lines. Default value is @code{0}.
12502 @end table
12503
12504 @subsection Commands
12505
12506 This filter supports the all above options as @ref{commands}.
12507
12508 @section inflate
12509
12510 Apply inflate effect to the video.
12511
12512 This filter replaces the pixel by the local(3x3) average by taking into account
12513 only values higher than the pixel.
12514
12515 It accepts the following options:
12516
12517 @table @option
12518 @item threshold0
12519 @item threshold1
12520 @item threshold2
12521 @item threshold3
12522 Limit the maximum change for each plane, default is 65535.
12523 If 0, plane will remain unchanged.
12524 @end table
12525
12526 @subsection Commands
12527
12528 This filter supports the all above options as @ref{commands}.
12529
12530 @section interlace
12531
12532 Simple interlacing filter from progressive contents. This interleaves upper (or
12533 lower) lines from odd frames with lower (or upper) lines from even frames,
12534 halving the frame rate and preserving image height.
12535
12536 @example
12537    Original        Original             New Frame
12538    Frame 'j'      Frame 'j+1'             (tff)
12539   ==========      ===========       ==================
12540     Line 0  -------------------->    Frame 'j' Line 0
12541     Line 1          Line 1  ---->   Frame 'j+1' Line 1
12542     Line 2 --------------------->    Frame 'j' Line 2
12543     Line 3          Line 3  ---->   Frame 'j+1' Line 3
12544      ...             ...                   ...
12545 New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
12546 @end example
12547
12548 It accepts the following optional parameters:
12549
12550 @table @option
12551 @item scan
12552 This determines whether the interlaced frame is taken from the even
12553 (tff - default) or odd (bff) lines of the progressive frame.
12554
12555 @item lowpass
12556 Vertical lowpass filter to avoid twitter interlacing and
12557 reduce moire patterns.
12558
12559 @table @samp
12560 @item 0, off
12561 Disable vertical lowpass filter
12562
12563 @item 1, linear
12564 Enable linear filter (default)
12565
12566 @item 2, complex
12567 Enable complex filter. This will slightly less reduce twitter and moire
12568 but better retain detail and subjective sharpness impression.
12569
12570 @end table
12571 @end table
12572
12573 @section kerndeint
12574
12575 Deinterlace input video by applying Donald Graft's adaptive kernel
12576 deinterling. Work on interlaced parts of a video to produce
12577 progressive frames.
12578
12579 The description of the accepted parameters follows.
12580
12581 @table @option
12582 @item thresh
12583 Set the threshold which affects the filter's tolerance when
12584 determining if a pixel line must be processed. It must be an integer
12585 in the range [0,255] and defaults to 10. A value of 0 will result in
12586 applying the process on every pixels.
12587
12588 @item map
12589 Paint pixels exceeding the threshold value to white if set to 1.
12590 Default is 0.
12591
12592 @item order
12593 Set the fields order. Swap fields if set to 1, leave fields alone if
12594 0. Default is 0.
12595
12596 @item sharp
12597 Enable additional sharpening if set to 1. Default is 0.
12598
12599 @item twoway
12600 Enable twoway sharpening if set to 1. Default is 0.
12601 @end table
12602
12603 @subsection Examples
12604
12605 @itemize
12606 @item
12607 Apply default values:
12608 @example
12609 kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
12610 @end example
12611
12612 @item
12613 Enable additional sharpening:
12614 @example
12615 kerndeint=sharp=1
12616 @end example
12617
12618 @item
12619 Paint processed pixels in white:
12620 @example
12621 kerndeint=map=1
12622 @end example
12623 @end itemize
12624
12625 @section lagfun
12626
12627 Slowly update darker pixels.
12628
12629 This filter makes short flashes of light appear longer.
12630 This filter accepts the following options:
12631
12632 @table @option
12633 @item decay
12634 Set factor for decaying. Default is .95. Allowed range is from 0 to 1.
12635
12636 @item planes
12637 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
12638 @end table
12639
12640 @section lenscorrection
12641
12642 Correct radial lens distortion
12643
12644 This filter can be used to correct for radial distortion as can result from the use
12645 of wide angle lenses, and thereby re-rectify the image. To find the right parameters
12646 one can use tools available for example as part of opencv or simply trial-and-error.
12647 To use opencv use the calibration sample (under samples/cpp) from the opencv sources
12648 and extract the k1 and k2 coefficients from the resulting matrix.
12649
12650 Note that effectively the same filter is available in the open-source tools Krita and
12651 Digikam from the KDE project.
12652
12653 In contrast to the @ref{vignette} filter, which can also be used to compensate lens errors,
12654 this filter corrects the distortion of the image, whereas @ref{vignette} corrects the
12655 brightness distribution, so you may want to use both filters together in certain
12656 cases, though you will have to take care of ordering, i.e. whether vignetting should
12657 be applied before or after lens correction.
12658
12659 @subsection Options
12660
12661 The filter accepts the following options:
12662
12663 @table @option
12664 @item cx
12665 Relative x-coordinate of the focal point of the image, and thereby the center of the
12666 distortion. This value has a range [0,1] and is expressed as fractions of the image
12667 width. Default is 0.5.
12668 @item cy
12669 Relative y-coordinate of the focal point of the image, and thereby the center of the
12670 distortion. This value has a range [0,1] and is expressed as fractions of the image
12671 height. Default is 0.5.
12672 @item k1
12673 Coefficient of the quadratic correction term. This value has a range [-1,1]. 0 means
12674 no correction. Default is 0.
12675 @item k2
12676 Coefficient of the double quadratic correction term. This value has a range [-1,1].
12677 0 means no correction. Default is 0.
12678 @end table
12679
12680 The formula that generates the correction is:
12681
12682 @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)
12683
12684 where @var{r_0} is halve of the image diagonal and @var{r_src} and @var{r_tgt} are the
12685 distances from the focal point in the source and target images, respectively.
12686
12687 @section lensfun
12688
12689 Apply lens correction via the lensfun library (@url{http://lensfun.sourceforge.net/}).
12690
12691 The @code{lensfun} filter requires the camera make, camera model, and lens model
12692 to apply the lens correction. The filter will load the lensfun database and
12693 query it to find the corresponding camera and lens entries in the database. As
12694 long as these entries can be found with the given options, the filter can
12695 perform corrections on frames. Note that incomplete strings will result in the
12696 filter choosing the best match with the given options, and the filter will
12697 output the chosen camera and lens models (logged with level "info"). You must
12698 provide the make, camera model, and lens model as they are required.
12699
12700 The filter accepts the following options:
12701
12702 @table @option
12703 @item make
12704 The make of the camera (for example, "Canon"). This option is required.
12705
12706 @item model
12707 The model of the camera (for example, "Canon EOS 100D"). This option is
12708 required.
12709
12710 @item lens_model
12711 The model of the lens (for example, "Canon EF-S 18-55mm f/3.5-5.6 IS STM"). This
12712 option is required.
12713
12714 @item mode
12715 The type of correction to apply. The following values are valid options:
12716
12717 @table @samp
12718 @item vignetting
12719 Enables fixing lens vignetting.
12720
12721 @item geometry
12722 Enables fixing lens geometry. This is the default.
12723
12724 @item subpixel
12725 Enables fixing chromatic aberrations.
12726
12727 @item vig_geo
12728 Enables fixing lens vignetting and lens geometry.
12729
12730 @item vig_subpixel
12731 Enables fixing lens vignetting and chromatic aberrations.
12732
12733 @item distortion
12734 Enables fixing both lens geometry and chromatic aberrations.
12735
12736 @item all
12737 Enables all possible corrections.
12738
12739 @end table
12740 @item focal_length
12741 The focal length of the image/video (zoom; expected constant for video). For
12742 example, a 18--55mm lens has focal length range of [18--55], so a value in that
12743 range should be chosen when using that lens. Default 18.
12744
12745 @item aperture
12746 The aperture of the image/video (expected constant for video). Note that
12747 aperture is only used for vignetting correction. Default 3.5.
12748
12749 @item focus_distance
12750 The focus distance of the image/video (expected constant for video). Note that
12751 focus distance is only used for vignetting and only slightly affects the
12752 vignetting correction process. If unknown, leave it at the default value (which
12753 is 1000).
12754
12755 @item scale
12756 The scale factor which is applied after transformation. After correction the
12757 video is no longer necessarily rectangular. This parameter controls how much of
12758 the resulting image is visible. The value 0 means that a value will be chosen
12759 automatically such that there is little or no unmapped area in the output
12760 image. 1.0 means that no additional scaling is done. Lower values may result
12761 in more of the corrected image being visible, while higher values may avoid
12762 unmapped areas in the output.
12763
12764 @item target_geometry
12765 The target geometry of the output image/video. The following values are valid
12766 options:
12767
12768 @table @samp
12769 @item rectilinear (default)
12770 @item fisheye
12771 @item panoramic
12772 @item equirectangular
12773 @item fisheye_orthographic
12774 @item fisheye_stereographic
12775 @item fisheye_equisolid
12776 @item fisheye_thoby
12777 @end table
12778 @item reverse
12779 Apply the reverse of image correction (instead of correcting distortion, apply
12780 it).
12781
12782 @item interpolation
12783 The type of interpolation used when correcting distortion. The following values
12784 are valid options:
12785
12786 @table @samp
12787 @item nearest
12788 @item linear (default)
12789 @item lanczos
12790 @end table
12791 @end table
12792
12793 @subsection Examples
12794
12795 @itemize
12796 @item
12797 Apply lens correction with make "Canon", camera model "Canon EOS 100D", and lens
12798 model "Canon EF-S 18-55mm f/3.5-5.6 IS STM" with focal length of "18" and
12799 aperture of "8.0".
12800
12801 @example
12802 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
12803 @end example
12804
12805 @item
12806 Apply the same as before, but only for the first 5 seconds of video.
12807
12808 @example
12809 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
12810 @end example
12811
12812 @end itemize
12813
12814 @section libvmaf
12815
12816 Obtain the VMAF (Video Multi-Method Assessment Fusion)
12817 score between two input videos.
12818
12819 The obtained VMAF score is printed through the logging system.
12820
12821 It requires Netflix's vmaf library (libvmaf) as a pre-requisite.
12822 After installing the library it can be enabled using:
12823 @code{./configure --enable-libvmaf --enable-version3}.
12824 If no model path is specified it uses the default model: @code{vmaf_v0.6.1.pkl}.
12825
12826 The filter has following options:
12827
12828 @table @option
12829 @item model_path
12830 Set the model path which is to be used for SVM.
12831 Default value: @code{"/usr/local/share/model/vmaf_v0.6.1.pkl"}
12832
12833 @item log_path
12834 Set the file path to be used to store logs.
12835
12836 @item log_fmt
12837 Set the format of the log file (xml or json).
12838
12839 @item enable_transform
12840 This option can enable/disable the @code{score_transform} applied to the final predicted VMAF score,
12841 if you have specified score_transform option in the input parameter file passed to @code{run_vmaf_training.py}
12842 Default value: @code{false}
12843
12844 @item phone_model
12845 Invokes the phone model which will generate VMAF scores higher than in the
12846 regular model, which is more suitable for laptop, TV, etc. viewing conditions.
12847 Default value: @code{false}
12848
12849 @item psnr
12850 Enables computing psnr along with vmaf.
12851 Default value: @code{false}
12852
12853 @item ssim
12854 Enables computing ssim along with vmaf.
12855 Default value: @code{false}
12856
12857 @item ms_ssim
12858 Enables computing ms_ssim along with vmaf.
12859 Default value: @code{false}
12860
12861 @item pool
12862 Set the pool method to be used for computing vmaf.
12863 Options are @code{min}, @code{harmonic_mean} or @code{mean} (default).
12864
12865 @item n_threads
12866 Set number of threads to be used when computing vmaf.
12867 Default value: @code{0}, which makes use of all available logical processors.
12868
12869 @item n_subsample
12870 Set interval for frame subsampling used when computing vmaf.
12871 Default value: @code{1}
12872
12873 @item enable_conf_interval
12874 Enables confidence interval.
12875 Default value: @code{false}
12876 @end table
12877
12878 This filter also supports the @ref{framesync} options.
12879
12880 @subsection Examples
12881 @itemize
12882 @item
12883 On the below examples the input file @file{main.mpg} being processed is
12884 compared with the reference file @file{ref.mpg}.
12885
12886 @example
12887 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf -f null -
12888 @end example
12889
12890 @item
12891 Example with options:
12892 @example
12893 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf="psnr=1:log_fmt=json" -f null -
12894 @end example
12895
12896 @item
12897 Example with options and different containers:
12898 @example
12899 ffmpeg -i main.mpg -i ref.mkv -lavfi "[0:v]settb=AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=AVTB,setpts=PTS-STARTPTS[ref];[main][ref]libvmaf=psnr=1:log_fmt=json" -f null -
12900 @end example
12901 @end itemize
12902
12903 @section limiter
12904
12905 Limits the pixel components values to the specified range [min, max].
12906
12907 The filter accepts the following options:
12908
12909 @table @option
12910 @item min
12911 Lower bound. Defaults to the lowest allowed value for the input.
12912
12913 @item max
12914 Upper bound. Defaults to the highest allowed value for the input.
12915
12916 @item planes
12917 Specify which planes will be processed. Defaults to all available.
12918 @end table
12919
12920 @section loop
12921
12922 Loop video frames.
12923
12924 The filter accepts the following options:
12925
12926 @table @option
12927 @item loop
12928 Set the number of loops. Setting this value to -1 will result in infinite loops.
12929 Default is 0.
12930
12931 @item size
12932 Set maximal size in number of frames. Default is 0.
12933
12934 @item start
12935 Set first frame of loop. Default is 0.
12936 @end table
12937
12938 @subsection Examples
12939
12940 @itemize
12941 @item
12942 Loop single first frame infinitely:
12943 @example
12944 loop=loop=-1:size=1:start=0
12945 @end example
12946
12947 @item
12948 Loop single first frame 10 times:
12949 @example
12950 loop=loop=10:size=1:start=0
12951 @end example
12952
12953 @item
12954 Loop 10 first frames 5 times:
12955 @example
12956 loop=loop=5:size=10:start=0
12957 @end example
12958 @end itemize
12959
12960 @section lut1d
12961
12962 Apply a 1D LUT to an input video.
12963
12964 The filter accepts the following options:
12965
12966 @table @option
12967 @item file
12968 Set the 1D LUT file name.
12969
12970 Currently supported formats:
12971 @table @samp
12972 @item cube
12973 Iridas
12974 @item csp
12975 cineSpace
12976 @end table
12977
12978 @item interp
12979 Select interpolation mode.
12980
12981 Available values are:
12982
12983 @table @samp
12984 @item nearest
12985 Use values from the nearest defined point.
12986 @item linear
12987 Interpolate values using the linear interpolation.
12988 @item cosine
12989 Interpolate values using the cosine interpolation.
12990 @item cubic
12991 Interpolate values using the cubic interpolation.
12992 @item spline
12993 Interpolate values using the spline interpolation.
12994 @end table
12995 @end table
12996
12997 @anchor{lut3d}
12998 @section lut3d
12999
13000 Apply a 3D LUT to an input video.
13001
13002 The filter accepts the following options:
13003
13004 @table @option
13005 @item file
13006 Set the 3D LUT file name.
13007
13008 Currently supported formats:
13009 @table @samp
13010 @item 3dl
13011 AfterEffects
13012 @item cube
13013 Iridas
13014 @item dat
13015 DaVinci
13016 @item m3d
13017 Pandora
13018 @item csp
13019 cineSpace
13020 @end table
13021 @item interp
13022 Select interpolation mode.
13023
13024 Available values are:
13025
13026 @table @samp
13027 @item nearest
13028 Use values from the nearest defined point.
13029 @item trilinear
13030 Interpolate values using the 8 points defining a cube.
13031 @item tetrahedral
13032 Interpolate values using a tetrahedron.
13033 @end table
13034 @end table
13035
13036 @section lumakey
13037
13038 Turn certain luma values into transparency.
13039
13040 The filter accepts the following options:
13041
13042 @table @option
13043 @item threshold
13044 Set the luma which will be used as base for transparency.
13045 Default value is @code{0}.
13046
13047 @item tolerance
13048 Set the range of luma values to be keyed out.
13049 Default value is @code{0.01}.
13050
13051 @item softness
13052 Set the range of softness. Default value is @code{0}.
13053 Use this to control gradual transition from zero to full transparency.
13054 @end table
13055
13056 @subsection Commands
13057 This filter supports same @ref{commands} as options.
13058 The command accepts the same syntax of the corresponding option.
13059
13060 If the specified expression is not valid, it is kept at its current
13061 value.
13062
13063 @section lut, lutrgb, lutyuv
13064
13065 Compute a look-up table for binding each pixel component input value
13066 to an output value, and apply it to the input video.
13067
13068 @var{lutyuv} applies a lookup table to a YUV input video, @var{lutrgb}
13069 to an RGB input video.
13070
13071 These filters accept the following parameters:
13072 @table @option
13073 @item c0
13074 set first pixel component expression
13075 @item c1
13076 set second pixel component expression
13077 @item c2
13078 set third pixel component expression
13079 @item c3
13080 set fourth pixel component expression, corresponds to the alpha component
13081
13082 @item r
13083 set red component expression
13084 @item g
13085 set green component expression
13086 @item b
13087 set blue component expression
13088 @item a
13089 alpha component expression
13090
13091 @item y
13092 set Y/luminance component expression
13093 @item u
13094 set U/Cb component expression
13095 @item v
13096 set V/Cr component expression
13097 @end table
13098
13099 Each of them specifies the expression to use for computing the lookup table for
13100 the corresponding pixel component values.
13101
13102 The exact component associated to each of the @var{c*} options depends on the
13103 format in input.
13104
13105 The @var{lut} filter requires either YUV or RGB pixel formats in input,
13106 @var{lutrgb} requires RGB pixel formats in input, and @var{lutyuv} requires YUV.
13107
13108 The expressions can contain the following constants and functions:
13109
13110 @table @option
13111 @item w
13112 @item h
13113 The input width and height.
13114
13115 @item val
13116 The input value for the pixel component.
13117
13118 @item clipval
13119 The input value, clipped to the @var{minval}-@var{maxval} range.
13120
13121 @item maxval
13122 The maximum value for the pixel component.
13123
13124 @item minval
13125 The minimum value for the pixel component.
13126
13127 @item negval
13128 The negated value for the pixel component value, clipped to the
13129 @var{minval}-@var{maxval} range; it corresponds to the expression
13130 "maxval-clipval+minval".
13131
13132 @item clip(val)
13133 The computed value in @var{val}, clipped to the
13134 @var{minval}-@var{maxval} range.
13135
13136 @item gammaval(gamma)
13137 The computed gamma correction value of the pixel component value,
13138 clipped to the @var{minval}-@var{maxval} range. It corresponds to the
13139 expression
13140 "pow((clipval-minval)/(maxval-minval)\,@var{gamma})*(maxval-minval)+minval"
13141
13142 @end table
13143
13144 All expressions default to "val".
13145
13146 @subsection Examples
13147
13148 @itemize
13149 @item
13150 Negate input video:
13151 @example
13152 lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
13153 lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
13154 @end example
13155
13156 The above is the same as:
13157 @example
13158 lutrgb="r=negval:g=negval:b=negval"
13159 lutyuv="y=negval:u=negval:v=negval"
13160 @end example
13161
13162 @item
13163 Negate luminance:
13164 @example
13165 lutyuv=y=negval
13166 @end example
13167
13168 @item
13169 Remove chroma components, turning the video into a graytone image:
13170 @example
13171 lutyuv="u=128:v=128"
13172 @end example
13173
13174 @item
13175 Apply a luma burning effect:
13176 @example
13177 lutyuv="y=2*val"
13178 @end example
13179
13180 @item
13181 Remove green and blue components:
13182 @example
13183 lutrgb="g=0:b=0"
13184 @end example
13185
13186 @item
13187 Set a constant alpha channel value on input:
13188 @example
13189 format=rgba,lutrgb=a="maxval-minval/2"
13190 @end example
13191
13192 @item
13193 Correct luminance gamma by a factor of 0.5:
13194 @example
13195 lutyuv=y=gammaval(0.5)
13196 @end example
13197
13198 @item
13199 Discard least significant bits of luma:
13200 @example
13201 lutyuv=y='bitand(val, 128+64+32)'
13202 @end example
13203
13204 @item
13205 Technicolor like effect:
13206 @example
13207 lutyuv=u='(val-maxval/2)*2+maxval/2':v='(val-maxval/2)*2+maxval/2'
13208 @end example
13209 @end itemize
13210
13211 @section lut2, tlut2
13212
13213 The @code{lut2} filter takes two input streams and outputs one
13214 stream.
13215
13216 The @code{tlut2} (time lut2) filter takes two consecutive frames
13217 from one single stream.
13218
13219 This filter accepts the following parameters:
13220 @table @option
13221 @item c0
13222 set first pixel component expression
13223 @item c1
13224 set second pixel component expression
13225 @item c2
13226 set third pixel component expression
13227 @item c3
13228 set fourth pixel component expression, corresponds to the alpha component
13229
13230 @item d
13231 set output bit depth, only available for @code{lut2} filter. By default is 0,
13232 which means bit depth is automatically picked from first input format.
13233 @end table
13234
13235 The @code{lut2} filter also supports the @ref{framesync} options.
13236
13237 Each of them specifies the expression to use for computing the lookup table for
13238 the corresponding pixel component values.
13239
13240 The exact component associated to each of the @var{c*} options depends on the
13241 format in inputs.
13242
13243 The expressions can contain the following constants:
13244
13245 @table @option
13246 @item w
13247 @item h
13248 The input width and height.
13249
13250 @item x
13251 The first input value for the pixel component.
13252
13253 @item y
13254 The second input value for the pixel component.
13255
13256 @item bdx
13257 The first input video bit depth.
13258
13259 @item bdy
13260 The second input video bit depth.
13261 @end table
13262
13263 All expressions default to "x".
13264
13265 @subsection Examples
13266
13267 @itemize
13268 @item
13269 Highlight differences between two RGB video streams:
13270 @example
13271 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)'
13272 @end example
13273
13274 @item
13275 Highlight differences between two YUV video streams:
13276 @example
13277 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)'
13278 @end example
13279
13280 @item
13281 Show max difference between two video streams:
13282 @example
13283 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)))'
13284 @end example
13285 @end itemize
13286
13287 @section maskedclamp
13288
13289 Clamp the first input stream with the second input and third input stream.
13290
13291 Returns the value of first stream to be between second input
13292 stream - @code{undershoot} and third input stream + @code{overshoot}.
13293
13294 This filter accepts the following options:
13295 @table @option
13296 @item undershoot
13297 Default value is @code{0}.
13298
13299 @item overshoot
13300 Default value is @code{0}.
13301
13302 @item planes
13303 Set which planes will be processed as bitmap, unprocessed planes will be
13304 copied from first stream.
13305 By default value 0xf, all planes will be processed.
13306 @end table
13307
13308 @section maskedmax
13309
13310 Merge the second and third input stream into output stream using absolute differences
13311 between second input stream and first input stream and absolute difference between
13312 third input stream and first input stream. The picked value will be from second input
13313 stream if second absolute difference is greater than first one or from third input stream
13314 otherwise.
13315
13316 This filter accepts the following options:
13317 @table @option
13318 @item planes
13319 Set which planes will be processed as bitmap, unprocessed planes will be
13320 copied from first stream.
13321 By default value 0xf, all planes will be processed.
13322 @end table
13323
13324 @section maskedmerge
13325
13326 Merge the first input stream with the second input stream using per pixel
13327 weights in the third input stream.
13328
13329 A value of 0 in the third stream pixel component means that pixel component
13330 from first stream is returned unchanged, while maximum value (eg. 255 for
13331 8-bit videos) means that pixel component from second stream is returned
13332 unchanged. Intermediate values define the amount of merging between both
13333 input stream's pixel components.
13334
13335 This filter accepts the following options:
13336 @table @option
13337 @item planes
13338 Set which planes will be processed as bitmap, unprocessed planes will be
13339 copied from first stream.
13340 By default value 0xf, all planes will be processed.
13341 @end table
13342
13343 @section maskedmin
13344
13345 Merge the second and third input stream into output stream using absolute differences
13346 between second input stream and first input stream and absolute difference between
13347 third input stream and first input stream. The picked value will be from second input
13348 stream if second absolute difference is less than first one or from third input stream
13349 otherwise.
13350
13351 This filter accepts the following options:
13352 @table @option
13353 @item planes
13354 Set which planes will be processed as bitmap, unprocessed planes will be
13355 copied from first stream.
13356 By default value 0xf, all planes will be processed.
13357 @end table
13358
13359 @section maskedthreshold
13360 Pick pixels comparing absolute difference of two video streams with fixed
13361 threshold.
13362
13363 If absolute difference between pixel component of first and second video
13364 stream is equal or lower than user supplied threshold than pixel component
13365 from first video stream is picked, otherwise pixel component from second
13366 video stream is picked.
13367
13368 This filter accepts the following options:
13369 @table @option
13370 @item threshold
13371 Set threshold used when picking pixels from absolute difference from two input
13372 video streams.
13373
13374 @item planes
13375 Set which planes will be processed as bitmap, unprocessed planes will be
13376 copied from second stream.
13377 By default value 0xf, all planes will be processed.
13378 @end table
13379
13380 @section maskfun
13381 Create mask from input video.
13382
13383 For example it is useful to create motion masks after @code{tblend} filter.
13384
13385 This filter accepts the following options:
13386
13387 @table @option
13388 @item low
13389 Set low threshold. Any pixel component lower or exact than this value will be set to 0.
13390
13391 @item high
13392 Set high threshold. Any pixel component higher than this value will be set to max value
13393 allowed for current pixel format.
13394
13395 @item planes
13396 Set planes to filter, by default all available planes are filtered.
13397
13398 @item fill
13399 Fill all frame pixels with this value.
13400
13401 @item sum
13402 Set max average pixel value for frame. If sum of all pixel components is higher that this
13403 average, output frame will be completely filled with value set by @var{fill} option.
13404 Typically useful for scene changes when used in combination with @code{tblend} filter.
13405 @end table
13406
13407 @section mcdeint
13408
13409 Apply motion-compensation deinterlacing.
13410
13411 It needs one field per frame as input and must thus be used together
13412 with yadif=1/3 or equivalent.
13413
13414 This filter accepts the following options:
13415 @table @option
13416 @item mode
13417 Set the deinterlacing mode.
13418
13419 It accepts one of the following values:
13420 @table @samp
13421 @item fast
13422 @item medium
13423 @item slow
13424 use iterative motion estimation
13425 @item extra_slow
13426 like @samp{slow}, but use multiple reference frames.
13427 @end table
13428 Default value is @samp{fast}.
13429
13430 @item parity
13431 Set the picture field parity assumed for the input video. It must be
13432 one of the following values:
13433
13434 @table @samp
13435 @item 0, tff
13436 assume top field first
13437 @item 1, bff
13438 assume bottom field first
13439 @end table
13440
13441 Default value is @samp{bff}.
13442
13443 @item qp
13444 Set per-block quantization parameter (QP) used by the internal
13445 encoder.
13446
13447 Higher values should result in a smoother motion vector field but less
13448 optimal individual vectors. Default value is 1.
13449 @end table
13450
13451 @section median
13452
13453 Pick median pixel from certain rectangle defined by radius.
13454
13455 This filter accepts the following options:
13456
13457 @table @option
13458 @item radius
13459 Set horizontal radius size. Default value is @code{1}.
13460 Allowed range is integer from 1 to 127.
13461
13462 @item planes
13463 Set which planes to process. Default is @code{15}, which is all available planes.
13464
13465 @item radiusV
13466 Set vertical radius size. Default value is @code{0}.
13467 Allowed range is integer from 0 to 127.
13468 If it is 0, value will be picked from horizontal @code{radius} option.
13469
13470 @item percentile
13471 Set median percentile. Default value is @code{0.5}.
13472 Default value of @code{0.5} will pick always median values, while @code{0} will pick
13473 minimum values, and @code{1} maximum values.
13474 @end table
13475
13476 @subsection Commands
13477 This filter supports same @ref{commands} as options.
13478 The command accepts the same syntax of the corresponding option.
13479
13480 If the specified expression is not valid, it is kept at its current
13481 value.
13482
13483 @section mergeplanes
13484
13485 Merge color channel components from several video streams.
13486
13487 The filter accepts up to 4 input streams, and merge selected input
13488 planes to the output video.
13489
13490 This filter accepts the following options:
13491 @table @option
13492 @item mapping
13493 Set input to output plane mapping. Default is @code{0}.
13494
13495 The mappings is specified as a bitmap. It should be specified as a
13496 hexadecimal number in the form 0xAa[Bb[Cc[Dd]]]. 'Aa' describes the
13497 mapping for the first plane of the output stream. 'A' sets the number of
13498 the input stream to use (from 0 to 3), and 'a' the plane number of the
13499 corresponding input to use (from 0 to 3). The rest of the mappings is
13500 similar, 'Bb' describes the mapping for the output stream second
13501 plane, 'Cc' describes the mapping for the output stream third plane and
13502 'Dd' describes the mapping for the output stream fourth plane.
13503
13504 @item format
13505 Set output pixel format. Default is @code{yuva444p}.
13506 @end table
13507
13508 @subsection Examples
13509
13510 @itemize
13511 @item
13512 Merge three gray video streams of same width and height into single video stream:
13513 @example
13514 [a0][a1][a2]mergeplanes=0x001020:yuv444p
13515 @end example
13516
13517 @item
13518 Merge 1st yuv444p stream and 2nd gray video stream into yuva444p video stream:
13519 @example
13520 [a0][a1]mergeplanes=0x00010210:yuva444p
13521 @end example
13522
13523 @item
13524 Swap Y and A plane in yuva444p stream:
13525 @example
13526 format=yuva444p,mergeplanes=0x03010200:yuva444p
13527 @end example
13528
13529 @item
13530 Swap U and V plane in yuv420p stream:
13531 @example
13532 format=yuv420p,mergeplanes=0x000201:yuv420p
13533 @end example
13534
13535 @item
13536 Cast a rgb24 clip to yuv444p:
13537 @example
13538 format=rgb24,mergeplanes=0x000102:yuv444p
13539 @end example
13540 @end itemize
13541
13542 @section mestimate
13543
13544 Estimate and export motion vectors using block matching algorithms.
13545 Motion vectors are stored in frame side data to be used by other filters.
13546
13547 This filter accepts the following options:
13548 @table @option
13549 @item method
13550 Specify the motion estimation method. Accepts one of the following values:
13551
13552 @table @samp
13553 @item esa
13554 Exhaustive search algorithm.
13555 @item tss
13556 Three step search algorithm.
13557 @item tdls
13558 Two dimensional logarithmic search algorithm.
13559 @item ntss
13560 New three step search algorithm.
13561 @item fss
13562 Four step search algorithm.
13563 @item ds
13564 Diamond search algorithm.
13565 @item hexbs
13566 Hexagon-based search algorithm.
13567 @item epzs
13568 Enhanced predictive zonal search algorithm.
13569 @item umh
13570 Uneven multi-hexagon search algorithm.
13571 @end table
13572 Default value is @samp{esa}.
13573
13574 @item mb_size
13575 Macroblock size. Default @code{16}.
13576
13577 @item search_param
13578 Search parameter. Default @code{7}.
13579 @end table
13580
13581 @section midequalizer
13582
13583 Apply Midway Image Equalization effect using two video streams.
13584
13585 Midway Image Equalization adjusts a pair of images to have the same
13586 histogram, while maintaining their dynamics as much as possible. It's
13587 useful for e.g. matching exposures from a pair of stereo cameras.
13588
13589 This filter has two inputs and one output, which must be of same pixel format, but
13590 may be of different sizes. The output of filter is first input adjusted with
13591 midway histogram of both inputs.
13592
13593 This filter accepts the following option:
13594
13595 @table @option
13596 @item planes
13597 Set which planes to process. Default is @code{15}, which is all available planes.
13598 @end table
13599
13600 @section minterpolate
13601
13602 Convert the video to specified frame rate using motion interpolation.
13603
13604 This filter accepts the following options:
13605 @table @option
13606 @item fps
13607 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}.
13608
13609 @item mi_mode
13610 Motion interpolation mode. Following values are accepted:
13611 @table @samp
13612 @item dup
13613 Duplicate previous or next frame for interpolating new ones.
13614 @item blend
13615 Blend source frames. Interpolated frame is mean of previous and next frames.
13616 @item mci
13617 Motion compensated interpolation. Following options are effective when this mode is selected:
13618
13619 @table @samp
13620 @item mc_mode
13621 Motion compensation mode. Following values are accepted:
13622 @table @samp
13623 @item obmc
13624 Overlapped block motion compensation.
13625 @item aobmc
13626 Adaptive overlapped block motion compensation. Window weighting coefficients are controlled adaptively according to the reliabilities of the neighboring motion vectors to reduce oversmoothing.
13627 @end table
13628 Default mode is @samp{obmc}.
13629
13630 @item me_mode
13631 Motion estimation mode. Following values are accepted:
13632 @table @samp
13633 @item bidir
13634 Bidirectional motion estimation. Motion vectors are estimated for each source frame in both forward and backward directions.
13635 @item bilat
13636 Bilateral motion estimation. Motion vectors are estimated directly for interpolated frame.
13637 @end table
13638 Default mode is @samp{bilat}.
13639
13640 @item me
13641 The algorithm to be used for motion estimation. Following values are accepted:
13642 @table @samp
13643 @item esa
13644 Exhaustive search algorithm.
13645 @item tss
13646 Three step search algorithm.
13647 @item tdls
13648 Two dimensional logarithmic search algorithm.
13649 @item ntss
13650 New three step search algorithm.
13651 @item fss
13652 Four step search algorithm.
13653 @item ds
13654 Diamond search algorithm.
13655 @item hexbs
13656 Hexagon-based search algorithm.
13657 @item epzs
13658 Enhanced predictive zonal search algorithm.
13659 @item umh
13660 Uneven multi-hexagon search algorithm.
13661 @end table
13662 Default algorithm is @samp{epzs}.
13663
13664 @item mb_size
13665 Macroblock size. Default @code{16}.
13666
13667 @item search_param
13668 Motion estimation search parameter. Default @code{32}.
13669
13670 @item vsbmc
13671 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).
13672 @end table
13673 @end table
13674
13675 @item scd
13676 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:
13677 @table @samp
13678 @item none
13679 Disable scene change detection.
13680 @item fdiff
13681 Frame difference. Corresponding pixel values are compared and if it satisfies @var{scd_threshold} scene change is detected.
13682 @end table
13683 Default method is @samp{fdiff}.
13684
13685 @item scd_threshold
13686 Scene change detection threshold. Default is @code{10.}.
13687 @end table
13688
13689 @section mix
13690
13691 Mix several video input streams into one video stream.
13692
13693 A description of the accepted options follows.
13694
13695 @table @option
13696 @item nb_inputs
13697 The number of inputs. If unspecified, it defaults to 2.
13698
13699 @item weights
13700 Specify weight of each input video stream as sequence.
13701 Each weight is separated by space. If number of weights
13702 is smaller than number of @var{frames} last specified
13703 weight will be used for all remaining unset weights.
13704
13705 @item scale
13706 Specify scale, if it is set it will be multiplied with sum
13707 of each weight multiplied with pixel values to give final destination
13708 pixel value. By default @var{scale} is auto scaled to sum of weights.
13709
13710 @item duration
13711 Specify how end of stream is determined.
13712 @table @samp
13713 @item longest
13714 The duration of the longest input. (default)
13715
13716 @item shortest
13717 The duration of the shortest input.
13718
13719 @item first
13720 The duration of the first input.
13721 @end table
13722 @end table
13723
13724 @section mpdecimate
13725
13726 Drop frames that do not differ greatly from the previous frame in
13727 order to reduce frame rate.
13728
13729 The main use of this filter is for very-low-bitrate encoding
13730 (e.g. streaming over dialup modem), but it could in theory be used for
13731 fixing movies that were inverse-telecined incorrectly.
13732
13733 A description of the accepted options follows.
13734
13735 @table @option
13736 @item max
13737 Set the maximum number of consecutive frames which can be dropped (if
13738 positive), or the minimum interval between dropped frames (if
13739 negative). If the value is 0, the frame is dropped disregarding the
13740 number of previous sequentially dropped frames.
13741
13742 Default value is 0.
13743
13744 @item hi
13745 @item lo
13746 @item frac
13747 Set the dropping threshold values.
13748
13749 Values for @option{hi} and @option{lo} are for 8x8 pixel blocks and
13750 represent actual pixel value differences, so a threshold of 64
13751 corresponds to 1 unit of difference for each pixel, or the same spread
13752 out differently over the block.
13753
13754 A frame is a candidate for dropping if no 8x8 blocks differ by more
13755 than a threshold of @option{hi}, and if no more than @option{frac} blocks (1
13756 meaning the whole image) differ by more than a threshold of @option{lo}.
13757
13758 Default value for @option{hi} is 64*12, default value for @option{lo} is
13759 64*5, and default value for @option{frac} is 0.33.
13760 @end table
13761
13762
13763 @section negate
13764
13765 Negate (invert) the input video.
13766
13767 It accepts the following option:
13768
13769 @table @option
13770
13771 @item negate_alpha
13772 With value 1, it negates the alpha component, if present. Default value is 0.
13773 @end table
13774
13775 @anchor{nlmeans}
13776 @section nlmeans
13777
13778 Denoise frames using Non-Local Means algorithm.
13779
13780 Each pixel is adjusted by looking for other pixels with similar contexts. This
13781 context similarity is defined by comparing their surrounding patches of size
13782 @option{p}x@option{p}. Patches are searched in an area of @option{r}x@option{r}
13783 around the pixel.
13784
13785 Note that the research area defines centers for patches, which means some
13786 patches will be made of pixels outside that research area.
13787
13788 The filter accepts the following options.
13789
13790 @table @option
13791 @item s
13792 Set denoising strength. Default is 1.0. Must be in range [1.0, 30.0].
13793
13794 @item p
13795 Set patch size. Default is 7. Must be odd number in range [0, 99].
13796
13797 @item pc
13798 Same as @option{p} but for chroma planes.
13799
13800 The default value is @var{0} and means automatic.
13801
13802 @item r
13803 Set research size. Default is 15. Must be odd number in range [0, 99].
13804
13805 @item rc
13806 Same as @option{r} but for chroma planes.
13807
13808 The default value is @var{0} and means automatic.
13809 @end table
13810
13811 @section nnedi
13812
13813 Deinterlace video using neural network edge directed interpolation.
13814
13815 This filter accepts the following options:
13816
13817 @table @option
13818 @item weights
13819 Mandatory option, without binary file filter can not work.
13820 Currently file can be found here:
13821 https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin
13822
13823 @item deint
13824 Set which frames to deinterlace, by default it is @code{all}.
13825 Can be @code{all} or @code{interlaced}.
13826
13827 @item field
13828 Set mode of operation.
13829
13830 Can be one of the following:
13831
13832 @table @samp
13833 @item af
13834 Use frame flags, both fields.
13835 @item a
13836 Use frame flags, single field.
13837 @item t
13838 Use top field only.
13839 @item b
13840 Use bottom field only.
13841 @item tf
13842 Use both fields, top first.
13843 @item bf
13844 Use both fields, bottom first.
13845 @end table
13846
13847 @item planes
13848 Set which planes to process, by default filter process all frames.
13849
13850 @item nsize
13851 Set size of local neighborhood around each pixel, used by the predictor neural
13852 network.
13853
13854 Can be one of the following:
13855
13856 @table @samp
13857 @item s8x6
13858 @item s16x6
13859 @item s32x6
13860 @item s48x6
13861 @item s8x4
13862 @item s16x4
13863 @item s32x4
13864 @end table
13865
13866 @item nns
13867 Set the number of neurons in predictor neural network.
13868 Can be one of the following:
13869
13870 @table @samp
13871 @item n16
13872 @item n32
13873 @item n64
13874 @item n128
13875 @item n256
13876 @end table
13877
13878 @item qual
13879 Controls the number of different neural network predictions that are blended
13880 together to compute the final output value. Can be @code{fast}, default or
13881 @code{slow}.
13882
13883 @item etype
13884 Set which set of weights to use in the predictor.
13885 Can be one of the following:
13886
13887 @table @samp
13888 @item a
13889 weights trained to minimize absolute error
13890 @item s
13891 weights trained to minimize squared error
13892 @end table
13893
13894 @item pscrn
13895 Controls whether or not the prescreener neural network is used to decide
13896 which pixels should be processed by the predictor neural network and which
13897 can be handled by simple cubic interpolation.
13898 The prescreener is trained to know whether cubic interpolation will be
13899 sufficient for a pixel or whether it should be predicted by the predictor nn.
13900 The computational complexity of the prescreener nn is much less than that of
13901 the predictor nn. Since most pixels can be handled by cubic interpolation,
13902 using the prescreener generally results in much faster processing.
13903 The prescreener is pretty accurate, so the difference between using it and not
13904 using it is almost always unnoticeable.
13905
13906 Can be one of the following:
13907
13908 @table @samp
13909 @item none
13910 @item original
13911 @item new
13912 @end table
13913
13914 Default is @code{new}.
13915
13916 @item fapprox
13917 Set various debugging flags.
13918 @end table
13919
13920 @section noformat
13921
13922 Force libavfilter not to use any of the specified pixel formats for the
13923 input to the next filter.
13924
13925 It accepts the following parameters:
13926 @table @option
13927
13928 @item pix_fmts
13929 A '|'-separated list of pixel format names, such as
13930 pix_fmts=yuv420p|monow|rgb24".
13931
13932 @end table
13933
13934 @subsection Examples
13935
13936 @itemize
13937 @item
13938 Force libavfilter to use a format different from @var{yuv420p} for the
13939 input to the vflip filter:
13940 @example
13941 noformat=pix_fmts=yuv420p,vflip
13942 @end example
13943
13944 @item
13945 Convert the input video to any of the formats not contained in the list:
13946 @example
13947 noformat=yuv420p|yuv444p|yuv410p
13948 @end example
13949 @end itemize
13950
13951 @section noise
13952
13953 Add noise on video input frame.
13954
13955 The filter accepts the following options:
13956
13957 @table @option
13958 @item all_seed
13959 @item c0_seed
13960 @item c1_seed
13961 @item c2_seed
13962 @item c3_seed
13963 Set noise seed for specific pixel component or all pixel components in case
13964 of @var{all_seed}. Default value is @code{123457}.
13965
13966 @item all_strength, alls
13967 @item c0_strength, c0s
13968 @item c1_strength, c1s
13969 @item c2_strength, c2s
13970 @item c3_strength, c3s
13971 Set noise strength for specific pixel component or all pixel components in case
13972 @var{all_strength}. Default value is @code{0}. Allowed range is [0, 100].
13973
13974 @item all_flags, allf
13975 @item c0_flags, c0f
13976 @item c1_flags, c1f
13977 @item c2_flags, c2f
13978 @item c3_flags, c3f
13979 Set pixel component flags or set flags for all components if @var{all_flags}.
13980 Available values for component flags are:
13981 @table @samp
13982 @item a
13983 averaged temporal noise (smoother)
13984 @item p
13985 mix random noise with a (semi)regular pattern
13986 @item t
13987 temporal noise (noise pattern changes between frames)
13988 @item u
13989 uniform noise (gaussian otherwise)
13990 @end table
13991 @end table
13992
13993 @subsection Examples
13994
13995 Add temporal and uniform noise to input video:
13996 @example
13997 noise=alls=20:allf=t+u
13998 @end example
13999
14000 @section normalize
14001
14002 Normalize RGB video (aka histogram stretching, contrast stretching).
14003 See: https://en.wikipedia.org/wiki/Normalization_(image_processing)
14004
14005 For each channel of each frame, the filter computes the input range and maps
14006 it linearly to the user-specified output range. The output range defaults
14007 to the full dynamic range from pure black to pure white.
14008
14009 Temporal smoothing can be used on the input range to reduce flickering (rapid
14010 changes in brightness) caused when small dark or bright objects enter or leave
14011 the scene. This is similar to the auto-exposure (automatic gain control) on a
14012 video camera, and, like a video camera, it may cause a period of over- or
14013 under-exposure of the video.
14014
14015 The R,G,B channels can be normalized independently, which may cause some
14016 color shifting, or linked together as a single channel, which prevents
14017 color shifting. Linked normalization preserves hue. Independent normalization
14018 does not, so it can be used to remove some color casts. Independent and linked
14019 normalization can be combined in any ratio.
14020
14021 The normalize filter accepts the following options:
14022
14023 @table @option
14024 @item blackpt
14025 @item whitept
14026 Colors which define the output range. The minimum input value is mapped to
14027 the @var{blackpt}. The maximum input value is mapped to the @var{whitept}.
14028 The defaults are black and white respectively. Specifying white for
14029 @var{blackpt} and black for @var{whitept} will give color-inverted,
14030 normalized video. Shades of grey can be used to reduce the dynamic range
14031 (contrast). Specifying saturated colors here can create some interesting
14032 effects.
14033
14034 @item smoothing
14035 The number of previous frames to use for temporal smoothing. The input range
14036 of each channel is smoothed using a rolling average over the current frame
14037 and the @var{smoothing} previous frames. The default is 0 (no temporal
14038 smoothing).
14039
14040 @item independence
14041 Controls the ratio of independent (color shifting) channel normalization to
14042 linked (color preserving) normalization. 0.0 is fully linked, 1.0 is fully
14043 independent. Defaults to 1.0 (fully independent).
14044
14045 @item strength
14046 Overall strength of the filter. 1.0 is full strength. 0.0 is a rather
14047 expensive no-op. Defaults to 1.0 (full strength).
14048
14049 @end table
14050
14051 @subsection Commands
14052 This filter supports same @ref{commands} as options, excluding @var{smoothing} option.
14053 The command accepts the same syntax of the corresponding option.
14054
14055 If the specified expression is not valid, it is kept at its current
14056 value.
14057
14058 @subsection Examples
14059
14060 Stretch video contrast to use the full dynamic range, with no temporal
14061 smoothing; may flicker depending on the source content:
14062 @example
14063 normalize=blackpt=black:whitept=white:smoothing=0
14064 @end example
14065
14066 As above, but with 50 frames of temporal smoothing; flicker should be
14067 reduced, depending on the source content:
14068 @example
14069 normalize=blackpt=black:whitept=white:smoothing=50
14070 @end example
14071
14072 As above, but with hue-preserving linked channel normalization:
14073 @example
14074 normalize=blackpt=black:whitept=white:smoothing=50:independence=0
14075 @end example
14076
14077 As above, but with half strength:
14078 @example
14079 normalize=blackpt=black:whitept=white:smoothing=50:independence=0:strength=0.5
14080 @end example
14081
14082 Map the darkest input color to red, the brightest input color to cyan:
14083 @example
14084 normalize=blackpt=red:whitept=cyan
14085 @end example
14086
14087 @section null
14088
14089 Pass the video source unchanged to the output.
14090
14091 @section ocr
14092 Optical Character Recognition
14093
14094 This filter uses Tesseract for optical character recognition. To enable
14095 compilation of this filter, you need to configure FFmpeg with
14096 @code{--enable-libtesseract}.
14097
14098 It accepts the following options:
14099
14100 @table @option
14101 @item datapath
14102 Set datapath to tesseract data. Default is to use whatever was
14103 set at installation.
14104
14105 @item language
14106 Set language, default is "eng".
14107
14108 @item whitelist
14109 Set character whitelist.
14110
14111 @item blacklist
14112 Set character blacklist.
14113 @end table
14114
14115 The filter exports recognized text as the frame metadata @code{lavfi.ocr.text}.
14116 The filter exports confidence of recognized words as the frame metadata @code{lavfi.ocr.confidence}.
14117
14118 @section ocv
14119
14120 Apply a video transform using libopencv.
14121
14122 To enable this filter, install the libopencv library and headers and
14123 configure FFmpeg with @code{--enable-libopencv}.
14124
14125 It accepts the following parameters:
14126
14127 @table @option
14128
14129 @item filter_name
14130 The name of the libopencv filter to apply.
14131
14132 @item filter_params
14133 The parameters to pass to the libopencv filter. If not specified, the default
14134 values are assumed.
14135
14136 @end table
14137
14138 Refer to the official libopencv documentation for more precise
14139 information:
14140 @url{http://docs.opencv.org/master/modules/imgproc/doc/filtering.html}
14141
14142 Several libopencv filters are supported; see the following subsections.
14143
14144 @anchor{dilate}
14145 @subsection dilate
14146
14147 Dilate an image by using a specific structuring element.
14148 It corresponds to the libopencv function @code{cvDilate}.
14149
14150 It accepts the parameters: @var{struct_el}|@var{nb_iterations}.
14151
14152 @var{struct_el} represents a structuring element, and has the syntax:
14153 @var{cols}x@var{rows}+@var{anchor_x}x@var{anchor_y}/@var{shape}
14154
14155 @var{cols} and @var{rows} represent the number of columns and rows of
14156 the structuring element, @var{anchor_x} and @var{anchor_y} the anchor
14157 point, and @var{shape} the shape for the structuring element. @var{shape}
14158 must be "rect", "cross", "ellipse", or "custom".
14159
14160 If the value for @var{shape} is "custom", it must be followed by a
14161 string of the form "=@var{filename}". The file with name
14162 @var{filename} is assumed to represent a binary image, with each
14163 printable character corresponding to a bright pixel. When a custom
14164 @var{shape} is used, @var{cols} and @var{rows} are ignored, the number
14165 or columns and rows of the read file are assumed instead.
14166
14167 The default value for @var{struct_el} is "3x3+0x0/rect".
14168
14169 @var{nb_iterations} specifies the number of times the transform is
14170 applied to the image, and defaults to 1.
14171
14172 Some examples:
14173 @example
14174 # Use the default values
14175 ocv=dilate
14176
14177 # Dilate using a structuring element with a 5x5 cross, iterating two times
14178 ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
14179
14180 # Read the shape from the file diamond.shape, iterating two times.
14181 # The file diamond.shape may contain a pattern of characters like this
14182 #   *
14183 #  ***
14184 # *****
14185 #  ***
14186 #   *
14187 # The specified columns and rows are ignored
14188 # but the anchor point coordinates are not
14189 ocv=dilate:0x0+2x2/custom=diamond.shape|2
14190 @end example
14191
14192 @subsection erode
14193
14194 Erode an image by using a specific structuring element.
14195 It corresponds to the libopencv function @code{cvErode}.
14196
14197 It accepts the parameters: @var{struct_el}:@var{nb_iterations},
14198 with the same syntax and semantics as the @ref{dilate} filter.
14199
14200 @subsection smooth
14201
14202 Smooth the input video.
14203
14204 The filter takes the following parameters:
14205 @var{type}|@var{param1}|@var{param2}|@var{param3}|@var{param4}.
14206
14207 @var{type} is the type of smooth filter to apply, and must be one of
14208 the following values: "blur", "blur_no_scale", "median", "gaussian",
14209 or "bilateral". The default value is "gaussian".
14210
14211 The meaning of @var{param1}, @var{param2}, @var{param3}, and @var{param4}
14212 depends on the smooth type. @var{param1} and
14213 @var{param2} accept integer positive values or 0. @var{param3} and
14214 @var{param4} accept floating point values.
14215
14216 The default value for @var{param1} is 3. The default value for the
14217 other parameters is 0.
14218
14219 These parameters correspond to the parameters assigned to the
14220 libopencv function @code{cvSmooth}.
14221
14222 @section oscilloscope
14223
14224 2D Video Oscilloscope.
14225
14226 Useful to measure spatial impulse, step responses, chroma delays, etc.
14227
14228 It accepts the following parameters:
14229
14230 @table @option
14231 @item x
14232 Set scope center x position.
14233
14234 @item y
14235 Set scope center y position.
14236
14237 @item s
14238 Set scope size, relative to frame diagonal.
14239
14240 @item t
14241 Set scope tilt/rotation.
14242
14243 @item o
14244 Set trace opacity.
14245
14246 @item tx
14247 Set trace center x position.
14248
14249 @item ty
14250 Set trace center y position.
14251
14252 @item tw
14253 Set trace width, relative to width of frame.
14254
14255 @item th
14256 Set trace height, relative to height of frame.
14257
14258 @item c
14259 Set which components to trace. By default it traces first three components.
14260
14261 @item g
14262 Draw trace grid. By default is enabled.
14263
14264 @item st
14265 Draw some statistics. By default is enabled.
14266
14267 @item sc
14268 Draw scope. By default is enabled.
14269 @end table
14270
14271 @subsection Commands
14272 This filter supports same @ref{commands} as options.
14273 The command accepts the same syntax of the corresponding option.
14274
14275 If the specified expression is not valid, it is kept at its current
14276 value.
14277
14278 @subsection Examples
14279
14280 @itemize
14281 @item
14282 Inspect full first row of video frame.
14283 @example
14284 oscilloscope=x=0.5:y=0:s=1
14285 @end example
14286
14287 @item
14288 Inspect full last row of video frame.
14289 @example
14290 oscilloscope=x=0.5:y=1:s=1
14291 @end example
14292
14293 @item
14294 Inspect full 5th line of video frame of height 1080.
14295 @example
14296 oscilloscope=x=0.5:y=5/1080:s=1
14297 @end example
14298
14299 @item
14300 Inspect full last column of video frame.
14301 @example
14302 oscilloscope=x=1:y=0.5:s=1:t=1
14303 @end example
14304
14305 @end itemize
14306
14307 @anchor{overlay}
14308 @section overlay
14309
14310 Overlay one video on top of another.
14311
14312 It takes two inputs and has one output. The first input is the "main"
14313 video on which the second input is overlaid.
14314
14315 It accepts the following parameters:
14316
14317 A description of the accepted options follows.
14318
14319 @table @option
14320 @item x
14321 @item y
14322 Set the expression for the x and y coordinates of the overlaid video
14323 on the main video. Default value is "0" for both expressions. In case
14324 the expression is invalid, it is set to a huge value (meaning that the
14325 overlay will not be displayed within the output visible area).
14326
14327 @item eof_action
14328 See @ref{framesync}.
14329
14330 @item eval
14331 Set when the expressions for @option{x}, and @option{y} are evaluated.
14332
14333 It accepts the following values:
14334 @table @samp
14335 @item init
14336 only evaluate expressions once during the filter initialization or
14337 when a command is processed
14338
14339 @item frame
14340 evaluate expressions for each incoming frame
14341 @end table
14342
14343 Default value is @samp{frame}.
14344
14345 @item shortest
14346 See @ref{framesync}.
14347
14348 @item format
14349 Set the format for the output video.
14350
14351 It accepts the following values:
14352 @table @samp
14353 @item yuv420
14354 force YUV420 output
14355
14356 @item yuv420p10
14357 force YUV420p10 output
14358
14359 @item yuv422
14360 force YUV422 output
14361
14362 @item yuv422p10
14363 force YUV422p10 output
14364
14365 @item yuv444
14366 force YUV444 output
14367
14368 @item rgb
14369 force packed RGB output
14370
14371 @item gbrp
14372 force planar RGB output
14373
14374 @item auto
14375 automatically pick format
14376 @end table
14377
14378 Default value is @samp{yuv420}.
14379
14380 @item repeatlast
14381 See @ref{framesync}.
14382
14383 @item alpha
14384 Set format of alpha of the overlaid video, it can be @var{straight} or
14385 @var{premultiplied}. Default is @var{straight}.
14386 @end table
14387
14388 The @option{x}, and @option{y} expressions can contain the following
14389 parameters.
14390
14391 @table @option
14392 @item main_w, W
14393 @item main_h, H
14394 The main input width and height.
14395
14396 @item overlay_w, w
14397 @item overlay_h, h
14398 The overlay input width and height.
14399
14400 @item x
14401 @item y
14402 The computed values for @var{x} and @var{y}. They are evaluated for
14403 each new frame.
14404
14405 @item hsub
14406 @item vsub
14407 horizontal and vertical chroma subsample values of the output
14408 format. For example for the pixel format "yuv422p" @var{hsub} is 2 and
14409 @var{vsub} is 1.
14410
14411 @item n
14412 the number of input frame, starting from 0
14413
14414 @item pos
14415 the position in the file of the input frame, NAN if unknown
14416
14417 @item t
14418 The timestamp, expressed in seconds. It's NAN if the input timestamp is unknown.
14419
14420 @end table
14421
14422 This filter also supports the @ref{framesync} options.
14423
14424 Note that the @var{n}, @var{pos}, @var{t} variables are available only
14425 when evaluation is done @emph{per frame}, and will evaluate to NAN
14426 when @option{eval} is set to @samp{init}.
14427
14428 Be aware that frames are taken from each input video in timestamp
14429 order, hence, if their initial timestamps differ, it is a good idea
14430 to pass the two inputs through a @var{setpts=PTS-STARTPTS} filter to
14431 have them begin in the same zero timestamp, as the example for
14432 the @var{movie} filter does.
14433
14434 You can chain together more overlays but you should test the
14435 efficiency of such approach.
14436
14437 @subsection Commands
14438
14439 This filter supports the following commands:
14440 @table @option
14441 @item x
14442 @item y
14443 Modify the x and y of the overlay input.
14444 The command accepts the same syntax of the corresponding option.
14445
14446 If the specified expression is not valid, it is kept at its current
14447 value.
14448 @end table
14449
14450 @subsection Examples
14451
14452 @itemize
14453 @item
14454 Draw the overlay at 10 pixels from the bottom right corner of the main
14455 video:
14456 @example
14457 overlay=main_w-overlay_w-10:main_h-overlay_h-10
14458 @end example
14459
14460 Using named options the example above becomes:
14461 @example
14462 overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
14463 @end example
14464
14465 @item
14466 Insert a transparent PNG logo in the bottom left corner of the input,
14467 using the @command{ffmpeg} tool with the @code{-filter_complex} option:
14468 @example
14469 ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
14470 @end example
14471
14472 @item
14473 Insert 2 different transparent PNG logos (second logo on bottom
14474 right corner) using the @command{ffmpeg} tool:
14475 @example
14476 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
14477 @end example
14478
14479 @item
14480 Add a transparent color layer on top of the main video; @code{WxH}
14481 must specify the size of the main input to the overlay filter:
14482 @example
14483 color=color=red@@.3:size=WxH [over]; [in][over] overlay [out]
14484 @end example
14485
14486 @item
14487 Play an original video and a filtered version (here with the deshake
14488 filter) side by side using the @command{ffplay} tool:
14489 @example
14490 ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
14491 @end example
14492
14493 The above command is the same as:
14494 @example
14495 ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
14496 @end example
14497
14498 @item
14499 Make a sliding overlay appearing from the left to the right top part of the
14500 screen starting since time 2:
14501 @example
14502 overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
14503 @end example
14504
14505 @item
14506 Compose output by putting two input videos side to side:
14507 @example
14508 ffmpeg -i left.avi -i right.avi -filter_complex "
14509 nullsrc=size=200x100 [background];
14510 [0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
14511 [1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
14512 [background][left]       overlay=shortest=1       [background+left];
14513 [background+left][right] overlay=shortest=1:x=100 [left+right]
14514 "
14515 @end example
14516
14517 @item
14518 Mask 10-20 seconds of a video by applying the delogo filter to a section
14519 @example
14520 ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
14521 -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]'
14522 masked.avi
14523 @end example
14524
14525 @item
14526 Chain several overlays in cascade:
14527 @example
14528 nullsrc=s=200x200 [bg];
14529 testsrc=s=100x100, split=4 [in0][in1][in2][in3];
14530 [in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
14531 [in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
14532 [in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
14533 [in3] null,       [mid2] overlay=100:100 [out0]
14534 @end example
14535
14536 @end itemize
14537
14538 @anchor{overlay_cuda}
14539 @section overlay_cuda
14540
14541 Overlay one video on top of another.
14542
14543 This is the CUDA cariant of the @ref{overlay} filter.
14544 It only accepts CUDA frames. The underlying input pixel formats have to match.
14545
14546 It takes two inputs and has one output. The first input is the "main"
14547 video on which the second input is overlaid.
14548
14549 It accepts the following parameters:
14550
14551 @table @option
14552 @item x
14553 @item y
14554 Set the x and y coordinates of the overlaid video on the main video.
14555 Default value is "0" for both expressions.
14556
14557 @item eof_action
14558 See @ref{framesync}.
14559
14560 @item shortest
14561 See @ref{framesync}.
14562
14563 @item repeatlast
14564 See @ref{framesync}.
14565
14566 @end table
14567
14568 This filter also supports the @ref{framesync} options.
14569
14570 @section owdenoise
14571
14572 Apply Overcomplete Wavelet denoiser.
14573
14574 The filter accepts the following options:
14575
14576 @table @option
14577 @item depth
14578 Set depth.
14579
14580 Larger depth values will denoise lower frequency components more, but
14581 slow down filtering.
14582
14583 Must be an int in the range 8-16, default is @code{8}.
14584
14585 @item luma_strength, ls
14586 Set luma strength.
14587
14588 Must be a double value in the range 0-1000, default is @code{1.0}.
14589
14590 @item chroma_strength, cs
14591 Set chroma strength.
14592
14593 Must be a double value in the range 0-1000, default is @code{1.0}.
14594 @end table
14595
14596 @anchor{pad}
14597 @section pad
14598
14599 Add paddings to the input image, and place the original input at the
14600 provided @var{x}, @var{y} coordinates.
14601
14602 It accepts the following parameters:
14603
14604 @table @option
14605 @item width, w
14606 @item height, h
14607 Specify an expression for the size of the output image with the
14608 paddings added. If the value for @var{width} or @var{height} is 0, the
14609 corresponding input size is used for the output.
14610
14611 The @var{width} expression can reference the value set by the
14612 @var{height} expression, and vice versa.
14613
14614 The default value of @var{width} and @var{height} is 0.
14615
14616 @item x
14617 @item y
14618 Specify the offsets to place the input image at within the padded area,
14619 with respect to the top/left border of the output image.
14620
14621 The @var{x} expression can reference the value set by the @var{y}
14622 expression, and vice versa.
14623
14624 The default value of @var{x} and @var{y} is 0.
14625
14626 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
14627 so the input image is centered on the padded area.
14628
14629 @item color
14630 Specify the color of the padded area. For the syntax of this option,
14631 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
14632 manual,ffmpeg-utils}.
14633
14634 The default value of @var{color} is "black".
14635
14636 @item eval
14637 Specify when to evaluate  @var{width}, @var{height}, @var{x} and @var{y} expression.
14638
14639 It accepts the following values:
14640
14641 @table @samp
14642 @item init
14643 Only evaluate expressions once during the filter initialization or when
14644 a command is processed.
14645
14646 @item frame
14647 Evaluate expressions for each incoming frame.
14648
14649 @end table
14650
14651 Default value is @samp{init}.
14652
14653 @item aspect
14654 Pad to aspect instead to a resolution.
14655
14656 @end table
14657
14658 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
14659 options are expressions containing the following constants:
14660
14661 @table @option
14662 @item in_w
14663 @item in_h
14664 The input video width and height.
14665
14666 @item iw
14667 @item ih
14668 These are the same as @var{in_w} and @var{in_h}.
14669
14670 @item out_w
14671 @item out_h
14672 The output width and height (the size of the padded area), as
14673 specified by the @var{width} and @var{height} expressions.
14674
14675 @item ow
14676 @item oh
14677 These are the same as @var{out_w} and @var{out_h}.
14678
14679 @item x
14680 @item y
14681 The x and y offsets as specified by the @var{x} and @var{y}
14682 expressions, or NAN if not yet specified.
14683
14684 @item a
14685 same as @var{iw} / @var{ih}
14686
14687 @item sar
14688 input sample aspect ratio
14689
14690 @item dar
14691 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
14692
14693 @item hsub
14694 @item vsub
14695 The horizontal and vertical chroma subsample values. For example for the
14696 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
14697 @end table
14698
14699 @subsection Examples
14700
14701 @itemize
14702 @item
14703 Add paddings with the color "violet" to the input video. The output video
14704 size is 640x480, and the top-left corner of the input video is placed at
14705 column 0, row 40
14706 @example
14707 pad=640:480:0:40:violet
14708 @end example
14709
14710 The example above is equivalent to the following command:
14711 @example
14712 pad=width=640:height=480:x=0:y=40:color=violet
14713 @end example
14714
14715 @item
14716 Pad the input to get an output with dimensions increased by 3/2,
14717 and put the input video at the center of the padded area:
14718 @example
14719 pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
14720 @end example
14721
14722 @item
14723 Pad the input to get a squared output with size equal to the maximum
14724 value between the input width and height, and put the input video at
14725 the center of the padded area:
14726 @example
14727 pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
14728 @end example
14729
14730 @item
14731 Pad the input to get a final w/h ratio of 16:9:
14732 @example
14733 pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
14734 @end example
14735
14736 @item
14737 In case of anamorphic video, in order to set the output display aspect
14738 correctly, it is necessary to use @var{sar} in the expression,
14739 according to the relation:
14740 @example
14741 (ih * X / ih) * sar = output_dar
14742 X = output_dar / sar
14743 @end example
14744
14745 Thus the previous example needs to be modified to:
14746 @example
14747 pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
14748 @end example
14749
14750 @item
14751 Double the output size and put the input video in the bottom-right
14752 corner of the output padded area:
14753 @example
14754 pad="2*iw:2*ih:ow-iw:oh-ih"
14755 @end example
14756 @end itemize
14757
14758 @anchor{palettegen}
14759 @section palettegen
14760
14761 Generate one palette for a whole video stream.
14762
14763 It accepts the following options:
14764
14765 @table @option
14766 @item max_colors
14767 Set the maximum number of colors to quantize in the palette.
14768 Note: the palette will still contain 256 colors; the unused palette entries
14769 will be black.
14770
14771 @item reserve_transparent
14772 Create a palette of 255 colors maximum and reserve the last one for
14773 transparency. Reserving the transparency color is useful for GIF optimization.
14774 If not set, the maximum of colors in the palette will be 256. You probably want
14775 to disable this option for a standalone image.
14776 Set by default.
14777
14778 @item transparency_color
14779 Set the color that will be used as background for transparency.
14780
14781 @item stats_mode
14782 Set statistics mode.
14783
14784 It accepts the following values:
14785 @table @samp
14786 @item full
14787 Compute full frame histograms.
14788 @item diff
14789 Compute histograms only for the part that differs from previous frame. This
14790 might be relevant to give more importance to the moving part of your input if
14791 the background is static.
14792 @item single
14793 Compute new histogram for each frame.
14794 @end table
14795
14796 Default value is @var{full}.
14797 @end table
14798
14799 The filter also exports the frame metadata @code{lavfi.color_quant_ratio}
14800 (@code{nb_color_in / nb_color_out}) which you can use to evaluate the degree of
14801 color quantization of the palette. This information is also visible at
14802 @var{info} logging level.
14803
14804 @subsection Examples
14805
14806 @itemize
14807 @item
14808 Generate a representative palette of a given video using @command{ffmpeg}:
14809 @example
14810 ffmpeg -i input.mkv -vf palettegen palette.png
14811 @end example
14812 @end itemize
14813
14814 @section paletteuse
14815
14816 Use a palette to downsample an input video stream.
14817
14818 The filter takes two inputs: one video stream and a palette. The palette must
14819 be a 256 pixels image.
14820
14821 It accepts the following options:
14822
14823 @table @option
14824 @item dither
14825 Select dithering mode. Available algorithms are:
14826 @table @samp
14827 @item bayer
14828 Ordered 8x8 bayer dithering (deterministic)
14829 @item heckbert
14830 Dithering as defined by Paul Heckbert in 1982 (simple error diffusion).
14831 Note: this dithering is sometimes considered "wrong" and is included as a
14832 reference.
14833 @item floyd_steinberg
14834 Floyd and Steingberg dithering (error diffusion)
14835 @item sierra2
14836 Frankie Sierra dithering v2 (error diffusion)
14837 @item sierra2_4a
14838 Frankie Sierra dithering v2 "Lite" (error diffusion)
14839 @end table
14840
14841 Default is @var{sierra2_4a}.
14842
14843 @item bayer_scale
14844 When @var{bayer} dithering is selected, this option defines the scale of the
14845 pattern (how much the crosshatch pattern is visible). A low value means more
14846 visible pattern for less banding, and higher value means less visible pattern
14847 at the cost of more banding.
14848
14849 The option must be an integer value in the range [0,5]. Default is @var{2}.
14850
14851 @item diff_mode
14852 If set, define the zone to process
14853
14854 @table @samp
14855 @item rectangle
14856 Only the changing rectangle will be reprocessed. This is similar to GIF
14857 cropping/offsetting compression mechanism. This option can be useful for speed
14858 if only a part of the image is changing, and has use cases such as limiting the
14859 scope of the error diffusal @option{dither} to the rectangle that bounds the
14860 moving scene (it leads to more deterministic output if the scene doesn't change
14861 much, and as a result less moving noise and better GIF compression).
14862 @end table
14863
14864 Default is @var{none}.
14865
14866 @item new
14867 Take new palette for each output frame.
14868
14869 @item alpha_threshold
14870 Sets the alpha threshold for transparency. Alpha values above this threshold
14871 will be treated as completely opaque, and values below this threshold will be
14872 treated as completely transparent.
14873
14874 The option must be an integer value in the range [0,255]. Default is @var{128}.
14875 @end table
14876
14877 @subsection Examples
14878
14879 @itemize
14880 @item
14881 Use a palette (generated for example with @ref{palettegen}) to encode a GIF
14882 using @command{ffmpeg}:
14883 @example
14884 ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
14885 @end example
14886 @end itemize
14887
14888 @section perspective
14889
14890 Correct perspective of video not recorded perpendicular to the screen.
14891
14892 A description of the accepted parameters follows.
14893
14894 @table @option
14895 @item x0
14896 @item y0
14897 @item x1
14898 @item y1
14899 @item x2
14900 @item y2
14901 @item x3
14902 @item y3
14903 Set coordinates expression for top left, top right, bottom left and bottom right corners.
14904 Default values are @code{0:0:W:0:0:H:W:H} with which perspective will remain unchanged.
14905 If the @code{sense} option is set to @code{source}, then the specified points will be sent
14906 to the corners of the destination. If the @code{sense} option is set to @code{destination},
14907 then the corners of the source will be sent to the specified coordinates.
14908
14909 The expressions can use the following variables:
14910
14911 @table @option
14912 @item W
14913 @item H
14914 the width and height of video frame.
14915 @item in
14916 Input frame count.
14917 @item on
14918 Output frame count.
14919 @end table
14920
14921 @item interpolation
14922 Set interpolation for perspective correction.
14923
14924 It accepts the following values:
14925 @table @samp
14926 @item linear
14927 @item cubic
14928 @end table
14929
14930 Default value is @samp{linear}.
14931
14932 @item sense
14933 Set interpretation of coordinate options.
14934
14935 It accepts the following values:
14936 @table @samp
14937 @item 0, source
14938
14939 Send point in the source specified by the given coordinates to
14940 the corners of the destination.
14941
14942 @item 1, destination
14943
14944 Send the corners of the source to the point in the destination specified
14945 by the given coordinates.
14946
14947 Default value is @samp{source}.
14948 @end table
14949
14950 @item eval
14951 Set when the expressions for coordinates @option{x0,y0,...x3,y3} are evaluated.
14952
14953 It accepts the following values:
14954 @table @samp
14955 @item init
14956 only evaluate expressions once during the filter initialization or
14957 when a command is processed
14958
14959 @item frame
14960 evaluate expressions for each incoming frame
14961 @end table
14962
14963 Default value is @samp{init}.
14964 @end table
14965
14966 @section phase
14967
14968 Delay interlaced video by one field time so that the field order changes.
14969
14970 The intended use is to fix PAL movies that have been captured with the
14971 opposite field order to the film-to-video transfer.
14972
14973 A description of the accepted parameters follows.
14974
14975 @table @option
14976 @item mode
14977 Set phase mode.
14978
14979 It accepts the following values:
14980 @table @samp
14981 @item t
14982 Capture field order top-first, transfer bottom-first.
14983 Filter will delay the bottom field.
14984
14985 @item b
14986 Capture field order bottom-first, transfer top-first.
14987 Filter will delay the top field.
14988
14989 @item p
14990 Capture and transfer with the same field order. This mode only exists
14991 for the documentation of the other options to refer to, but if you
14992 actually select it, the filter will faithfully do nothing.
14993
14994 @item a
14995 Capture field order determined automatically by field flags, transfer
14996 opposite.
14997 Filter selects among @samp{t} and @samp{b} modes on a frame by frame
14998 basis using field flags. If no field information is available,
14999 then this works just like @samp{u}.
15000
15001 @item u
15002 Capture unknown or varying, transfer opposite.
15003 Filter selects among @samp{t} and @samp{b} on a frame by frame basis by
15004 analyzing the images and selecting the alternative that produces best
15005 match between the fields.
15006
15007 @item T
15008 Capture top-first, transfer unknown or varying.
15009 Filter selects among @samp{t} and @samp{p} using image analysis.
15010
15011 @item B
15012 Capture bottom-first, transfer unknown or varying.
15013 Filter selects among @samp{b} and @samp{p} using image analysis.
15014
15015 @item A
15016 Capture determined by field flags, transfer unknown or varying.
15017 Filter selects among @samp{t}, @samp{b} and @samp{p} using field flags and
15018 image analysis. If no field information is available, then this works just
15019 like @samp{U}. This is the default mode.
15020
15021 @item U
15022 Both capture and transfer unknown or varying.
15023 Filter selects among @samp{t}, @samp{b} and @samp{p} using image analysis only.
15024 @end table
15025 @end table
15026
15027 @section photosensitivity
15028 Reduce various flashes in video, so to help users with epilepsy.
15029
15030 It accepts the following options:
15031 @table @option
15032 @item frames, f
15033 Set how many frames to use when filtering. Default is 30.
15034
15035 @item threshold, t
15036 Set detection threshold factor. Default is 1.
15037 Lower is stricter.
15038
15039 @item skip
15040 Set how many pixels to skip when sampling frames. Default is 1.
15041 Allowed range is from 1 to 1024.
15042
15043 @item bypass
15044 Leave frames unchanged. Default is disabled.
15045 @end table
15046
15047 @section pixdesctest
15048
15049 Pixel format descriptor test filter, mainly useful for internal
15050 testing. The output video should be equal to the input video.
15051
15052 For example:
15053 @example
15054 format=monow, pixdesctest
15055 @end example
15056
15057 can be used to test the monowhite pixel format descriptor definition.
15058
15059 @section pixscope
15060
15061 Display sample values of color channels. Mainly useful for checking color
15062 and levels. Minimum supported resolution is 640x480.
15063
15064 The filters accept the following options:
15065
15066 @table @option
15067 @item x
15068 Set scope X position, relative offset on X axis.
15069
15070 @item y
15071 Set scope Y position, relative offset on Y axis.
15072
15073 @item w
15074 Set scope width.
15075
15076 @item h
15077 Set scope height.
15078
15079 @item o
15080 Set window opacity. This window also holds statistics about pixel area.
15081
15082 @item wx
15083 Set window X position, relative offset on X axis.
15084
15085 @item wy
15086 Set window Y position, relative offset on Y axis.
15087 @end table
15088
15089 @section pp
15090
15091 Enable the specified chain of postprocessing subfilters using libpostproc. This
15092 library should be automatically selected with a GPL build (@code{--enable-gpl}).
15093 Subfilters must be separated by '/' and can be disabled by prepending a '-'.
15094 Each subfilter and some options have a short and a long name that can be used
15095 interchangeably, i.e. dr/dering are the same.
15096
15097 The filters accept the following options:
15098
15099 @table @option
15100 @item subfilters
15101 Set postprocessing subfilters string.
15102 @end table
15103
15104 All subfilters share common options to determine their scope:
15105
15106 @table @option
15107 @item a/autoq
15108 Honor the quality commands for this subfilter.
15109
15110 @item c/chrom
15111 Do chrominance filtering, too (default).
15112
15113 @item y/nochrom
15114 Do luminance filtering only (no chrominance).
15115
15116 @item n/noluma
15117 Do chrominance filtering only (no luminance).
15118 @end table
15119
15120 These options can be appended after the subfilter name, separated by a '|'.
15121
15122 Available subfilters are:
15123
15124 @table @option
15125 @item hb/hdeblock[|difference[|flatness]]
15126 Horizontal deblocking filter
15127 @table @option
15128 @item difference
15129 Difference factor where higher values mean more deblocking (default: @code{32}).
15130 @item flatness
15131 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15132 @end table
15133
15134 @item vb/vdeblock[|difference[|flatness]]
15135 Vertical deblocking filter
15136 @table @option
15137 @item difference
15138 Difference factor where higher values mean more deblocking (default: @code{32}).
15139 @item flatness
15140 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15141 @end table
15142
15143 @item ha/hadeblock[|difference[|flatness]]
15144 Accurate horizontal deblocking filter
15145 @table @option
15146 @item difference
15147 Difference factor where higher values mean more deblocking (default: @code{32}).
15148 @item flatness
15149 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15150 @end table
15151
15152 @item va/vadeblock[|difference[|flatness]]
15153 Accurate vertical deblocking filter
15154 @table @option
15155 @item difference
15156 Difference factor where higher values mean more deblocking (default: @code{32}).
15157 @item flatness
15158 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15159 @end table
15160 @end table
15161
15162 The horizontal and vertical deblocking filters share the difference and
15163 flatness values so you cannot set different horizontal and vertical
15164 thresholds.
15165
15166 @table @option
15167 @item h1/x1hdeblock
15168 Experimental horizontal deblocking filter
15169
15170 @item v1/x1vdeblock
15171 Experimental vertical deblocking filter
15172
15173 @item dr/dering
15174 Deringing filter
15175
15176 @item tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer
15177 @table @option
15178 @item threshold1
15179 larger -> stronger filtering
15180 @item threshold2
15181 larger -> stronger filtering
15182 @item threshold3
15183 larger -> stronger filtering
15184 @end table
15185
15186 @item al/autolevels[:f/fullyrange], automatic brightness / contrast correction
15187 @table @option
15188 @item f/fullyrange
15189 Stretch luminance to @code{0-255}.
15190 @end table
15191
15192 @item lb/linblenddeint
15193 Linear blend deinterlacing filter that deinterlaces the given block by
15194 filtering all lines with a @code{(1 2 1)} filter.
15195
15196 @item li/linipoldeint
15197 Linear interpolating deinterlacing filter that deinterlaces the given block by
15198 linearly interpolating every second line.
15199
15200 @item ci/cubicipoldeint
15201 Cubic interpolating deinterlacing filter deinterlaces the given block by
15202 cubically interpolating every second line.
15203
15204 @item md/mediandeint
15205 Median deinterlacing filter that deinterlaces the given block by applying a
15206 median filter to every second line.
15207
15208 @item fd/ffmpegdeint
15209 FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
15210 second line with a @code{(-1 4 2 4 -1)} filter.
15211
15212 @item l5/lowpass5
15213 Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
15214 block by filtering all lines with a @code{(-1 2 6 2 -1)} filter.
15215
15216 @item fq/forceQuant[|quantizer]
15217 Overrides the quantizer table from the input with the constant quantizer you
15218 specify.
15219 @table @option
15220 @item quantizer
15221 Quantizer to use
15222 @end table
15223
15224 @item de/default
15225 Default pp filter combination (@code{hb|a,vb|a,dr|a})
15226
15227 @item fa/fast
15228 Fast pp filter combination (@code{h1|a,v1|a,dr|a})
15229
15230 @item ac
15231 High quality pp filter combination (@code{ha|a|128|7,va|a,dr|a})
15232 @end table
15233
15234 @subsection Examples
15235
15236 @itemize
15237 @item
15238 Apply horizontal and vertical deblocking, deringing and automatic
15239 brightness/contrast:
15240 @example
15241 pp=hb/vb/dr/al
15242 @end example
15243
15244 @item
15245 Apply default filters without brightness/contrast correction:
15246 @example
15247 pp=de/-al
15248 @end example
15249
15250 @item
15251 Apply default filters and temporal denoiser:
15252 @example
15253 pp=default/tmpnoise|1|2|3
15254 @end example
15255
15256 @item
15257 Apply deblocking on luminance only, and switch vertical deblocking on or off
15258 automatically depending on available CPU time:
15259 @example
15260 pp=hb|y/vb|a
15261 @end example
15262 @end itemize
15263
15264 @section pp7
15265 Apply Postprocessing filter 7. It is variant of the @ref{spp} filter,
15266 similar to spp = 6 with 7 point DCT, where only the center sample is
15267 used after IDCT.
15268
15269 The filter accepts the following options:
15270
15271 @table @option
15272 @item qp
15273 Force a constant quantization parameter. It accepts an integer in range
15274 0 to 63. If not set, the filter will use the QP from the video stream
15275 (if available).
15276
15277 @item mode
15278 Set thresholding mode. Available modes are:
15279
15280 @table @samp
15281 @item hard
15282 Set hard thresholding.
15283 @item soft
15284 Set soft thresholding (better de-ringing effect, but likely blurrier).
15285 @item medium
15286 Set medium thresholding (good results, default).
15287 @end table
15288 @end table
15289
15290 @section premultiply
15291 Apply alpha premultiply effect to input video stream using first plane
15292 of second stream as alpha.
15293
15294 Both streams must have same dimensions and same pixel format.
15295
15296 The filter accepts the following option:
15297
15298 @table @option
15299 @item planes
15300 Set which planes will be processed, unprocessed planes will be copied.
15301 By default value 0xf, all planes will be processed.
15302
15303 @item inplace
15304 Do not require 2nd input for processing, instead use alpha plane from input stream.
15305 @end table
15306
15307 @section prewitt
15308 Apply prewitt operator to input video stream.
15309
15310 The filter accepts the following option:
15311
15312 @table @option
15313 @item planes
15314 Set which planes will be processed, unprocessed planes will be copied.
15315 By default value 0xf, all planes will be processed.
15316
15317 @item scale
15318 Set value which will be multiplied with filtered result.
15319
15320 @item delta
15321 Set value which will be added to filtered result.
15322 @end table
15323
15324 @section pseudocolor
15325
15326 Alter frame colors in video with pseudocolors.
15327
15328 This filter accepts the following options:
15329
15330 @table @option
15331 @item c0
15332 set pixel first component expression
15333
15334 @item c1
15335 set pixel second component expression
15336
15337 @item c2
15338 set pixel third component expression
15339
15340 @item c3
15341 set pixel fourth component expression, corresponds to the alpha component
15342
15343 @item i
15344 set component to use as base for altering colors
15345 @end table
15346
15347 Each of them specifies the expression to use for computing the lookup table for
15348 the corresponding pixel component values.
15349
15350 The expressions can contain the following constants and functions:
15351
15352 @table @option
15353 @item w
15354 @item h
15355 The input width and height.
15356
15357 @item val
15358 The input value for the pixel component.
15359
15360 @item ymin, umin, vmin, amin
15361 The minimum allowed component value.
15362
15363 @item ymax, umax, vmax, amax
15364 The maximum allowed component value.
15365 @end table
15366
15367 All expressions default to "val".
15368
15369 @subsection Examples
15370
15371 @itemize
15372 @item
15373 Change too high luma values to gradient:
15374 @example
15375 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'"
15376 @end example
15377 @end itemize
15378
15379 @section psnr
15380
15381 Obtain the average, maximum and minimum PSNR (Peak Signal to Noise
15382 Ratio) between two input videos.
15383
15384 This filter takes in input two input videos, the first input is
15385 considered the "main" source and is passed unchanged to the
15386 output. The second input is used as a "reference" video for computing
15387 the PSNR.
15388
15389 Both video inputs must have the same resolution and pixel format for
15390 this filter to work correctly. Also it assumes that both inputs
15391 have the same number of frames, which are compared one by one.
15392
15393 The obtained average PSNR is printed through the logging system.
15394
15395 The filter stores the accumulated MSE (mean squared error) of each
15396 frame, and at the end of the processing it is averaged across all frames
15397 equally, and the following formula is applied to obtain the PSNR:
15398
15399 @example
15400 PSNR = 10*log10(MAX^2/MSE)
15401 @end example
15402
15403 Where MAX is the average of the maximum values of each component of the
15404 image.
15405
15406 The description of the accepted parameters follows.
15407
15408 @table @option
15409 @item stats_file, f
15410 If specified the filter will use the named file to save the PSNR of
15411 each individual frame. When filename equals "-" the data is sent to
15412 standard output.
15413
15414 @item stats_version
15415 Specifies which version of the stats file format to use. Details of
15416 each format are written below.
15417 Default value is 1.
15418
15419 @item stats_add_max
15420 Determines whether the max value is output to the stats log.
15421 Default value is 0.
15422 Requires stats_version >= 2. If this is set and stats_version < 2,
15423 the filter will return an error.
15424 @end table
15425
15426 This filter also supports the @ref{framesync} options.
15427
15428 The file printed if @var{stats_file} is selected, contains a sequence of
15429 key/value pairs of the form @var{key}:@var{value} for each compared
15430 couple of frames.
15431
15432 If a @var{stats_version} greater than 1 is specified, a header line precedes
15433 the list of per-frame-pair stats, with key value pairs following the frame
15434 format with the following parameters:
15435
15436 @table @option
15437 @item psnr_log_version
15438 The version of the log file format. Will match @var{stats_version}.
15439
15440 @item fields
15441 A comma separated list of the per-frame-pair parameters included in
15442 the log.
15443 @end table
15444
15445 A description of each shown per-frame-pair parameter follows:
15446
15447 @table @option
15448 @item n
15449 sequential number of the input frame, starting from 1
15450
15451 @item mse_avg
15452 Mean Square Error pixel-by-pixel average difference of the compared
15453 frames, averaged over all the image components.
15454
15455 @item mse_y, mse_u, mse_v, mse_r, mse_g, mse_b, mse_a
15456 Mean Square Error pixel-by-pixel average difference of the compared
15457 frames for the component specified by the suffix.
15458
15459 @item psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a
15460 Peak Signal to Noise ratio of the compared frames for the component
15461 specified by the suffix.
15462
15463 @item max_avg, max_y, max_u, max_v
15464 Maximum allowed value for each channel, and average over all
15465 channels.
15466 @end table
15467
15468 @subsection Examples
15469 @itemize
15470 @item
15471 For example:
15472 @example
15473 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
15474 [main][ref] psnr="stats_file=stats.log" [out]
15475 @end example
15476
15477 On this example the input file being processed is compared with the
15478 reference file @file{ref_movie.mpg}. The PSNR of each individual frame
15479 is stored in @file{stats.log}.
15480
15481 @item
15482 Another example with different containers:
15483 @example
15484 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 -
15485 @end example
15486 @end itemize
15487
15488 @anchor{pullup}
15489 @section pullup
15490
15491 Pulldown reversal (inverse telecine) filter, capable of handling mixed
15492 hard-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
15493 content.
15494
15495 The pullup filter is designed to take advantage of future context in making
15496 its decisions. This filter is stateless in the sense that it does not lock
15497 onto a pattern to follow, but it instead looks forward to the following
15498 fields in order to identify matches and rebuild progressive frames.
15499
15500 To produce content with an even framerate, insert the fps filter after
15501 pullup, use @code{fps=24000/1001} if the input frame rate is 29.97fps,
15502 @code{fps=24} for 30fps and the (rare) telecined 25fps input.
15503
15504 The filter accepts the following options:
15505
15506 @table @option
15507 @item jl
15508 @item jr
15509 @item jt
15510 @item jb
15511 These options set the amount of "junk" to ignore at the left, right, top, and
15512 bottom of the image, respectively. Left and right are in units of 8 pixels,
15513 while top and bottom are in units of 2 lines.
15514 The default is 8 pixels on each side.
15515
15516 @item sb
15517 Set the strict breaks. Setting this option to 1 will reduce the chances of
15518 filter generating an occasional mismatched frame, but it may also cause an
15519 excessive number of frames to be dropped during high motion sequences.
15520 Conversely, setting it to -1 will make filter match fields more easily.
15521 This may help processing of video where there is slight blurring between
15522 the fields, but may also cause there to be interlaced frames in the output.
15523 Default value is @code{0}.
15524
15525 @item mp
15526 Set the metric plane to use. It accepts the following values:
15527 @table @samp
15528 @item l
15529 Use luma plane.
15530
15531 @item u
15532 Use chroma blue plane.
15533
15534 @item v
15535 Use chroma red plane.
15536 @end table
15537
15538 This option may be set to use chroma plane instead of the default luma plane
15539 for doing filter's computations. This may improve accuracy on very clean
15540 source material, but more likely will decrease accuracy, especially if there
15541 is chroma noise (rainbow effect) or any grayscale video.
15542 The main purpose of setting @option{mp} to a chroma plane is to reduce CPU
15543 load and make pullup usable in realtime on slow machines.
15544 @end table
15545
15546 For best results (without duplicated frames in the output file) it is
15547 necessary to change the output frame rate. For example, to inverse
15548 telecine NTSC input:
15549 @example
15550 ffmpeg -i input -vf pullup -r 24000/1001 ...
15551 @end example
15552
15553 @section qp
15554
15555 Change video quantization parameters (QP).
15556
15557 The filter accepts the following option:
15558
15559 @table @option
15560 @item qp
15561 Set expression for quantization parameter.
15562 @end table
15563
15564 The expression is evaluated through the eval API and can contain, among others,
15565 the following constants:
15566
15567 @table @var
15568 @item known
15569 1 if index is not 129, 0 otherwise.
15570
15571 @item qp
15572 Sequential index starting from -129 to 128.
15573 @end table
15574
15575 @subsection Examples
15576
15577 @itemize
15578 @item
15579 Some equation like:
15580 @example
15581 qp=2+2*sin(PI*qp)
15582 @end example
15583 @end itemize
15584
15585 @section random
15586
15587 Flush video frames from internal cache of frames into a random order.
15588 No frame is discarded.
15589 Inspired by @ref{frei0r} nervous filter.
15590
15591 @table @option
15592 @item frames
15593 Set size in number of frames of internal cache, in range from @code{2} to
15594 @code{512}. Default is @code{30}.
15595
15596 @item seed
15597 Set seed for random number generator, must be an integer included between
15598 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
15599 less than @code{0}, the filter will try to use a good random seed on a
15600 best effort basis.
15601 @end table
15602
15603 @section readeia608
15604
15605 Read closed captioning (EIA-608) information from the top lines of a video frame.
15606
15607 This filter adds frame metadata for @code{lavfi.readeia608.X.cc} and
15608 @code{lavfi.readeia608.X.line}, where @code{X} is the number of the identified line
15609 with EIA-608 data (starting from 0). A description of each metadata value follows:
15610
15611 @table @option
15612 @item lavfi.readeia608.X.cc
15613 The two bytes stored as EIA-608 data (printed in hexadecimal).
15614
15615 @item lavfi.readeia608.X.line
15616 The number of the line on which the EIA-608 data was identified and read.
15617 @end table
15618
15619 This filter accepts the following options:
15620
15621 @table @option
15622 @item scan_min
15623 Set the line to start scanning for EIA-608 data. Default is @code{0}.
15624
15625 @item scan_max
15626 Set the line to end scanning for EIA-608 data. Default is @code{29}.
15627
15628 @item spw
15629 Set the ratio of width reserved for sync code detection.
15630 Default is @code{0.27}. Allowed range is @code{[0.1 - 0.7]}.
15631
15632 @item chp
15633 Enable checking the parity bit. In the event of a parity error, the filter will output
15634 @code{0x00} for that character. Default is false.
15635
15636 @item lp
15637 Lowpass lines prior to further processing. Default is enabled.
15638 @end table
15639
15640 @subsection Examples
15641
15642 @itemize
15643 @item
15644 Output a csv with presentation time and the first two lines of identified EIA-608 captioning data.
15645 @example
15646 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
15647 @end example
15648 @end itemize
15649
15650 @section readvitc
15651
15652 Read vertical interval timecode (VITC) information from the top lines of a
15653 video frame.
15654
15655 The filter adds frame metadata key @code{lavfi.readvitc.tc_str} with the
15656 timecode value, if a valid timecode has been detected. Further metadata key
15657 @code{lavfi.readvitc.found} is set to 0/1 depending on whether
15658 timecode data has been found or not.
15659
15660 This filter accepts the following options:
15661
15662 @table @option
15663 @item scan_max
15664 Set the maximum number of lines to scan for VITC data. If the value is set to
15665 @code{-1} the full video frame is scanned. Default is @code{45}.
15666
15667 @item thr_b
15668 Set the luma threshold for black. Accepts float numbers in the range [0.0,1.0],
15669 default value is @code{0.2}. The value must be equal or less than @code{thr_w}.
15670
15671 @item thr_w
15672 Set the luma threshold for white. Accepts float numbers in the range [0.0,1.0],
15673 default value is @code{0.6}. The value must be equal or greater than @code{thr_b}.
15674 @end table
15675
15676 @subsection Examples
15677
15678 @itemize
15679 @item
15680 Detect and draw VITC data onto the video frame; if no valid VITC is detected,
15681 draw @code{--:--:--:--} as a placeholder:
15682 @example
15683 ffmpeg -i input.avi -filter:v 'readvitc,drawtext=fontfile=FreeMono.ttf:text=%@{metadata\\:lavfi.readvitc.tc_str\\:--\\\\\\:--\\\\\\:--\\\\\\:--@}:x=(w-tw)/2:y=400-ascent'
15684 @end example
15685 @end itemize
15686
15687 @section remap
15688
15689 Remap pixels using 2nd: Xmap and 3rd: Ymap input video stream.
15690
15691 Destination pixel at position (X, Y) will be picked from source (x, y) position
15692 where x = Xmap(X, Y) and y = Ymap(X, Y). If mapping values are out of range, zero
15693 value for pixel will be used for destination pixel.
15694
15695 Xmap and Ymap input video streams must be of same dimensions. Output video stream
15696 will have Xmap/Ymap video stream dimensions.
15697 Xmap and Ymap input video streams are 16bit depth, single channel.
15698
15699 @table @option
15700 @item format
15701 Specify pixel format of output from this filter. Can be @code{color} or @code{gray}.
15702 Default is @code{color}.
15703
15704 @item fill
15705 Specify the color of the unmapped pixels. For the syntax of this option,
15706 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
15707 manual,ffmpeg-utils}. Default color is @code{black}.
15708 @end table
15709
15710 @section removegrain
15711
15712 The removegrain filter is a spatial denoiser for progressive video.
15713
15714 @table @option
15715 @item m0
15716 Set mode for the first plane.
15717
15718 @item m1
15719 Set mode for the second plane.
15720
15721 @item m2
15722 Set mode for the third plane.
15723
15724 @item m3
15725 Set mode for the fourth plane.
15726 @end table
15727
15728 Range of mode is from 0 to 24. Description of each mode follows:
15729
15730 @table @var
15731 @item 0
15732 Leave input plane unchanged. Default.
15733
15734 @item 1
15735 Clips the pixel with the minimum and maximum of the 8 neighbour pixels.
15736
15737 @item 2
15738 Clips the pixel with the second minimum and maximum of the 8 neighbour pixels.
15739
15740 @item 3
15741 Clips the pixel with the third minimum and maximum of the 8 neighbour pixels.
15742
15743 @item 4
15744 Clips the pixel with the fourth minimum and maximum of the 8 neighbour pixels.
15745 This is equivalent to a median filter.
15746
15747 @item 5
15748 Line-sensitive clipping giving the minimal change.
15749
15750 @item 6
15751 Line-sensitive clipping, intermediate.
15752
15753 @item 7
15754 Line-sensitive clipping, intermediate.
15755
15756 @item 8
15757 Line-sensitive clipping, intermediate.
15758
15759 @item 9
15760 Line-sensitive clipping on a line where the neighbours pixels are the closest.
15761
15762 @item 10
15763 Replaces the target pixel with the closest neighbour.
15764
15765 @item 11
15766 [1 2 1] horizontal and vertical kernel blur.
15767
15768 @item 12
15769 Same as mode 11.
15770
15771 @item 13
15772 Bob mode, interpolates top field from the line where the neighbours
15773 pixels are the closest.
15774
15775 @item 14
15776 Bob mode, interpolates bottom field from the line where the neighbours
15777 pixels are the closest.
15778
15779 @item 15
15780 Bob mode, interpolates top field. Same as 13 but with a more complicated
15781 interpolation formula.
15782
15783 @item 16
15784 Bob mode, interpolates bottom field. Same as 14 but with a more complicated
15785 interpolation formula.
15786
15787 @item 17
15788 Clips the pixel with the minimum and maximum of respectively the maximum and
15789 minimum of each pair of opposite neighbour pixels.
15790
15791 @item 18
15792 Line-sensitive clipping using opposite neighbours whose greatest distance from
15793 the current pixel is minimal.
15794
15795 @item 19
15796 Replaces the pixel with the average of its 8 neighbours.
15797
15798 @item 20
15799 Averages the 9 pixels ([1 1 1] horizontal and vertical blur).
15800
15801 @item 21
15802 Clips pixels using the averages of opposite neighbour.
15803
15804 @item 22
15805 Same as mode 21 but simpler and faster.
15806
15807 @item 23
15808 Small edge and halo removal, but reputed useless.
15809
15810 @item 24
15811 Similar as 23.
15812 @end table
15813
15814 @section removelogo
15815
15816 Suppress a TV station logo, using an image file to determine which
15817 pixels comprise the logo. It works by filling in the pixels that
15818 comprise the logo with neighboring pixels.
15819
15820 The filter accepts the following options:
15821
15822 @table @option
15823 @item filename, f
15824 Set the filter bitmap file, which can be any image format supported by
15825 libavformat. The width and height of the image file must match those of the
15826 video stream being processed.
15827 @end table
15828
15829 Pixels in the provided bitmap image with a value of zero are not
15830 considered part of the logo, non-zero pixels are considered part of
15831 the logo. If you use white (255) for the logo and black (0) for the
15832 rest, you will be safe. For making the filter bitmap, it is
15833 recommended to take a screen capture of a black frame with the logo
15834 visible, and then using a threshold filter followed by the erode
15835 filter once or twice.
15836
15837 If needed, little splotches can be fixed manually. Remember that if
15838 logo pixels are not covered, the filter quality will be much
15839 reduced. Marking too many pixels as part of the logo does not hurt as
15840 much, but it will increase the amount of blurring needed to cover over
15841 the image and will destroy more information than necessary, and extra
15842 pixels will slow things down on a large logo.
15843
15844 @section repeatfields
15845
15846 This filter uses the repeat_field flag from the Video ES headers and hard repeats
15847 fields based on its value.
15848
15849 @section reverse
15850
15851 Reverse a video clip.
15852
15853 Warning: This filter requires memory to buffer the entire clip, so trimming
15854 is suggested.
15855
15856 @subsection Examples
15857
15858 @itemize
15859 @item
15860 Take the first 5 seconds of a clip, and reverse it.
15861 @example
15862 trim=end=5,reverse
15863 @end example
15864 @end itemize
15865
15866 @section rgbashift
15867 Shift R/G/B/A pixels horizontally and/or vertically.
15868
15869 The filter accepts the following options:
15870 @table @option
15871 @item rh
15872 Set amount to shift red horizontally.
15873 @item rv
15874 Set amount to shift red vertically.
15875 @item gh
15876 Set amount to shift green horizontally.
15877 @item gv
15878 Set amount to shift green vertically.
15879 @item bh
15880 Set amount to shift blue horizontally.
15881 @item bv
15882 Set amount to shift blue vertically.
15883 @item ah
15884 Set amount to shift alpha horizontally.
15885 @item av
15886 Set amount to shift alpha vertically.
15887 @item edge
15888 Set edge mode, can be @var{smear}, default, or @var{warp}.
15889 @end table
15890
15891 @subsection Commands
15892
15893 This filter supports the all above options as @ref{commands}.
15894
15895 @section roberts
15896 Apply roberts cross operator to input video stream.
15897
15898 The filter accepts the following option:
15899
15900 @table @option
15901 @item planes
15902 Set which planes will be processed, unprocessed planes will be copied.
15903 By default value 0xf, all planes will be processed.
15904
15905 @item scale
15906 Set value which will be multiplied with filtered result.
15907
15908 @item delta
15909 Set value which will be added to filtered result.
15910 @end table
15911
15912 @section rotate
15913
15914 Rotate video by an arbitrary angle expressed in radians.
15915
15916 The filter accepts the following options:
15917
15918 A description of the optional parameters follows.
15919 @table @option
15920 @item angle, a
15921 Set an expression for the angle by which to rotate the input video
15922 clockwise, expressed as a number of radians. A negative value will
15923 result in a counter-clockwise rotation. By default it is set to "0".
15924
15925 This expression is evaluated for each frame.
15926
15927 @item out_w, ow
15928 Set the output width expression, default value is "iw".
15929 This expression is evaluated just once during configuration.
15930
15931 @item out_h, oh
15932 Set the output height expression, default value is "ih".
15933 This expression is evaluated just once during configuration.
15934
15935 @item bilinear
15936 Enable bilinear interpolation if set to 1, a value of 0 disables
15937 it. Default value is 1.
15938
15939 @item fillcolor, c
15940 Set the color used to fill the output area not covered by the rotated
15941 image. For the general syntax of this option, check the
15942 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
15943 If the special value "none" is selected then no
15944 background is printed (useful for example if the background is never shown).
15945
15946 Default value is "black".
15947 @end table
15948
15949 The expressions for the angle and the output size can contain the
15950 following constants and functions:
15951
15952 @table @option
15953 @item n
15954 sequential number of the input frame, starting from 0. It is always NAN
15955 before the first frame is filtered.
15956
15957 @item t
15958 time in seconds of the input frame, it is set to 0 when the filter is
15959 configured. It is always NAN before the first frame is filtered.
15960
15961 @item hsub
15962 @item vsub
15963 horizontal and vertical chroma subsample values. For example for the
15964 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
15965
15966 @item in_w, iw
15967 @item in_h, ih
15968 the input video width and height
15969
15970 @item out_w, ow
15971 @item out_h, oh
15972 the output width and height, that is the size of the padded area as
15973 specified by the @var{width} and @var{height} expressions
15974
15975 @item rotw(a)
15976 @item roth(a)
15977 the minimal width/height required for completely containing the input
15978 video rotated by @var{a} radians.
15979
15980 These are only available when computing the @option{out_w} and
15981 @option{out_h} expressions.
15982 @end table
15983
15984 @subsection Examples
15985
15986 @itemize
15987 @item
15988 Rotate the input by PI/6 radians clockwise:
15989 @example
15990 rotate=PI/6
15991 @end example
15992
15993 @item
15994 Rotate the input by PI/6 radians counter-clockwise:
15995 @example
15996 rotate=-PI/6
15997 @end example
15998
15999 @item
16000 Rotate the input by 45 degrees clockwise:
16001 @example
16002 rotate=45*PI/180
16003 @end example
16004
16005 @item
16006 Apply a constant rotation with period T, starting from an angle of PI/3:
16007 @example
16008 rotate=PI/3+2*PI*t/T
16009 @end example
16010
16011 @item
16012 Make the input video rotation oscillating with a period of T
16013 seconds and an amplitude of A radians:
16014 @example
16015 rotate=A*sin(2*PI/T*t)
16016 @end example
16017
16018 @item
16019 Rotate the video, output size is chosen so that the whole rotating
16020 input video is always completely contained in the output:
16021 @example
16022 rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
16023 @end example
16024
16025 @item
16026 Rotate the video, reduce the output size so that no background is ever
16027 shown:
16028 @example
16029 rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
16030 @end example
16031 @end itemize
16032
16033 @subsection Commands
16034
16035 The filter supports the following commands:
16036
16037 @table @option
16038 @item a, angle
16039 Set the angle expression.
16040 The command accepts the same syntax of the corresponding option.
16041
16042 If the specified expression is not valid, it is kept at its current
16043 value.
16044 @end table
16045
16046 @section sab
16047
16048 Apply Shape Adaptive Blur.
16049
16050 The filter accepts the following options:
16051
16052 @table @option
16053 @item luma_radius, lr
16054 Set luma blur filter strength, must be a value in range 0.1-4.0, default
16055 value is 1.0. A greater value will result in a more blurred image, and
16056 in slower processing.
16057
16058 @item luma_pre_filter_radius, lpfr
16059 Set luma pre-filter radius, must be a value in the 0.1-2.0 range, default
16060 value is 1.0.
16061
16062 @item luma_strength, ls
16063 Set luma maximum difference between pixels to still be considered, must
16064 be a value in the 0.1-100.0 range, default value is 1.0.
16065
16066 @item chroma_radius, cr
16067 Set chroma blur filter strength, must be a value in range -0.9-4.0. A
16068 greater value will result in a more blurred image, and in slower
16069 processing.
16070
16071 @item chroma_pre_filter_radius, cpfr
16072 Set chroma pre-filter radius, must be a value in the -0.9-2.0 range.
16073
16074 @item chroma_strength, cs
16075 Set chroma maximum difference between pixels to still be considered,
16076 must be a value in the -0.9-100.0 range.
16077 @end table
16078
16079 Each chroma option value, if not explicitly specified, is set to the
16080 corresponding luma option value.
16081
16082 @anchor{scale}
16083 @section scale
16084
16085 Scale (resize) the input video, using the libswscale library.
16086
16087 The scale filter forces the output display aspect ratio to be the same
16088 of the input, by changing the output sample aspect ratio.
16089
16090 If the input image format is different from the format requested by
16091 the next filter, the scale filter will convert the input to the
16092 requested format.
16093
16094 @subsection Options
16095 The filter accepts the following options, or any of the options
16096 supported by the libswscale scaler.
16097
16098 See @ref{scaler_options,,the ffmpeg-scaler manual,ffmpeg-scaler} for
16099 the complete list of scaler options.
16100
16101 @table @option
16102 @item width, w
16103 @item height, h
16104 Set the output video dimension expression. Default value is the input
16105 dimension.
16106
16107 If the @var{width} or @var{w} value is 0, the input width is used for
16108 the output. If the @var{height} or @var{h} value is 0, the input height
16109 is used for the output.
16110
16111 If one and only one of the values is -n with n >= 1, the scale filter
16112 will use a value that maintains the aspect ratio of the input image,
16113 calculated from the other specified dimension. After that it will,
16114 however, make sure that the calculated dimension is divisible by n and
16115 adjust the value if necessary.
16116
16117 If both values are -n with n >= 1, the behavior will be identical to
16118 both values being set to 0 as previously detailed.
16119
16120 See below for the list of accepted constants for use in the dimension
16121 expression.
16122
16123 @item eval
16124 Specify when to evaluate @var{width} and @var{height} expression. It accepts the following values:
16125
16126 @table @samp
16127 @item init
16128 Only evaluate expressions once during the filter initialization or when a command is processed.
16129
16130 @item frame
16131 Evaluate expressions for each incoming frame.
16132
16133 @end table
16134
16135 Default value is @samp{init}.
16136
16137
16138 @item interl
16139 Set the interlacing mode. It accepts the following values:
16140
16141 @table @samp
16142 @item 1
16143 Force interlaced aware scaling.
16144
16145 @item 0
16146 Do not apply interlaced scaling.
16147
16148 @item -1
16149 Select interlaced aware scaling depending on whether the source frames
16150 are flagged as interlaced or not.
16151 @end table
16152
16153 Default value is @samp{0}.
16154
16155 @item flags
16156 Set libswscale scaling flags. See
16157 @ref{sws_flags,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
16158 complete list of values. If not explicitly specified the filter applies
16159 the default flags.
16160
16161
16162 @item param0, param1
16163 Set libswscale input parameters for scaling algorithms that need them. See
16164 @ref{sws_params,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
16165 complete documentation. If not explicitly specified the filter applies
16166 empty parameters.
16167
16168
16169
16170 @item size, s
16171 Set the video size. For the syntax of this option, check the
16172 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
16173
16174 @item in_color_matrix
16175 @item out_color_matrix
16176 Set in/output YCbCr color space type.
16177
16178 This allows the autodetected value to be overridden as well as allows forcing
16179 a specific value used for the output and encoder.
16180
16181 If not specified, the color space type depends on the pixel format.
16182
16183 Possible values:
16184
16185 @table @samp
16186 @item auto
16187 Choose automatically.
16188
16189 @item bt709
16190 Format conforming to International Telecommunication Union (ITU)
16191 Recommendation BT.709.
16192
16193 @item fcc
16194 Set color space conforming to the United States Federal Communications
16195 Commission (FCC) Code of Federal Regulations (CFR) Title 47 (2003) 73.682 (a).
16196
16197 @item bt601
16198 @item bt470
16199 @item smpte170m
16200 Set color space conforming to:
16201
16202 @itemize
16203 @item
16204 ITU Radiocommunication Sector (ITU-R) Recommendation BT.601
16205
16206 @item
16207 ITU-R Rec. BT.470-6 (1998) Systems B, B1, and G
16208
16209 @item
16210 Society of Motion Picture and Television Engineers (SMPTE) ST 170:2004
16211
16212 @end itemize
16213
16214 @item smpte240m
16215 Set color space conforming to SMPTE ST 240:1999.
16216
16217 @item bt2020
16218 Set color space conforming to ITU-R BT.2020 non-constant luminance system.
16219 @end table
16220
16221 @item in_range
16222 @item out_range
16223 Set in/output YCbCr sample range.
16224
16225 This allows the autodetected value to be overridden as well as allows forcing
16226 a specific value used for the output and encoder. If not specified, the
16227 range depends on the pixel format. Possible values:
16228
16229 @table @samp
16230 @item auto/unknown
16231 Choose automatically.
16232
16233 @item jpeg/full/pc
16234 Set full range (0-255 in case of 8-bit luma).
16235
16236 @item mpeg/limited/tv
16237 Set "MPEG" range (16-235 in case of 8-bit luma).
16238 @end table
16239
16240 @item force_original_aspect_ratio
16241 Enable decreasing or increasing output video width or height if necessary to
16242 keep the original aspect ratio. Possible values:
16243
16244 @table @samp
16245 @item disable
16246 Scale the video as specified and disable this feature.
16247
16248 @item decrease
16249 The output video dimensions will automatically be decreased if needed.
16250
16251 @item increase
16252 The output video dimensions will automatically be increased if needed.
16253
16254 @end table
16255
16256 One useful instance of this option is that when you know a specific device's
16257 maximum allowed resolution, you can use this to limit the output video to
16258 that, while retaining the aspect ratio. For example, device A allows
16259 1280x720 playback, and your video is 1920x800. Using this option (set it to
16260 decrease) and specifying 1280x720 to the command line makes the output
16261 1280x533.
16262
16263 Please note that this is a different thing than specifying -1 for @option{w}
16264 or @option{h}, you still need to specify the output resolution for this option
16265 to work.
16266
16267 @item force_divisible_by
16268 Ensures that both the output dimensions, width and height, are divisible by the
16269 given integer when used together with @option{force_original_aspect_ratio}. This
16270 works similar to using @code{-n} in the @option{w} and @option{h} options.
16271
16272 This option respects the value set for @option{force_original_aspect_ratio},
16273 increasing or decreasing the resolution accordingly. The video's aspect ratio
16274 may be slightly modified.
16275
16276 This option can be handy if you need to have a video fit within or exceed
16277 a defined resolution using @option{force_original_aspect_ratio} but also have
16278 encoder restrictions on width or height divisibility.
16279
16280 @end table
16281
16282 The values of the @option{w} and @option{h} options are expressions
16283 containing the following constants:
16284
16285 @table @var
16286 @item in_w
16287 @item in_h
16288 The input width and height
16289
16290 @item iw
16291 @item ih
16292 These are the same as @var{in_w} and @var{in_h}.
16293
16294 @item out_w
16295 @item out_h
16296 The output (scaled) width and height
16297
16298 @item ow
16299 @item oh
16300 These are the same as @var{out_w} and @var{out_h}
16301
16302 @item a
16303 The same as @var{iw} / @var{ih}
16304
16305 @item sar
16306 input sample aspect ratio
16307
16308 @item dar
16309 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
16310
16311 @item hsub
16312 @item vsub
16313 horizontal and vertical input chroma subsample values. For example for the
16314 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16315
16316 @item ohsub
16317 @item ovsub
16318 horizontal and vertical output chroma subsample values. For example for the
16319 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16320
16321 @item n
16322 The (sequential) number of the input frame, starting from 0.
16323 Only available with @code{eval=frame}.
16324
16325 @item t
16326 The presentation timestamp of the input frame, expressed as a number of
16327 seconds. Only available with @code{eval=frame}.
16328
16329 @item pos
16330 The position (byte offset) of the frame in the input stream, or NaN if
16331 this information is unavailable and/or meaningless (for example in case of synthetic video).
16332 Only available with @code{eval=frame}.
16333 @end table
16334
16335 @subsection Examples
16336
16337 @itemize
16338 @item
16339 Scale the input video to a size of 200x100
16340 @example
16341 scale=w=200:h=100
16342 @end example
16343
16344 This is equivalent to:
16345 @example
16346 scale=200:100
16347 @end example
16348
16349 or:
16350 @example
16351 scale=200x100
16352 @end example
16353
16354 @item
16355 Specify a size abbreviation for the output size:
16356 @example
16357 scale=qcif
16358 @end example
16359
16360 which can also be written as:
16361 @example
16362 scale=size=qcif
16363 @end example
16364
16365 @item
16366 Scale the input to 2x:
16367 @example
16368 scale=w=2*iw:h=2*ih
16369 @end example
16370
16371 @item
16372 The above is the same as:
16373 @example
16374 scale=2*in_w:2*in_h
16375 @end example
16376
16377 @item
16378 Scale the input to 2x with forced interlaced scaling:
16379 @example
16380 scale=2*iw:2*ih:interl=1
16381 @end example
16382
16383 @item
16384 Scale the input to half size:
16385 @example
16386 scale=w=iw/2:h=ih/2
16387 @end example
16388
16389 @item
16390 Increase the width, and set the height to the same size:
16391 @example
16392 scale=3/2*iw:ow
16393 @end example
16394
16395 @item
16396 Seek Greek harmony:
16397 @example
16398 scale=iw:1/PHI*iw
16399 scale=ih*PHI:ih
16400 @end example
16401
16402 @item
16403 Increase the height, and set the width to 3/2 of the height:
16404 @example
16405 scale=w=3/2*oh:h=3/5*ih
16406 @end example
16407
16408 @item
16409 Increase the size, making the size a multiple of the chroma
16410 subsample values:
16411 @example
16412 scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
16413 @end example
16414
16415 @item
16416 Increase the width to a maximum of 500 pixels,
16417 keeping the same aspect ratio as the input:
16418 @example
16419 scale=w='min(500\, iw*3/2):h=-1'
16420 @end example
16421
16422 @item
16423 Make pixels square by combining scale and setsar:
16424 @example
16425 scale='trunc(ih*dar):ih',setsar=1/1
16426 @end example
16427
16428 @item
16429 Make pixels square by combining scale and setsar,
16430 making sure the resulting resolution is even (required by some codecs):
16431 @example
16432 scale='trunc(ih*dar/2)*2:trunc(ih/2)*2',setsar=1/1
16433 @end example
16434 @end itemize
16435
16436 @subsection Commands
16437
16438 This filter supports the following commands:
16439 @table @option
16440 @item width, w
16441 @item height, h
16442 Set the output video dimension expression.
16443 The command accepts the same syntax of the corresponding option.
16444
16445 If the specified expression is not valid, it is kept at its current
16446 value.
16447 @end table
16448
16449 @section scale_npp
16450
16451 Use the NVIDIA Performance Primitives (libnpp) to perform scaling and/or pixel
16452 format conversion on CUDA video frames. Setting the output width and height
16453 works in the same way as for the @var{scale} filter.
16454
16455 The following additional options are accepted:
16456 @table @option
16457 @item format
16458 The pixel format of the output CUDA frames. If set to the string "same" (the
16459 default), the input format will be kept. Note that automatic format negotiation
16460 and conversion is not yet supported for hardware frames
16461
16462 @item interp_algo
16463 The interpolation algorithm used for resizing. One of the following:
16464 @table @option
16465 @item nn
16466 Nearest neighbour.
16467
16468 @item linear
16469 @item cubic
16470 @item cubic2p_bspline
16471 2-parameter cubic (B=1, C=0)
16472
16473 @item cubic2p_catmullrom
16474 2-parameter cubic (B=0, C=1/2)
16475
16476 @item cubic2p_b05c03
16477 2-parameter cubic (B=1/2, C=3/10)
16478
16479 @item super
16480 Supersampling
16481
16482 @item lanczos
16483 @end table
16484
16485 @item force_original_aspect_ratio
16486 Enable decreasing or increasing output video width or height if necessary to
16487 keep the original aspect ratio. Possible values:
16488
16489 @table @samp
16490 @item disable
16491 Scale the video as specified and disable this feature.
16492
16493 @item decrease
16494 The output video dimensions will automatically be decreased if needed.
16495
16496 @item increase
16497 The output video dimensions will automatically be increased if needed.
16498
16499 @end table
16500
16501 One useful instance of this option is that when you know a specific device's
16502 maximum allowed resolution, you can use this to limit the output video to
16503 that, while retaining the aspect ratio. For example, device A allows
16504 1280x720 playback, and your video is 1920x800. Using this option (set it to
16505 decrease) and specifying 1280x720 to the command line makes the output
16506 1280x533.
16507
16508 Please note that this is a different thing than specifying -1 for @option{w}
16509 or @option{h}, you still need to specify the output resolution for this option
16510 to work.
16511
16512 @item force_divisible_by
16513 Ensures that both the output dimensions, width and height, are divisible by the
16514 given integer when used together with @option{force_original_aspect_ratio}. This
16515 works similar to using @code{-n} in the @option{w} and @option{h} options.
16516
16517 This option respects the value set for @option{force_original_aspect_ratio},
16518 increasing or decreasing the resolution accordingly. The video's aspect ratio
16519 may be slightly modified.
16520
16521 This option can be handy if you need to have a video fit within or exceed
16522 a defined resolution using @option{force_original_aspect_ratio} but also have
16523 encoder restrictions on width or height divisibility.
16524
16525 @end table
16526
16527 @section scale2ref
16528
16529 Scale (resize) the input video, based on a reference video.
16530
16531 See the scale filter for available options, scale2ref supports the same but
16532 uses the reference video instead of the main input as basis. scale2ref also
16533 supports the following additional constants for the @option{w} and
16534 @option{h} options:
16535
16536 @table @var
16537 @item main_w
16538 @item main_h
16539 The main input video's width and height
16540
16541 @item main_a
16542 The same as @var{main_w} / @var{main_h}
16543
16544 @item main_sar
16545 The main input video's sample aspect ratio
16546
16547 @item main_dar, mdar
16548 The main input video's display aspect ratio. Calculated from
16549 @code{(main_w / main_h) * main_sar}.
16550
16551 @item main_hsub
16552 @item main_vsub
16553 The main input video's horizontal and vertical chroma subsample values.
16554 For example for the pixel format "yuv422p" @var{hsub} is 2 and @var{vsub}
16555 is 1.
16556
16557 @item main_n
16558 The (sequential) number of the main input frame, starting from 0.
16559 Only available with @code{eval=frame}.
16560
16561 @item main_t
16562 The presentation timestamp of the main input frame, expressed as a number of
16563 seconds. Only available with @code{eval=frame}.
16564
16565 @item main_pos
16566 The position (byte offset) of the frame in the main input stream, or NaN if
16567 this information is unavailable and/or meaningless (for example in case of synthetic video).
16568 Only available with @code{eval=frame}.
16569 @end table
16570
16571 @subsection Examples
16572
16573 @itemize
16574 @item
16575 Scale a subtitle stream (b) to match the main video (a) in size before overlaying
16576 @example
16577 'scale2ref[b][a];[a][b]overlay'
16578 @end example
16579
16580 @item
16581 Scale a logo to 1/10th the height of a video, while preserving its display aspect ratio.
16582 @example
16583 [logo-in][video-in]scale2ref=w=oh*mdar:h=ih/10[logo-out][video-out]
16584 @end example
16585 @end itemize
16586
16587 @subsection Commands
16588
16589 This filter supports the following commands:
16590 @table @option
16591 @item width, w
16592 @item height, h
16593 Set the output video dimension expression.
16594 The command accepts the same syntax of the corresponding option.
16595
16596 If the specified expression is not valid, it is kept at its current
16597 value.
16598 @end table
16599
16600 @section scroll
16601 Scroll input video horizontally and/or vertically by constant speed.
16602
16603 The filter accepts the following options:
16604 @table @option
16605 @item horizontal, h
16606 Set the horizontal scrolling speed. Default is 0. Allowed range is from -1 to 1.
16607 Negative values changes scrolling direction.
16608
16609 @item vertical, v
16610 Set the vertical scrolling speed. Default is 0. Allowed range is from -1 to 1.
16611 Negative values changes scrolling direction.
16612
16613 @item hpos
16614 Set the initial horizontal scrolling position. Default is 0. Allowed range is from 0 to 1.
16615
16616 @item vpos
16617 Set the initial vertical scrolling position. Default is 0. Allowed range is from 0 to 1.
16618 @end table
16619
16620 @subsection Commands
16621
16622 This filter supports the following @ref{commands}:
16623 @table @option
16624 @item horizontal, h
16625 Set the horizontal scrolling speed.
16626 @item vertical, v
16627 Set the vertical scrolling speed.
16628 @end table
16629
16630 @anchor{scdet}
16631 @section scdet
16632
16633 Detect video scene change.
16634
16635 This filter sets frame metadata with mafd between frame, the scene score, and
16636 forward the frame to the next filter, so they can use these metadata to detect
16637 scene change or others.
16638
16639 In addition, this filter logs a message and sets frame metadata when it detects
16640 a scene change by @option{threshold}.
16641
16642 @code{lavfi.scd.mafd} metadata keys are set with mafd for every frame.
16643
16644 @code{lavfi.scd.score} metadata keys are set with scene change score for every frame
16645 to detect scene change.
16646
16647 @code{lavfi.scd.time} metadata keys are set with current filtered frame time which
16648 detect scene change with @option{threshold}.
16649
16650 The filter accepts the following options:
16651
16652 @table @option
16653 @item threshold, t
16654 Set the scene change detection threshold as a percentage of maximum change. Good
16655 values are in the @code{[8.0, 14.0]} range. The range for @option{threshold} is
16656 @code{[0., 100.]}.
16657
16658 Default value is @code{10.}.
16659
16660 @item sc_pass, s
16661 Set the flag to pass scene change frames to the next filter. Default value is @code{0}
16662 You can enable it if you want to get snapshot of scene change frames only.
16663 @end table
16664
16665 @anchor{selectivecolor}
16666 @section selectivecolor
16667
16668 Adjust cyan, magenta, yellow and black (CMYK) to certain ranges of colors (such
16669 as "reds", "yellows", "greens", "cyans", ...). The adjustment range is defined
16670 by the "purity" of the color (that is, how saturated it already is).
16671
16672 This filter is similar to the Adobe Photoshop Selective Color tool.
16673
16674 The filter accepts the following options:
16675
16676 @table @option
16677 @item correction_method
16678 Select color correction method.
16679
16680 Available values are:
16681 @table @samp
16682 @item absolute
16683 Specified adjustments are applied "as-is" (added/subtracted to original pixel
16684 component value).
16685 @item relative
16686 Specified adjustments are relative to the original component value.
16687 @end table
16688 Default is @code{absolute}.
16689 @item reds
16690 Adjustments for red pixels (pixels where the red component is the maximum)
16691 @item yellows
16692 Adjustments for yellow pixels (pixels where the blue component is the minimum)
16693 @item greens
16694 Adjustments for green pixels (pixels where the green component is the maximum)
16695 @item cyans
16696 Adjustments for cyan pixels (pixels where the red component is the minimum)
16697 @item blues
16698 Adjustments for blue pixels (pixels where the blue component is the maximum)
16699 @item magentas
16700 Adjustments for magenta pixels (pixels where the green component is the minimum)
16701 @item whites
16702 Adjustments for white pixels (pixels where all components are greater than 128)
16703 @item neutrals
16704 Adjustments for all pixels except pure black and pure white
16705 @item blacks
16706 Adjustments for black pixels (pixels where all components are lesser than 128)
16707 @item psfile
16708 Specify a Photoshop selective color file (@code{.asv}) to import the settings from.
16709 @end table
16710
16711 All the adjustment settings (@option{reds}, @option{yellows}, ...) accept up to
16712 4 space separated floating point adjustment values in the [-1,1] range,
16713 respectively to adjust the amount of cyan, magenta, yellow and black for the
16714 pixels of its range.
16715
16716 @subsection Examples
16717
16718 @itemize
16719 @item
16720 Increase cyan by 50% and reduce yellow by 33% in every green areas, and
16721 increase magenta by 27% in blue areas:
16722 @example
16723 selectivecolor=greens=.5 0 -.33 0:blues=0 .27
16724 @end example
16725
16726 @item
16727 Use a Photoshop selective color preset:
16728 @example
16729 selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
16730 @end example
16731 @end itemize
16732
16733 @anchor{separatefields}
16734 @section separatefields
16735
16736 The @code{separatefields} takes a frame-based video input and splits
16737 each frame into its components fields, producing a new half height clip
16738 with twice the frame rate and twice the frame count.
16739
16740 This filter use field-dominance information in frame to decide which
16741 of each pair of fields to place first in the output.
16742 If it gets it wrong use @ref{setfield} filter before @code{separatefields} filter.
16743
16744 @section setdar, setsar
16745
16746 The @code{setdar} filter sets the Display Aspect Ratio for the filter
16747 output video.
16748
16749 This is done by changing the specified Sample (aka Pixel) Aspect
16750 Ratio, according to the following equation:
16751 @example
16752 @var{DAR} = @var{HORIZONTAL_RESOLUTION} / @var{VERTICAL_RESOLUTION} * @var{SAR}
16753 @end example
16754
16755 Keep in mind that the @code{setdar} filter does not modify the pixel
16756 dimensions of the video frame. Also, the display aspect ratio set by
16757 this filter may be changed by later filters in the filterchain,
16758 e.g. in case of scaling or if another "setdar" or a "setsar" filter is
16759 applied.
16760
16761 The @code{setsar} filter sets the Sample (aka Pixel) Aspect Ratio for
16762 the filter output video.
16763
16764 Note that as a consequence of the application of this filter, the
16765 output display aspect ratio will change according to the equation
16766 above.
16767
16768 Keep in mind that the sample aspect ratio set by the @code{setsar}
16769 filter may be changed by later filters in the filterchain, e.g. if
16770 another "setsar" or a "setdar" filter is applied.
16771
16772 It accepts the following parameters:
16773
16774 @table @option
16775 @item r, ratio, dar (@code{setdar} only), sar (@code{setsar} only)
16776 Set the aspect ratio used by the filter.
16777
16778 The parameter can be a floating point number string, an expression, or
16779 a string of the form @var{num}:@var{den}, where @var{num} and
16780 @var{den} are the numerator and denominator of the aspect ratio. If
16781 the parameter is not specified, it is assumed the value "0".
16782 In case the form "@var{num}:@var{den}" is used, the @code{:} character
16783 should be escaped.
16784
16785 @item max
16786 Set the maximum integer value to use for expressing numerator and
16787 denominator when reducing the expressed aspect ratio to a rational.
16788 Default value is @code{100}.
16789
16790 @end table
16791
16792 The parameter @var{sar} is an expression containing
16793 the following constants:
16794
16795 @table @option
16796 @item E, PI, PHI
16797 These are approximated values for the mathematical constants e
16798 (Euler's number), pi (Greek pi), and phi (the golden ratio).
16799
16800 @item w, h
16801 The input width and height.
16802
16803 @item a
16804 These are the same as @var{w} / @var{h}.
16805
16806 @item sar
16807 The input sample aspect ratio.
16808
16809 @item dar
16810 The input display aspect ratio. It is the same as
16811 (@var{w} / @var{h}) * @var{sar}.
16812
16813 @item hsub, vsub
16814 Horizontal and vertical chroma subsample values. For example, for the
16815 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16816 @end table
16817
16818 @subsection Examples
16819
16820 @itemize
16821
16822 @item
16823 To change the display aspect ratio to 16:9, specify one of the following:
16824 @example
16825 setdar=dar=1.77777
16826 setdar=dar=16/9
16827 @end example
16828
16829 @item
16830 To change the sample aspect ratio to 10:11, specify:
16831 @example
16832 setsar=sar=10/11
16833 @end example
16834
16835 @item
16836 To set a display aspect ratio of 16:9, and specify a maximum integer value of
16837 1000 in the aspect ratio reduction, use the command:
16838 @example
16839 setdar=ratio=16/9:max=1000
16840 @end example
16841
16842 @end itemize
16843
16844 @anchor{setfield}
16845 @section setfield
16846
16847 Force field for the output video frame.
16848
16849 The @code{setfield} filter marks the interlace type field for the
16850 output frames. It does not change the input frame, but only sets the
16851 corresponding property, which affects how the frame is treated by
16852 following filters (e.g. @code{fieldorder} or @code{yadif}).
16853
16854 The filter accepts the following options:
16855
16856 @table @option
16857
16858 @item mode
16859 Available values are:
16860
16861 @table @samp
16862 @item auto
16863 Keep the same field property.
16864
16865 @item bff
16866 Mark the frame as bottom-field-first.
16867
16868 @item tff
16869 Mark the frame as top-field-first.
16870
16871 @item prog
16872 Mark the frame as progressive.
16873 @end table
16874 @end table
16875
16876 @anchor{setparams}
16877 @section setparams
16878
16879 Force frame parameter for the output video frame.
16880
16881 The @code{setparams} filter marks interlace and color range for the
16882 output frames. It does not change the input frame, but only sets the
16883 corresponding property, which affects how the frame is treated by
16884 filters/encoders.
16885
16886 @table @option
16887 @item field_mode
16888 Available values are:
16889
16890 @table @samp
16891 @item auto
16892 Keep the same field property (default).
16893
16894 @item bff
16895 Mark the frame as bottom-field-first.
16896
16897 @item tff
16898 Mark the frame as top-field-first.
16899
16900 @item prog
16901 Mark the frame as progressive.
16902 @end table
16903
16904 @item range
16905 Available values are:
16906
16907 @table @samp
16908 @item auto
16909 Keep the same color range property (default).
16910
16911 @item unspecified, unknown
16912 Mark the frame as unspecified color range.
16913
16914 @item limited, tv, mpeg
16915 Mark the frame as limited range.
16916
16917 @item full, pc, jpeg
16918 Mark the frame as full range.
16919 @end table
16920
16921 @item color_primaries
16922 Set the color primaries.
16923 Available values are:
16924
16925 @table @samp
16926 @item auto
16927 Keep the same color primaries property (default).
16928
16929 @item bt709
16930 @item unknown
16931 @item bt470m
16932 @item bt470bg
16933 @item smpte170m
16934 @item smpte240m
16935 @item film
16936 @item bt2020
16937 @item smpte428
16938 @item smpte431
16939 @item smpte432
16940 @item jedec-p22
16941 @end table
16942
16943 @item color_trc
16944 Set the color transfer.
16945 Available values are:
16946
16947 @table @samp
16948 @item auto
16949 Keep the same color trc property (default).
16950
16951 @item bt709
16952 @item unknown
16953 @item bt470m
16954 @item bt470bg
16955 @item smpte170m
16956 @item smpte240m
16957 @item linear
16958 @item log100
16959 @item log316
16960 @item iec61966-2-4
16961 @item bt1361e
16962 @item iec61966-2-1
16963 @item bt2020-10
16964 @item bt2020-12
16965 @item smpte2084
16966 @item smpte428
16967 @item arib-std-b67
16968 @end table
16969
16970 @item colorspace
16971 Set the colorspace.
16972 Available values are:
16973
16974 @table @samp
16975 @item auto
16976 Keep the same colorspace property (default).
16977
16978 @item gbr
16979 @item bt709
16980 @item unknown
16981 @item fcc
16982 @item bt470bg
16983 @item smpte170m
16984 @item smpte240m
16985 @item ycgco
16986 @item bt2020nc
16987 @item bt2020c
16988 @item smpte2085
16989 @item chroma-derived-nc
16990 @item chroma-derived-c
16991 @item ictcp
16992 @end table
16993 @end table
16994
16995 @section showinfo
16996
16997 Show a line containing various information for each input video frame.
16998 The input video is not modified.
16999
17000 This filter supports the following options:
17001
17002 @table @option
17003 @item checksum
17004 Calculate checksums of each plane. By default enabled.
17005 @end table
17006
17007 The shown line contains a sequence of key/value pairs of the form
17008 @var{key}:@var{value}.
17009
17010 The following values are shown in the output:
17011
17012 @table @option
17013 @item n
17014 The (sequential) number of the input frame, starting from 0.
17015
17016 @item pts
17017 The Presentation TimeStamp of the input frame, expressed as a number of
17018 time base units. The time base unit depends on the filter input pad.
17019
17020 @item pts_time
17021 The Presentation TimeStamp of the input frame, expressed as a number of
17022 seconds.
17023
17024 @item pos
17025 The position of the frame in the input stream, or -1 if this information is
17026 unavailable and/or meaningless (for example in case of synthetic video).
17027
17028 @item fmt
17029 The pixel format name.
17030
17031 @item sar
17032 The sample aspect ratio of the input frame, expressed in the form
17033 @var{num}/@var{den}.
17034
17035 @item s
17036 The size of the input frame. For the syntax of this option, check the
17037 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17038
17039 @item i
17040 The type of interlaced mode ("P" for "progressive", "T" for top field first, "B"
17041 for bottom field first).
17042
17043 @item iskey
17044 This is 1 if the frame is a key frame, 0 otherwise.
17045
17046 @item type
17047 The picture type of the input frame ("I" for an I-frame, "P" for a
17048 P-frame, "B" for a B-frame, or "?" for an unknown type).
17049 Also refer to the documentation of the @code{AVPictureType} enum and of
17050 the @code{av_get_picture_type_char} function defined in
17051 @file{libavutil/avutil.h}.
17052
17053 @item checksum
17054 The Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame.
17055
17056 @item plane_checksum
17057 The Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
17058 expressed in the form "[@var{c0} @var{c1} @var{c2} @var{c3}]".
17059
17060 @item mean
17061 The mean value of pixels in each plane of the input frame, expressed in the form
17062 "[@var{mean0} @var{mean1} @var{mean2} @var{mean3}]".
17063
17064 @item stdev
17065 The standard deviation of pixel values in each plane of the input frame, expressed
17066 in the form "[@var{stdev0} @var{stdev1} @var{stdev2} @var{stdev3}]".
17067
17068 @end table
17069
17070 @section showpalette
17071
17072 Displays the 256 colors palette of each frame. This filter is only relevant for
17073 @var{pal8} pixel format frames.
17074
17075 It accepts the following option:
17076
17077 @table @option
17078 @item s
17079 Set the size of the box used to represent one palette color entry. Default is
17080 @code{30} (for a @code{30x30} pixel box).
17081 @end table
17082
17083 @section shuffleframes
17084
17085 Reorder and/or duplicate and/or drop video frames.
17086
17087 It accepts the following parameters:
17088
17089 @table @option
17090 @item mapping
17091 Set the destination indexes of input frames.
17092 This is space or '|' separated list of indexes that maps input frames to output
17093 frames. Number of indexes also sets maximal value that each index may have.
17094 '-1' index have special meaning and that is to drop frame.
17095 @end table
17096
17097 The first frame has the index 0. The default is to keep the input unchanged.
17098
17099 @subsection Examples
17100
17101 @itemize
17102 @item
17103 Swap second and third frame of every three frames of the input:
17104 @example
17105 ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
17106 @end example
17107
17108 @item
17109 Swap 10th and 1st frame of every ten frames of the input:
17110 @example
17111 ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
17112 @end example
17113 @end itemize
17114
17115 @section shuffleplanes
17116
17117 Reorder and/or duplicate video planes.
17118
17119 It accepts the following parameters:
17120
17121 @table @option
17122
17123 @item map0
17124 The index of the input plane to be used as the first output plane.
17125
17126 @item map1
17127 The index of the input plane to be used as the second output plane.
17128
17129 @item map2
17130 The index of the input plane to be used as the third output plane.
17131
17132 @item map3
17133 The index of the input plane to be used as the fourth output plane.
17134
17135 @end table
17136
17137 The first plane has the index 0. The default is to keep the input unchanged.
17138
17139 @subsection Examples
17140
17141 @itemize
17142 @item
17143 Swap the second and third planes of the input:
17144 @example
17145 ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
17146 @end example
17147 @end itemize
17148
17149 @anchor{signalstats}
17150 @section signalstats
17151 Evaluate various visual metrics that assist in determining issues associated
17152 with the digitization of analog video media.
17153
17154 By default the filter will log these metadata values:
17155
17156 @table @option
17157 @item YMIN
17158 Display the minimal Y value contained within the input frame. Expressed in
17159 range of [0-255].
17160
17161 @item YLOW
17162 Display the Y value at the 10% percentile within the input frame. Expressed in
17163 range of [0-255].
17164
17165 @item YAVG
17166 Display the average Y value within the input frame. Expressed in range of
17167 [0-255].
17168
17169 @item YHIGH
17170 Display the Y value at the 90% percentile within the input frame. Expressed in
17171 range of [0-255].
17172
17173 @item YMAX
17174 Display the maximum Y value contained within the input frame. Expressed in
17175 range of [0-255].
17176
17177 @item UMIN
17178 Display the minimal U value contained within the input frame. Expressed in
17179 range of [0-255].
17180
17181 @item ULOW
17182 Display the U value at the 10% percentile within the input frame. Expressed in
17183 range of [0-255].
17184
17185 @item UAVG
17186 Display the average U value within the input frame. Expressed in range of
17187 [0-255].
17188
17189 @item UHIGH
17190 Display the U value at the 90% percentile within the input frame. Expressed in
17191 range of [0-255].
17192
17193 @item UMAX
17194 Display the maximum U value contained within the input frame. Expressed in
17195 range of [0-255].
17196
17197 @item VMIN
17198 Display the minimal V value contained within the input frame. Expressed in
17199 range of [0-255].
17200
17201 @item VLOW
17202 Display the V value at the 10% percentile within the input frame. Expressed in
17203 range of [0-255].
17204
17205 @item VAVG
17206 Display the average V value within the input frame. Expressed in range of
17207 [0-255].
17208
17209 @item VHIGH
17210 Display the V value at the 90% percentile within the input frame. Expressed in
17211 range of [0-255].
17212
17213 @item VMAX
17214 Display the maximum V value contained within the input frame. Expressed in
17215 range of [0-255].
17216
17217 @item SATMIN
17218 Display the minimal saturation value contained within the input frame.
17219 Expressed in range of [0-~181.02].
17220
17221 @item SATLOW
17222 Display the saturation value at the 10% percentile within the input frame.
17223 Expressed in range of [0-~181.02].
17224
17225 @item SATAVG
17226 Display the average saturation value within the input frame. Expressed in range
17227 of [0-~181.02].
17228
17229 @item SATHIGH
17230 Display the saturation value at the 90% percentile within the input frame.
17231 Expressed in range of [0-~181.02].
17232
17233 @item SATMAX
17234 Display the maximum saturation value contained within the input frame.
17235 Expressed in range of [0-~181.02].
17236
17237 @item HUEMED
17238 Display the median value for hue within the input frame. Expressed in range of
17239 [0-360].
17240
17241 @item HUEAVG
17242 Display the average value for hue within the input frame. Expressed in range of
17243 [0-360].
17244
17245 @item YDIF
17246 Display the average of sample value difference between all values of the Y
17247 plane in the current frame and corresponding values of the previous input frame.
17248 Expressed in range of [0-255].
17249
17250 @item UDIF
17251 Display the average of sample value difference between all values of the U
17252 plane in the current frame and corresponding values of the previous input frame.
17253 Expressed in range of [0-255].
17254
17255 @item VDIF
17256 Display the average of sample value difference between all values of the V
17257 plane in the current frame and corresponding values of the previous input frame.
17258 Expressed in range of [0-255].
17259
17260 @item YBITDEPTH
17261 Display bit depth of Y plane in current frame.
17262 Expressed in range of [0-16].
17263
17264 @item UBITDEPTH
17265 Display bit depth of U plane in current frame.
17266 Expressed in range of [0-16].
17267
17268 @item VBITDEPTH
17269 Display bit depth of V plane in current frame.
17270 Expressed in range of [0-16].
17271 @end table
17272
17273 The filter accepts the following options:
17274
17275 @table @option
17276 @item stat
17277 @item out
17278
17279 @option{stat} specify an additional form of image analysis.
17280 @option{out} output video with the specified type of pixel highlighted.
17281
17282 Both options accept the following values:
17283
17284 @table @samp
17285 @item tout
17286 Identify @var{temporal outliers} pixels. A @var{temporal outlier} is a pixel
17287 unlike the neighboring pixels of the same field. Examples of temporal outliers
17288 include the results of video dropouts, head clogs, or tape tracking issues.
17289
17290 @item vrep
17291 Identify @var{vertical line repetition}. Vertical line repetition includes
17292 similar rows of pixels within a frame. In born-digital video vertical line
17293 repetition is common, but this pattern is uncommon in video digitized from an
17294 analog source. When it occurs in video that results from the digitization of an
17295 analog source it can indicate concealment from a dropout compensator.
17296
17297 @item brng
17298 Identify pixels that fall outside of legal broadcast range.
17299 @end table
17300
17301 @item color, c
17302 Set the highlight color for the @option{out} option. The default color is
17303 yellow.
17304 @end table
17305
17306 @subsection Examples
17307
17308 @itemize
17309 @item
17310 Output data of various video metrics:
17311 @example
17312 ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
17313 @end example
17314
17315 @item
17316 Output specific data about the minimum and maximum values of the Y plane per frame:
17317 @example
17318 ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
17319 @end example
17320
17321 @item
17322 Playback video while highlighting pixels that are outside of broadcast range in red.
17323 @example
17324 ffplay example.mov -vf signalstats="out=brng:color=red"
17325 @end example
17326
17327 @item
17328 Playback video with signalstats metadata drawn over the frame.
17329 @example
17330 ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
17331 @end example
17332
17333 The contents of signalstat_drawtext.txt used in the command are:
17334 @example
17335 time %@{pts:hms@}
17336 Y (%@{metadata:lavfi.signalstats.YMIN@}-%@{metadata:lavfi.signalstats.YMAX@})
17337 U (%@{metadata:lavfi.signalstats.UMIN@}-%@{metadata:lavfi.signalstats.UMAX@})
17338 V (%@{metadata:lavfi.signalstats.VMIN@}-%@{metadata:lavfi.signalstats.VMAX@})
17339 saturation maximum: %@{metadata:lavfi.signalstats.SATMAX@}
17340
17341 @end example
17342 @end itemize
17343
17344 @anchor{signature}
17345 @section signature
17346
17347 Calculates the MPEG-7 Video Signature. The filter can handle more than one
17348 input. In this case the matching between the inputs can be calculated additionally.
17349 The filter always passes through the first input. The signature of each stream can
17350 be written into a file.
17351
17352 It accepts the following options:
17353
17354 @table @option
17355 @item detectmode
17356 Enable or disable the matching process.
17357
17358 Available values are:
17359
17360 @table @samp
17361 @item off
17362 Disable the calculation of a matching (default).
17363 @item full
17364 Calculate the matching for the whole video and output whether the whole video
17365 matches or only parts.
17366 @item fast
17367 Calculate only until a matching is found or the video ends. Should be faster in
17368 some cases.
17369 @end table
17370
17371 @item nb_inputs
17372 Set the number of inputs. The option value must be a non negative integer.
17373 Default value is 1.
17374
17375 @item filename
17376 Set the path to which the output is written. If there is more than one input,
17377 the path must be a prototype, i.e. must contain %d or %0nd (where n is a positive
17378 integer), that will be replaced with the input number. If no filename is
17379 specified, no output will be written. This is the default.
17380
17381 @item format
17382 Choose the output format.
17383
17384 Available values are:
17385
17386 @table @samp
17387 @item binary
17388 Use the specified binary representation (default).
17389 @item xml
17390 Use the specified xml representation.
17391 @end table
17392
17393 @item th_d
17394 Set threshold to detect one word as similar. The option value must be an integer
17395 greater than zero. The default value is 9000.
17396
17397 @item th_dc
17398 Set threshold to detect all words as similar. The option value must be an integer
17399 greater than zero. The default value is 60000.
17400
17401 @item th_xh
17402 Set threshold to detect frames as similar. The option value must be an integer
17403 greater than zero. The default value is 116.
17404
17405 @item th_di
17406 Set the minimum length of a sequence in frames to recognize it as matching
17407 sequence. The option value must be a non negative integer value.
17408 The default value is 0.
17409
17410 @item th_it
17411 Set the minimum relation, that matching frames to all frames must have.
17412 The option value must be a double value between 0 and 1. The default value is 0.5.
17413 @end table
17414
17415 @subsection Examples
17416
17417 @itemize
17418 @item
17419 To calculate the signature of an input video and store it in signature.bin:
17420 @example
17421 ffmpeg -i input.mkv -vf signature=filename=signature.bin -map 0:v -f null -
17422 @end example
17423
17424 @item
17425 To detect whether two videos match and store the signatures in XML format in
17426 signature0.xml and signature1.xml:
17427 @example
17428 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 -
17429 @end example
17430
17431 @end itemize
17432
17433 @anchor{smartblur}
17434 @section smartblur
17435
17436 Blur the input video without impacting the outlines.
17437
17438 It accepts the following options:
17439
17440 @table @option
17441 @item luma_radius, lr
17442 Set the luma radius. The option value must be a float number in
17443 the range [0.1,5.0] that specifies the variance of the gaussian filter
17444 used to blur the image (slower if larger). Default value is 1.0.
17445
17446 @item luma_strength, ls
17447 Set the luma strength. The option value must be a float number
17448 in the range [-1.0,1.0] that configures the blurring. A value included
17449 in [0.0,1.0] will blur the image whereas a value included in
17450 [-1.0,0.0] will sharpen the image. Default value is 1.0.
17451
17452 @item luma_threshold, lt
17453 Set the luma threshold used as a coefficient to determine
17454 whether a pixel should be blurred or not. The option value must be an
17455 integer in the range [-30,30]. A value of 0 will filter all the image,
17456 a value included in [0,30] will filter flat areas and a value included
17457 in [-30,0] will filter edges. Default value is 0.
17458
17459 @item chroma_radius, cr
17460 Set the chroma radius. The option value must be a float number in
17461 the range [0.1,5.0] that specifies the variance of the gaussian filter
17462 used to blur the image (slower if larger). Default value is @option{luma_radius}.
17463
17464 @item chroma_strength, cs
17465 Set the chroma strength. The option value must be a float number
17466 in the range [-1.0,1.0] that configures the blurring. A value included
17467 in [0.0,1.0] will blur the image whereas a value included in
17468 [-1.0,0.0] will sharpen the image. Default value is @option{luma_strength}.
17469
17470 @item chroma_threshold, ct
17471 Set the chroma threshold used as a coefficient to determine
17472 whether a pixel should be blurred or not. The option value must be an
17473 integer in the range [-30,30]. A value of 0 will filter all the image,
17474 a value included in [0,30] will filter flat areas and a value included
17475 in [-30,0] will filter edges. Default value is @option{luma_threshold}.
17476 @end table
17477
17478 If a chroma option is not explicitly set, the corresponding luma value
17479 is set.
17480
17481 @section sobel
17482 Apply sobel operator to input video stream.
17483
17484 The filter accepts the following option:
17485
17486 @table @option
17487 @item planes
17488 Set which planes will be processed, unprocessed planes will be copied.
17489 By default value 0xf, all planes will be processed.
17490
17491 @item scale
17492 Set value which will be multiplied with filtered result.
17493
17494 @item delta
17495 Set value which will be added to filtered result.
17496 @end table
17497
17498 @anchor{spp}
17499 @section spp
17500
17501 Apply a simple postprocessing filter that compresses and decompresses the image
17502 at several (or - in the case of @option{quality} level @code{6} - all) shifts
17503 and average the results.
17504
17505 The filter accepts the following options:
17506
17507 @table @option
17508 @item quality
17509 Set quality. This option defines the number of levels for averaging. It accepts
17510 an integer in the range 0-6. If set to @code{0}, the filter will have no
17511 effect. A value of @code{6} means the higher quality. For each increment of
17512 that value the speed drops by a factor of approximately 2.  Default value is
17513 @code{3}.
17514
17515 @item qp
17516 Force a constant quantization parameter. If not set, the filter will use the QP
17517 from the video stream (if available).
17518
17519 @item mode
17520 Set thresholding mode. Available modes are:
17521
17522 @table @samp
17523 @item hard
17524 Set hard thresholding (default).
17525 @item soft
17526 Set soft thresholding (better de-ringing effect, but likely blurrier).
17527 @end table
17528
17529 @item use_bframe_qp
17530 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
17531 option may cause flicker since the B-Frames have often larger QP. Default is
17532 @code{0} (not enabled).
17533 @end table
17534
17535 @subsection Commands
17536
17537 This filter supports the following commands:
17538 @table @option
17539 @item quality, level
17540 Set quality level. The value @code{max} can be used to set the maximum level,
17541 currently @code{6}.
17542 @end table
17543
17544 @anchor{sr}
17545 @section sr
17546
17547 Scale the input by applying one of the super-resolution methods based on
17548 convolutional neural networks. Supported models:
17549
17550 @itemize
17551 @item
17552 Super-Resolution Convolutional Neural Network model (SRCNN).
17553 See @url{https://arxiv.org/abs/1501.00092}.
17554
17555 @item
17556 Efficient Sub-Pixel Convolutional Neural Network model (ESPCN).
17557 See @url{https://arxiv.org/abs/1609.05158}.
17558 @end itemize
17559
17560 Training scripts as well as scripts for model file (.pb) saving can be found at
17561 @url{https://github.com/XueweiMeng/sr/tree/sr_dnn_native}. Original repository
17562 is at @url{https://github.com/HighVoltageRocknRoll/sr.git}.
17563
17564 Native model files (.model) can be generated from TensorFlow model
17565 files (.pb) by using tools/python/convert.py
17566
17567 The filter accepts the following options:
17568
17569 @table @option
17570 @item dnn_backend
17571 Specify which DNN backend to use for model loading and execution. This option accepts
17572 the following values:
17573
17574 @table @samp
17575 @item native
17576 Native implementation of DNN loading and execution.
17577
17578 @item tensorflow
17579 TensorFlow backend. To enable this backend you
17580 need to install the TensorFlow for C library (see
17581 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
17582 @code{--enable-libtensorflow}
17583 @end table
17584
17585 Default value is @samp{native}.
17586
17587 @item model
17588 Set path to model file specifying network architecture and its parameters.
17589 Note that different backends use different file formats. TensorFlow backend
17590 can load files for both formats, while native backend can load files for only
17591 its format.
17592
17593 @item scale_factor
17594 Set scale factor for SRCNN model. Allowed values are @code{2}, @code{3} and @code{4}.
17595 Default value is @code{2}. Scale factor is necessary for SRCNN model, because it accepts
17596 input upscaled using bicubic upscaling with proper scale factor.
17597 @end table
17598
17599 This feature can also be finished with @ref{dnn_processing} filter.
17600
17601 @section ssim
17602
17603 Obtain the SSIM (Structural SImilarity Metric) between two input videos.
17604
17605 This filter takes in input two input videos, the first input is
17606 considered the "main" source and is passed unchanged to the
17607 output. The second input is used as a "reference" video for computing
17608 the SSIM.
17609
17610 Both video inputs must have the same resolution and pixel format for
17611 this filter to work correctly. Also it assumes that both inputs
17612 have the same number of frames, which are compared one by one.
17613
17614 The filter stores the calculated SSIM of each frame.
17615
17616 The description of the accepted parameters follows.
17617
17618 @table @option
17619 @item stats_file, f
17620 If specified the filter will use the named file to save the SSIM of
17621 each individual frame. When filename equals "-" the data is sent to
17622 standard output.
17623 @end table
17624
17625 The file printed if @var{stats_file} is selected, contains a sequence of
17626 key/value pairs of the form @var{key}:@var{value} for each compared
17627 couple of frames.
17628
17629 A description of each shown parameter follows:
17630
17631 @table @option
17632 @item n
17633 sequential number of the input frame, starting from 1
17634
17635 @item Y, U, V, R, G, B
17636 SSIM of the compared frames for the component specified by the suffix.
17637
17638 @item All
17639 SSIM of the compared frames for the whole frame.
17640
17641 @item dB
17642 Same as above but in dB representation.
17643 @end table
17644
17645 This filter also supports the @ref{framesync} options.
17646
17647 @subsection Examples
17648 @itemize
17649 @item
17650 For example:
17651 @example
17652 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
17653 [main][ref] ssim="stats_file=stats.log" [out]
17654 @end example
17655
17656 On this example the input file being processed is compared with the
17657 reference file @file{ref_movie.mpg}. The SSIM of each individual frame
17658 is stored in @file{stats.log}.
17659
17660 @item
17661 Another example with both psnr and ssim at same time:
17662 @example
17663 ffmpeg -i main.mpg -i ref.mpg -lavfi  "ssim;[0:v][1:v]psnr" -f null -
17664 @end example
17665
17666 @item
17667 Another example with different containers:
17668 @example
17669 ffmpeg -i main.mpg -i ref.mkv -lavfi  "[0:v]settb=AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=AVTB,setpts=PTS-STARTPTS[ref];[main][ref]ssim" -f null -
17670 @end example
17671 @end itemize
17672
17673 @section stereo3d
17674
17675 Convert between different stereoscopic image formats.
17676
17677 The filters accept the following options:
17678
17679 @table @option
17680 @item in
17681 Set stereoscopic image format of input.
17682
17683 Available values for input image formats are:
17684 @table @samp
17685 @item sbsl
17686 side by side parallel (left eye left, right eye right)
17687
17688 @item sbsr
17689 side by side crosseye (right eye left, left eye right)
17690
17691 @item sbs2l
17692 side by side parallel with half width resolution
17693 (left eye left, right eye right)
17694
17695 @item sbs2r
17696 side by side crosseye with half width resolution
17697 (right eye left, left eye right)
17698
17699 @item abl
17700 @item tbl
17701 above-below (left eye above, right eye below)
17702
17703 @item abr
17704 @item tbr
17705 above-below (right eye above, left eye below)
17706
17707 @item ab2l
17708 @item tb2l
17709 above-below with half height resolution
17710 (left eye above, right eye below)
17711
17712 @item ab2r
17713 @item tb2r
17714 above-below with half height resolution
17715 (right eye above, left eye below)
17716
17717 @item al
17718 alternating frames (left eye first, right eye second)
17719
17720 @item ar
17721 alternating frames (right eye first, left eye second)
17722
17723 @item irl
17724 interleaved rows (left eye has top row, right eye starts on next row)
17725
17726 @item irr
17727 interleaved rows (right eye has top row, left eye starts on next row)
17728
17729 @item icl
17730 interleaved columns, left eye first
17731
17732 @item icr
17733 interleaved columns, right eye first
17734
17735 Default value is @samp{sbsl}.
17736 @end table
17737
17738 @item out
17739 Set stereoscopic image format of output.
17740
17741 @table @samp
17742 @item sbsl
17743 side by side parallel (left eye left, right eye right)
17744
17745 @item sbsr
17746 side by side crosseye (right eye left, left eye right)
17747
17748 @item sbs2l
17749 side by side parallel with half width resolution
17750 (left eye left, right eye right)
17751
17752 @item sbs2r
17753 side by side crosseye with half width resolution
17754 (right eye left, left eye right)
17755
17756 @item abl
17757 @item tbl
17758 above-below (left eye above, right eye below)
17759
17760 @item abr
17761 @item tbr
17762 above-below (right eye above, left eye below)
17763
17764 @item ab2l
17765 @item tb2l
17766 above-below with half height resolution
17767 (left eye above, right eye below)
17768
17769 @item ab2r
17770 @item tb2r
17771 above-below with half height resolution
17772 (right eye above, left eye below)
17773
17774 @item al
17775 alternating frames (left eye first, right eye second)
17776
17777 @item ar
17778 alternating frames (right eye first, left eye second)
17779
17780 @item irl
17781 interleaved rows (left eye has top row, right eye starts on next row)
17782
17783 @item irr
17784 interleaved rows (right eye has top row, left eye starts on next row)
17785
17786 @item arbg
17787 anaglyph red/blue gray
17788 (red filter on left eye, blue filter on right eye)
17789
17790 @item argg
17791 anaglyph red/green gray
17792 (red filter on left eye, green filter on right eye)
17793
17794 @item arcg
17795 anaglyph red/cyan gray
17796 (red filter on left eye, cyan filter on right eye)
17797
17798 @item arch
17799 anaglyph red/cyan half colored
17800 (red filter on left eye, cyan filter on right eye)
17801
17802 @item arcc
17803 anaglyph red/cyan color
17804 (red filter on left eye, cyan filter on right eye)
17805
17806 @item arcd
17807 anaglyph red/cyan color optimized with the least squares projection of dubois
17808 (red filter on left eye, cyan filter on right eye)
17809
17810 @item agmg
17811 anaglyph green/magenta gray
17812 (green filter on left eye, magenta filter on right eye)
17813
17814 @item agmh
17815 anaglyph green/magenta half colored
17816 (green filter on left eye, magenta filter on right eye)
17817
17818 @item agmc
17819 anaglyph green/magenta colored
17820 (green filter on left eye, magenta filter on right eye)
17821
17822 @item agmd
17823 anaglyph green/magenta color optimized with the least squares projection of dubois
17824 (green filter on left eye, magenta filter on right eye)
17825
17826 @item aybg
17827 anaglyph yellow/blue gray
17828 (yellow filter on left eye, blue filter on right eye)
17829
17830 @item aybh
17831 anaglyph yellow/blue half colored
17832 (yellow filter on left eye, blue filter on right eye)
17833
17834 @item aybc
17835 anaglyph yellow/blue colored
17836 (yellow filter on left eye, blue filter on right eye)
17837
17838 @item aybd
17839 anaglyph yellow/blue color optimized with the least squares projection of dubois
17840 (yellow filter on left eye, blue filter on right eye)
17841
17842 @item ml
17843 mono output (left eye only)
17844
17845 @item mr
17846 mono output (right eye only)
17847
17848 @item chl
17849 checkerboard, left eye first
17850
17851 @item chr
17852 checkerboard, right eye first
17853
17854 @item icl
17855 interleaved columns, left eye first
17856
17857 @item icr
17858 interleaved columns, right eye first
17859
17860 @item hdmi
17861 HDMI frame pack
17862 @end table
17863
17864 Default value is @samp{arcd}.
17865 @end table
17866
17867 @subsection Examples
17868
17869 @itemize
17870 @item
17871 Convert input video from side by side parallel to anaglyph yellow/blue dubois:
17872 @example
17873 stereo3d=sbsl:aybd
17874 @end example
17875
17876 @item
17877 Convert input video from above below (left eye above, right eye below) to side by side crosseye.
17878 @example
17879 stereo3d=abl:sbsr
17880 @end example
17881 @end itemize
17882
17883 @section streamselect, astreamselect
17884 Select video or audio streams.
17885
17886 The filter accepts the following options:
17887
17888 @table @option
17889 @item inputs
17890 Set number of inputs. Default is 2.
17891
17892 @item map
17893 Set input indexes to remap to outputs.
17894 @end table
17895
17896 @subsection Commands
17897
17898 The @code{streamselect} and @code{astreamselect} filter supports the following
17899 commands:
17900
17901 @table @option
17902 @item map
17903 Set input indexes to remap to outputs.
17904 @end table
17905
17906 @subsection Examples
17907
17908 @itemize
17909 @item
17910 Select first 5 seconds 1st stream and rest of time 2nd stream:
17911 @example
17912 sendcmd='5.0 streamselect map 1',streamselect=inputs=2:map=0
17913 @end example
17914
17915 @item
17916 Same as above, but for audio:
17917 @example
17918 asendcmd='5.0 astreamselect map 1',astreamselect=inputs=2:map=0
17919 @end example
17920 @end itemize
17921
17922 @anchor{subtitles}
17923 @section subtitles
17924
17925 Draw subtitles on top of input video using the libass library.
17926
17927 To enable compilation of this filter you need to configure FFmpeg with
17928 @code{--enable-libass}. This filter also requires a build with libavcodec and
17929 libavformat to convert the passed subtitles file to ASS (Advanced Substation
17930 Alpha) subtitles format.
17931
17932 The filter accepts the following options:
17933
17934 @table @option
17935 @item filename, f
17936 Set the filename of the subtitle file to read. It must be specified.
17937
17938 @item original_size
17939 Specify the size of the original video, the video for which the ASS file
17940 was composed. For the syntax of this option, check the
17941 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17942 Due to a misdesign in ASS aspect ratio arithmetic, this is necessary to
17943 correctly scale the fonts if the aspect ratio has been changed.
17944
17945 @item fontsdir
17946 Set a directory path containing fonts that can be used by the filter.
17947 These fonts will be used in addition to whatever the font provider uses.
17948
17949 @item alpha
17950 Process alpha channel, by default alpha channel is untouched.
17951
17952 @item charenc
17953 Set subtitles input character encoding. @code{subtitles} filter only. Only
17954 useful if not UTF-8.
17955
17956 @item stream_index, si
17957 Set subtitles stream index. @code{subtitles} filter only.
17958
17959 @item force_style
17960 Override default style or script info parameters of the subtitles. It accepts a
17961 string containing ASS style format @code{KEY=VALUE} couples separated by ",".
17962 @end table
17963
17964 If the first key is not specified, it is assumed that the first value
17965 specifies the @option{filename}.
17966
17967 For example, to render the file @file{sub.srt} on top of the input
17968 video, use the command:
17969 @example
17970 subtitles=sub.srt
17971 @end example
17972
17973 which is equivalent to:
17974 @example
17975 subtitles=filename=sub.srt
17976 @end example
17977
17978 To render the default subtitles stream from file @file{video.mkv}, use:
17979 @example
17980 subtitles=video.mkv
17981 @end example
17982
17983 To render the second subtitles stream from that file, use:
17984 @example
17985 subtitles=video.mkv:si=1
17986 @end example
17987
17988 To make the subtitles stream from @file{sub.srt} appear in 80% transparent blue
17989 @code{DejaVu Serif}, use:
17990 @example
17991 subtitles=sub.srt:force_style='Fontname=DejaVu Serif,PrimaryColour=&HCCFF0000'
17992 @end example
17993
17994 @section super2xsai
17995
17996 Scale the input by 2x and smooth using the Super2xSaI (Scale and
17997 Interpolate) pixel art scaling algorithm.
17998
17999 Useful for enlarging pixel art images without reducing sharpness.
18000
18001 @section swaprect
18002
18003 Swap two rectangular objects in video.
18004
18005 This filter accepts the following options:
18006
18007 @table @option
18008 @item w
18009 Set object width.
18010
18011 @item h
18012 Set object height.
18013
18014 @item x1
18015 Set 1st rect x coordinate.
18016
18017 @item y1
18018 Set 1st rect y coordinate.
18019
18020 @item x2
18021 Set 2nd rect x coordinate.
18022
18023 @item y2
18024 Set 2nd rect y coordinate.
18025
18026 All expressions are evaluated once for each frame.
18027 @end table
18028
18029 The all options are expressions containing the following constants:
18030
18031 @table @option
18032 @item w
18033 @item h
18034 The input width and height.
18035
18036 @item a
18037 same as @var{w} / @var{h}
18038
18039 @item sar
18040 input sample aspect ratio
18041
18042 @item dar
18043 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
18044
18045 @item n
18046 The number of the input frame, starting from 0.
18047
18048 @item t
18049 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
18050
18051 @item pos
18052 the position in the file of the input frame, NAN if unknown
18053 @end table
18054
18055 @section swapuv
18056 Swap U & V plane.
18057
18058 @section tblend
18059 Blend successive video frames.
18060
18061 See @ref{blend}
18062
18063 @section telecine
18064
18065 Apply telecine process to the video.
18066
18067 This filter accepts the following options:
18068
18069 @table @option
18070 @item first_field
18071 @table @samp
18072 @item top, t
18073 top field first
18074 @item bottom, b
18075 bottom field first
18076 The default value is @code{top}.
18077 @end table
18078
18079 @item pattern
18080 A string of numbers representing the pulldown pattern you wish to apply.
18081 The default value is @code{23}.
18082 @end table
18083
18084 @example
18085 Some typical patterns:
18086
18087 NTSC output (30i):
18088 27.5p: 32222
18089 24p: 23 (classic)
18090 24p: 2332 (preferred)
18091 20p: 33
18092 18p: 334
18093 16p: 3444
18094
18095 PAL output (25i):
18096 27.5p: 12222
18097 24p: 222222222223 ("Euro pulldown")
18098 16.67p: 33
18099 16p: 33333334
18100 @end example
18101
18102 @section thistogram
18103
18104 Compute and draw a color distribution histogram for the input video across time.
18105
18106 Unlike @ref{histogram} video filter which only shows histogram of single input frame
18107 at certain time, this filter shows also past histograms of number of frames defined
18108 by @code{width} option.
18109
18110 The computed histogram is a representation of the color component
18111 distribution in an image.
18112
18113 The filter accepts the following options:
18114
18115 @table @option
18116 @item width, w
18117 Set width of single color component output. Default value is @code{0}.
18118 Value of @code{0} means width will be picked from input video.
18119 This also set number of passed histograms to keep.
18120 Allowed range is [0, 8192].
18121
18122 @item display_mode, d
18123 Set display mode.
18124 It accepts the following values:
18125 @table @samp
18126 @item stack
18127 Per color component graphs are placed below each other.
18128
18129 @item parade
18130 Per color component graphs are placed side by side.
18131
18132 @item overlay
18133 Presents information identical to that in the @code{parade}, except
18134 that the graphs representing color components are superimposed directly
18135 over one another.
18136 @end table
18137 Default is @code{stack}.
18138
18139 @item levels_mode, m
18140 Set mode. Can be either @code{linear}, or @code{logarithmic}.
18141 Default is @code{linear}.
18142
18143 @item components, c
18144 Set what color components to display.
18145 Default is @code{7}.
18146
18147 @item bgopacity, b
18148 Set background opacity. Default is @code{0.9}.
18149
18150 @item envelope, e
18151 Show envelope. Default is disabled.
18152
18153 @item ecolor, ec
18154 Set envelope color. Default is @code{gold}.
18155 @end table
18156
18157 @section threshold
18158
18159 Apply threshold effect to video stream.
18160
18161 This filter needs four video streams to perform thresholding.
18162 First stream is stream we are filtering.
18163 Second stream is holding threshold values, third stream is holding min values,
18164 and last, fourth stream is holding max values.
18165
18166 The filter accepts the following option:
18167
18168 @table @option
18169 @item planes
18170 Set which planes will be processed, unprocessed planes will be copied.
18171 By default value 0xf, all planes will be processed.
18172 @end table
18173
18174 For example if first stream pixel's component value is less then threshold value
18175 of pixel component from 2nd threshold stream, third stream value will picked,
18176 otherwise fourth stream pixel component value will be picked.
18177
18178 Using color source filter one can perform various types of thresholding:
18179
18180 @subsection Examples
18181
18182 @itemize
18183 @item
18184 Binary threshold, using gray color as threshold:
18185 @example
18186 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=black -f lavfi -i color=white -lavfi threshold output.avi
18187 @end example
18188
18189 @item
18190 Inverted binary threshold, using gray color as threshold:
18191 @example
18192 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -f lavfi -i color=black -lavfi threshold output.avi
18193 @end example
18194
18195 @item
18196 Truncate binary threshold, using gray color as threshold:
18197 @example
18198 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=gray -lavfi threshold output.avi
18199 @end example
18200
18201 @item
18202 Threshold to zero, using gray color as threshold:
18203 @example
18204 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -i 320x240.avi -lavfi threshold output.avi
18205 @end example
18206
18207 @item
18208 Inverted threshold to zero, using gray color as threshold:
18209 @example
18210 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=white -lavfi threshold output.avi
18211 @end example
18212 @end itemize
18213
18214 @section thumbnail
18215 Select the most representative frame in a given sequence of consecutive frames.
18216
18217 The filter accepts the following options:
18218
18219 @table @option
18220 @item n
18221 Set the frames batch size to analyze; in a set of @var{n} frames, the filter
18222 will pick one of them, and then handle the next batch of @var{n} frames until
18223 the end. Default is @code{100}.
18224 @end table
18225
18226 Since the filter keeps track of the whole frames sequence, a bigger @var{n}
18227 value will result in a higher memory usage, so a high value is not recommended.
18228
18229 @subsection Examples
18230
18231 @itemize
18232 @item
18233 Extract one picture each 50 frames:
18234 @example
18235 thumbnail=50
18236 @end example
18237
18238 @item
18239 Complete example of a thumbnail creation with @command{ffmpeg}:
18240 @example
18241 ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
18242 @end example
18243 @end itemize
18244
18245 @anchor{tile}
18246 @section tile
18247
18248 Tile several successive frames together.
18249
18250 The @ref{untile} filter can do the reverse.
18251
18252 The filter accepts the following options:
18253
18254 @table @option
18255
18256 @item layout
18257 Set the grid size (i.e. the number of lines and columns). For the syntax of
18258 this option, check the
18259 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18260
18261 @item nb_frames
18262 Set the maximum number of frames to render in the given area. It must be less
18263 than or equal to @var{w}x@var{h}. The default value is @code{0}, meaning all
18264 the area will be used.
18265
18266 @item margin
18267 Set the outer border margin in pixels.
18268
18269 @item padding
18270 Set the inner border thickness (i.e. the number of pixels between frames). For
18271 more advanced padding options (such as having different values for the edges),
18272 refer to the pad video filter.
18273
18274 @item color
18275 Specify the color of the unused area. For the syntax of this option, check the
18276 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
18277 The default value of @var{color} is "black".
18278
18279 @item overlap
18280 Set the number of frames to overlap when tiling several successive frames together.
18281 The value must be between @code{0} and @var{nb_frames - 1}.
18282
18283 @item init_padding
18284 Set the number of frames to initially be empty before displaying first output frame.
18285 This controls how soon will one get first output frame.
18286 The value must be between @code{0} and @var{nb_frames - 1}.
18287 @end table
18288
18289 @subsection Examples
18290
18291 @itemize
18292 @item
18293 Produce 8x8 PNG tiles of all keyframes (@option{-skip_frame nokey}) in a movie:
18294 @example
18295 ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
18296 @end example
18297 The @option{-vsync 0} is necessary to prevent @command{ffmpeg} from
18298 duplicating each output frame to accommodate the originally detected frame
18299 rate.
18300
18301 @item
18302 Display @code{5} pictures in an area of @code{3x2} frames,
18303 with @code{7} pixels between them, and @code{2} pixels of initial margin, using
18304 mixed flat and named options:
18305 @example
18306 tile=3x2:nb_frames=5:padding=7:margin=2
18307 @end example
18308 @end itemize
18309
18310 @section tinterlace
18311
18312 Perform various types of temporal field interlacing.
18313
18314 Frames are counted starting from 1, so the first input frame is
18315 considered odd.
18316
18317 The filter accepts the following options:
18318
18319 @table @option
18320
18321 @item mode
18322 Specify the mode of the interlacing. This option can also be specified
18323 as a value alone. See below for a list of values for this option.
18324
18325 Available values are:
18326
18327 @table @samp
18328 @item merge, 0
18329 Move odd frames into the upper field, even into the lower field,
18330 generating a double height frame at half frame rate.
18331 @example
18332  ------> time
18333 Input:
18334 Frame 1         Frame 2         Frame 3         Frame 4
18335
18336 11111           22222           33333           44444
18337 11111           22222           33333           44444
18338 11111           22222           33333           44444
18339 11111           22222           33333           44444
18340
18341 Output:
18342 11111                           33333
18343 22222                           44444
18344 11111                           33333
18345 22222                           44444
18346 11111                           33333
18347 22222                           44444
18348 11111                           33333
18349 22222                           44444
18350 @end example
18351
18352 @item drop_even, 1
18353 Only output odd frames, even frames are dropped, generating a frame with
18354 unchanged height at half frame rate.
18355
18356 @example
18357  ------> time
18358 Input:
18359 Frame 1         Frame 2         Frame 3         Frame 4
18360
18361 11111           22222           33333           44444
18362 11111           22222           33333           44444
18363 11111           22222           33333           44444
18364 11111           22222           33333           44444
18365
18366 Output:
18367 11111                           33333
18368 11111                           33333
18369 11111                           33333
18370 11111                           33333
18371 @end example
18372
18373 @item drop_odd, 2
18374 Only output even frames, odd frames are dropped, generating a frame with
18375 unchanged height at half frame rate.
18376
18377 @example
18378  ------> time
18379 Input:
18380 Frame 1         Frame 2         Frame 3         Frame 4
18381
18382 11111           22222           33333           44444
18383 11111           22222           33333           44444
18384 11111           22222           33333           44444
18385 11111           22222           33333           44444
18386
18387 Output:
18388                 22222                           44444
18389                 22222                           44444
18390                 22222                           44444
18391                 22222                           44444
18392 @end example
18393
18394 @item pad, 3
18395 Expand each frame to full height, but pad alternate lines with black,
18396 generating a frame with double height at the same input frame rate.
18397
18398 @example
18399  ------> time
18400 Input:
18401 Frame 1         Frame 2         Frame 3         Frame 4
18402
18403 11111           22222           33333           44444
18404 11111           22222           33333           44444
18405 11111           22222           33333           44444
18406 11111           22222           33333           44444
18407
18408 Output:
18409 11111           .....           33333           .....
18410 .....           22222           .....           44444
18411 11111           .....           33333           .....
18412 .....           22222           .....           44444
18413 11111           .....           33333           .....
18414 .....           22222           .....           44444
18415 11111           .....           33333           .....
18416 .....           22222           .....           44444
18417 @end example
18418
18419
18420 @item interleave_top, 4
18421 Interleave the upper field from odd frames with the lower field from
18422 even frames, generating a frame with unchanged height at half frame rate.
18423
18424 @example
18425  ------> time
18426 Input:
18427 Frame 1         Frame 2         Frame 3         Frame 4
18428
18429 11111<-         22222           33333<-         44444
18430 11111           22222<-         33333           44444<-
18431 11111<-         22222           33333<-         44444
18432 11111           22222<-         33333           44444<-
18433
18434 Output:
18435 11111                           33333
18436 22222                           44444
18437 11111                           33333
18438 22222                           44444
18439 @end example
18440
18441
18442 @item interleave_bottom, 5
18443 Interleave the lower field from odd frames with the upper field from
18444 even frames, generating a frame with unchanged height at half frame rate.
18445
18446 @example
18447  ------> time
18448 Input:
18449 Frame 1         Frame 2         Frame 3         Frame 4
18450
18451 11111           22222<-         33333           44444<-
18452 11111<-         22222           33333<-         44444
18453 11111           22222<-         33333           44444<-
18454 11111<-         22222           33333<-         44444
18455
18456 Output:
18457 22222                           44444
18458 11111                           33333
18459 22222                           44444
18460 11111                           33333
18461 @end example
18462
18463
18464 @item interlacex2, 6
18465 Double frame rate with unchanged height. Frames are inserted each
18466 containing the second temporal field from the previous input frame and
18467 the first temporal field from the next input frame. This mode relies on
18468 the top_field_first flag. Useful for interlaced video displays with no
18469 field synchronisation.
18470
18471 @example
18472  ------> time
18473 Input:
18474 Frame 1         Frame 2         Frame 3         Frame 4
18475
18476 11111           22222           33333           44444
18477  11111           22222           33333           44444
18478 11111           22222           33333           44444
18479  11111           22222           33333           44444
18480
18481 Output:
18482 11111   22222   22222   33333   33333   44444   44444
18483  11111   11111   22222   22222   33333   33333   44444
18484 11111   22222   22222   33333   33333   44444   44444
18485  11111   11111   22222   22222   33333   33333   44444
18486 @end example
18487
18488
18489 @item mergex2, 7
18490 Move odd frames into the upper field, even into the lower field,
18491 generating a double height frame at same frame rate.
18492
18493 @example
18494  ------> time
18495 Input:
18496 Frame 1         Frame 2         Frame 3         Frame 4
18497
18498 11111           22222           33333           44444
18499 11111           22222           33333           44444
18500 11111           22222           33333           44444
18501 11111           22222           33333           44444
18502
18503 Output:
18504 11111           33333           33333           55555
18505 22222           22222           44444           44444
18506 11111           33333           33333           55555
18507 22222           22222           44444           44444
18508 11111           33333           33333           55555
18509 22222           22222           44444           44444
18510 11111           33333           33333           55555
18511 22222           22222           44444           44444
18512 @end example
18513
18514 @end table
18515
18516 Numeric values are deprecated but are accepted for backward
18517 compatibility reasons.
18518
18519 Default mode is @code{merge}.
18520
18521 @item flags
18522 Specify flags influencing the filter process.
18523
18524 Available value for @var{flags} is:
18525
18526 @table @option
18527 @item low_pass_filter, vlpf
18528 Enable linear vertical low-pass filtering in the filter.
18529 Vertical low-pass filtering is required when creating an interlaced
18530 destination from a progressive source which contains high-frequency
18531 vertical detail. Filtering will reduce interlace 'twitter' and Moire
18532 patterning.
18533
18534 @item complex_filter, cvlpf
18535 Enable complex vertical low-pass filtering.
18536 This will slightly less reduce interlace 'twitter' and Moire
18537 patterning but better retain detail and subjective sharpness impression.
18538
18539 @item bypass_il
18540 Bypass already interlaced frames, only adjust the frame rate.
18541 @end table
18542
18543 Vertical low-pass filtering and bypassing already interlaced frames can only be
18544 enabled for @option{mode} @var{interleave_top} and @var{interleave_bottom}.
18545
18546 @end table
18547
18548 @section tmedian
18549 Pick median pixels from several successive input video frames.
18550
18551 The filter accepts the following options:
18552
18553 @table @option
18554 @item radius
18555 Set radius of median filter.
18556 Default is 1. Allowed range is from 1 to 127.
18557
18558 @item planes
18559 Set which planes to filter. Default value is @code{15}, by which all planes are processed.
18560
18561 @item percentile
18562 Set median percentile. Default value is @code{0.5}.
18563 Default value of @code{0.5} will pick always median values, while @code{0} will pick
18564 minimum values, and @code{1} maximum values.
18565 @end table
18566
18567 @section tmix
18568
18569 Mix successive video frames.
18570
18571 A description of the accepted options follows.
18572
18573 @table @option
18574 @item frames
18575 The number of successive frames to mix. If unspecified, it defaults to 3.
18576
18577 @item weights
18578 Specify weight of each input video frame.
18579 Each weight is separated by space. If number of weights is smaller than
18580 number of @var{frames} last specified weight will be used for all remaining
18581 unset weights.
18582
18583 @item scale
18584 Specify scale, if it is set it will be multiplied with sum
18585 of each weight multiplied with pixel values to give final destination
18586 pixel value. By default @var{scale} is auto scaled to sum of weights.
18587 @end table
18588
18589 @subsection Examples
18590
18591 @itemize
18592 @item
18593 Average 7 successive frames:
18594 @example
18595 tmix=frames=7:weights="1 1 1 1 1 1 1"
18596 @end example
18597
18598 @item
18599 Apply simple temporal convolution:
18600 @example
18601 tmix=frames=3:weights="-1 3 -1"
18602 @end example
18603
18604 @item
18605 Similar as above but only showing temporal differences:
18606 @example
18607 tmix=frames=3:weights="-1 2 -1":scale=1
18608 @end example
18609 @end itemize
18610
18611 @anchor{tonemap}
18612 @section tonemap
18613 Tone map colors from different dynamic ranges.
18614
18615 This filter expects data in single precision floating point, as it needs to
18616 operate on (and can output) out-of-range values. Another filter, such as
18617 @ref{zscale}, is needed to convert the resulting frame to a usable format.
18618
18619 The tonemapping algorithms implemented only work on linear light, so input
18620 data should be linearized beforehand (and possibly correctly tagged).
18621
18622 @example
18623 ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT
18624 @end example
18625
18626 @subsection Options
18627 The filter accepts the following options.
18628
18629 @table @option
18630 @item tonemap
18631 Set the tone map algorithm to use.
18632
18633 Possible values are:
18634 @table @var
18635 @item none
18636 Do not apply any tone map, only desaturate overbright pixels.
18637
18638 @item clip
18639 Hard-clip any out-of-range values. Use it for perfect color accuracy for
18640 in-range values, while distorting out-of-range values.
18641
18642 @item linear
18643 Stretch the entire reference gamut to a linear multiple of the display.
18644
18645 @item gamma
18646 Fit a logarithmic transfer between the tone curves.
18647
18648 @item reinhard
18649 Preserve overall image brightness with a simple curve, using nonlinear
18650 contrast, which results in flattening details and degrading color accuracy.
18651
18652 @item hable
18653 Preserve both dark and bright details better than @var{reinhard}, at the cost
18654 of slightly darkening everything. Use it when detail preservation is more
18655 important than color and brightness accuracy.
18656
18657 @item mobius
18658 Smoothly map out-of-range values, while retaining contrast and colors for
18659 in-range material as much as possible. Use it when color accuracy is more
18660 important than detail preservation.
18661 @end table
18662
18663 Default is none.
18664
18665 @item param
18666 Tune the tone mapping algorithm.
18667
18668 This affects the following algorithms:
18669 @table @var
18670 @item none
18671 Ignored.
18672
18673 @item linear
18674 Specifies the scale factor to use while stretching.
18675 Default to 1.0.
18676
18677 @item gamma
18678 Specifies the exponent of the function.
18679 Default to 1.8.
18680
18681 @item clip
18682 Specify an extra linear coefficient to multiply into the signal before clipping.
18683 Default to 1.0.
18684
18685 @item reinhard
18686 Specify the local contrast coefficient at the display peak.
18687 Default to 0.5, which means that in-gamut values will be about half as bright
18688 as when clipping.
18689
18690 @item hable
18691 Ignored.
18692
18693 @item mobius
18694 Specify the transition point from linear to mobius transform. Every value
18695 below this point is guaranteed to be mapped 1:1. The higher the value, the
18696 more accurate the result will be, at the cost of losing bright details.
18697 Default to 0.3, which due to the steep initial slope still preserves in-range
18698 colors fairly accurately.
18699 @end table
18700
18701 @item desat
18702 Apply desaturation for highlights that exceed this level of brightness. The
18703 higher the parameter, the more color information will be preserved. This
18704 setting helps prevent unnaturally blown-out colors for super-highlights, by
18705 (smoothly) turning into white instead. This makes images feel more natural,
18706 at the cost of reducing information about out-of-range colors.
18707
18708 The default of 2.0 is somewhat conservative and will mostly just apply to
18709 skies or directly sunlit surfaces. A setting of 0.0 disables this option.
18710
18711 This option works only if the input frame has a supported color tag.
18712
18713 @item peak
18714 Override signal/nominal/reference peak with this value. Useful when the
18715 embedded peak information in display metadata is not reliable or when tone
18716 mapping from a lower range to a higher range.
18717 @end table
18718
18719 @section tpad
18720
18721 Temporarily pad video frames.
18722
18723 The filter accepts the following options:
18724
18725 @table @option
18726 @item start
18727 Specify number of delay frames before input video stream. Default is 0.
18728
18729 @item stop
18730 Specify number of padding frames after input video stream.
18731 Set to -1 to pad indefinitely. Default is 0.
18732
18733 @item start_mode
18734 Set kind of frames added to beginning of stream.
18735 Can be either @var{add} or @var{clone}.
18736 With @var{add} frames of solid-color are added.
18737 With @var{clone} frames are clones of first frame.
18738 Default is @var{add}.
18739
18740 @item stop_mode
18741 Set kind of frames added to end of stream.
18742 Can be either @var{add} or @var{clone}.
18743 With @var{add} frames of solid-color are added.
18744 With @var{clone} frames are clones of last frame.
18745 Default is @var{add}.
18746
18747 @item start_duration, stop_duration
18748 Specify the duration of the start/stop delay. See
18749 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
18750 for the accepted syntax.
18751 These options override @var{start} and @var{stop}. Default is 0.
18752
18753 @item color
18754 Specify the color of the padded area. For the syntax of this option,
18755 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
18756 manual,ffmpeg-utils}.
18757
18758 The default value of @var{color} is "black".
18759 @end table
18760
18761 @anchor{transpose}
18762 @section transpose
18763
18764 Transpose rows with columns in the input video and optionally flip it.
18765
18766 It accepts the following parameters:
18767
18768 @table @option
18769
18770 @item dir
18771 Specify the transposition direction.
18772
18773 Can assume the following values:
18774 @table @samp
18775 @item 0, 4, cclock_flip
18776 Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
18777 @example
18778 L.R     L.l
18779 . . ->  . .
18780 l.r     R.r
18781 @end example
18782
18783 @item 1, 5, clock
18784 Rotate by 90 degrees clockwise, that is:
18785 @example
18786 L.R     l.L
18787 . . ->  . .
18788 l.r     r.R
18789 @end example
18790
18791 @item 2, 6, cclock
18792 Rotate by 90 degrees counterclockwise, that is:
18793 @example
18794 L.R     R.r
18795 . . ->  . .
18796 l.r     L.l
18797 @end example
18798
18799 @item 3, 7, clock_flip
18800 Rotate by 90 degrees clockwise and vertically flip, that is:
18801 @example
18802 L.R     r.R
18803 . . ->  . .
18804 l.r     l.L
18805 @end example
18806 @end table
18807
18808 For values between 4-7, the transposition is only done if the input
18809 video geometry is portrait and not landscape. These values are
18810 deprecated, the @code{passthrough} option should be used instead.
18811
18812 Numerical values are deprecated, and should be dropped in favor of
18813 symbolic constants.
18814
18815 @item passthrough
18816 Do not apply the transposition if the input geometry matches the one
18817 specified by the specified value. It accepts the following values:
18818 @table @samp
18819 @item none
18820 Always apply transposition.
18821 @item portrait
18822 Preserve portrait geometry (when @var{height} >= @var{width}).
18823 @item landscape
18824 Preserve landscape geometry (when @var{width} >= @var{height}).
18825 @end table
18826
18827 Default value is @code{none}.
18828 @end table
18829
18830 For example to rotate by 90 degrees clockwise and preserve portrait
18831 layout:
18832 @example
18833 transpose=dir=1:passthrough=portrait
18834 @end example
18835
18836 The command above can also be specified as:
18837 @example
18838 transpose=1:portrait
18839 @end example
18840
18841 @section transpose_npp
18842
18843 Transpose rows with columns in the input video and optionally flip it.
18844 For more in depth examples see the @ref{transpose} video filter, which shares mostly the same options.
18845
18846 It accepts the following parameters:
18847
18848 @table @option
18849
18850 @item dir
18851 Specify the transposition direction.
18852
18853 Can assume the following values:
18854 @table @samp
18855 @item cclock_flip
18856 Rotate by 90 degrees counterclockwise and vertically flip. (default)
18857
18858 @item clock
18859 Rotate by 90 degrees clockwise.
18860
18861 @item cclock
18862 Rotate by 90 degrees counterclockwise.
18863
18864 @item clock_flip
18865 Rotate by 90 degrees clockwise and vertically flip.
18866 @end table
18867
18868 @item passthrough
18869 Do not apply the transposition if the input geometry matches the one
18870 specified by the specified value. It accepts the following values:
18871 @table @samp
18872 @item none
18873 Always apply transposition. (default)
18874 @item portrait
18875 Preserve portrait geometry (when @var{height} >= @var{width}).
18876 @item landscape
18877 Preserve landscape geometry (when @var{width} >= @var{height}).
18878 @end table
18879
18880 @end table
18881
18882 @section trim
18883 Trim the input so that the output contains one continuous subpart of the input.
18884
18885 It accepts the following parameters:
18886 @table @option
18887 @item start
18888 Specify the time of the start of the kept section, i.e. the frame with the
18889 timestamp @var{start} will be the first frame in the output.
18890
18891 @item end
18892 Specify the time of the first frame that will be dropped, i.e. the frame
18893 immediately preceding the one with the timestamp @var{end} will be the last
18894 frame in the output.
18895
18896 @item start_pts
18897 This is the same as @var{start}, except this option sets the start timestamp
18898 in timebase units instead of seconds.
18899
18900 @item end_pts
18901 This is the same as @var{end}, except this option sets the end timestamp
18902 in timebase units instead of seconds.
18903
18904 @item duration
18905 The maximum duration of the output in seconds.
18906
18907 @item start_frame
18908 The number of the first frame that should be passed to the output.
18909
18910 @item end_frame
18911 The number of the first frame that should be dropped.
18912 @end table
18913
18914 @option{start}, @option{end}, and @option{duration} are expressed as time
18915 duration specifications; see
18916 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
18917 for the accepted syntax.
18918
18919 Note that the first two sets of the start/end options and the @option{duration}
18920 option look at the frame timestamp, while the _frame variants simply count the
18921 frames that pass through the filter. Also note that this filter does not modify
18922 the timestamps. If you wish for the output timestamps to start at zero, insert a
18923 setpts filter after the trim filter.
18924
18925 If multiple start or end options are set, this filter tries to be greedy and
18926 keep all the frames that match at least one of the specified constraints. To keep
18927 only the part that matches all the constraints at once, chain multiple trim
18928 filters.
18929
18930 The defaults are such that all the input is kept. So it is possible to set e.g.
18931 just the end values to keep everything before the specified time.
18932
18933 Examples:
18934 @itemize
18935 @item
18936 Drop everything except the second minute of input:
18937 @example
18938 ffmpeg -i INPUT -vf trim=60:120
18939 @end example
18940
18941 @item
18942 Keep only the first second:
18943 @example
18944 ffmpeg -i INPUT -vf trim=duration=1
18945 @end example
18946
18947 @end itemize
18948
18949 @section unpremultiply
18950 Apply alpha unpremultiply effect to input video stream using first plane
18951 of second stream as alpha.
18952
18953 Both streams must have same dimensions and same pixel format.
18954
18955 The filter accepts the following option:
18956
18957 @table @option
18958 @item planes
18959 Set which planes will be processed, unprocessed planes will be copied.
18960 By default value 0xf, all planes will be processed.
18961
18962 If the format has 1 or 2 components, then luma is bit 0.
18963 If the format has 3 or 4 components:
18964 for RGB formats bit 0 is green, bit 1 is blue and bit 2 is red;
18965 for YUV formats bit 0 is luma, bit 1 is chroma-U and bit 2 is chroma-V.
18966 If present, the alpha channel is always the last bit.
18967
18968 @item inplace
18969 Do not require 2nd input for processing, instead use alpha plane from input stream.
18970 @end table
18971
18972 @anchor{unsharp}
18973 @section unsharp
18974
18975 Sharpen or blur the input video.
18976
18977 It accepts the following parameters:
18978
18979 @table @option
18980 @item luma_msize_x, lx
18981 Set the luma matrix horizontal size. It must be an odd integer between
18982 3 and 23. The default value is 5.
18983
18984 @item luma_msize_y, ly
18985 Set the luma matrix vertical size. It must be an odd integer between 3
18986 and 23. The default value is 5.
18987
18988 @item luma_amount, la
18989 Set the luma effect strength. It must be a floating point number, reasonable
18990 values lay between -1.5 and 1.5.
18991
18992 Negative values will blur the input video, while positive values will
18993 sharpen it, a value of zero will disable the effect.
18994
18995 Default value is 1.0.
18996
18997 @item chroma_msize_x, cx
18998 Set the chroma matrix horizontal size. It must be an odd integer
18999 between 3 and 23. The default value is 5.
19000
19001 @item chroma_msize_y, cy
19002 Set the chroma matrix vertical size. It must be an odd integer
19003 between 3 and 23. The default value is 5.
19004
19005 @item chroma_amount, ca
19006 Set the chroma effect strength. It must be a floating point number, reasonable
19007 values lay between -1.5 and 1.5.
19008
19009 Negative values will blur the input video, while positive values will
19010 sharpen it, a value of zero will disable the effect.
19011
19012 Default value is 0.0.
19013
19014 @end table
19015
19016 All parameters are optional and default to the equivalent of the
19017 string '5:5:1.0:5:5:0.0'.
19018
19019 @subsection Examples
19020
19021 @itemize
19022 @item
19023 Apply strong luma sharpen effect:
19024 @example
19025 unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
19026 @end example
19027
19028 @item
19029 Apply a strong blur of both luma and chroma parameters:
19030 @example
19031 unsharp=7:7:-2:7:7:-2
19032 @end example
19033 @end itemize
19034
19035 @anchor{untile}
19036 @section untile
19037
19038 Decompose a video made of tiled images into the individual images.
19039
19040 The frame rate of the output video is the frame rate of the input video
19041 multiplied by the number of tiles.
19042
19043 This filter does the reverse of @ref{tile}.
19044
19045 The filter accepts the following options:
19046
19047 @table @option
19048
19049 @item layout
19050 Set the grid size (i.e. the number of lines and columns). For the syntax of
19051 this option, check the
19052 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19053 @end table
19054
19055 @subsection Examples
19056
19057 @itemize
19058 @item
19059 Produce a 1-second video from a still image file made of 25 frames stacked
19060 vertically, like an analogic film reel:
19061 @example
19062 ffmpeg -r 1 -i image.jpg -vf untile=1x25 movie.mkv
19063 @end example
19064 @end itemize
19065
19066 @section uspp
19067
19068 Apply ultra slow/simple postprocessing filter that compresses and decompresses
19069 the image at several (or - in the case of @option{quality} level @code{8} - all)
19070 shifts and average the results.
19071
19072 The way this differs from the behavior of spp is that uspp actually encodes &
19073 decodes each case with libavcodec Snow, whereas spp uses a simplified intra only 8x8
19074 DCT similar to MJPEG.
19075
19076 The filter accepts the following options:
19077
19078 @table @option
19079 @item quality
19080 Set quality. This option defines the number of levels for averaging. It accepts
19081 an integer in the range 0-8. If set to @code{0}, the filter will have no
19082 effect. A value of @code{8} means the higher quality. For each increment of
19083 that value the speed drops by a factor of approximately 2.  Default value is
19084 @code{3}.
19085
19086 @item qp
19087 Force a constant quantization parameter. If not set, the filter will use the QP
19088 from the video stream (if available).
19089 @end table
19090
19091 @section v360
19092
19093 Convert 360 videos between various formats.
19094
19095 The filter accepts the following options:
19096
19097 @table @option
19098
19099 @item input
19100 @item output
19101 Set format of the input/output video.
19102
19103 Available formats:
19104
19105 @table @samp
19106
19107 @item e
19108 @item equirect
19109 Equirectangular projection.
19110
19111 @item c3x2
19112 @item c6x1
19113 @item c1x6
19114 Cubemap with 3x2/6x1/1x6 layout.
19115
19116 Format specific options:
19117
19118 @table @option
19119 @item in_pad
19120 @item out_pad
19121 Set padding proportion for the input/output cubemap. Values in decimals.
19122
19123 Example values:
19124 @table @samp
19125 @item 0
19126 No padding.
19127 @item 0.01
19128 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)
19129 @end table
19130
19131 Default value is @b{@samp{0}}.
19132 Maximum value is @b{@samp{0.1}}.
19133
19134 @item fin_pad
19135 @item fout_pad
19136 Set fixed padding for the input/output cubemap. Values in pixels.
19137
19138 Default value is @b{@samp{0}}. If greater than zero it overrides other padding options.
19139
19140 @item in_forder
19141 @item out_forder
19142 Set order of faces for the input/output cubemap. Choose one direction for each position.
19143
19144 Designation of directions:
19145 @table @samp
19146 @item r
19147 right
19148 @item l
19149 left
19150 @item u
19151 up
19152 @item d
19153 down
19154 @item f
19155 forward
19156 @item b
19157 back
19158 @end table
19159
19160 Default value is @b{@samp{rludfb}}.
19161
19162 @item in_frot
19163 @item out_frot
19164 Set rotation of faces for the input/output cubemap. Choose one angle for each position.
19165
19166 Designation of angles:
19167 @table @samp
19168 @item 0
19169 0 degrees clockwise
19170 @item 1
19171 90 degrees clockwise
19172 @item 2
19173 180 degrees clockwise
19174 @item 3
19175 270 degrees clockwise
19176 @end table
19177
19178 Default value is @b{@samp{000000}}.
19179 @end table
19180
19181 @item eac
19182 Equi-Angular Cubemap.
19183
19184 @item flat
19185 @item gnomonic
19186 @item rectilinear
19187 Regular video.
19188
19189 Format specific options:
19190 @table @option
19191 @item h_fov
19192 @item v_fov
19193 @item d_fov
19194 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19195
19196 If diagonal field of view is set it overrides horizontal and vertical field of view.
19197
19198 @item ih_fov
19199 @item iv_fov
19200 @item id_fov
19201 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19202
19203 If diagonal field of view is set it overrides horizontal and vertical field of view.
19204 @end table
19205
19206 @item dfisheye
19207 Dual fisheye.
19208
19209 Format specific options:
19210 @table @option
19211 @item h_fov
19212 @item v_fov
19213 @item d_fov
19214 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19215
19216 If diagonal field of view is set it overrides horizontal and vertical field of view.
19217
19218 @item ih_fov
19219 @item iv_fov
19220 @item id_fov
19221 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19222
19223 If diagonal field of view is set it overrides horizontal and vertical field of view.
19224 @end table
19225
19226 @item barrel
19227 @item fb
19228 @item barrelsplit
19229 Facebook's 360 formats.
19230
19231 @item sg
19232 Stereographic format.
19233
19234 Format specific options:
19235 @table @option
19236 @item h_fov
19237 @item v_fov
19238 @item d_fov
19239 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19240
19241 If diagonal field of view is set it overrides horizontal and vertical field of view.
19242
19243 @item ih_fov
19244 @item iv_fov
19245 @item id_fov
19246 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19247
19248 If diagonal field of view is set it overrides horizontal and vertical field of view.
19249 @end table
19250
19251 @item mercator
19252 Mercator format.
19253
19254 @item ball
19255 Ball format, gives significant distortion toward the back.
19256
19257 @item hammer
19258 Hammer-Aitoff map projection format.
19259
19260 @item sinusoidal
19261 Sinusoidal map projection format.
19262
19263 @item fisheye
19264 Fisheye projection.
19265
19266 Format specific options:
19267 @table @option
19268 @item h_fov
19269 @item v_fov
19270 @item d_fov
19271 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19272
19273 If diagonal field of view is set it overrides horizontal and vertical field of view.
19274
19275 @item ih_fov
19276 @item iv_fov
19277 @item id_fov
19278 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19279
19280 If diagonal field of view is set it overrides horizontal and vertical field of view.
19281 @end table
19282
19283 @item pannini
19284 Pannini projection.
19285
19286 Format specific options:
19287 @table @option
19288 @item h_fov
19289 Set output pannini parameter.
19290
19291 @item ih_fov
19292 Set input pannini parameter.
19293 @end table
19294
19295 @item cylindrical
19296 Cylindrical projection.
19297
19298 Format specific options:
19299 @table @option
19300 @item h_fov
19301 @item v_fov
19302 @item d_fov
19303 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19304
19305 If diagonal field of view is set it overrides horizontal and vertical field of view.
19306
19307 @item ih_fov
19308 @item iv_fov
19309 @item id_fov
19310 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19311
19312 If diagonal field of view is set it overrides horizontal and vertical field of view.
19313 @end table
19314
19315 @item perspective
19316 Perspective projection. @i{(output only)}
19317
19318 Format specific options:
19319 @table @option
19320 @item v_fov
19321 Set perspective parameter.
19322 @end table
19323
19324 @item tetrahedron
19325 Tetrahedron projection.
19326
19327 @item tsp
19328 Truncated square pyramid projection.
19329
19330 @item he
19331 @item hequirect
19332 Half equirectangular projection.
19333
19334 @item equisolid
19335 Equisolid format.
19336
19337 Format specific options:
19338 @table @option
19339 @item h_fov
19340 @item v_fov
19341 @item d_fov
19342 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19343
19344 If diagonal field of view is set it overrides horizontal and vertical field of view.
19345
19346 @item ih_fov
19347 @item iv_fov
19348 @item id_fov
19349 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19350
19351 If diagonal field of view is set it overrides horizontal and vertical field of view.
19352 @end table
19353
19354 @item og
19355 Orthographic format.
19356
19357 Format specific options:
19358 @table @option
19359 @item h_fov
19360 @item v_fov
19361 @item d_fov
19362 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19363
19364 If diagonal field of view is set it overrides horizontal and vertical field of view.
19365
19366 @item ih_fov
19367 @item iv_fov
19368 @item id_fov
19369 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19370
19371 If diagonal field of view is set it overrides horizontal and vertical field of view.
19372 @end table
19373 @end table
19374
19375 @item interp
19376 Set interpolation method.@*
19377 @i{Note: more complex interpolation methods require much more memory to run.}
19378
19379 Available methods:
19380
19381 @table @samp
19382 @item near
19383 @item nearest
19384 Nearest neighbour.
19385 @item line
19386 @item linear
19387 Bilinear interpolation.
19388 @item lagrange9
19389 Lagrange9 interpolation.
19390 @item cube
19391 @item cubic
19392 Bicubic interpolation.
19393 @item lanc
19394 @item lanczos
19395 Lanczos interpolation.
19396 @item sp16
19397 @item spline16
19398 Spline16 interpolation.
19399 @item gauss
19400 @item gaussian
19401 Gaussian interpolation.
19402 @end table
19403
19404 Default value is @b{@samp{line}}.
19405
19406 @item w
19407 @item h
19408 Set the output video resolution.
19409
19410 Default resolution depends on formats.
19411
19412 @item in_stereo
19413 @item out_stereo
19414 Set the input/output stereo format.
19415
19416 @table @samp
19417 @item 2d
19418 2D mono
19419 @item sbs
19420 Side by side
19421 @item tb
19422 Top bottom
19423 @end table
19424
19425 Default value is @b{@samp{2d}} for input and output format.
19426
19427 @item yaw
19428 @item pitch
19429 @item roll
19430 Set rotation for the output video. Values in degrees.
19431
19432 @item rorder
19433 Set rotation order for the output video. Choose one item for each position.
19434
19435 @table @samp
19436 @item y, Y
19437 yaw
19438 @item p, P
19439 pitch
19440 @item r, R
19441 roll
19442 @end table
19443
19444 Default value is @b{@samp{ypr}}.
19445
19446 @item h_flip
19447 @item v_flip
19448 @item d_flip
19449 Flip the output video horizontally(swaps left-right)/vertically(swaps up-down)/in-depth(swaps back-forward). Boolean values.
19450
19451 @item ih_flip
19452 @item iv_flip
19453 Set if input video is flipped horizontally/vertically. Boolean values.
19454
19455 @item in_trans
19456 Set if input video is transposed. Boolean value, by default disabled.
19457
19458 @item out_trans
19459 Set if output video needs to be transposed. Boolean value, by default disabled.
19460
19461 @item alpha_mask
19462 Build mask in alpha plane for all unmapped pixels by marking them fully transparent. Boolean value, by default disabled.
19463 @end table
19464
19465 @subsection Examples
19466
19467 @itemize
19468 @item
19469 Convert equirectangular video to cubemap with 3x2 layout and 1% padding using bicubic interpolation:
19470 @example
19471 ffmpeg -i input.mkv -vf v360=e:c3x2:cubic:out_pad=0.01 output.mkv
19472 @end example
19473 @item
19474 Extract back view of Equi-Angular Cubemap:
19475 @example
19476 ffmpeg -i input.mkv -vf v360=eac:flat:yaw=180 output.mkv
19477 @end example
19478 @item
19479 Convert transposed and horizontally flipped Equi-Angular Cubemap in side-by-side stereo format to equirectangular top-bottom stereo format:
19480 @example
19481 v360=eac:equirect:in_stereo=sbs:in_trans=1:ih_flip=1:out_stereo=tb
19482 @end example
19483 @end itemize
19484
19485 @subsection Commands
19486
19487 This filter supports subset of above options as @ref{commands}.
19488
19489 @section vaguedenoiser
19490
19491 Apply a wavelet based denoiser.
19492
19493 It transforms each frame from the video input into the wavelet domain,
19494 using Cohen-Daubechies-Feauveau 9/7. Then it applies some filtering to
19495 the obtained coefficients. It does an inverse wavelet transform after.
19496 Due to wavelet properties, it should give a nice smoothed result, and
19497 reduced noise, without blurring picture features.
19498
19499 This filter accepts the following options:
19500
19501 @table @option
19502 @item threshold
19503 The filtering strength. The higher, the more filtered the video will be.
19504 Hard thresholding can use a higher threshold than soft thresholding
19505 before the video looks overfiltered. Default value is 2.
19506
19507 @item method
19508 The filtering method the filter will use.
19509
19510 It accepts the following values:
19511 @table @samp
19512 @item hard
19513 All values under the threshold will be zeroed.
19514
19515 @item soft
19516 All values under the threshold will be zeroed. All values above will be
19517 reduced by the threshold.
19518
19519 @item garrote
19520 Scales or nullifies coefficients - intermediary between (more) soft and
19521 (less) hard thresholding.
19522 @end table
19523
19524 Default is garrote.
19525
19526 @item nsteps
19527 Number of times, the wavelet will decompose the picture. Picture can't
19528 be decomposed beyond a particular point (typically, 8 for a 640x480
19529 frame - as 2^9 = 512 > 480). Valid values are integers between 1 and 32. Default value is 6.
19530
19531 @item percent
19532 Partial of full denoising (limited coefficients shrinking), from 0 to 100. Default value is 85.
19533
19534 @item planes
19535 A list of the planes to process. By default all planes are processed.
19536
19537 @item type
19538 The threshold type the filter will use.
19539
19540 It accepts the following values:
19541 @table @samp
19542 @item universal
19543 Threshold used is same for all decompositions.
19544
19545 @item bayes
19546 Threshold used depends also on each decomposition coefficients.
19547 @end table
19548
19549 Default is universal.
19550 @end table
19551
19552 @section vectorscope
19553
19554 Display 2 color component values in the two dimensional graph (which is called
19555 a vectorscope).
19556
19557 This filter accepts the following options:
19558
19559 @table @option
19560 @item mode, m
19561 Set vectorscope mode.
19562
19563 It accepts the following values:
19564 @table @samp
19565 @item gray
19566 @item tint
19567 Gray values are displayed on graph, higher brightness means more pixels have
19568 same component color value on location in graph. This is the default mode.
19569
19570 @item color
19571 Gray values are displayed on graph. Surrounding pixels values which are not
19572 present in video frame are drawn in gradient of 2 color components which are
19573 set by option @code{x} and @code{y}. The 3rd color component is static.
19574
19575 @item color2
19576 Actual color components values present in video frame are displayed on graph.
19577
19578 @item color3
19579 Similar as color2 but higher frequency of same values @code{x} and @code{y}
19580 on graph increases value of another color component, which is luminance by
19581 default values of @code{x} and @code{y}.
19582
19583 @item color4
19584 Actual colors present in video frame are displayed on graph. If two different
19585 colors map to same position on graph then color with higher value of component
19586 not present in graph is picked.
19587
19588 @item color5
19589 Gray values are displayed on graph. Similar to @code{color} but with 3rd color
19590 component picked from radial gradient.
19591 @end table
19592
19593 @item x
19594 Set which color component will be represented on X-axis. Default is @code{1}.
19595
19596 @item y
19597 Set which color component will be represented on Y-axis. Default is @code{2}.
19598
19599 @item intensity, i
19600 Set intensity, used by modes: gray, color, color3 and color5 for increasing brightness
19601 of color component which represents frequency of (X, Y) location in graph.
19602
19603 @item envelope, e
19604 @table @samp
19605 @item none
19606 No envelope, this is default.
19607
19608 @item instant
19609 Instant envelope, even darkest single pixel will be clearly highlighted.
19610
19611 @item peak
19612 Hold maximum and minimum values presented in graph over time. This way you
19613 can still spot out of range values without constantly looking at vectorscope.
19614
19615 @item peak+instant
19616 Peak and instant envelope combined together.
19617 @end table
19618
19619 @item graticule, g
19620 Set what kind of graticule to draw.
19621 @table @samp
19622 @item none
19623 @item green
19624 @item color
19625 @item invert
19626 @end table
19627
19628 @item opacity, o
19629 Set graticule opacity.
19630
19631 @item flags, f
19632 Set graticule flags.
19633
19634 @table @samp
19635 @item white
19636 Draw graticule for white point.
19637
19638 @item black
19639 Draw graticule for black point.
19640
19641 @item name
19642 Draw color points short names.
19643 @end table
19644
19645 @item bgopacity, b
19646 Set background opacity.
19647
19648 @item lthreshold, l
19649 Set low threshold for color component not represented on X or Y axis.
19650 Values lower than this value will be ignored. Default is 0.
19651 Note this value is multiplied with actual max possible value one pixel component
19652 can have. So for 8-bit input and low threshold value of 0.1 actual threshold
19653 is 0.1 * 255 = 25.
19654
19655 @item hthreshold, h
19656 Set high threshold for color component not represented on X or Y axis.
19657 Values higher than this value will be ignored. Default is 1.
19658 Note this value is multiplied with actual max possible value one pixel component
19659 can have. So for 8-bit input and high threshold value of 0.9 actual threshold
19660 is 0.9 * 255 = 230.
19661
19662 @item colorspace, c
19663 Set what kind of colorspace to use when drawing graticule.
19664 @table @samp
19665 @item auto
19666 @item 601
19667 @item 709
19668 @end table
19669 Default is auto.
19670
19671 @item tint0, t0
19672 @item tint1, t1
19673 Set color tint for gray/tint vectorscope mode. By default both options are zero.
19674 This means no tint, and output will remain gray.
19675 @end table
19676
19677 @anchor{vidstabdetect}
19678 @section vidstabdetect
19679
19680 Analyze video stabilization/deshaking. Perform pass 1 of 2, see
19681 @ref{vidstabtransform} for pass 2.
19682
19683 This filter generates a file with relative translation and rotation
19684 transform information about subsequent frames, which is then used by
19685 the @ref{vidstabtransform} filter.
19686
19687 To enable compilation of this filter you need to configure FFmpeg with
19688 @code{--enable-libvidstab}.
19689
19690 This filter accepts the following options:
19691
19692 @table @option
19693 @item result
19694 Set the path to the file used to write the transforms information.
19695 Default value is @file{transforms.trf}.
19696
19697 @item shakiness
19698 Set how shaky the video is and how quick the camera is. It accepts an
19699 integer in the range 1-10, a value of 1 means little shakiness, a
19700 value of 10 means strong shakiness. Default value is 5.
19701
19702 @item accuracy
19703 Set the accuracy of the detection process. It must be a value in the
19704 range 1-15. A value of 1 means low accuracy, a value of 15 means high
19705 accuracy. Default value is 15.
19706
19707 @item stepsize
19708 Set stepsize of the search process. The region around minimum is
19709 scanned with 1 pixel resolution. Default value is 6.
19710
19711 @item mincontrast
19712 Set minimum contrast. Below this value a local measurement field is
19713 discarded. Must be a floating point value in the range 0-1. Default
19714 value is 0.3.
19715
19716 @item tripod
19717 Set reference frame number for tripod mode.
19718
19719 If enabled, the motion of the frames is compared to a reference frame
19720 in the filtered stream, identified by the specified number. The idea
19721 is to compensate all movements in a more-or-less static scene and keep
19722 the camera view absolutely still.
19723
19724 If set to 0, it is disabled. The frames are counted starting from 1.
19725
19726 @item show
19727 Show fields and transforms in the resulting frames. It accepts an
19728 integer in the range 0-2. Default value is 0, which disables any
19729 visualization.
19730 @end table
19731
19732 @subsection Examples
19733
19734 @itemize
19735 @item
19736 Use default values:
19737 @example
19738 vidstabdetect
19739 @end example
19740
19741 @item
19742 Analyze strongly shaky movie and put the results in file
19743 @file{mytransforms.trf}:
19744 @example
19745 vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
19746 @end example
19747
19748 @item
19749 Visualize the result of internal transformations in the resulting
19750 video:
19751 @example
19752 vidstabdetect=show=1
19753 @end example
19754
19755 @item
19756 Analyze a video with medium shakiness using @command{ffmpeg}:
19757 @example
19758 ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
19759 @end example
19760 @end itemize
19761
19762 @anchor{vidstabtransform}
19763 @section vidstabtransform
19764
19765 Video stabilization/deshaking: pass 2 of 2,
19766 see @ref{vidstabdetect} for pass 1.
19767
19768 Read a file with transform information for each frame and
19769 apply/compensate them. Together with the @ref{vidstabdetect}
19770 filter this can be used to deshake videos. See also
19771 @url{http://public.hronopik.de/vid.stab}. It is important to also use
19772 the @ref{unsharp} filter, see below.
19773
19774 To enable compilation of this filter you need to configure FFmpeg with
19775 @code{--enable-libvidstab}.
19776
19777 @subsection Options
19778
19779 @table @option
19780 @item input
19781 Set path to the file used to read the transforms. Default value is
19782 @file{transforms.trf}.
19783
19784 @item smoothing
19785 Set the number of frames (value*2 + 1) used for lowpass filtering the
19786 camera movements. Default value is 10.
19787
19788 For example a number of 10 means that 21 frames are used (10 in the
19789 past and 10 in the future) to smoothen the motion in the video. A
19790 larger value leads to a smoother video, but limits the acceleration of
19791 the camera (pan/tilt movements). 0 is a special case where a static
19792 camera is simulated.
19793
19794 @item optalgo
19795 Set the camera path optimization algorithm.
19796
19797 Accepted values are:
19798 @table @samp
19799 @item gauss
19800 gaussian kernel low-pass filter on camera motion (default)
19801 @item avg
19802 averaging on transformations
19803 @end table
19804
19805 @item maxshift
19806 Set maximal number of pixels to translate frames. Default value is -1,
19807 meaning no limit.
19808
19809 @item maxangle
19810 Set maximal angle in radians (degree*PI/180) to rotate frames. Default
19811 value is -1, meaning no limit.
19812
19813 @item crop
19814 Specify how to deal with borders that may be visible due to movement
19815 compensation.
19816
19817 Available values are:
19818 @table @samp
19819 @item keep
19820 keep image information from previous frame (default)
19821 @item black
19822 fill the border black
19823 @end table
19824
19825 @item invert
19826 Invert transforms if set to 1. Default value is 0.
19827
19828 @item relative
19829 Consider transforms as relative to previous frame if set to 1,
19830 absolute if set to 0. Default value is 0.
19831
19832 @item zoom
19833 Set percentage to zoom. A positive value will result in a zoom-in
19834 effect, a negative value in a zoom-out effect. Default value is 0 (no
19835 zoom).
19836
19837 @item optzoom
19838 Set optimal zooming to avoid borders.
19839
19840 Accepted values are:
19841 @table @samp
19842 @item 0
19843 disabled
19844 @item 1
19845 optimal static zoom value is determined (only very strong movements
19846 will lead to visible borders) (default)
19847 @item 2
19848 optimal adaptive zoom value is determined (no borders will be
19849 visible), see @option{zoomspeed}
19850 @end table
19851
19852 Note that the value given at zoom is added to the one calculated here.
19853
19854 @item zoomspeed
19855 Set percent to zoom maximally each frame (enabled when
19856 @option{optzoom} is set to 2). Range is from 0 to 5, default value is
19857 0.25.
19858
19859 @item interpol
19860 Specify type of interpolation.
19861
19862 Available values are:
19863 @table @samp
19864 @item no
19865 no interpolation
19866 @item linear
19867 linear only horizontal
19868 @item bilinear
19869 linear in both directions (default)
19870 @item bicubic
19871 cubic in both directions (slow)
19872 @end table
19873
19874 @item tripod
19875 Enable virtual tripod mode if set to 1, which is equivalent to
19876 @code{relative=0:smoothing=0}. Default value is 0.
19877
19878 Use also @code{tripod} option of @ref{vidstabdetect}.
19879
19880 @item debug
19881 Increase log verbosity if set to 1. Also the detected global motions
19882 are written to the temporary file @file{global_motions.trf}. Default
19883 value is 0.
19884 @end table
19885
19886 @subsection Examples
19887
19888 @itemize
19889 @item
19890 Use @command{ffmpeg} for a typical stabilization with default values:
19891 @example
19892 ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
19893 @end example
19894
19895 Note the use of the @ref{unsharp} filter which is always recommended.
19896
19897 @item
19898 Zoom in a bit more and load transform data from a given file:
19899 @example
19900 vidstabtransform=zoom=5:input="mytransforms.trf"
19901 @end example
19902
19903 @item
19904 Smoothen the video even more:
19905 @example
19906 vidstabtransform=smoothing=30
19907 @end example
19908 @end itemize
19909
19910 @section vflip
19911
19912 Flip the input video vertically.
19913
19914 For example, to vertically flip a video with @command{ffmpeg}:
19915 @example
19916 ffmpeg -i in.avi -vf "vflip" out.avi
19917 @end example
19918
19919 @section vfrdet
19920
19921 Detect variable frame rate video.
19922
19923 This filter tries to detect if the input is variable or constant frame rate.
19924
19925 At end it will output number of frames detected as having variable delta pts,
19926 and ones with constant delta pts.
19927 If there was frames with variable delta, than it will also show min, max and
19928 average delta encountered.
19929
19930 @section vibrance
19931
19932 Boost or alter saturation.
19933
19934 The filter accepts the following options:
19935 @table @option
19936 @item intensity
19937 Set strength of boost if positive value or strength of alter if negative value.
19938 Default is 0. Allowed range is from -2 to 2.
19939
19940 @item rbal
19941 Set the red balance. Default is 1. Allowed range is from -10 to 10.
19942
19943 @item gbal
19944 Set the green balance. Default is 1. Allowed range is from -10 to 10.
19945
19946 @item bbal
19947 Set the blue balance. Default is 1. Allowed range is from -10 to 10.
19948
19949 @item rlum
19950 Set the red luma coefficient.
19951
19952 @item glum
19953 Set the green luma coefficient.
19954
19955 @item blum
19956 Set the blue luma coefficient.
19957
19958 @item alternate
19959 If @code{intensity} is negative and this is set to 1, colors will change,
19960 otherwise colors will be less saturated, more towards gray.
19961 @end table
19962
19963 @subsection Commands
19964
19965 This filter supports the all above options as @ref{commands}.
19966
19967 @anchor{vignette}
19968 @section vignette
19969
19970 Make or reverse a natural vignetting effect.
19971
19972 The filter accepts the following options:
19973
19974 @table @option
19975 @item angle, a
19976 Set lens angle expression as a number of radians.
19977
19978 The value is clipped in the @code{[0,PI/2]} range.
19979
19980 Default value: @code{"PI/5"}
19981
19982 @item x0
19983 @item y0
19984 Set center coordinates expressions. Respectively @code{"w/2"} and @code{"h/2"}
19985 by default.
19986
19987 @item mode
19988 Set forward/backward mode.
19989
19990 Available modes are:
19991 @table @samp
19992 @item forward
19993 The larger the distance from the central point, the darker the image becomes.
19994
19995 @item backward
19996 The larger the distance from the central point, the brighter the image becomes.
19997 This can be used to reverse a vignette effect, though there is no automatic
19998 detection to extract the lens @option{angle} and other settings (yet). It can
19999 also be used to create a burning effect.
20000 @end table
20001
20002 Default value is @samp{forward}.
20003
20004 @item eval
20005 Set evaluation mode for the expressions (@option{angle}, @option{x0}, @option{y0}).
20006
20007 It accepts the following values:
20008 @table @samp
20009 @item init
20010 Evaluate expressions only once during the filter initialization.
20011
20012 @item frame
20013 Evaluate expressions for each incoming frame. This is way slower than the
20014 @samp{init} mode since it requires all the scalers to be re-computed, but it
20015 allows advanced dynamic expressions.
20016 @end table
20017
20018 Default value is @samp{init}.
20019
20020 @item dither
20021 Set dithering to reduce the circular banding effects. Default is @code{1}
20022 (enabled).
20023
20024 @item aspect
20025 Set vignette aspect. This setting allows one to adjust the shape of the vignette.
20026 Setting this value to the SAR of the input will make a rectangular vignetting
20027 following the dimensions of the video.
20028
20029 Default is @code{1/1}.
20030 @end table
20031
20032 @subsection Expressions
20033
20034 The @option{alpha}, @option{x0} and @option{y0} expressions can contain the
20035 following parameters.
20036
20037 @table @option
20038 @item w
20039 @item h
20040 input width and height
20041
20042 @item n
20043 the number of input frame, starting from 0
20044
20045 @item pts
20046 the PTS (Presentation TimeStamp) time of the filtered video frame, expressed in
20047 @var{TB} units, NAN if undefined
20048
20049 @item r
20050 frame rate of the input video, NAN if the input frame rate is unknown
20051
20052 @item t
20053 the PTS (Presentation TimeStamp) of the filtered video frame,
20054 expressed in seconds, NAN if undefined
20055
20056 @item tb
20057 time base of the input video
20058 @end table
20059
20060
20061 @subsection Examples
20062
20063 @itemize
20064 @item
20065 Apply simple strong vignetting effect:
20066 @example
20067 vignette=PI/4
20068 @end example
20069
20070 @item
20071 Make a flickering vignetting:
20072 @example
20073 vignette='PI/4+random(1)*PI/50':eval=frame
20074 @end example
20075
20076 @end itemize
20077
20078 @section vmafmotion
20079
20080 Obtain the average VMAF motion score of a video.
20081 It is one of the component metrics of VMAF.
20082
20083 The obtained average motion score is printed through the logging system.
20084
20085 The filter accepts the following options:
20086
20087 @table @option
20088 @item stats_file
20089 If specified, the filter will use the named file to save the motion score of
20090 each frame with respect to the previous frame.
20091 When filename equals "-" the data is sent to standard output.
20092 @end table
20093
20094 Example:
20095 @example
20096 ffmpeg -i ref.mpg -vf vmafmotion -f null -
20097 @end example
20098
20099 @section vstack
20100 Stack input videos vertically.
20101
20102 All streams must be of same pixel format and of same width.
20103
20104 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
20105 to create same output.
20106
20107 The filter accepts the following options:
20108
20109 @table @option
20110 @item inputs
20111 Set number of input streams. Default is 2.
20112
20113 @item shortest
20114 If set to 1, force the output to terminate when the shortest input
20115 terminates. Default value is 0.
20116 @end table
20117
20118 @section w3fdif
20119
20120 Deinterlace the input video ("w3fdif" stands for "Weston 3 Field
20121 Deinterlacing Filter").
20122
20123 Based on the process described by Martin Weston for BBC R&D, and
20124 implemented based on the de-interlace algorithm written by Jim
20125 Easterbrook for BBC R&D, the Weston 3 field deinterlacing filter
20126 uses filter coefficients calculated by BBC R&D.
20127
20128 This filter uses field-dominance information in frame to decide which
20129 of each pair of fields to place first in the output.
20130 If it gets it wrong use @ref{setfield} filter before @code{w3fdif} filter.
20131
20132 There are two sets of filter coefficients, so called "simple"
20133 and "complex". Which set of filter coefficients is used can
20134 be set by passing an optional parameter:
20135
20136 @table @option
20137 @item filter
20138 Set the interlacing filter coefficients. Accepts one of the following values:
20139
20140 @table @samp
20141 @item simple
20142 Simple filter coefficient set.
20143 @item complex
20144 More-complex filter coefficient set.
20145 @end table
20146 Default value is @samp{complex}.
20147
20148 @item deint
20149 Specify which frames to deinterlace. Accepts one of the following values:
20150
20151 @table @samp
20152 @item all
20153 Deinterlace all frames,
20154 @item interlaced
20155 Only deinterlace frames marked as interlaced.
20156 @end table
20157
20158 Default value is @samp{all}.
20159 @end table
20160
20161 @section waveform
20162 Video waveform monitor.
20163
20164 The waveform monitor plots color component intensity. By default luminance
20165 only. Each column of the waveform corresponds to a column of pixels in the
20166 source video.
20167
20168 It accepts the following options:
20169
20170 @table @option
20171 @item mode, m
20172 Can be either @code{row}, or @code{column}. Default is @code{column}.
20173 In row mode, the graph on the left side represents color component value 0 and
20174 the right side represents value = 255. In column mode, the top side represents
20175 color component value = 0 and bottom side represents value = 255.
20176
20177 @item intensity, i
20178 Set intensity. Smaller values are useful to find out how many values of the same
20179 luminance are distributed across input rows/columns.
20180 Default value is @code{0.04}. Allowed range is [0, 1].
20181
20182 @item mirror, r
20183 Set mirroring mode. @code{0} means unmirrored, @code{1} means mirrored.
20184 In mirrored mode, higher values will be represented on the left
20185 side for @code{row} mode and at the top for @code{column} mode. Default is
20186 @code{1} (mirrored).
20187
20188 @item display, d
20189 Set display mode.
20190 It accepts the following values:
20191 @table @samp
20192 @item overlay
20193 Presents information identical to that in the @code{parade}, except
20194 that the graphs representing color components are superimposed directly
20195 over one another.
20196
20197 This display mode makes it easier to spot relative differences or similarities
20198 in overlapping areas of the color components that are supposed to be identical,
20199 such as neutral whites, grays, or blacks.
20200
20201 @item stack
20202 Display separate graph for the color components side by side in
20203 @code{row} mode or one below the other in @code{column} mode.
20204
20205 @item parade
20206 Display separate graph for the color components side by side in
20207 @code{column} mode or one below the other in @code{row} mode.
20208
20209 Using this display mode makes it easy to spot color casts in the highlights
20210 and shadows of an image, by comparing the contours of the top and the bottom
20211 graphs of each waveform. Since whites, grays, and blacks are characterized
20212 by exactly equal amounts of red, green, and blue, neutral areas of the picture
20213 should display three waveforms of roughly equal width/height. If not, the
20214 correction is easy to perform by making level adjustments the three waveforms.
20215 @end table
20216 Default is @code{stack}.
20217
20218 @item components, c
20219 Set which color components to display. Default is 1, which means only luminance
20220 or red color component if input is in RGB colorspace. If is set for example to
20221 7 it will display all 3 (if) available color components.
20222
20223 @item envelope, e
20224 @table @samp
20225 @item none
20226 No envelope, this is default.
20227
20228 @item instant
20229 Instant envelope, minimum and maximum values presented in graph will be easily
20230 visible even with small @code{step} value.
20231
20232 @item peak
20233 Hold minimum and maximum values presented in graph across time. This way you
20234 can still spot out of range values without constantly looking at waveforms.
20235
20236 @item peak+instant
20237 Peak and instant envelope combined together.
20238 @end table
20239
20240 @item filter, f
20241 @table @samp
20242 @item lowpass
20243 No filtering, this is default.
20244
20245 @item flat
20246 Luma and chroma combined together.
20247
20248 @item aflat
20249 Similar as above, but shows difference between blue and red chroma.
20250
20251 @item xflat
20252 Similar as above, but use different colors.
20253
20254 @item yflat
20255 Similar as above, but again with different colors.
20256
20257 @item chroma
20258 Displays only chroma.
20259
20260 @item color
20261 Displays actual color value on waveform.
20262
20263 @item acolor
20264 Similar as above, but with luma showing frequency of chroma values.
20265 @end table
20266
20267 @item graticule, g
20268 Set which graticule to display.
20269
20270 @table @samp
20271 @item none
20272 Do not display graticule.
20273
20274 @item green
20275 Display green graticule showing legal broadcast ranges.
20276
20277 @item orange
20278 Display orange graticule showing legal broadcast ranges.
20279
20280 @item invert
20281 Display invert graticule showing legal broadcast ranges.
20282 @end table
20283
20284 @item opacity, o
20285 Set graticule opacity.
20286
20287 @item flags, fl
20288 Set graticule flags.
20289
20290 @table @samp
20291 @item numbers
20292 Draw numbers above lines. By default enabled.
20293
20294 @item dots
20295 Draw dots instead of lines.
20296 @end table
20297
20298 @item scale, s
20299 Set scale used for displaying graticule.
20300
20301 @table @samp
20302 @item digital
20303 @item millivolts
20304 @item ire
20305 @end table
20306 Default is digital.
20307
20308 @item bgopacity, b
20309 Set background opacity.
20310
20311 @item tint0, t0
20312 @item tint1, t1
20313 Set tint for output.
20314 Only used with lowpass filter and when display is not overlay and input
20315 pixel formats are not RGB.
20316 @end table
20317
20318 @section weave, doubleweave
20319
20320 The @code{weave} takes a field-based video input and join
20321 each two sequential fields into single frame, producing a new double
20322 height clip with half the frame rate and half the frame count.
20323
20324 The @code{doubleweave} works same as @code{weave} but without
20325 halving frame rate and frame count.
20326
20327 It accepts the following option:
20328
20329 @table @option
20330 @item first_field
20331 Set first field. Available values are:
20332
20333 @table @samp
20334 @item top, t
20335 Set the frame as top-field-first.
20336
20337 @item bottom, b
20338 Set the frame as bottom-field-first.
20339 @end table
20340 @end table
20341
20342 @subsection Examples
20343
20344 @itemize
20345 @item
20346 Interlace video using @ref{select} and @ref{separatefields} filter:
20347 @example
20348 separatefields,select=eq(mod(n,4),0)+eq(mod(n,4),3),weave
20349 @end example
20350 @end itemize
20351
20352 @section xbr
20353 Apply the xBR high-quality magnification filter which is designed for pixel
20354 art. It follows a set of edge-detection rules, see
20355 @url{https://forums.libretro.com/t/xbr-algorithm-tutorial/123}.
20356
20357 It accepts the following option:
20358
20359 @table @option
20360 @item n
20361 Set the scaling dimension: @code{2} for @code{2xBR}, @code{3} for
20362 @code{3xBR} and @code{4} for @code{4xBR}.
20363 Default is @code{3}.
20364 @end table
20365
20366 @section xfade
20367
20368 Apply cross fade from one input video stream to another input video stream.
20369 The cross fade is applied for specified duration.
20370
20371 The filter accepts the following options:
20372
20373 @table @option
20374 @item transition
20375 Set one of available transition effects:
20376
20377 @table @samp
20378 @item custom
20379 @item fade
20380 @item wipeleft
20381 @item wiperight
20382 @item wipeup
20383 @item wipedown
20384 @item slideleft
20385 @item slideright
20386 @item slideup
20387 @item slidedown
20388 @item circlecrop
20389 @item rectcrop
20390 @item distance
20391 @item fadeblack
20392 @item fadewhite
20393 @item radial
20394 @item smoothleft
20395 @item smoothright
20396 @item smoothup
20397 @item smoothdown
20398 @item circleopen
20399 @item circleclose
20400 @item vertopen
20401 @item vertclose
20402 @item horzopen
20403 @item horzclose
20404 @item dissolve
20405 @item pixelize
20406 @item diagtl
20407 @item diagtr
20408 @item diagbl
20409 @item diagbr
20410 @item hlslice
20411 @item hrslice
20412 @item vuslice
20413 @item vdslice
20414 @end table
20415 Default transition effect is fade.
20416
20417 @item duration
20418 Set cross fade duration in seconds.
20419 Default duration is 1 second.
20420
20421 @item offset
20422 Set cross fade start relative to first input stream in seconds.
20423 Default offset is 0.
20424
20425 @item expr
20426 Set expression for custom transition effect.
20427
20428 The expressions can use the following variables and functions:
20429
20430 @table @option
20431 @item X
20432 @item Y
20433 The coordinates of the current sample.
20434
20435 @item W
20436 @item H
20437 The width and height of the image.
20438
20439 @item P
20440 Progress of transition effect.
20441
20442 @item PLANE
20443 Currently processed plane.
20444
20445 @item A
20446 Return value of first input at current location and plane.
20447
20448 @item B
20449 Return value of second input at current location and plane.
20450
20451 @item a0(x, y)
20452 @item a1(x, y)
20453 @item a2(x, y)
20454 @item a3(x, y)
20455 Return the value of the pixel at location (@var{x},@var{y}) of the
20456 first/second/third/fourth component of first input.
20457
20458 @item b0(x, y)
20459 @item b1(x, y)
20460 @item b2(x, y)
20461 @item b3(x, y)
20462 Return the value of the pixel at location (@var{x},@var{y}) of the
20463 first/second/third/fourth component of second input.
20464 @end table
20465 @end table
20466
20467 @subsection Examples
20468
20469 @itemize
20470 @item
20471 Cross fade from one input video to another input video, with fade transition and duration of transition
20472 of 2 seconds starting at offset of 5 seconds:
20473 @example
20474 ffmpeg -i first.mp4 -i second.mp4 -filter_complex xfade=transition=fade:duration=2:offset=5 output.mp4
20475 @end example
20476 @end itemize
20477
20478 @section xmedian
20479 Pick median pixels from several input videos.
20480
20481 The filter accepts the following options:
20482
20483 @table @option
20484 @item inputs
20485 Set number of inputs.
20486 Default is 3. Allowed range is from 3 to 255.
20487 If number of inputs is even number, than result will be mean value between two median values.
20488
20489 @item planes
20490 Set which planes to filter. Default value is @code{15}, by which all planes are processed.
20491
20492 @item percentile
20493 Set median percentile. Default value is @code{0.5}.
20494 Default value of @code{0.5} will pick always median values, while @code{0} will pick
20495 minimum values, and @code{1} maximum values.
20496 @end table
20497
20498 @section xstack
20499 Stack video inputs into custom layout.
20500
20501 All streams must be of same pixel format.
20502
20503 The filter accepts the following options:
20504
20505 @table @option
20506 @item inputs
20507 Set number of input streams. Default is 2.
20508
20509 @item layout
20510 Specify layout of inputs.
20511 This option requires the desired layout configuration to be explicitly set by the user.
20512 This sets position of each video input in output. Each input
20513 is separated by '|'.
20514 The first number represents the column, and the second number represents the row.
20515 Numbers start at 0 and are separated by '_'. Optionally one can use wX and hX,
20516 where X is video input from which to take width or height.
20517 Multiple values can be used when separated by '+'. In such
20518 case values are summed together.
20519
20520 Note that if inputs are of different sizes gaps may appear, as not all of
20521 the output video frame will be filled. Similarly, videos can overlap each
20522 other if their position doesn't leave enough space for the full frame of
20523 adjoining videos.
20524
20525 For 2 inputs, a default layout of @code{0_0|w0_0} is set. In all other cases,
20526 a layout must be set by the user.
20527
20528 @item shortest
20529 If set to 1, force the output to terminate when the shortest input
20530 terminates. Default value is 0.
20531
20532 @item fill
20533 If set to valid color, all unused pixels will be filled with that color.
20534 By default fill is set to none, so it is disabled.
20535 @end table
20536
20537 @subsection Examples
20538
20539 @itemize
20540 @item
20541 Display 4 inputs into 2x2 grid.
20542
20543 Layout:
20544 @example
20545 input1(0, 0)  | input3(w0, 0)
20546 input2(0, h0) | input4(w0, h0)
20547 @end example
20548
20549 @example
20550 xstack=inputs=4:layout=0_0|0_h0|w0_0|w0_h0
20551 @end example
20552
20553 Note that if inputs are of different sizes, gaps or overlaps may occur.
20554
20555 @item
20556 Display 4 inputs into 1x4 grid.
20557
20558 Layout:
20559 @example
20560 input1(0, 0)
20561 input2(0, h0)
20562 input3(0, h0+h1)
20563 input4(0, h0+h1+h2)
20564 @end example
20565
20566 @example
20567 xstack=inputs=4:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2
20568 @end example
20569
20570 Note that if inputs are of different widths, unused space will appear.
20571
20572 @item
20573 Display 9 inputs into 3x3 grid.
20574
20575 Layout:
20576 @example
20577 input1(0, 0)       | input4(w0, 0)      | input7(w0+w3, 0)
20578 input2(0, h0)      | input5(w0, h0)     | input8(w0+w3, h0)
20579 input3(0, h0+h1)   | input6(w0, h0+h1)  | input9(w0+w3, h0+h1)
20580 @end example
20581
20582 @example
20583 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
20584 @end example
20585
20586 Note that if inputs are of different sizes, gaps or overlaps may occur.
20587
20588 @item
20589 Display 16 inputs into 4x4 grid.
20590
20591 Layout:
20592 @example
20593 input1(0, 0)       | input5(w0, 0)       | input9 (w0+w4, 0)       | input13(w0+w4+w8, 0)
20594 input2(0, h0)      | input6(w0, h0)      | input10(w0+w4, h0)      | input14(w0+w4+w8, h0)
20595 input3(0, h0+h1)   | input7(w0, h0+h1)   | input11(w0+w4, h0+h1)   | input15(w0+w4+w8, h0+h1)
20596 input4(0, h0+h1+h2)| input8(w0, h0+h1+h2)| input12(w0+w4, h0+h1+h2)| input16(w0+w4+w8, h0+h1+h2)
20597 @end example
20598
20599 @example
20600 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|
20601 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
20602 @end example
20603
20604 Note that if inputs are of different sizes, gaps or overlaps may occur.
20605
20606 @end itemize
20607
20608 @anchor{yadif}
20609 @section yadif
20610
20611 Deinterlace the input video ("yadif" means "yet another deinterlacing
20612 filter").
20613
20614 It accepts the following parameters:
20615
20616
20617 @table @option
20618
20619 @item mode
20620 The interlacing mode to adopt. It accepts one of the following values:
20621
20622 @table @option
20623 @item 0, send_frame
20624 Output one frame for each frame.
20625 @item 1, send_field
20626 Output one frame for each field.
20627 @item 2, send_frame_nospatial
20628 Like @code{send_frame}, but it skips the spatial interlacing check.
20629 @item 3, send_field_nospatial
20630 Like @code{send_field}, but it skips the spatial interlacing check.
20631 @end table
20632
20633 The default value is @code{send_frame}.
20634
20635 @item parity
20636 The picture field parity assumed for the input interlaced video. It accepts one
20637 of the following values:
20638
20639 @table @option
20640 @item 0, tff
20641 Assume the top field is first.
20642 @item 1, bff
20643 Assume the bottom field is first.
20644 @item -1, auto
20645 Enable automatic detection of field parity.
20646 @end table
20647
20648 The default value is @code{auto}.
20649 If the interlacing is unknown or the decoder does not export this information,
20650 top field first will be assumed.
20651
20652 @item deint
20653 Specify which frames to deinterlace. Accepts one of the following
20654 values:
20655
20656 @table @option
20657 @item 0, all
20658 Deinterlace all frames.
20659 @item 1, interlaced
20660 Only deinterlace frames marked as interlaced.
20661 @end table
20662
20663 The default value is @code{all}.
20664 @end table
20665
20666 @section yadif_cuda
20667
20668 Deinterlace the input video using the @ref{yadif} algorithm, but implemented
20669 in CUDA so that it can work as part of a GPU accelerated pipeline with nvdec
20670 and/or nvenc.
20671
20672 It accepts the following parameters:
20673
20674
20675 @table @option
20676
20677 @item mode
20678 The interlacing mode to adopt. It accepts one of the following values:
20679
20680 @table @option
20681 @item 0, send_frame
20682 Output one frame for each frame.
20683 @item 1, send_field
20684 Output one frame for each field.
20685 @item 2, send_frame_nospatial
20686 Like @code{send_frame}, but it skips the spatial interlacing check.
20687 @item 3, send_field_nospatial
20688 Like @code{send_field}, but it skips the spatial interlacing check.
20689 @end table
20690
20691 The default value is @code{send_frame}.
20692
20693 @item parity
20694 The picture field parity assumed for the input interlaced video. It accepts one
20695 of the following values:
20696
20697 @table @option
20698 @item 0, tff
20699 Assume the top field is first.
20700 @item 1, bff
20701 Assume the bottom field is first.
20702 @item -1, auto
20703 Enable automatic detection of field parity.
20704 @end table
20705
20706 The default value is @code{auto}.
20707 If the interlacing is unknown or the decoder does not export this information,
20708 top field first will be assumed.
20709
20710 @item deint
20711 Specify which frames to deinterlace. Accepts one of the following
20712 values:
20713
20714 @table @option
20715 @item 0, all
20716 Deinterlace all frames.
20717 @item 1, interlaced
20718 Only deinterlace frames marked as interlaced.
20719 @end table
20720
20721 The default value is @code{all}.
20722 @end table
20723
20724 @section yaepblur
20725
20726 Apply blur filter while preserving edges ("yaepblur" means "yet another edge preserving blur filter").
20727 The algorithm is described in
20728 "J. S. Lee, Digital image enhancement and noise filtering by use of local statistics, IEEE Trans. Pattern Anal. Mach. Intell. PAMI-2, 1980."
20729
20730 It accepts the following parameters:
20731
20732 @table @option
20733 @item radius, r
20734 Set the window radius. Default value is 3.
20735
20736 @item planes, p
20737 Set which planes to filter. Default is only the first plane.
20738
20739 @item sigma, s
20740 Set blur strength. Default value is 128.
20741 @end table
20742
20743 @subsection Commands
20744 This filter supports same @ref{commands} as options.
20745
20746 @section zoompan
20747
20748 Apply Zoom & Pan effect.
20749
20750 This filter accepts the following options:
20751
20752 @table @option
20753 @item zoom, z
20754 Set the zoom expression. Range is 1-10. Default is 1.
20755
20756 @item x
20757 @item y
20758 Set the x and y expression. Default is 0.
20759
20760 @item d
20761 Set the duration expression in number of frames.
20762 This sets for how many number of frames effect will last for
20763 single input image.
20764
20765 @item s
20766 Set the output image size, default is 'hd720'.
20767
20768 @item fps
20769 Set the output frame rate, default is '25'.
20770 @end table
20771
20772 Each expression can contain the following constants:
20773
20774 @table @option
20775 @item in_w, iw
20776 Input width.
20777
20778 @item in_h, ih
20779 Input height.
20780
20781 @item out_w, ow
20782 Output width.
20783
20784 @item out_h, oh
20785 Output height.
20786
20787 @item in
20788 Input frame count.
20789
20790 @item on
20791 Output frame count.
20792
20793 @item in_time, it
20794 The input timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
20795
20796 @item out_time, time, ot
20797 The output timestamp expressed in seconds.
20798
20799 @item x
20800 @item y
20801 Last calculated 'x' and 'y' position from 'x' and 'y' expression
20802 for current input frame.
20803
20804 @item px
20805 @item py
20806 'x' and 'y' of last output frame of previous input frame or 0 when there was
20807 not yet such frame (first input frame).
20808
20809 @item zoom
20810 Last calculated zoom from 'z' expression for current input frame.
20811
20812 @item pzoom
20813 Last calculated zoom of last output frame of previous input frame.
20814
20815 @item duration
20816 Number of output frames for current input frame. Calculated from 'd' expression
20817 for each input frame.
20818
20819 @item pduration
20820 number of output frames created for previous input frame
20821
20822 @item a
20823 Rational number: input width / input height
20824
20825 @item sar
20826 sample aspect ratio
20827
20828 @item dar
20829 display aspect ratio
20830
20831 @end table
20832
20833 @subsection Examples
20834
20835 @itemize
20836 @item
20837 Zoom in up to 1.5x and pan at same time to some spot near center of picture:
20838 @example
20839 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
20840 @end example
20841
20842 @item
20843 Zoom in up to 1.5x and pan always at center of picture:
20844 @example
20845 zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
20846 @end example
20847
20848 @item
20849 Same as above but without pausing:
20850 @example
20851 zoompan=z='min(max(zoom,pzoom)+0.0015,1.5)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
20852 @end example
20853
20854 @item
20855 Zoom in 2x into center of picture only for the first second of the input video:
20856 @example
20857 zoompan=z='if(between(in_time,0,1),2,1)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
20858 @end example
20859
20860 @end itemize
20861
20862 @anchor{zscale}
20863 @section zscale
20864 Scale (resize) the input video, using the z.lib library:
20865 @url{https://github.com/sekrit-twc/zimg}. To enable compilation of this
20866 filter, you need to configure FFmpeg with @code{--enable-libzimg}.
20867
20868 The zscale filter forces the output display aspect ratio to be the same
20869 as the input, by changing the output sample aspect ratio.
20870
20871 If the input image format is different from the format requested by
20872 the next filter, the zscale filter will convert the input to the
20873 requested format.
20874
20875 @subsection Options
20876 The filter accepts the following options.
20877
20878 @table @option
20879 @item width, w
20880 @item height, h
20881 Set the output video dimension expression. Default value is the input
20882 dimension.
20883
20884 If the @var{width} or @var{w} value is 0, the input width is used for
20885 the output. If the @var{height} or @var{h} value is 0, the input height
20886 is used for the output.
20887
20888 If one and only one of the values is -n with n >= 1, the zscale filter
20889 will use a value that maintains the aspect ratio of the input image,
20890 calculated from the other specified dimension. After that it will,
20891 however, make sure that the calculated dimension is divisible by n and
20892 adjust the value if necessary.
20893
20894 If both values are -n with n >= 1, the behavior will be identical to
20895 both values being set to 0 as previously detailed.
20896
20897 See below for the list of accepted constants for use in the dimension
20898 expression.
20899
20900 @item size, s
20901 Set the video size. For the syntax of this option, check the
20902 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20903
20904 @item dither, d
20905 Set the dither type.
20906
20907 Possible values are:
20908 @table @var
20909 @item none
20910 @item ordered
20911 @item random
20912 @item error_diffusion
20913 @end table
20914
20915 Default is none.
20916
20917 @item filter, f
20918 Set the resize filter type.
20919
20920 Possible values are:
20921 @table @var
20922 @item point
20923 @item bilinear
20924 @item bicubic
20925 @item spline16
20926 @item spline36
20927 @item lanczos
20928 @end table
20929
20930 Default is bilinear.
20931
20932 @item range, r
20933 Set the color range.
20934
20935 Possible values are:
20936 @table @var
20937 @item input
20938 @item limited
20939 @item full
20940 @end table
20941
20942 Default is same as input.
20943
20944 @item primaries, p
20945 Set the color primaries.
20946
20947 Possible values are:
20948 @table @var
20949 @item input
20950 @item 709
20951 @item unspecified
20952 @item 170m
20953 @item 240m
20954 @item 2020
20955 @end table
20956
20957 Default is same as input.
20958
20959 @item transfer, t
20960 Set the transfer characteristics.
20961
20962 Possible values are:
20963 @table @var
20964 @item input
20965 @item 709
20966 @item unspecified
20967 @item 601
20968 @item linear
20969 @item 2020_10
20970 @item 2020_12
20971 @item smpte2084
20972 @item iec61966-2-1
20973 @item arib-std-b67
20974 @end table
20975
20976 Default is same as input.
20977
20978 @item matrix, m
20979 Set the colorspace matrix.
20980
20981 Possible value are:
20982 @table @var
20983 @item input
20984 @item 709
20985 @item unspecified
20986 @item 470bg
20987 @item 170m
20988 @item 2020_ncl
20989 @item 2020_cl
20990 @end table
20991
20992 Default is same as input.
20993
20994 @item rangein, rin
20995 Set the input color range.
20996
20997 Possible values are:
20998 @table @var
20999 @item input
21000 @item limited
21001 @item full
21002 @end table
21003
21004 Default is same as input.
21005
21006 @item primariesin, pin
21007 Set the input color primaries.
21008
21009 Possible values are:
21010 @table @var
21011 @item input
21012 @item 709
21013 @item unspecified
21014 @item 170m
21015 @item 240m
21016 @item 2020
21017 @end table
21018
21019 Default is same as input.
21020
21021 @item transferin, tin
21022 Set the input transfer characteristics.
21023
21024 Possible values are:
21025 @table @var
21026 @item input
21027 @item 709
21028 @item unspecified
21029 @item 601
21030 @item linear
21031 @item 2020_10
21032 @item 2020_12
21033 @end table
21034
21035 Default is same as input.
21036
21037 @item matrixin, min
21038 Set the input colorspace matrix.
21039
21040 Possible value are:
21041 @table @var
21042 @item input
21043 @item 709
21044 @item unspecified
21045 @item 470bg
21046 @item 170m
21047 @item 2020_ncl
21048 @item 2020_cl
21049 @end table
21050
21051 @item chromal, c
21052 Set the output chroma location.
21053
21054 Possible values are:
21055 @table @var
21056 @item input
21057 @item left
21058 @item center
21059 @item topleft
21060 @item top
21061 @item bottomleft
21062 @item bottom
21063 @end table
21064
21065 @item chromalin, cin
21066 Set the input chroma location.
21067
21068 Possible values are:
21069 @table @var
21070 @item input
21071 @item left
21072 @item center
21073 @item topleft
21074 @item top
21075 @item bottomleft
21076 @item bottom
21077 @end table
21078
21079 @item npl
21080 Set the nominal peak luminance.
21081 @end table
21082
21083 The values of the @option{w} and @option{h} options are expressions
21084 containing the following constants:
21085
21086 @table @var
21087 @item in_w
21088 @item in_h
21089 The input width and height
21090
21091 @item iw
21092 @item ih
21093 These are the same as @var{in_w} and @var{in_h}.
21094
21095 @item out_w
21096 @item out_h
21097 The output (scaled) width and height
21098
21099 @item ow
21100 @item oh
21101 These are the same as @var{out_w} and @var{out_h}
21102
21103 @item a
21104 The same as @var{iw} / @var{ih}
21105
21106 @item sar
21107 input sample aspect ratio
21108
21109 @item dar
21110 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
21111
21112 @item hsub
21113 @item vsub
21114 horizontal and vertical input chroma subsample values. For example for the
21115 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
21116
21117 @item ohsub
21118 @item ovsub
21119 horizontal and vertical output chroma subsample values. For example for the
21120 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
21121 @end table
21122
21123 @subsection Commands
21124
21125 This filter supports the following commands:
21126 @table @option
21127 @item width, w
21128 @item height, h
21129 Set the output video dimension expression.
21130 The command accepts the same syntax of the corresponding option.
21131
21132 If the specified expression is not valid, it is kept at its current
21133 value.
21134 @end table
21135
21136 @c man end VIDEO FILTERS
21137
21138 @chapter OpenCL Video Filters
21139 @c man begin OPENCL VIDEO FILTERS
21140
21141 Below is a description of the currently available OpenCL video filters.
21142
21143 To enable compilation of these filters you need to configure FFmpeg with
21144 @code{--enable-opencl}.
21145
21146 Running OpenCL filters requires you to initialize a hardware device and to pass that device to all filters in any filter graph.
21147 @table @option
21148
21149 @item -init_hw_device opencl[=@var{name}][:@var{device}[,@var{key=value}...]]
21150 Initialise a new hardware device of type @var{opencl} called @var{name}, using the
21151 given device parameters.
21152
21153 @item -filter_hw_device @var{name}
21154 Pass the hardware device called @var{name} to all filters in any filter graph.
21155
21156 @end table
21157
21158 For more detailed information see @url{https://www.ffmpeg.org/ffmpeg.html#Advanced-Video-options}
21159
21160 @itemize
21161 @item
21162 Example of choosing the first device on the second platform and running avgblur_opencl filter with default parameters on it.
21163 @example
21164 -init_hw_device opencl=gpu:1.0 -filter_hw_device gpu -i INPUT -vf "hwupload, avgblur_opencl, hwdownload" OUTPUT
21165 @end example
21166 @end itemize
21167
21168 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.
21169
21170 @section avgblur_opencl
21171
21172 Apply average blur filter.
21173
21174 The filter accepts the following options:
21175
21176 @table @option
21177 @item sizeX
21178 Set horizontal radius size.
21179 Range is @code{[1, 1024]} and default value is @code{1}.
21180
21181 @item planes
21182 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
21183
21184 @item sizeY
21185 Set vertical radius size. Range is @code{[1, 1024]} and default value is @code{0}. If zero, @code{sizeX} value will be used.
21186 @end table
21187
21188 @subsection Example
21189
21190 @itemize
21191 @item
21192 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.
21193 @example
21194 -i INPUT -vf "hwupload, avgblur_opencl=3, hwdownload" OUTPUT
21195 @end example
21196 @end itemize
21197
21198 @section boxblur_opencl
21199
21200 Apply a boxblur algorithm to the input video.
21201
21202 It accepts the following parameters:
21203
21204 @table @option
21205
21206 @item luma_radius, lr
21207 @item luma_power, lp
21208 @item chroma_radius, cr
21209 @item chroma_power, cp
21210 @item alpha_radius, ar
21211 @item alpha_power, ap
21212
21213 @end table
21214
21215 A description of the accepted options follows.
21216
21217 @table @option
21218 @item luma_radius, lr
21219 @item chroma_radius, cr
21220 @item alpha_radius, ar
21221 Set an expression for the box radius in pixels used for blurring the
21222 corresponding input plane.
21223
21224 The radius value must be a non-negative number, and must not be
21225 greater than the value of the expression @code{min(w,h)/2} for the
21226 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
21227 planes.
21228
21229 Default value for @option{luma_radius} is "2". If not specified,
21230 @option{chroma_radius} and @option{alpha_radius} default to the
21231 corresponding value set for @option{luma_radius}.
21232
21233 The expressions can contain the following constants:
21234 @table @option
21235 @item w
21236 @item h
21237 The input width and height in pixels.
21238
21239 @item cw
21240 @item ch
21241 The input chroma image width and height in pixels.
21242
21243 @item hsub
21244 @item vsub
21245 The horizontal and vertical chroma subsample values. For example, for the
21246 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
21247 @end table
21248
21249 @item luma_power, lp
21250 @item chroma_power, cp
21251 @item alpha_power, ap
21252 Specify how many times the boxblur filter is applied to the
21253 corresponding plane.
21254
21255 Default value for @option{luma_power} is 2. If not specified,
21256 @option{chroma_power} and @option{alpha_power} default to the
21257 corresponding value set for @option{luma_power}.
21258
21259 A value of 0 will disable the effect.
21260 @end table
21261
21262 @subsection Examples
21263
21264 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.
21265
21266 @itemize
21267 @item
21268 Apply a boxblur filter with the luma, chroma, and alpha radius
21269 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.
21270 @example
21271 -i INPUT -vf "hwupload, boxblur_opencl=luma_radius=2:luma_power=3, hwdownload" OUTPUT
21272 -i INPUT -vf "hwupload, boxblur_opencl=2:3, hwdownload" OUTPUT
21273 @end example
21274
21275 @item
21276 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.
21277
21278 For the luma plane, a 2x2 box radius will be run once.
21279
21280 For the chroma plane, a 4x4 box radius will be run 5 times.
21281
21282 For the alpha plane, a 3x3 box radius will be run 7 times.
21283 @example
21284 -i INPUT -vf "hwupload, boxblur_opencl=2:1:4:5:3:7, hwdownload" OUTPUT
21285 @end example
21286 @end itemize
21287
21288 @section colorkey_opencl
21289 RGB colorspace color keying.
21290
21291 The filter accepts the following options:
21292
21293 @table @option
21294 @item color
21295 The color which will be replaced with transparency.
21296
21297 @item similarity
21298 Similarity percentage with the key color.
21299
21300 0.01 matches only the exact key color, while 1.0 matches everything.
21301
21302 @item blend
21303 Blend percentage.
21304
21305 0.0 makes pixels either fully transparent, or not transparent at all.
21306
21307 Higher values result in semi-transparent pixels, with a higher transparency
21308 the more similar the pixels color is to the key color.
21309 @end table
21310
21311 @subsection Examples
21312
21313 @itemize
21314 @item
21315 Make every semi-green pixel in the input transparent with some slight blending:
21316 @example
21317 -i INPUT -vf "hwupload, colorkey_opencl=green:0.3:0.1, hwdownload" OUTPUT
21318 @end example
21319 @end itemize
21320
21321 @section convolution_opencl
21322
21323 Apply convolution of 3x3, 5x5, 7x7 matrix.
21324
21325 The filter accepts the following options:
21326
21327 @table @option
21328 @item 0m
21329 @item 1m
21330 @item 2m
21331 @item 3m
21332 Set matrix for each plane.
21333 Matrix is sequence of 9, 25 or 49 signed numbers.
21334 Default value for each plane is @code{0 0 0 0 1 0 0 0 0}.
21335
21336 @item 0rdiv
21337 @item 1rdiv
21338 @item 2rdiv
21339 @item 3rdiv
21340 Set multiplier for calculated value for each plane.
21341 If unset or 0, it will be sum of all matrix elements.
21342 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{1.0}.
21343
21344 @item 0bias
21345 @item 1bias
21346 @item 2bias
21347 @item 3bias
21348 Set bias for each plane. This value is added to the result of the multiplication.
21349 Useful for making the overall image brighter or darker.
21350 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{0.0}.
21351
21352 @end table
21353
21354 @subsection Examples
21355
21356 @itemize
21357 @item
21358 Apply sharpen:
21359 @example
21360 -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
21361 @end example
21362
21363 @item
21364 Apply blur:
21365 @example
21366 -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
21367 @end example
21368
21369 @item
21370 Apply edge enhance:
21371 @example
21372 -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
21373 @end example
21374
21375 @item
21376 Apply edge detect:
21377 @example
21378 -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
21379 @end example
21380
21381 @item
21382 Apply laplacian edge detector which includes diagonals:
21383 @example
21384 -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
21385 @end example
21386
21387 @item
21388 Apply emboss:
21389 @example
21390 -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
21391 @end example
21392 @end itemize
21393
21394 @section erosion_opencl
21395
21396 Apply erosion effect to the video.
21397
21398 This filter replaces the pixel by the local(3x3) minimum.
21399
21400 It accepts the following options:
21401
21402 @table @option
21403 @item threshold0
21404 @item threshold1
21405 @item threshold2
21406 @item threshold3
21407 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
21408 If @code{0}, plane will remain unchanged.
21409
21410 @item coordinates
21411 Flag which specifies the pixel to refer to.
21412 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
21413
21414 Flags to local 3x3 coordinates region centered on @code{x}:
21415
21416     1 2 3
21417
21418     4 x 5
21419
21420     6 7 8
21421 @end table
21422
21423 @subsection Example
21424
21425 @itemize
21426 @item
21427 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.
21428 @example
21429 -i INPUT -vf "hwupload, erosion_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
21430 @end example
21431 @end itemize
21432
21433 @section deshake_opencl
21434 Feature-point based video stabilization filter.
21435
21436 The filter accepts the following options:
21437
21438 @table @option
21439 @item tripod
21440 Simulates a tripod by preventing any camera movement whatsoever from the original frame. Defaults to @code{0}.
21441
21442 @item debug
21443 Whether or not additional debug info should be displayed, both in the processed output and in the console.
21444
21445 Note that in order to see console debug output you will also need to pass @code{-v verbose} to ffmpeg.
21446
21447 Viewing point matches in the output video is only supported for RGB input.
21448
21449 Defaults to @code{0}.
21450
21451 @item adaptive_crop
21452 Whether or not to do a tiny bit of cropping at the borders to cut down on the amount of mirrored pixels.
21453
21454 Defaults to @code{1}.
21455
21456 @item refine_features
21457 Whether or not feature points should be refined at a sub-pixel level.
21458
21459 This can be turned off for a slight performance gain at the cost of precision.
21460
21461 Defaults to @code{1}.
21462
21463 @item smooth_strength
21464 The strength of the smoothing applied to the camera path from @code{0.0} to @code{1.0}.
21465
21466 @code{1.0} is the maximum smoothing strength while values less than that result in less smoothing.
21467
21468 @code{0.0} causes the filter to adaptively choose a smoothing strength on a per-frame basis.
21469
21470 Defaults to @code{0.0}.
21471
21472 @item smooth_window_multiplier
21473 Controls the size of the smoothing window (the number of frames buffered to determine motion information from).
21474
21475 The size of the smoothing window is determined by multiplying the framerate of the video by this number.
21476
21477 Acceptable values range from @code{0.1} to @code{10.0}.
21478
21479 Larger values increase the amount of motion data available for determining how to smooth the camera path,
21480 potentially improving smoothness, but also increase latency and memory usage.
21481
21482 Defaults to @code{2.0}.
21483
21484 @end table
21485
21486 @subsection Examples
21487
21488 @itemize
21489 @item
21490 Stabilize a video with a fixed, medium smoothing strength:
21491 @example
21492 -i INPUT -vf "hwupload, deshake_opencl=smooth_strength=0.5, hwdownload" OUTPUT
21493 @end example
21494
21495 @item
21496 Stabilize a video with debugging (both in console and in rendered video):
21497 @example
21498 -i INPUT -filter_complex "[0:v]format=rgba, hwupload, deshake_opencl=debug=1, hwdownload, format=rgba, format=yuv420p" -v verbose OUTPUT
21499 @end example
21500 @end itemize
21501
21502 @section dilation_opencl
21503
21504 Apply dilation effect to the video.
21505
21506 This filter replaces the pixel by the local(3x3) maximum.
21507
21508 It accepts the following options:
21509
21510 @table @option
21511 @item threshold0
21512 @item threshold1
21513 @item threshold2
21514 @item threshold3
21515 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
21516 If @code{0}, plane will remain unchanged.
21517
21518 @item coordinates
21519 Flag which specifies the pixel to refer to.
21520 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
21521
21522 Flags to local 3x3 coordinates region centered on @code{x}:
21523
21524     1 2 3
21525
21526     4 x 5
21527
21528     6 7 8
21529 @end table
21530
21531 @subsection Example
21532
21533 @itemize
21534 @item
21535 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.
21536 @example
21537 -i INPUT -vf "hwupload, dilation_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
21538 @end example
21539 @end itemize
21540
21541 @section nlmeans_opencl
21542
21543 Non-local Means denoise filter through OpenCL, this filter accepts same options as @ref{nlmeans}.
21544
21545 @section overlay_opencl
21546
21547 Overlay one video on top of another.
21548
21549 It takes two inputs and has one output. The first input is the "main" video on which the second input is overlaid.
21550 This filter requires same memory layout for all the inputs. So, format conversion may be needed.
21551
21552 The filter accepts the following options:
21553
21554 @table @option
21555
21556 @item x
21557 Set the x coordinate of the overlaid video on the main video.
21558 Default value is @code{0}.
21559
21560 @item y
21561 Set the y coordinate of the overlaid video on the main video.
21562 Default value is @code{0}.
21563
21564 @end table
21565
21566 @subsection Examples
21567
21568 @itemize
21569 @item
21570 Overlay an image LOGO at the top-left corner of the INPUT video. Both inputs are yuv420p format.
21571 @example
21572 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuv420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
21573 @end example
21574 @item
21575 The inputs have same memory layout for color channels , the overlay has additional alpha plane, like INPUT is yuv420p, and the LOGO is yuva420p.
21576 @example
21577 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuva420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
21578 @end example
21579
21580 @end itemize
21581
21582 @section pad_opencl
21583
21584 Add paddings to the input image, and place the original input at the
21585 provided @var{x}, @var{y} coordinates.
21586
21587 It accepts the following options:
21588
21589 @table @option
21590 @item width, w
21591 @item height, h
21592 Specify an expression for the size of the output image with the
21593 paddings added. If the value for @var{width} or @var{height} is 0, the
21594 corresponding input size is used for the output.
21595
21596 The @var{width} expression can reference the value set by the
21597 @var{height} expression, and vice versa.
21598
21599 The default value of @var{width} and @var{height} is 0.
21600
21601 @item x
21602 @item y
21603 Specify the offsets to place the input image at within the padded area,
21604 with respect to the top/left border of the output image.
21605
21606 The @var{x} expression can reference the value set by the @var{y}
21607 expression, and vice versa.
21608
21609 The default value of @var{x} and @var{y} is 0.
21610
21611 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
21612 so the input image is centered on the padded area.
21613
21614 @item color
21615 Specify the color of the padded area. For the syntax of this option,
21616 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
21617 manual,ffmpeg-utils}.
21618
21619 @item aspect
21620 Pad to an aspect instead to a resolution.
21621 @end table
21622
21623 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
21624 options are expressions containing the following constants:
21625
21626 @table @option
21627 @item in_w
21628 @item in_h
21629 The input video width and height.
21630
21631 @item iw
21632 @item ih
21633 These are the same as @var{in_w} and @var{in_h}.
21634
21635 @item out_w
21636 @item out_h
21637 The output width and height (the size of the padded area), as
21638 specified by the @var{width} and @var{height} expressions.
21639
21640 @item ow
21641 @item oh
21642 These are the same as @var{out_w} and @var{out_h}.
21643
21644 @item x
21645 @item y
21646 The x and y offsets as specified by the @var{x} and @var{y}
21647 expressions, or NAN if not yet specified.
21648
21649 @item a
21650 same as @var{iw} / @var{ih}
21651
21652 @item sar
21653 input sample aspect ratio
21654
21655 @item dar
21656 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
21657 @end table
21658
21659 @section prewitt_opencl
21660
21661 Apply the Prewitt operator (@url{https://en.wikipedia.org/wiki/Prewitt_operator}) to input video stream.
21662
21663 The filter accepts the following option:
21664
21665 @table @option
21666 @item planes
21667 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
21668
21669 @item scale
21670 Set value which will be multiplied with filtered result.
21671 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
21672
21673 @item delta
21674 Set value which will be added to filtered result.
21675 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
21676 @end table
21677
21678 @subsection Example
21679
21680 @itemize
21681 @item
21682 Apply the Prewitt operator with scale set to 2 and delta set to 10.
21683 @example
21684 -i INPUT -vf "hwupload, prewitt_opencl=scale=2:delta=10, hwdownload" OUTPUT
21685 @end example
21686 @end itemize
21687
21688 @anchor{program_opencl}
21689 @section program_opencl
21690
21691 Filter video using an OpenCL program.
21692
21693 @table @option
21694
21695 @item source
21696 OpenCL program source file.
21697
21698 @item kernel
21699 Kernel name in program.
21700
21701 @item inputs
21702 Number of inputs to the filter.  Defaults to 1.
21703
21704 @item size, s
21705 Size of output frames.  Defaults to the same as the first input.
21706
21707 @end table
21708
21709 The @code{program_opencl} filter also supports the @ref{framesync} options.
21710
21711 The program source file must contain a kernel function with the given name,
21712 which will be run once for each plane of the output.  Each run on a plane
21713 gets enqueued as a separate 2D global NDRange with one work-item for each
21714 pixel to be generated.  The global ID offset for each work-item is therefore
21715 the coordinates of a pixel in the destination image.
21716
21717 The kernel function needs to take the following arguments:
21718 @itemize
21719 @item
21720 Destination image, @var{__write_only image2d_t}.
21721
21722 This image will become the output; the kernel should write all of it.
21723 @item
21724 Frame index, @var{unsigned int}.
21725
21726 This is a counter starting from zero and increasing by one for each frame.
21727 @item
21728 Source images, @var{__read_only image2d_t}.
21729
21730 These are the most recent images on each input.  The kernel may read from
21731 them to generate the output, but they can't be written to.
21732 @end itemize
21733
21734 Example programs:
21735
21736 @itemize
21737 @item
21738 Copy the input to the output (output must be the same size as the input).
21739 @verbatim
21740 __kernel void copy(__write_only image2d_t destination,
21741                    unsigned int index,
21742                    __read_only  image2d_t source)
21743 {
21744     const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE;
21745
21746     int2 location = (int2)(get_global_id(0), get_global_id(1));
21747
21748     float4 value = read_imagef(source, sampler, location);
21749
21750     write_imagef(destination, location, value);
21751 }
21752 @end verbatim
21753
21754 @item
21755 Apply a simple transformation, rotating the input by an amount increasing
21756 with the index counter.  Pixel values are linearly interpolated by the
21757 sampler, and the output need not have the same dimensions as the input.
21758 @verbatim
21759 __kernel void rotate_image(__write_only image2d_t dst,
21760                            unsigned int index,
21761                            __read_only  image2d_t src)
21762 {
21763     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
21764                                CLK_FILTER_LINEAR);
21765
21766     float angle = (float)index / 100.0f;
21767
21768     float2 dst_dim = convert_float2(get_image_dim(dst));
21769     float2 src_dim = convert_float2(get_image_dim(src));
21770
21771     float2 dst_cen = dst_dim / 2.0f;
21772     float2 src_cen = src_dim / 2.0f;
21773
21774     int2   dst_loc = (int2)(get_global_id(0), get_global_id(1));
21775
21776     float2 dst_pos = convert_float2(dst_loc) - dst_cen;
21777     float2 src_pos = {
21778         cos(angle) * dst_pos.x - sin(angle) * dst_pos.y,
21779         sin(angle) * dst_pos.x + cos(angle) * dst_pos.y
21780     };
21781     src_pos = src_pos * src_dim / dst_dim;
21782
21783     float2 src_loc = src_pos + src_cen;
21784
21785     if (src_loc.x < 0.0f      || src_loc.y < 0.0f ||
21786         src_loc.x > src_dim.x || src_loc.y > src_dim.y)
21787         write_imagef(dst, dst_loc, 0.5f);
21788     else
21789         write_imagef(dst, dst_loc, read_imagef(src, sampler, src_loc));
21790 }
21791 @end verbatim
21792
21793 @item
21794 Blend two inputs together, with the amount of each input used varying
21795 with the index counter.
21796 @verbatim
21797 __kernel void blend_images(__write_only image2d_t dst,
21798                            unsigned int index,
21799                            __read_only  image2d_t src1,
21800                            __read_only  image2d_t src2)
21801 {
21802     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
21803                                CLK_FILTER_LINEAR);
21804
21805     float blend = (cos((float)index / 50.0f) + 1.0f) / 2.0f;
21806
21807     int2  dst_loc = (int2)(get_global_id(0), get_global_id(1));
21808     int2 src1_loc = dst_loc * get_image_dim(src1) / get_image_dim(dst);
21809     int2 src2_loc = dst_loc * get_image_dim(src2) / get_image_dim(dst);
21810
21811     float4 val1 = read_imagef(src1, sampler, src1_loc);
21812     float4 val2 = read_imagef(src2, sampler, src2_loc);
21813
21814     write_imagef(dst, dst_loc, val1 * blend + val2 * (1.0f - blend));
21815 }
21816 @end verbatim
21817
21818 @end itemize
21819
21820 @section roberts_opencl
21821 Apply the Roberts cross operator (@url{https://en.wikipedia.org/wiki/Roberts_cross}) to input video stream.
21822
21823 The filter accepts the following option:
21824
21825 @table @option
21826 @item planes
21827 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
21828
21829 @item scale
21830 Set value which will be multiplied with filtered result.
21831 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
21832
21833 @item delta
21834 Set value which will be added to filtered result.
21835 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
21836 @end table
21837
21838 @subsection Example
21839
21840 @itemize
21841 @item
21842 Apply the Roberts cross operator with scale set to 2 and delta set to 10
21843 @example
21844 -i INPUT -vf "hwupload, roberts_opencl=scale=2:delta=10, hwdownload" OUTPUT
21845 @end example
21846 @end itemize
21847
21848 @section sobel_opencl
21849
21850 Apply the Sobel operator (@url{https://en.wikipedia.org/wiki/Sobel_operator}) to input video stream.
21851
21852 The filter accepts the following option:
21853
21854 @table @option
21855 @item planes
21856 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
21857
21858 @item scale
21859 Set value which will be multiplied with filtered result.
21860 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
21861
21862 @item delta
21863 Set value which will be added to filtered result.
21864 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
21865 @end table
21866
21867 @subsection Example
21868
21869 @itemize
21870 @item
21871 Apply sobel operator with scale set to 2 and delta set to 10
21872 @example
21873 -i INPUT -vf "hwupload, sobel_opencl=scale=2:delta=10, hwdownload" OUTPUT
21874 @end example
21875 @end itemize
21876
21877 @section tonemap_opencl
21878
21879 Perform HDR(PQ/HLG) to SDR conversion with tone-mapping.
21880
21881 It accepts the following parameters:
21882
21883 @table @option
21884 @item tonemap
21885 Specify the tone-mapping operator to be used. Same as tonemap option in @ref{tonemap}.
21886
21887 @item param
21888 Tune the tone mapping algorithm. same as param option in @ref{tonemap}.
21889
21890 @item desat
21891 Apply desaturation for highlights that exceed this level of brightness. The
21892 higher the parameter, the more color information will be preserved. This
21893 setting helps prevent unnaturally blown-out colors for super-highlights, by
21894 (smoothly) turning into white instead. This makes images feel more natural,
21895 at the cost of reducing information about out-of-range colors.
21896
21897 The default value is 0.5, and the algorithm here is a little different from
21898 the cpu version tonemap currently. A setting of 0.0 disables this option.
21899
21900 @item threshold
21901 The tonemapping algorithm parameters is fine-tuned per each scene. And a threshold
21902 is used to detect whether the scene has changed or not. If the distance between
21903 the current frame average brightness and the current running average exceeds
21904 a threshold value, we would re-calculate scene average and peak brightness.
21905 The default value is 0.2.
21906
21907 @item format
21908 Specify the output pixel format.
21909
21910 Currently supported formats are:
21911 @table @var
21912 @item p010
21913 @item nv12
21914 @end table
21915
21916 @item range, r
21917 Set the output color range.
21918
21919 Possible values are:
21920 @table @var
21921 @item tv/mpeg
21922 @item pc/jpeg
21923 @end table
21924
21925 Default is same as input.
21926
21927 @item primaries, p
21928 Set the output color primaries.
21929
21930 Possible values are:
21931 @table @var
21932 @item bt709
21933 @item bt2020
21934 @end table
21935
21936 Default is same as input.
21937
21938 @item transfer, t
21939 Set the output transfer characteristics.
21940
21941 Possible values are:
21942 @table @var
21943 @item bt709
21944 @item bt2020
21945 @end table
21946
21947 Default is bt709.
21948
21949 @item matrix, m
21950 Set the output colorspace matrix.
21951
21952 Possible value are:
21953 @table @var
21954 @item bt709
21955 @item bt2020
21956 @end table
21957
21958 Default is same as input.
21959
21960 @end table
21961
21962 @subsection Example
21963
21964 @itemize
21965 @item
21966 Convert HDR(PQ/HLG) video to bt2020-transfer-characteristic p010 format using linear operator.
21967 @example
21968 -i INPUT -vf "format=p010,hwupload,tonemap_opencl=t=bt2020:tonemap=linear:format=p010,hwdownload,format=p010" OUTPUT
21969 @end example
21970 @end itemize
21971
21972 @section unsharp_opencl
21973
21974 Sharpen or blur the input video.
21975
21976 It accepts the following parameters:
21977
21978 @table @option
21979 @item luma_msize_x, lx
21980 Set the luma matrix horizontal size.
21981 Range is @code{[1, 23]} and default value is @code{5}.
21982
21983 @item luma_msize_y, ly
21984 Set the luma matrix vertical size.
21985 Range is @code{[1, 23]} and default value is @code{5}.
21986
21987 @item luma_amount, la
21988 Set the luma effect strength.
21989 Range is @code{[-10, 10]} and default value is @code{1.0}.
21990
21991 Negative values will blur the input video, while positive values will
21992 sharpen it, a value of zero will disable the effect.
21993
21994 @item chroma_msize_x, cx
21995 Set the chroma matrix horizontal size.
21996 Range is @code{[1, 23]} and default value is @code{5}.
21997
21998 @item chroma_msize_y, cy
21999 Set the chroma matrix vertical size.
22000 Range is @code{[1, 23]} and default value is @code{5}.
22001
22002 @item chroma_amount, ca
22003 Set the chroma effect strength.
22004 Range is @code{[-10, 10]} and default value is @code{0.0}.
22005
22006 Negative values will blur the input video, while positive values will
22007 sharpen it, a value of zero will disable the effect.
22008
22009 @end table
22010
22011 All parameters are optional and default to the equivalent of the
22012 string '5:5:1.0:5:5:0.0'.
22013
22014 @subsection Examples
22015
22016 @itemize
22017 @item
22018 Apply strong luma sharpen effect:
22019 @example
22020 -i INPUT -vf "hwupload, unsharp_opencl=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5, hwdownload" OUTPUT
22021 @end example
22022
22023 @item
22024 Apply a strong blur of both luma and chroma parameters:
22025 @example
22026 -i INPUT -vf "hwupload, unsharp_opencl=7:7:-2:7:7:-2, hwdownload" OUTPUT
22027 @end example
22028 @end itemize
22029
22030 @section xfade_opencl
22031
22032 Cross fade two videos with custom transition effect by using OpenCL.
22033
22034 It accepts the following options:
22035
22036 @table @option
22037 @item transition
22038 Set one of possible transition effects.
22039
22040 @table @option
22041 @item custom
22042 Select custom transition effect, the actual transition description
22043 will be picked from source and kernel options.
22044
22045 @item fade
22046 @item wipeleft
22047 @item wiperight
22048 @item wipeup
22049 @item wipedown
22050 @item slideleft
22051 @item slideright
22052 @item slideup
22053 @item slidedown
22054
22055 Default transition is fade.
22056 @end table
22057
22058 @item source
22059 OpenCL program source file for custom transition.
22060
22061 @item kernel
22062 Set name of kernel to use for custom transition from program source file.
22063
22064 @item duration
22065 Set duration of video transition.
22066
22067 @item offset
22068 Set time of start of transition relative to first video.
22069 @end table
22070
22071 The program source file must contain a kernel function with the given name,
22072 which will be run once for each plane of the output.  Each run on a plane
22073 gets enqueued as a separate 2D global NDRange with one work-item for each
22074 pixel to be generated.  The global ID offset for each work-item is therefore
22075 the coordinates of a pixel in the destination image.
22076
22077 The kernel function needs to take the following arguments:
22078 @itemize
22079 @item
22080 Destination image, @var{__write_only image2d_t}.
22081
22082 This image will become the output; the kernel should write all of it.
22083
22084 @item
22085 First Source image, @var{__read_only image2d_t}.
22086 Second Source image, @var{__read_only image2d_t}.
22087
22088 These are the most recent images on each input.  The kernel may read from
22089 them to generate the output, but they can't be written to.
22090
22091 @item
22092 Transition progress, @var{float}. This value is always between 0 and 1 inclusive.
22093 @end itemize
22094
22095 Example programs:
22096
22097 @itemize
22098 @item
22099 Apply dots curtain transition effect:
22100 @verbatim
22101 __kernel void blend_images(__write_only image2d_t dst,
22102                            __read_only  image2d_t src1,
22103                            __read_only  image2d_t src2,
22104                            float progress)
22105 {
22106     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
22107                                CLK_FILTER_LINEAR);
22108     int2  p = (int2)(get_global_id(0), get_global_id(1));
22109     float2 rp = (float2)(get_global_id(0), get_global_id(1));
22110     float2 dim = (float2)(get_image_dim(src1).x, get_image_dim(src1).y);
22111     rp = rp / dim;
22112
22113     float2 dots = (float2)(20.0, 20.0);
22114     float2 center = (float2)(0,0);
22115     float2 unused;
22116
22117     float4 val1 = read_imagef(src1, sampler, p);
22118     float4 val2 = read_imagef(src2, sampler, p);
22119     bool next = distance(fract(rp * dots, &unused), (float2)(0.5, 0.5)) < (progress / distance(rp, center));
22120
22121     write_imagef(dst, p, next ? val1 : val2);
22122 }
22123 @end verbatim
22124
22125 @end itemize
22126
22127 @c man end OPENCL VIDEO FILTERS
22128
22129 @chapter VAAPI Video Filters
22130 @c man begin VAAPI VIDEO FILTERS
22131
22132 VAAPI Video filters are usually used with VAAPI decoder and VAAPI encoder. Below is a description of VAAPI video filters.
22133
22134 To enable compilation of these filters you need to configure FFmpeg with
22135 @code{--enable-vaapi}.
22136
22137 To use vaapi filters, you need to setup the vaapi device correctly. For more information, please read @url{https://trac.ffmpeg.org/wiki/Hardware/VAAPI}
22138
22139 @section tonemap_vaapi
22140
22141 Perform HDR(High Dynamic Range) to SDR(Standard Dynamic Range) conversion with tone-mapping.
22142 It maps the dynamic range of HDR10 content to the SDR content.
22143 It currently only accepts HDR10 as input.
22144
22145 It accepts the following parameters:
22146
22147 @table @option
22148 @item format
22149 Specify the output pixel format.
22150
22151 Currently supported formats are:
22152 @table @var
22153 @item p010
22154 @item nv12
22155 @end table
22156
22157 Default is nv12.
22158
22159 @item primaries, p
22160 Set the output color primaries.
22161
22162 Default is same as input.
22163
22164 @item transfer, t
22165 Set the output transfer characteristics.
22166
22167 Default is bt709.
22168
22169 @item matrix, m
22170 Set the output colorspace matrix.
22171
22172 Default is same as input.
22173
22174 @end table
22175
22176 @subsection Example
22177
22178 @itemize
22179 @item
22180 Convert HDR(HDR10) video to bt2020-transfer-characteristic p010 format
22181 @example
22182 tonemap_vaapi=format=p010:t=bt2020-10
22183 @end example
22184 @end itemize
22185
22186 @c man end VAAPI VIDEO FILTERS
22187
22188 @chapter Video Sources
22189 @c man begin VIDEO SOURCES
22190
22191 Below is a description of the currently available video sources.
22192
22193 @section buffer
22194
22195 Buffer video frames, and make them available to the filter chain.
22196
22197 This source is mainly intended for a programmatic use, in particular
22198 through the interface defined in @file{libavfilter/vsrc_buffer.h}.
22199
22200 It accepts the following parameters:
22201
22202 @table @option
22203
22204 @item video_size
22205 Specify the size (width and height) of the buffered video frames. For the
22206 syntax of this option, check the
22207 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22208
22209 @item width
22210 The input video width.
22211
22212 @item height
22213 The input video height.
22214
22215 @item pix_fmt
22216 A string representing the pixel format of the buffered video frames.
22217 It may be a number corresponding to a pixel format, or a pixel format
22218 name.
22219
22220 @item time_base
22221 Specify the timebase assumed by the timestamps of the buffered frames.
22222
22223 @item frame_rate
22224 Specify the frame rate expected for the video stream.
22225
22226 @item pixel_aspect, sar
22227 The sample (pixel) aspect ratio of the input video.
22228
22229 @item sws_param
22230 This option is deprecated and ignored. Prepend @code{sws_flags=@var{flags};}
22231 to the filtergraph description to specify swscale flags for automatically
22232 inserted scalers. See @ref{Filtergraph syntax}.
22233
22234 @item hw_frames_ctx
22235 When using a hardware pixel format, this should be a reference to an
22236 AVHWFramesContext describing input frames.
22237 @end table
22238
22239 For example:
22240 @example
22241 buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
22242 @end example
22243
22244 will instruct the source to accept video frames with size 320x240 and
22245 with format "yuv410p", assuming 1/24 as the timestamps timebase and
22246 square pixels (1:1 sample aspect ratio).
22247 Since the pixel format with name "yuv410p" corresponds to the number 6
22248 (check the enum AVPixelFormat definition in @file{libavutil/pixfmt.h}),
22249 this example corresponds to:
22250 @example
22251 buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
22252 @end example
22253
22254 Alternatively, the options can be specified as a flat string, but this
22255 syntax is deprecated:
22256
22257 @var{width}:@var{height}:@var{pix_fmt}:@var{time_base.num}:@var{time_base.den}:@var{pixel_aspect.num}:@var{pixel_aspect.den}
22258
22259 @section cellauto
22260
22261 Create a pattern generated by an elementary cellular automaton.
22262
22263 The initial state of the cellular automaton can be defined through the
22264 @option{filename} and @option{pattern} options. If such options are
22265 not specified an initial state is created randomly.
22266
22267 At each new frame a new row in the video is filled with the result of
22268 the cellular automaton next generation. The behavior when the whole
22269 frame is filled is defined by the @option{scroll} option.
22270
22271 This source accepts the following options:
22272
22273 @table @option
22274 @item filename, f
22275 Read the initial cellular automaton state, i.e. the starting row, from
22276 the specified file.
22277 In the file, each non-whitespace character is considered an alive
22278 cell, a newline will terminate the row, and further characters in the
22279 file will be ignored.
22280
22281 @item pattern, p
22282 Read the initial cellular automaton state, i.e. the starting row, from
22283 the specified string.
22284
22285 Each non-whitespace character in the string is considered an alive
22286 cell, a newline will terminate the row, and further characters in the
22287 string will be ignored.
22288
22289 @item rate, r
22290 Set the video rate, that is the number of frames generated per second.
22291 Default is 25.
22292
22293 @item random_fill_ratio, ratio
22294 Set the random fill ratio for the initial cellular automaton row. It
22295 is a floating point number value ranging from 0 to 1, defaults to
22296 1/PHI.
22297
22298 This option is ignored when a file or a pattern is specified.
22299
22300 @item random_seed, seed
22301 Set the seed for filling randomly the initial row, must be an integer
22302 included between 0 and UINT32_MAX. If not specified, or if explicitly
22303 set to -1, the filter will try to use a good random seed on a best
22304 effort basis.
22305
22306 @item rule
22307 Set the cellular automaton rule, it is a number ranging from 0 to 255.
22308 Default value is 110.
22309
22310 @item size, s
22311 Set the size of the output video. For the syntax of this option, check the
22312 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22313
22314 If @option{filename} or @option{pattern} is specified, the size is set
22315 by default to the width of the specified initial state row, and the
22316 height is set to @var{width} * PHI.
22317
22318 If @option{size} is set, it must contain the width of the specified
22319 pattern string, and the specified pattern will be centered in the
22320 larger row.
22321
22322 If a filename or a pattern string is not specified, the size value
22323 defaults to "320x518" (used for a randomly generated initial state).
22324
22325 @item scroll
22326 If set to 1, scroll the output upward when all the rows in the output
22327 have been already filled. If set to 0, the new generated row will be
22328 written over the top row just after the bottom row is filled.
22329 Defaults to 1.
22330
22331 @item start_full, full
22332 If set to 1, completely fill the output with generated rows before
22333 outputting the first frame.
22334 This is the default behavior, for disabling set the value to 0.
22335
22336 @item stitch
22337 If set to 1, stitch the left and right row edges together.
22338 This is the default behavior, for disabling set the value to 0.
22339 @end table
22340
22341 @subsection Examples
22342
22343 @itemize
22344 @item
22345 Read the initial state from @file{pattern}, and specify an output of
22346 size 200x400.
22347 @example
22348 cellauto=f=pattern:s=200x400
22349 @end example
22350
22351 @item
22352 Generate a random initial row with a width of 200 cells, with a fill
22353 ratio of 2/3:
22354 @example
22355 cellauto=ratio=2/3:s=200x200
22356 @end example
22357
22358 @item
22359 Create a pattern generated by rule 18 starting by a single alive cell
22360 centered on an initial row with width 100:
22361 @example
22362 cellauto=p=@@:s=100x400:full=0:rule=18
22363 @end example
22364
22365 @item
22366 Specify a more elaborated initial pattern:
22367 @example
22368 cellauto=p='@@@@ @@ @@@@':s=100x400:full=0:rule=18
22369 @end example
22370
22371 @end itemize
22372
22373 @anchor{coreimagesrc}
22374 @section coreimagesrc
22375 Video source generated on GPU using Apple's CoreImage API on OSX.
22376
22377 This video source is a specialized version of the @ref{coreimage} video filter.
22378 Use a core image generator at the beginning of the applied filterchain to
22379 generate the content.
22380
22381 The coreimagesrc video source accepts the following options:
22382 @table @option
22383 @item list_generators
22384 List all available generators along with all their respective options as well as
22385 possible minimum and maximum values along with the default values.
22386 @example
22387 list_generators=true
22388 @end example
22389
22390 @item size, s
22391 Specify the size of the sourced video. For the syntax of this option, check the
22392 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22393 The default value is @code{320x240}.
22394
22395 @item rate, r
22396 Specify the frame rate of the sourced video, as the number of frames
22397 generated per second. It has to be a string in the format
22398 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
22399 number or a valid video frame rate abbreviation. The default value is
22400 "25".
22401
22402 @item sar
22403 Set the sample aspect ratio of the sourced video.
22404
22405 @item duration, d
22406 Set the duration of the sourced video. See
22407 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
22408 for the accepted syntax.
22409
22410 If not specified, or the expressed duration is negative, the video is
22411 supposed to be generated forever.
22412 @end table
22413
22414 Additionally, all options of the @ref{coreimage} video filter are accepted.
22415 A complete filterchain can be used for further processing of the
22416 generated input without CPU-HOST transfer. See @ref{coreimage} documentation
22417 and examples for details.
22418
22419 @subsection Examples
22420
22421 @itemize
22422
22423 @item
22424 Use CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
22425 given as complete and escaped command-line for Apple's standard bash shell:
22426 @example
22427 ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
22428 @end example
22429 This example is equivalent to the QRCode example of @ref{coreimage} without the
22430 need for a nullsrc video source.
22431 @end itemize
22432
22433
22434 @section gradients
22435 Generate several gradients.
22436
22437 @table @option
22438 @item size, s
22439 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
22440 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
22441
22442 @item rate, r
22443 Set frame rate, expressed as number of frames per second. Default
22444 value is "25".
22445
22446 @item c0, c1, c2, c3, c4, c5, c6, c7
22447 Set 8 colors. Default values for colors is to pick random one.
22448
22449 @item x0, y0, y0, y1
22450 Set gradient line source and destination points. If negative or out of range, random ones
22451 are picked.
22452
22453 @item nb_colors, n
22454 Set number of colors to use at once. Allowed range is from 2 to 8. Default value is 2.
22455
22456 @item seed
22457 Set seed for picking gradient line points.
22458 @end table
22459
22460
22461 @section mandelbrot
22462
22463 Generate a Mandelbrot set fractal, and progressively zoom towards the
22464 point specified with @var{start_x} and @var{start_y}.
22465
22466 This source accepts the following options:
22467
22468 @table @option
22469
22470 @item end_pts
22471 Set the terminal pts value. Default value is 400.
22472
22473 @item end_scale
22474 Set the terminal scale value.
22475 Must be a floating point value. Default value is 0.3.
22476
22477 @item inner
22478 Set the inner coloring mode, that is the algorithm used to draw the
22479 Mandelbrot fractal internal region.
22480
22481 It shall assume one of the following values:
22482 @table @option
22483 @item black
22484 Set black mode.
22485 @item convergence
22486 Show time until convergence.
22487 @item mincol
22488 Set color based on point closest to the origin of the iterations.
22489 @item period
22490 Set period mode.
22491 @end table
22492
22493 Default value is @var{mincol}.
22494
22495 @item bailout
22496 Set the bailout value. Default value is 10.0.
22497
22498 @item maxiter
22499 Set the maximum of iterations performed by the rendering
22500 algorithm. Default value is 7189.
22501
22502 @item outer
22503 Set outer coloring mode.
22504 It shall assume one of following values:
22505 @table @option
22506 @item iteration_count
22507 Set iteration count mode.
22508 @item normalized_iteration_count
22509 set normalized iteration count mode.
22510 @end table
22511 Default value is @var{normalized_iteration_count}.
22512
22513 @item rate, r
22514 Set frame rate, expressed as number of frames per second. Default
22515 value is "25".
22516
22517 @item size, s
22518 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
22519 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
22520
22521 @item start_scale
22522 Set the initial scale value. Default value is 3.0.
22523
22524 @item start_x
22525 Set the initial x position. Must be a floating point value between
22526 -100 and 100. Default value is -0.743643887037158704752191506114774.
22527
22528 @item start_y
22529 Set the initial y position. Must be a floating point value between
22530 -100 and 100. Default value is -0.131825904205311970493132056385139.
22531 @end table
22532
22533 @section mptestsrc
22534
22535 Generate various test patterns, as generated by the MPlayer test filter.
22536
22537 The size of the generated video is fixed, and is 256x256.
22538 This source is useful in particular for testing encoding features.
22539
22540 This source accepts the following options:
22541
22542 @table @option
22543
22544 @item rate, r
22545 Specify the frame rate of the sourced video, as the number of frames
22546 generated per second. It has to be a string in the format
22547 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
22548 number or a valid video frame rate abbreviation. The default value is
22549 "25".
22550
22551 @item duration, d
22552 Set the duration of the sourced video. See
22553 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
22554 for the accepted syntax.
22555
22556 If not specified, or the expressed duration is negative, the video is
22557 supposed to be generated forever.
22558
22559 @item test, t
22560
22561 Set the number or the name of the test to perform. Supported tests are:
22562 @table @option
22563 @item dc_luma
22564 @item dc_chroma
22565 @item freq_luma
22566 @item freq_chroma
22567 @item amp_luma
22568 @item amp_chroma
22569 @item cbp
22570 @item mv
22571 @item ring1
22572 @item ring2
22573 @item all
22574
22575 @item max_frames, m
22576 Set the maximum number of frames generated for each test, default value is 30.
22577
22578 @end table
22579
22580 Default value is "all", which will cycle through the list of all tests.
22581 @end table
22582
22583 Some examples:
22584 @example
22585 mptestsrc=t=dc_luma
22586 @end example
22587
22588 will generate a "dc_luma" test pattern.
22589
22590 @section frei0r_src
22591
22592 Provide a frei0r source.
22593
22594 To enable compilation of this filter you need to install the frei0r
22595 header and configure FFmpeg with @code{--enable-frei0r}.
22596
22597 This source accepts the following parameters:
22598
22599 @table @option
22600
22601 @item size
22602 The size of the video to generate. For the syntax of this option, check the
22603 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22604
22605 @item framerate
22606 The framerate of the generated video. It may be a string of the form
22607 @var{num}/@var{den} or a frame rate abbreviation.
22608
22609 @item filter_name
22610 The name to the frei0r source to load. For more information regarding frei0r and
22611 how to set the parameters, read the @ref{frei0r} section in the video filters
22612 documentation.
22613
22614 @item filter_params
22615 A '|'-separated list of parameters to pass to the frei0r source.
22616
22617 @end table
22618
22619 For example, to generate a frei0r partik0l source with size 200x200
22620 and frame rate 10 which is overlaid on the overlay filter main input:
22621 @example
22622 frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
22623 @end example
22624
22625 @section life
22626
22627 Generate a life pattern.
22628
22629 This source is based on a generalization of John Conway's life game.
22630
22631 The sourced input represents a life grid, each pixel represents a cell
22632 which can be in one of two possible states, alive or dead. Every cell
22633 interacts with its eight neighbours, which are the cells that are
22634 horizontally, vertically, or diagonally adjacent.
22635
22636 At each interaction the grid evolves according to the adopted rule,
22637 which specifies the number of neighbor alive cells which will make a
22638 cell stay alive or born. The @option{rule} option allows one to specify
22639 the rule to adopt.
22640
22641 This source accepts the following options:
22642
22643 @table @option
22644 @item filename, f
22645 Set the file from which to read the initial grid state. In the file,
22646 each non-whitespace character is considered an alive cell, and newline
22647 is used to delimit the end of each row.
22648
22649 If this option is not specified, the initial grid is generated
22650 randomly.
22651
22652 @item rate, r
22653 Set the video rate, that is the number of frames generated per second.
22654 Default is 25.
22655
22656 @item random_fill_ratio, ratio
22657 Set the random fill ratio for the initial random grid. It is a
22658 floating point number value ranging from 0 to 1, defaults to 1/PHI.
22659 It is ignored when a file is specified.
22660
22661 @item random_seed, seed
22662 Set the seed for filling the initial random grid, must be an integer
22663 included between 0 and UINT32_MAX. If not specified, or if explicitly
22664 set to -1, the filter will try to use a good random seed on a best
22665 effort basis.
22666
22667 @item rule
22668 Set the life rule.
22669
22670 A rule can be specified with a code of the kind "S@var{NS}/B@var{NB}",
22671 where @var{NS} and @var{NB} are sequences of numbers in the range 0-8,
22672 @var{NS} specifies the number of alive neighbor cells which make a
22673 live cell stay alive, and @var{NB} the number of alive neighbor cells
22674 which make a dead cell to become alive (i.e. to "born").
22675 "s" and "b" can be used in place of "S" and "B", respectively.
22676
22677 Alternatively a rule can be specified by an 18-bits integer. The 9
22678 high order bits are used to encode the next cell state if it is alive
22679 for each number of neighbor alive cells, the low order bits specify
22680 the rule for "borning" new cells. Higher order bits encode for an
22681 higher number of neighbor cells.
22682 For example the number 6153 = @code{(12<<9)+9} specifies a stay alive
22683 rule of 12 and a born rule of 9, which corresponds to "S23/B03".
22684
22685 Default value is "S23/B3", which is the original Conway's game of life
22686 rule, and will keep a cell alive if it has 2 or 3 neighbor alive
22687 cells, and will born a new cell if there are three alive cells around
22688 a dead cell.
22689
22690 @item size, s
22691 Set the size of the output video. For the syntax of this option, check the
22692 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22693
22694 If @option{filename} is specified, the size is set by default to the
22695 same size of the input file. If @option{size} is set, it must contain
22696 the size specified in the input file, and the initial grid defined in
22697 that file is centered in the larger resulting area.
22698
22699 If a filename is not specified, the size value defaults to "320x240"
22700 (used for a randomly generated initial grid).
22701
22702 @item stitch
22703 If set to 1, stitch the left and right grid edges together, and the
22704 top and bottom edges also. Defaults to 1.
22705
22706 @item mold
22707 Set cell mold speed. If set, a dead cell will go from @option{death_color} to
22708 @option{mold_color} with a step of @option{mold}. @option{mold} can have a
22709 value from 0 to 255.
22710
22711 @item life_color
22712 Set the color of living (or new born) cells.
22713
22714 @item death_color
22715 Set the color of dead cells. If @option{mold} is set, this is the first color
22716 used to represent a dead cell.
22717
22718 @item mold_color
22719 Set mold color, for definitely dead and moldy cells.
22720
22721 For the syntax of these 3 color options, check the @ref{color syntax,,"Color" section in the
22722 ffmpeg-utils manual,ffmpeg-utils}.
22723 @end table
22724
22725 @subsection Examples
22726
22727 @itemize
22728 @item
22729 Read a grid from @file{pattern}, and center it on a grid of size
22730 300x300 pixels:
22731 @example
22732 life=f=pattern:s=300x300
22733 @end example
22734
22735 @item
22736 Generate a random grid of size 200x200, with a fill ratio of 2/3:
22737 @example
22738 life=ratio=2/3:s=200x200
22739 @end example
22740
22741 @item
22742 Specify a custom rule for evolving a randomly generated grid:
22743 @example
22744 life=rule=S14/B34
22745 @end example
22746
22747 @item
22748 Full example with slow death effect (mold) using @command{ffplay}:
22749 @example
22750 ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
22751 @end example
22752 @end itemize
22753
22754 @anchor{allrgb}
22755 @anchor{allyuv}
22756 @anchor{color}
22757 @anchor{haldclutsrc}
22758 @anchor{nullsrc}
22759 @anchor{pal75bars}
22760 @anchor{pal100bars}
22761 @anchor{rgbtestsrc}
22762 @anchor{smptebars}
22763 @anchor{smptehdbars}
22764 @anchor{testsrc}
22765 @anchor{testsrc2}
22766 @anchor{yuvtestsrc}
22767 @section allrgb, allyuv, color, haldclutsrc, nullsrc, pal75bars, pal100bars, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc
22768
22769 The @code{allrgb} source returns frames of size 4096x4096 of all rgb colors.
22770
22771 The @code{allyuv} source returns frames of size 4096x4096 of all yuv colors.
22772
22773 The @code{color} source provides an uniformly colored input.
22774
22775 The @code{haldclutsrc} source provides an identity Hald CLUT. See also
22776 @ref{haldclut} filter.
22777
22778 The @code{nullsrc} source returns unprocessed video frames. It is
22779 mainly useful to be employed in analysis / debugging tools, or as the
22780 source for filters which ignore the input data.
22781
22782 The @code{pal75bars} source generates a color bars pattern, based on
22783 EBU PAL recommendations with 75% color levels.
22784
22785 The @code{pal100bars} source generates a color bars pattern, based on
22786 EBU PAL recommendations with 100% color levels.
22787
22788 The @code{rgbtestsrc} source generates an RGB test pattern useful for
22789 detecting RGB vs BGR issues. You should see a red, green and blue
22790 stripe from top to bottom.
22791
22792 The @code{smptebars} source generates a color bars pattern, based on
22793 the SMPTE Engineering Guideline EG 1-1990.
22794
22795 The @code{smptehdbars} source generates a color bars pattern, based on
22796 the SMPTE RP 219-2002.
22797
22798 The @code{testsrc} source generates a test video pattern, showing a
22799 color pattern, a scrolling gradient and a timestamp. This is mainly
22800 intended for testing purposes.
22801
22802 The @code{testsrc2} source is similar to testsrc, but supports more
22803 pixel formats instead of just @code{rgb24}. This allows using it as an
22804 input for other tests without requiring a format conversion.
22805
22806 The @code{yuvtestsrc} source generates an YUV test pattern. You should
22807 see a y, cb and cr stripe from top to bottom.
22808
22809 The sources accept the following parameters:
22810
22811 @table @option
22812
22813 @item level
22814 Specify the level of the Hald CLUT, only available in the @code{haldclutsrc}
22815 source. A level of @code{N} generates a picture of @code{N*N*N} by @code{N*N*N}
22816 pixels to be used as identity matrix for 3D lookup tables. Each component is
22817 coded on a @code{1/(N*N)} scale.
22818
22819 @item color, c
22820 Specify the color of the source, only available in the @code{color}
22821 source. For the syntax of this option, check the
22822 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
22823
22824 @item size, s
22825 Specify the size of the sourced video. For the syntax of this option, check the
22826 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22827 The default value is @code{320x240}.
22828
22829 This option is not available with the @code{allrgb}, @code{allyuv}, and
22830 @code{haldclutsrc} filters.
22831
22832 @item rate, r
22833 Specify the frame rate of the sourced video, as the number of frames
22834 generated per second. It has to be a string in the format
22835 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
22836 number or a valid video frame rate abbreviation. The default value is
22837 "25".
22838
22839 @item duration, d
22840 Set the duration of the sourced video. See
22841 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
22842 for the accepted syntax.
22843
22844 If not specified, or the expressed duration is negative, the video is
22845 supposed to be generated forever.
22846
22847 @item sar
22848 Set the sample aspect ratio of the sourced video.
22849
22850 @item alpha
22851 Specify the alpha (opacity) of the background, only available in the
22852 @code{testsrc2} source. The value must be between 0 (fully transparent) and
22853 255 (fully opaque, the default).
22854
22855 @item decimals, n
22856 Set the number of decimals to show in the timestamp, only available in the
22857 @code{testsrc} source.
22858
22859 The displayed timestamp value will correspond to the original
22860 timestamp value multiplied by the power of 10 of the specified
22861 value. Default value is 0.
22862 @end table
22863
22864 @subsection Examples
22865
22866 @itemize
22867 @item
22868 Generate a video with a duration of 5.3 seconds, with size
22869 176x144 and a frame rate of 10 frames per second:
22870 @example
22871 testsrc=duration=5.3:size=qcif:rate=10
22872 @end example
22873
22874 @item
22875 The following graph description will generate a red source
22876 with an opacity of 0.2, with size "qcif" and a frame rate of 10
22877 frames per second:
22878 @example
22879 color=c=red@@0.2:s=qcif:r=10
22880 @end example
22881
22882 @item
22883 If the input content is to be ignored, @code{nullsrc} can be used. The
22884 following command generates noise in the luminance plane by employing
22885 the @code{geq} filter:
22886 @example
22887 nullsrc=s=256x256, geq=random(1)*255:128:128
22888 @end example
22889 @end itemize
22890
22891 @subsection Commands
22892
22893 The @code{color} source supports the following commands:
22894
22895 @table @option
22896 @item c, color
22897 Set the color of the created image. Accepts the same syntax of the
22898 corresponding @option{color} option.
22899 @end table
22900
22901 @section openclsrc
22902
22903 Generate video using an OpenCL program.
22904
22905 @table @option
22906
22907 @item source
22908 OpenCL program source file.
22909
22910 @item kernel
22911 Kernel name in program.
22912
22913 @item size, s
22914 Size of frames to generate.  This must be set.
22915
22916 @item format
22917 Pixel format to use for the generated frames.  This must be set.
22918
22919 @item rate, r
22920 Number of frames generated every second.  Default value is '25'.
22921
22922 @end table
22923
22924 For details of how the program loading works, see the @ref{program_opencl}
22925 filter.
22926
22927 Example programs:
22928
22929 @itemize
22930 @item
22931 Generate a colour ramp by setting pixel values from the position of the pixel
22932 in the output image.  (Note that this will work with all pixel formats, but
22933 the generated output will not be the same.)
22934 @verbatim
22935 __kernel void ramp(__write_only image2d_t dst,
22936                    unsigned int index)
22937 {
22938     int2 loc = (int2)(get_global_id(0), get_global_id(1));
22939
22940     float4 val;
22941     val.xy = val.zw = convert_float2(loc) / convert_float2(get_image_dim(dst));
22942
22943     write_imagef(dst, loc, val);
22944 }
22945 @end verbatim
22946
22947 @item
22948 Generate a Sierpinski carpet pattern, panning by a single pixel each frame.
22949 @verbatim
22950 __kernel void sierpinski_carpet(__write_only image2d_t dst,
22951                                 unsigned int index)
22952 {
22953     int2 loc = (int2)(get_global_id(0), get_global_id(1));
22954
22955     float4 value = 0.0f;
22956     int x = loc.x + index;
22957     int y = loc.y + index;
22958     while (x > 0 || y > 0) {
22959         if (x % 3 == 1 && y % 3 == 1) {
22960             value = 1.0f;
22961             break;
22962         }
22963         x /= 3;
22964         y /= 3;
22965     }
22966
22967     write_imagef(dst, loc, value);
22968 }
22969 @end verbatim
22970
22971 @end itemize
22972
22973 @section sierpinski
22974
22975 Generate a Sierpinski carpet/triangle fractal, and randomly pan around.
22976
22977 This source accepts the following options:
22978
22979 @table @option
22980 @item size, s
22981 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
22982 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
22983
22984 @item rate, r
22985 Set frame rate, expressed as number of frames per second. Default
22986 value is "25".
22987
22988 @item seed
22989 Set seed which is used for random panning.
22990
22991 @item jump
22992 Set max jump for single pan destination. Allowed range is from 1 to 10000.
22993
22994 @item type
22995 Set fractal type, can be default @code{carpet} or @code{triangle}.
22996 @end table
22997
22998 @c man end VIDEO SOURCES
22999
23000 @chapter Video Sinks
23001 @c man begin VIDEO SINKS
23002
23003 Below is a description of the currently available video sinks.
23004
23005 @section buffersink
23006
23007 Buffer video frames, and make them available to the end of the filter
23008 graph.
23009
23010 This sink is mainly intended for programmatic use, in particular
23011 through the interface defined in @file{libavfilter/buffersink.h}
23012 or the options system.
23013
23014 It accepts a pointer to an AVBufferSinkContext structure, which
23015 defines the incoming buffers' formats, to be passed as the opaque
23016 parameter to @code{avfilter_init_filter} for initialization.
23017
23018 @section nullsink
23019
23020 Null video sink: do absolutely nothing with the input video. It is
23021 mainly useful as a template and for use in analysis / debugging
23022 tools.
23023
23024 @c man end VIDEO SINKS
23025
23026 @chapter Multimedia Filters
23027 @c man begin MULTIMEDIA FILTERS
23028
23029 Below is a description of the currently available multimedia filters.
23030
23031 @section abitscope
23032
23033 Convert input audio to a video output, displaying the audio bit scope.
23034
23035 The filter accepts the following options:
23036
23037 @table @option
23038 @item rate, r
23039 Set frame rate, expressed as number of frames per second. Default
23040 value is "25".
23041
23042 @item size, s
23043 Specify the video size for the output. For the syntax of this option, check the
23044 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23045 Default value is @code{1024x256}.
23046
23047 @item colors
23048 Specify list of colors separated by space or by '|' which will be used to
23049 draw channels. Unrecognized or missing colors will be replaced
23050 by white color.
23051 @end table
23052
23053 @section adrawgraph
23054 Draw a graph using input audio metadata.
23055
23056 See @ref{drawgraph}
23057
23058 @section agraphmonitor
23059
23060 See @ref{graphmonitor}.
23061
23062 @section ahistogram
23063
23064 Convert input audio to a video output, displaying the volume histogram.
23065
23066 The filter accepts the following options:
23067
23068 @table @option
23069 @item dmode
23070 Specify how histogram is calculated.
23071
23072 It accepts the following values:
23073 @table @samp
23074 @item single
23075 Use single histogram for all channels.
23076 @item separate
23077 Use separate histogram for each channel.
23078 @end table
23079 Default is @code{single}.
23080
23081 @item rate, r
23082 Set frame rate, expressed as number of frames per second. Default
23083 value is "25".
23084
23085 @item size, s
23086 Specify the video size for the output. For the syntax of this option, check the
23087 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23088 Default value is @code{hd720}.
23089
23090 @item scale
23091 Set display scale.
23092
23093 It accepts the following values:
23094 @table @samp
23095 @item log
23096 logarithmic
23097 @item sqrt
23098 square root
23099 @item cbrt
23100 cubic root
23101 @item lin
23102 linear
23103 @item rlog
23104 reverse logarithmic
23105 @end table
23106 Default is @code{log}.
23107
23108 @item ascale
23109 Set amplitude scale.
23110
23111 It accepts the following values:
23112 @table @samp
23113 @item log
23114 logarithmic
23115 @item lin
23116 linear
23117 @end table
23118 Default is @code{log}.
23119
23120 @item acount
23121 Set how much frames to accumulate in histogram.
23122 Default is 1. Setting this to -1 accumulates all frames.
23123
23124 @item rheight
23125 Set histogram ratio of window height.
23126
23127 @item slide
23128 Set sonogram sliding.
23129
23130 It accepts the following values:
23131 @table @samp
23132 @item replace
23133 replace old rows with new ones.
23134 @item scroll
23135 scroll from top to bottom.
23136 @end table
23137 Default is @code{replace}.
23138 @end table
23139
23140 @section aphasemeter
23141
23142 Measures phase of input audio, which is exported as metadata @code{lavfi.aphasemeter.phase},
23143 representing mean phase of current audio frame. A video output can also be produced and is
23144 enabled by default. The audio is passed through as first output.
23145
23146 Audio will be rematrixed to stereo if it has a different channel layout. Phase value is in
23147 range @code{[-1, 1]} where @code{-1} means left and right channels are completely out of phase
23148 and @code{1} means channels are in phase.
23149
23150 The filter accepts the following options, all related to its video output:
23151
23152 @table @option
23153 @item rate, r
23154 Set the output frame rate. Default value is @code{25}.
23155
23156 @item size, s
23157 Set the video size for the output. For the syntax of this option, check the
23158 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23159 Default value is @code{800x400}.
23160
23161 @item rc
23162 @item gc
23163 @item bc
23164 Specify the red, green, blue contrast. Default values are @code{2},
23165 @code{7} and @code{1}.
23166 Allowed range is @code{[0, 255]}.
23167
23168 @item mpc
23169 Set color which will be used for drawing median phase. If color is
23170 @code{none} which is default, no median phase value will be drawn.
23171
23172 @item video
23173 Enable video output. Default is enabled.
23174 @end table
23175
23176 @section avectorscope
23177
23178 Convert input audio to a video output, representing the audio vector
23179 scope.
23180
23181 The filter is used to measure the difference between channels of stereo
23182 audio stream. A monaural signal, consisting of identical left and right
23183 signal, results in straight vertical line. Any stereo separation is visible
23184 as a deviation from this line, creating a Lissajous figure.
23185 If the straight (or deviation from it) but horizontal line appears this
23186 indicates that the left and right channels are out of phase.
23187
23188 The filter accepts the following options:
23189
23190 @table @option
23191 @item mode, m
23192 Set the vectorscope mode.
23193
23194 Available values are:
23195 @table @samp
23196 @item lissajous
23197 Lissajous rotated by 45 degrees.
23198
23199 @item lissajous_xy
23200 Same as above but not rotated.
23201
23202 @item polar
23203 Shape resembling half of circle.
23204 @end table
23205
23206 Default value is @samp{lissajous}.
23207
23208 @item size, s
23209 Set the video size for the output. For the syntax of this option, check the
23210 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23211 Default value is @code{400x400}.
23212
23213 @item rate, r
23214 Set the output frame rate. Default value is @code{25}.
23215
23216 @item rc
23217 @item gc
23218 @item bc
23219 @item ac
23220 Specify the red, green, blue and alpha contrast. Default values are @code{40},
23221 @code{160}, @code{80} and @code{255}.
23222 Allowed range is @code{[0, 255]}.
23223
23224 @item rf
23225 @item gf
23226 @item bf
23227 @item af
23228 Specify the red, green, blue and alpha fade. Default values are @code{15},
23229 @code{10}, @code{5} and @code{5}.
23230 Allowed range is @code{[0, 255]}.
23231
23232 @item zoom
23233 Set the zoom factor. Default value is @code{1}. Allowed range is @code{[0, 10]}.
23234 Values lower than @var{1} will auto adjust zoom factor to maximal possible value.
23235
23236 @item draw
23237 Set the vectorscope drawing mode.
23238
23239 Available values are:
23240 @table @samp
23241 @item dot
23242 Draw dot for each sample.
23243
23244 @item line
23245 Draw line between previous and current sample.
23246 @end table
23247
23248 Default value is @samp{dot}.
23249
23250 @item scale
23251 Specify amplitude scale of audio samples.
23252
23253 Available values are:
23254 @table @samp
23255 @item lin
23256 Linear.
23257
23258 @item sqrt
23259 Square root.
23260
23261 @item cbrt
23262 Cubic root.
23263
23264 @item log
23265 Logarithmic.
23266 @end table
23267
23268 @item swap
23269 Swap left channel axis with right channel axis.
23270
23271 @item mirror
23272 Mirror axis.
23273
23274 @table @samp
23275 @item none
23276 No mirror.
23277
23278 @item x
23279 Mirror only x axis.
23280
23281 @item y
23282 Mirror only y axis.
23283
23284 @item xy
23285 Mirror both axis.
23286 @end table
23287
23288 @end table
23289
23290 @subsection Examples
23291
23292 @itemize
23293 @item
23294 Complete example using @command{ffplay}:
23295 @example
23296 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
23297              [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
23298 @end example
23299 @end itemize
23300
23301 @section bench, abench
23302
23303 Benchmark part of a filtergraph.
23304
23305 The filter accepts the following options:
23306
23307 @table @option
23308 @item action
23309 Start or stop a timer.
23310
23311 Available values are:
23312 @table @samp
23313 @item start
23314 Get the current time, set it as frame metadata (using the key
23315 @code{lavfi.bench.start_time}), and forward the frame to the next filter.
23316
23317 @item stop
23318 Get the current time and fetch the @code{lavfi.bench.start_time} metadata from
23319 the input frame metadata to get the time difference. Time difference, average,
23320 maximum and minimum time (respectively @code{t}, @code{avg}, @code{max} and
23321 @code{min}) are then printed. The timestamps are expressed in seconds.
23322 @end table
23323 @end table
23324
23325 @subsection Examples
23326
23327 @itemize
23328 @item
23329 Benchmark @ref{selectivecolor} filter:
23330 @example
23331 bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
23332 @end example
23333 @end itemize
23334
23335 @section concat
23336
23337 Concatenate audio and video streams, joining them together one after the
23338 other.
23339
23340 The filter works on segments of synchronized video and audio streams. All
23341 segments must have the same number of streams of each type, and that will
23342 also be the number of streams at output.
23343
23344 The filter accepts the following options:
23345
23346 @table @option
23347
23348 @item n
23349 Set the number of segments. Default is 2.
23350
23351 @item v
23352 Set the number of output video streams, that is also the number of video
23353 streams in each segment. Default is 1.
23354
23355 @item a
23356 Set the number of output audio streams, that is also the number of audio
23357 streams in each segment. Default is 0.
23358
23359 @item unsafe
23360 Activate unsafe mode: do not fail if segments have a different format.
23361
23362 @end table
23363
23364 The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then
23365 @var{a} audio outputs.
23366
23367 There are @var{n}x(@var{v}+@var{a}) inputs: first the inputs for the first
23368 segment, in the same order as the outputs, then the inputs for the second
23369 segment, etc.
23370
23371 Related streams do not always have exactly the same duration, for various
23372 reasons including codec frame size or sloppy authoring. For that reason,
23373 related synchronized streams (e.g. a video and its audio track) should be
23374 concatenated at once. The concat filter will use the duration of the longest
23375 stream in each segment (except the last one), and if necessary pad shorter
23376 audio streams with silence.
23377
23378 For this filter to work correctly, all segments must start at timestamp 0.
23379
23380 All corresponding streams must have the same parameters in all segments; the
23381 filtering system will automatically select a common pixel format for video
23382 streams, and a common sample format, sample rate and channel layout for
23383 audio streams, but other settings, such as resolution, must be converted
23384 explicitly by the user.
23385
23386 Different frame rates are acceptable but will result in variable frame rate
23387 at output; be sure to configure the output file to handle it.
23388
23389 @subsection Examples
23390
23391 @itemize
23392 @item
23393 Concatenate an opening, an episode and an ending, all in bilingual version
23394 (video in stream 0, audio in streams 1 and 2):
23395 @example
23396 ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
23397   '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
23398    concat=n=3:v=1:a=2 [v] [a1] [a2]' \
23399   -map '[v]' -map '[a1]' -map '[a2]' output.mkv
23400 @end example
23401
23402 @item
23403 Concatenate two parts, handling audio and video separately, using the
23404 (a)movie sources, and adjusting the resolution:
23405 @example
23406 movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
23407 movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
23408 [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
23409 @end example
23410 Note that a desync will happen at the stitch if the audio and video streams
23411 do not have exactly the same duration in the first file.
23412
23413 @end itemize
23414
23415 @subsection Commands
23416
23417 This filter supports the following commands:
23418 @table @option
23419 @item next
23420 Close the current segment and step to the next one
23421 @end table
23422
23423 @anchor{ebur128}
23424 @section ebur128
23425
23426 EBU R128 scanner filter. This filter takes an audio stream and analyzes its loudness
23427 level. By default, it logs a message at a frequency of 10Hz with the
23428 Momentary loudness (identified by @code{M}), Short-term loudness (@code{S}),
23429 Integrated loudness (@code{I}) and Loudness Range (@code{LRA}).
23430
23431 The filter can only analyze streams which have a sampling rate of 48000 Hz and whose
23432 sample format is double-precision floating point. The input stream will be converted to
23433 this specification, if needed. Users may need to insert aformat and/or aresample filters
23434 after this filter to obtain the original parameters.
23435
23436 The filter also has a video output (see the @var{video} option) with a real
23437 time graph to observe the loudness evolution. The graphic contains the logged
23438 message mentioned above, so it is not printed anymore when this option is set,
23439 unless the verbose logging is set. The main graphing area contains the
23440 short-term loudness (3 seconds of analysis), and the gauge on the right is for
23441 the momentary loudness (400 milliseconds), but can optionally be configured
23442 to instead display short-term loudness (see @var{gauge}).
23443
23444 The green area marks a  +/- 1LU target range around the target loudness
23445 (-23LUFS by default, unless modified through @var{target}).
23446
23447 More information about the Loudness Recommendation EBU R128 on
23448 @url{http://tech.ebu.ch/loudness}.
23449
23450 The filter accepts the following options:
23451
23452 @table @option
23453
23454 @item video
23455 Activate the video output. The audio stream is passed unchanged whether this
23456 option is set or no. The video stream will be the first output stream if
23457 activated. Default is @code{0}.
23458
23459 @item size
23460 Set the video size. This option is for video only. For the syntax of this
23461 option, check the
23462 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23463 Default and minimum resolution is @code{640x480}.
23464
23465 @item meter
23466 Set the EBU scale meter. Default is @code{9}. Common values are @code{9} and
23467 @code{18}, respectively for EBU scale meter +9 and EBU scale meter +18. Any
23468 other integer value between this range is allowed.
23469
23470 @item metadata
23471 Set metadata injection. If set to @code{1}, the audio input will be segmented
23472 into 100ms output frames, each of them containing various loudness information
23473 in metadata.  All the metadata keys are prefixed with @code{lavfi.r128.}.
23474
23475 Default is @code{0}.
23476
23477 @item framelog
23478 Force the frame logging level.
23479
23480 Available values are:
23481 @table @samp
23482 @item info
23483 information logging level
23484 @item verbose
23485 verbose logging level
23486 @end table
23487
23488 By default, the logging level is set to @var{info}. If the @option{video} or
23489 the @option{metadata} options are set, it switches to @var{verbose}.
23490
23491 @item peak
23492 Set peak mode(s).
23493
23494 Available modes can be cumulated (the option is a @code{flag} type). Possible
23495 values are:
23496 @table @samp
23497 @item none
23498 Disable any peak mode (default).
23499 @item sample
23500 Enable sample-peak mode.
23501
23502 Simple peak mode looking for the higher sample value. It logs a message
23503 for sample-peak (identified by @code{SPK}).
23504 @item true
23505 Enable true-peak mode.
23506
23507 If enabled, the peak lookup is done on an over-sampled version of the input
23508 stream for better peak accuracy. It logs a message for true-peak.
23509 (identified by @code{TPK}) and true-peak per frame (identified by @code{FTPK}).
23510 This mode requires a build with @code{libswresample}.
23511 @end table
23512
23513 @item dualmono
23514 Treat mono input files as "dual mono". If a mono file is intended for playback
23515 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
23516 If set to @code{true}, this option will compensate for this effect.
23517 Multi-channel input files are not affected by this option.
23518
23519 @item panlaw
23520 Set a specific pan law to be used for the measurement of dual mono files.
23521 This parameter is optional, and has a default value of -3.01dB.
23522
23523 @item target
23524 Set a specific target level (in LUFS) used as relative zero in the visualization.
23525 This parameter is optional and has a default value of -23LUFS as specified
23526 by EBU R128. However, material published online may prefer a level of -16LUFS
23527 (e.g. for use with podcasts or video platforms).
23528
23529 @item gauge
23530 Set the value displayed by the gauge. Valid values are @code{momentary} and s
23531 @code{shortterm}. By default the momentary value will be used, but in certain
23532 scenarios it may be more useful to observe the short term value instead (e.g.
23533 live mixing).
23534
23535 @item scale
23536 Sets the display scale for the loudness. Valid parameters are @code{absolute}
23537 (in LUFS) or @code{relative} (LU) relative to the target. This only affects the
23538 video output, not the summary or continuous log output.
23539 @end table
23540
23541 @subsection Examples
23542
23543 @itemize
23544 @item
23545 Real-time graph using @command{ffplay}, with a EBU scale meter +18:
23546 @example
23547 ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
23548 @end example
23549
23550 @item
23551 Run an analysis with @command{ffmpeg}:
23552 @example
23553 ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
23554 @end example
23555 @end itemize
23556
23557 @section interleave, ainterleave
23558
23559 Temporally interleave frames from several inputs.
23560
23561 @code{interleave} works with video inputs, @code{ainterleave} with audio.
23562
23563 These filters read frames from several inputs and send the oldest
23564 queued frame to the output.
23565
23566 Input streams must have well defined, monotonically increasing frame
23567 timestamp values.
23568
23569 In order to submit one frame to output, these filters need to enqueue
23570 at least one frame for each input, so they cannot work in case one
23571 input is not yet terminated and will not receive incoming frames.
23572
23573 For example consider the case when one input is a @code{select} filter
23574 which always drops input frames. The @code{interleave} filter will keep
23575 reading from that input, but it will never be able to send new frames
23576 to output until the input sends an end-of-stream signal.
23577
23578 Also, depending on inputs synchronization, the filters will drop
23579 frames in case one input receives more frames than the other ones, and
23580 the queue is already filled.
23581
23582 These filters accept the following options:
23583
23584 @table @option
23585 @item nb_inputs, n
23586 Set the number of different inputs, it is 2 by default.
23587
23588 @item duration
23589 How to determine the end-of-stream.
23590
23591 @table @option
23592 @item longest
23593 The duration of the longest input. (default)
23594
23595 @item shortest
23596 The duration of the shortest input.
23597
23598 @item first
23599 The duration of the first input.
23600 @end table
23601
23602 @end table
23603
23604 @subsection Examples
23605
23606 @itemize
23607 @item
23608 Interleave frames belonging to different streams using @command{ffmpeg}:
23609 @example
23610 ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
23611 @end example
23612
23613 @item
23614 Add flickering blur effect:
23615 @example
23616 select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
23617 @end example
23618 @end itemize
23619
23620 @section metadata, ametadata
23621
23622 Manipulate frame metadata.
23623
23624 This filter accepts the following options:
23625
23626 @table @option
23627 @item mode
23628 Set mode of operation of the filter.
23629
23630 Can be one of the following:
23631
23632 @table @samp
23633 @item select
23634 If both @code{value} and @code{key} is set, select frames
23635 which have such metadata. If only @code{key} is set, select
23636 every frame that has such key in metadata.
23637
23638 @item add
23639 Add new metadata @code{key} and @code{value}. If key is already available
23640 do nothing.
23641
23642 @item modify
23643 Modify value of already present key.
23644
23645 @item delete
23646 If @code{value} is set, delete only keys that have such value.
23647 Otherwise, delete key. If @code{key} is not set, delete all metadata values in
23648 the frame.
23649
23650 @item print
23651 Print key and its value if metadata was found. If @code{key} is not set print all
23652 metadata values available in frame.
23653 @end table
23654
23655 @item key
23656 Set key used with all modes. Must be set for all modes except @code{print} and @code{delete}.
23657
23658 @item value
23659 Set metadata value which will be used. This option is mandatory for
23660 @code{modify} and @code{add} mode.
23661
23662 @item function
23663 Which function to use when comparing metadata value and @code{value}.
23664
23665 Can be one of following:
23666
23667 @table @samp
23668 @item same_str
23669 Values are interpreted as strings, returns true if metadata value is same as @code{value}.
23670
23671 @item starts_with
23672 Values are interpreted as strings, returns true if metadata value starts with
23673 the @code{value} option string.
23674
23675 @item less
23676 Values are interpreted as floats, returns true if metadata value is less than @code{value}.
23677
23678 @item equal
23679 Values are interpreted as floats, returns true if @code{value} is equal with metadata value.
23680
23681 @item greater
23682 Values are interpreted as floats, returns true if metadata value is greater than @code{value}.
23683
23684 @item expr
23685 Values are interpreted as floats, returns true if expression from option @code{expr}
23686 evaluates to true.
23687
23688 @item ends_with
23689 Values are interpreted as strings, returns true if metadata value ends with
23690 the @code{value} option string.
23691 @end table
23692
23693 @item expr
23694 Set expression which is used when @code{function} is set to @code{expr}.
23695 The expression is evaluated through the eval API and can contain the following
23696 constants:
23697
23698 @table @option
23699 @item VALUE1
23700 Float representation of @code{value} from metadata key.
23701
23702 @item VALUE2
23703 Float representation of @code{value} as supplied by user in @code{value} option.
23704 @end table
23705
23706 @item file
23707 If specified in @code{print} mode, output is written to the named file. Instead of
23708 plain filename any writable url can be specified. Filename ``-'' is a shorthand
23709 for standard output. If @code{file} option is not set, output is written to the log
23710 with AV_LOG_INFO loglevel.
23711
23712 @item direct
23713 Reduces buffering in print mode when output is written to a URL set using @var{file}.
23714
23715 @end table
23716
23717 @subsection Examples
23718
23719 @itemize
23720 @item
23721 Print all metadata values for frames with key @code{lavfi.signalstats.YDIF} with values
23722 between 0 and 1.
23723 @example
23724 signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
23725 @end example
23726 @item
23727 Print silencedetect output to file @file{metadata.txt}.
23728 @example
23729 silencedetect,ametadata=mode=print:file=metadata.txt
23730 @end example
23731 @item
23732 Direct all metadata to a pipe with file descriptor 4.
23733 @example
23734 metadata=mode=print:file='pipe\:4'
23735 @end example
23736 @end itemize
23737
23738 @section perms, aperms
23739
23740 Set read/write permissions for the output frames.
23741
23742 These filters are mainly aimed at developers to test direct path in the
23743 following filter in the filtergraph.
23744
23745 The filters accept the following options:
23746
23747 @table @option
23748 @item mode
23749 Select the permissions mode.
23750
23751 It accepts the following values:
23752 @table @samp
23753 @item none
23754 Do nothing. This is the default.
23755 @item ro
23756 Set all the output frames read-only.
23757 @item rw
23758 Set all the output frames directly writable.
23759 @item toggle
23760 Make the frame read-only if writable, and writable if read-only.
23761 @item random
23762 Set each output frame read-only or writable randomly.
23763 @end table
23764
23765 @item seed
23766 Set the seed for the @var{random} mode, must be an integer included between
23767 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
23768 @code{-1}, the filter will try to use a good random seed on a best effort
23769 basis.
23770 @end table
23771
23772 Note: in case of auto-inserted filter between the permission filter and the
23773 following one, the permission might not be received as expected in that
23774 following filter. Inserting a @ref{format} or @ref{aformat} filter before the
23775 perms/aperms filter can avoid this problem.
23776
23777 @section realtime, arealtime
23778
23779 Slow down filtering to match real time approximately.
23780
23781 These filters will pause the filtering for a variable amount of time to
23782 match the output rate with the input timestamps.
23783 They are similar to the @option{re} option to @code{ffmpeg}.
23784
23785 They accept the following options:
23786
23787 @table @option
23788 @item limit
23789 Time limit for the pauses. Any pause longer than that will be considered
23790 a timestamp discontinuity and reset the timer. Default is 2 seconds.
23791 @item speed
23792 Speed factor for processing. The value must be a float larger than zero.
23793 Values larger than 1.0 will result in faster than realtime processing,
23794 smaller will slow processing down. The @var{limit} is automatically adapted
23795 accordingly. Default is 1.0.
23796
23797 A processing speed faster than what is possible without these filters cannot
23798 be achieved.
23799 @end table
23800
23801 @anchor{select}
23802 @section select, aselect
23803
23804 Select frames to pass in output.
23805
23806 This filter accepts the following options:
23807
23808 @table @option
23809
23810 @item expr, e
23811 Set expression, which is evaluated for each input frame.
23812
23813 If the expression is evaluated to zero, the frame is discarded.
23814
23815 If the evaluation result is negative or NaN, the frame is sent to the
23816 first output; otherwise it is sent to the output with index
23817 @code{ceil(val)-1}, assuming that the input index starts from 0.
23818
23819 For example a value of @code{1.2} corresponds to the output with index
23820 @code{ceil(1.2)-1 = 2-1 = 1}, that is the second output.
23821
23822 @item outputs, n
23823 Set the number of outputs. The output to which to send the selected
23824 frame is based on the result of the evaluation. Default value is 1.
23825 @end table
23826
23827 The expression can contain the following constants:
23828
23829 @table @option
23830 @item n
23831 The (sequential) number of the filtered frame, starting from 0.
23832
23833 @item selected_n
23834 The (sequential) number of the selected frame, starting from 0.
23835
23836 @item prev_selected_n
23837 The sequential number of the last selected frame. It's NAN if undefined.
23838
23839 @item TB
23840 The timebase of the input timestamps.
23841
23842 @item pts
23843 The PTS (Presentation TimeStamp) of the filtered video frame,
23844 expressed in @var{TB} units. It's NAN if undefined.
23845
23846 @item t
23847 The PTS of the filtered video frame,
23848 expressed in seconds. It's NAN if undefined.
23849
23850 @item prev_pts
23851 The PTS of the previously filtered video frame. It's NAN if undefined.
23852
23853 @item prev_selected_pts
23854 The PTS of the last previously filtered video frame. It's NAN if undefined.
23855
23856 @item prev_selected_t
23857 The PTS of the last previously selected video frame, expressed in seconds. It's NAN if undefined.
23858
23859 @item start_pts
23860 The PTS of the first video frame in the video. It's NAN if undefined.
23861
23862 @item start_t
23863 The time of the first video frame in the video. It's NAN if undefined.
23864
23865 @item pict_type @emph{(video only)}
23866 The type of the filtered frame. It can assume one of the following
23867 values:
23868 @table @option
23869 @item I
23870 @item P
23871 @item B
23872 @item S
23873 @item SI
23874 @item SP
23875 @item BI
23876 @end table
23877
23878 @item interlace_type @emph{(video only)}
23879 The frame interlace type. It can assume one of the following values:
23880 @table @option
23881 @item PROGRESSIVE
23882 The frame is progressive (not interlaced).
23883 @item TOPFIRST
23884 The frame is top-field-first.
23885 @item BOTTOMFIRST
23886 The frame is bottom-field-first.
23887 @end table
23888
23889 @item consumed_sample_n @emph{(audio only)}
23890 the number of selected samples before the current frame
23891
23892 @item samples_n @emph{(audio only)}
23893 the number of samples in the current frame
23894
23895 @item sample_rate @emph{(audio only)}
23896 the input sample rate
23897
23898 @item key
23899 This is 1 if the filtered frame is a key-frame, 0 otherwise.
23900
23901 @item pos
23902 the position in the file of the filtered frame, -1 if the information
23903 is not available (e.g. for synthetic video)
23904
23905 @item scene @emph{(video only)}
23906 value between 0 and 1 to indicate a new scene; a low value reflects a low
23907 probability for the current frame to introduce a new scene, while a higher
23908 value means the current frame is more likely to be one (see the example below)
23909
23910 @item concatdec_select
23911 The concat demuxer can select only part of a concat input file by setting an
23912 inpoint and an outpoint, but the output packets may not be entirely contained
23913 in the selected interval. By using this variable, it is possible to skip frames
23914 generated by the concat demuxer which are not exactly contained in the selected
23915 interval.
23916
23917 This works by comparing the frame pts against the @var{lavf.concat.start_time}
23918 and the @var{lavf.concat.duration} packet metadata values which are also
23919 present in the decoded frames.
23920
23921 The @var{concatdec_select} variable is -1 if the frame pts is at least
23922 start_time and either the duration metadata is missing or the frame pts is less
23923 than start_time + duration, 0 otherwise, and NaN if the start_time metadata is
23924 missing.
23925
23926 That basically means that an input frame is selected if its pts is within the
23927 interval set by the concat demuxer.
23928
23929 @end table
23930
23931 The default value of the select expression is "1".
23932
23933 @subsection Examples
23934
23935 @itemize
23936 @item
23937 Select all frames in input:
23938 @example
23939 select
23940 @end example
23941
23942 The example above is the same as:
23943 @example
23944 select=1
23945 @end example
23946
23947 @item
23948 Skip all frames:
23949 @example
23950 select=0
23951 @end example
23952
23953 @item
23954 Select only I-frames:
23955 @example
23956 select='eq(pict_type\,I)'
23957 @end example
23958
23959 @item
23960 Select one frame every 100:
23961 @example
23962 select='not(mod(n\,100))'
23963 @end example
23964
23965 @item
23966 Select only frames contained in the 10-20 time interval:
23967 @example
23968 select=between(t\,10\,20)
23969 @end example
23970
23971 @item
23972 Select only I-frames contained in the 10-20 time interval:
23973 @example
23974 select=between(t\,10\,20)*eq(pict_type\,I)
23975 @end example
23976
23977 @item
23978 Select frames with a minimum distance of 10 seconds:
23979 @example
23980 select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
23981 @end example
23982
23983 @item
23984 Use aselect to select only audio frames with samples number > 100:
23985 @example
23986 aselect='gt(samples_n\,100)'
23987 @end example
23988
23989 @item
23990 Create a mosaic of the first scenes:
23991 @example
23992 ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
23993 @end example
23994
23995 Comparing @var{scene} against a value between 0.3 and 0.5 is generally a sane
23996 choice.
23997
23998 @item
23999 Send even and odd frames to separate outputs, and compose them:
24000 @example
24001 select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
24002 @end example
24003
24004 @item
24005 Select useful frames from an ffconcat file which is using inpoints and
24006 outpoints but where the source files are not intra frame only.
24007 @example
24008 ffmpeg -copyts -vsync 0 -segment_time_metadata 1 -i input.ffconcat -vf select=concatdec_select -af aselect=concatdec_select output.avi
24009 @end example
24010 @end itemize
24011
24012 @section sendcmd, asendcmd
24013
24014 Send commands to filters in the filtergraph.
24015
24016 These filters read commands to be sent to other filters in the
24017 filtergraph.
24018
24019 @code{sendcmd} must be inserted between two video filters,
24020 @code{asendcmd} must be inserted between two audio filters, but apart
24021 from that they act the same way.
24022
24023 The specification of commands can be provided in the filter arguments
24024 with the @var{commands} option, or in a file specified by the
24025 @var{filename} option.
24026
24027 These filters accept the following options:
24028 @table @option
24029 @item commands, c
24030 Set the commands to be read and sent to the other filters.
24031 @item filename, f
24032 Set the filename of the commands to be read and sent to the other
24033 filters.
24034 @end table
24035
24036 @subsection Commands syntax
24037
24038 A commands description consists of a sequence of interval
24039 specifications, comprising a list of commands to be executed when a
24040 particular event related to that interval occurs. The occurring event
24041 is typically the current frame time entering or leaving a given time
24042 interval.
24043
24044 An interval is specified by the following syntax:
24045 @example
24046 @var{START}[-@var{END}] @var{COMMANDS};
24047 @end example
24048
24049 The time interval is specified by the @var{START} and @var{END} times.
24050 @var{END} is optional and defaults to the maximum time.
24051
24052 The current frame time is considered within the specified interval if
24053 it is included in the interval [@var{START}, @var{END}), that is when
24054 the time is greater or equal to @var{START} and is lesser than
24055 @var{END}.
24056
24057 @var{COMMANDS} consists of a sequence of one or more command
24058 specifications, separated by ",", relating to that interval.  The
24059 syntax of a command specification is given by:
24060 @example
24061 [@var{FLAGS}] @var{TARGET} @var{COMMAND} @var{ARG}
24062 @end example
24063
24064 @var{FLAGS} is optional and specifies the type of events relating to
24065 the time interval which enable sending the specified command, and must
24066 be a non-null sequence of identifier flags separated by "+" or "|" and
24067 enclosed between "[" and "]".
24068
24069 The following flags are recognized:
24070 @table @option
24071 @item enter
24072 The command is sent when the current frame timestamp enters the
24073 specified interval. In other words, the command is sent when the
24074 previous frame timestamp was not in the given interval, and the
24075 current is.
24076
24077 @item leave
24078 The command is sent when the current frame timestamp leaves the
24079 specified interval. In other words, the command is sent when the
24080 previous frame timestamp was in the given interval, and the
24081 current is not.
24082
24083 @item expr
24084 The command @var{ARG} is interpreted as expression and result of
24085 expression is passed as @var{ARG}.
24086
24087 The expression is evaluated through the eval API and can contain the following
24088 constants:
24089
24090 @table @option
24091 @item POS
24092 Original position in the file of the frame, or undefined if undefined
24093 for the current frame.
24094
24095 @item PTS
24096 The presentation timestamp in input.
24097
24098 @item N
24099 The count of the input frame for video or audio, starting from 0.
24100
24101 @item T
24102 The time in seconds of the current frame.
24103
24104 @item TS
24105 The start time in seconds of the current command interval.
24106
24107 @item TE
24108 The end time in seconds of the current command interval.
24109
24110 @item TI
24111 The interpolated time of the current command interval, TI = (T - TS) / (TE - TS).
24112 @end table
24113
24114 @end table
24115
24116 If @var{FLAGS} is not specified, a default value of @code{[enter]} is
24117 assumed.
24118
24119 @var{TARGET} specifies the target of the command, usually the name of
24120 the filter class or a specific filter instance name.
24121
24122 @var{COMMAND} specifies the name of the command for the target filter.
24123
24124 @var{ARG} is optional and specifies the optional list of argument for
24125 the given @var{COMMAND}.
24126
24127 Between one interval specification and another, whitespaces, or
24128 sequences of characters starting with @code{#} until the end of line,
24129 are ignored and can be used to annotate comments.
24130
24131 A simplified BNF description of the commands specification syntax
24132 follows:
24133 @example
24134 @var{COMMAND_FLAG}  ::= "enter" | "leave"
24135 @var{COMMAND_FLAGS} ::= @var{COMMAND_FLAG} [(+|"|")@var{COMMAND_FLAG}]
24136 @var{COMMAND}       ::= ["[" @var{COMMAND_FLAGS} "]"] @var{TARGET} @var{COMMAND} [@var{ARG}]
24137 @var{COMMANDS}      ::= @var{COMMAND} [,@var{COMMANDS}]
24138 @var{INTERVAL}      ::= @var{START}[-@var{END}] @var{COMMANDS}
24139 @var{INTERVALS}     ::= @var{INTERVAL}[;@var{INTERVALS}]
24140 @end example
24141
24142 @subsection Examples
24143
24144 @itemize
24145 @item
24146 Specify audio tempo change at second 4:
24147 @example
24148 asendcmd=c='4.0 atempo tempo 1.5',atempo
24149 @end example
24150
24151 @item
24152 Target a specific filter instance:
24153 @example
24154 asendcmd=c='4.0 atempo@@my tempo 1.5',atempo@@my
24155 @end example
24156
24157 @item
24158 Specify a list of drawtext and hue commands in a file.
24159 @example
24160 # show text in the interval 5-10
24161 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
24162          [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
24163
24164 # desaturate the image in the interval 15-20
24165 15.0-20.0 [enter] hue s 0,
24166           [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
24167           [leave] hue s 1,
24168           [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
24169
24170 # apply an exponential saturation fade-out effect, starting from time 25
24171 25 [enter] hue s exp(25-t)
24172 @end example
24173
24174 A filtergraph allowing to read and process the above command list
24175 stored in a file @file{test.cmd}, can be specified with:
24176 @example
24177 sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
24178 @end example
24179 @end itemize
24180
24181 @anchor{setpts}
24182 @section setpts, asetpts
24183
24184 Change the PTS (presentation timestamp) of the input frames.
24185
24186 @code{setpts} works on video frames, @code{asetpts} on audio frames.
24187
24188 This filter accepts the following options:
24189
24190 @table @option
24191
24192 @item expr
24193 The expression which is evaluated for each frame to construct its timestamp.
24194
24195 @end table
24196
24197 The expression is evaluated through the eval API and can contain the following
24198 constants:
24199
24200 @table @option
24201 @item FRAME_RATE, FR
24202 frame rate, only defined for constant frame-rate video
24203
24204 @item PTS
24205 The presentation timestamp in input
24206
24207 @item N
24208 The count of the input frame for video or the number of consumed samples,
24209 not including the current frame for audio, starting from 0.
24210
24211 @item NB_CONSUMED_SAMPLES
24212 The number of consumed samples, not including the current frame (only
24213 audio)
24214
24215 @item NB_SAMPLES, S
24216 The number of samples in the current frame (only audio)
24217
24218 @item SAMPLE_RATE, SR
24219 The audio sample rate.
24220
24221 @item STARTPTS
24222 The PTS of the first frame.
24223
24224 @item STARTT
24225 the time in seconds of the first frame
24226
24227 @item INTERLACED
24228 State whether the current frame is interlaced.
24229
24230 @item T
24231 the time in seconds of the current frame
24232
24233 @item POS
24234 original position in the file of the frame, or undefined if undefined
24235 for the current frame
24236
24237 @item PREV_INPTS
24238 The previous input PTS.
24239
24240 @item PREV_INT
24241 previous input time in seconds
24242
24243 @item PREV_OUTPTS
24244 The previous output PTS.
24245
24246 @item PREV_OUTT
24247 previous output time in seconds
24248
24249 @item RTCTIME
24250 The wallclock (RTC) time in microseconds. This is deprecated, use time(0)
24251 instead.
24252
24253 @item RTCSTART
24254 The wallclock (RTC) time at the start of the movie in microseconds.
24255
24256 @item TB
24257 The timebase of the input timestamps.
24258
24259 @end table
24260
24261 @subsection Examples
24262
24263 @itemize
24264 @item
24265 Start counting PTS from zero
24266 @example
24267 setpts=PTS-STARTPTS
24268 @end example
24269
24270 @item
24271 Apply fast motion effect:
24272 @example
24273 setpts=0.5*PTS
24274 @end example
24275
24276 @item
24277 Apply slow motion effect:
24278 @example
24279 setpts=2.0*PTS
24280 @end example
24281
24282 @item
24283 Set fixed rate of 25 frames per second:
24284 @example
24285 setpts=N/(25*TB)
24286 @end example
24287
24288 @item
24289 Set fixed rate 25 fps with some jitter:
24290 @example
24291 setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
24292 @end example
24293
24294 @item
24295 Apply an offset of 10 seconds to the input PTS:
24296 @example
24297 setpts=PTS+10/TB
24298 @end example
24299
24300 @item
24301 Generate timestamps from a "live source" and rebase onto the current timebase:
24302 @example
24303 setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
24304 @end example
24305
24306 @item
24307 Generate timestamps by counting samples:
24308 @example
24309 asetpts=N/SR/TB
24310 @end example
24311
24312 @end itemize
24313
24314 @section setrange
24315
24316 Force color range for the output video frame.
24317
24318 The @code{setrange} filter marks the color range property for the
24319 output frames. It does not change the input frame, but only sets the
24320 corresponding property, which affects how the frame is treated by
24321 following filters.
24322
24323 The filter accepts the following options:
24324
24325 @table @option
24326
24327 @item range
24328 Available values are:
24329
24330 @table @samp
24331 @item auto
24332 Keep the same color range property.
24333
24334 @item unspecified, unknown
24335 Set the color range as unspecified.
24336
24337 @item limited, tv, mpeg
24338 Set the color range as limited.
24339
24340 @item full, pc, jpeg
24341 Set the color range as full.
24342 @end table
24343 @end table
24344
24345 @section settb, asettb
24346
24347 Set the timebase to use for the output frames timestamps.
24348 It is mainly useful for testing timebase configuration.
24349
24350 It accepts the following parameters:
24351
24352 @table @option
24353
24354 @item expr, tb
24355 The expression which is evaluated into the output timebase.
24356
24357 @end table
24358
24359 The value for @option{tb} is an arithmetic expression representing a
24360 rational. The expression can contain the constants "AVTB" (the default
24361 timebase), "intb" (the input timebase) and "sr" (the sample rate,
24362 audio only). Default value is "intb".
24363
24364 @subsection Examples
24365
24366 @itemize
24367 @item
24368 Set the timebase to 1/25:
24369 @example
24370 settb=expr=1/25
24371 @end example
24372
24373 @item
24374 Set the timebase to 1/10:
24375 @example
24376 settb=expr=0.1
24377 @end example
24378
24379 @item
24380 Set the timebase to 1001/1000:
24381 @example
24382 settb=1+0.001
24383 @end example
24384
24385 @item
24386 Set the timebase to 2*intb:
24387 @example
24388 settb=2*intb
24389 @end example
24390
24391 @item
24392 Set the default timebase value:
24393 @example
24394 settb=AVTB
24395 @end example
24396 @end itemize
24397
24398 @section showcqt
24399 Convert input audio to a video output representing frequency spectrum
24400 logarithmically using Brown-Puckette constant Q transform algorithm with
24401 direct frequency domain coefficient calculation (but the transform itself
24402 is not really constant Q, instead the Q factor is actually variable/clamped),
24403 with musical tone scale, from E0 to D#10.
24404
24405 The filter accepts the following options:
24406
24407 @table @option
24408 @item size, s
24409 Specify the video size for the output. It must be even. For the syntax of this option,
24410 check the @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24411 Default value is @code{1920x1080}.
24412
24413 @item fps, rate, r
24414 Set the output frame rate. Default value is @code{25}.
24415
24416 @item bar_h
24417 Set the bargraph height. It must be even. Default value is @code{-1} which
24418 computes the bargraph height automatically.
24419
24420 @item axis_h
24421 Set the axis height. It must be even. Default value is @code{-1} which computes
24422 the axis height automatically.
24423
24424 @item sono_h
24425 Set the sonogram height. It must be even. Default value is @code{-1} which
24426 computes the sonogram height automatically.
24427
24428 @item fullhd
24429 Set the fullhd resolution. This option is deprecated, use @var{size}, @var{s}
24430 instead. Default value is @code{1}.
24431
24432 @item sono_v, volume
24433 Specify the sonogram volume expression. It can contain variables:
24434 @table @option
24435 @item bar_v
24436 the @var{bar_v} evaluated expression
24437 @item frequency, freq, f
24438 the frequency where it is evaluated
24439 @item timeclamp, tc
24440 the value of @var{timeclamp} option
24441 @end table
24442 and functions:
24443 @table @option
24444 @item a_weighting(f)
24445 A-weighting of equal loudness
24446 @item b_weighting(f)
24447 B-weighting of equal loudness
24448 @item c_weighting(f)
24449 C-weighting of equal loudness.
24450 @end table
24451 Default value is @code{16}.
24452
24453 @item bar_v, volume2
24454 Specify the bargraph volume expression. It can contain variables:
24455 @table @option
24456 @item sono_v
24457 the @var{sono_v} evaluated expression
24458 @item frequency, freq, f
24459 the frequency where it is evaluated
24460 @item timeclamp, tc
24461 the value of @var{timeclamp} option
24462 @end table
24463 and functions:
24464 @table @option
24465 @item a_weighting(f)
24466 A-weighting of equal loudness
24467 @item b_weighting(f)
24468 B-weighting of equal loudness
24469 @item c_weighting(f)
24470 C-weighting of equal loudness.
24471 @end table
24472 Default value is @code{sono_v}.
24473
24474 @item sono_g, gamma
24475 Specify the sonogram gamma. Lower gamma makes the spectrum more contrast,
24476 higher gamma makes the spectrum having more range. Default value is @code{3}.
24477 Acceptable range is @code{[1, 7]}.
24478
24479 @item bar_g, gamma2
24480 Specify the bargraph gamma. Default value is @code{1}. Acceptable range is
24481 @code{[1, 7]}.
24482
24483 @item bar_t
24484 Specify the bargraph transparency level. Lower value makes the bargraph sharper.
24485 Default value is @code{1}. Acceptable range is @code{[0, 1]}.
24486
24487 @item timeclamp, tc
24488 Specify the transform timeclamp. At low frequency, there is trade-off between
24489 accuracy in time domain and frequency domain. If timeclamp is lower,
24490 event in time domain is represented more accurately (such as fast bass drum),
24491 otherwise event in frequency domain is represented more accurately
24492 (such as bass guitar). Acceptable range is @code{[0.002, 1]}. Default value is @code{0.17}.
24493
24494 @item attack
24495 Set attack time in seconds. The default is @code{0} (disabled). Otherwise, it
24496 limits future samples by applying asymmetric windowing in time domain, useful
24497 when low latency is required. Accepted range is @code{[0, 1]}.
24498
24499 @item basefreq
24500 Specify the transform base frequency. Default value is @code{20.01523126408007475},
24501 which is frequency 50 cents below E0. Acceptable range is @code{[10, 100000]}.
24502
24503 @item endfreq
24504 Specify the transform end frequency. Default value is @code{20495.59681441799654},
24505 which is frequency 50 cents above D#10. Acceptable range is @code{[10, 100000]}.
24506
24507 @item coeffclamp
24508 This option is deprecated and ignored.
24509
24510 @item tlength
24511 Specify the transform length in time domain. Use this option to control accuracy
24512 trade-off between time domain and frequency domain at every frequency sample.
24513 It can contain variables:
24514 @table @option
24515 @item frequency, freq, f
24516 the frequency where it is evaluated
24517 @item timeclamp, tc
24518 the value of @var{timeclamp} option.
24519 @end table
24520 Default value is @code{384*tc/(384+tc*f)}.
24521
24522 @item count
24523 Specify the transform count for every video frame. Default value is @code{6}.
24524 Acceptable range is @code{[1, 30]}.
24525
24526 @item fcount
24527 Specify the transform count for every single pixel. Default value is @code{0},
24528 which makes it computed automatically. Acceptable range is @code{[0, 10]}.
24529
24530 @item fontfile
24531 Specify font file for use with freetype to draw the axis. If not specified,
24532 use embedded font. Note that drawing with font file or embedded font is not
24533 implemented with custom @var{basefreq} and @var{endfreq}, use @var{axisfile}
24534 option instead.
24535
24536 @item font
24537 Specify fontconfig pattern. This has lower priority than @var{fontfile}. The
24538 @code{:} in the pattern may be replaced by @code{|} to avoid unnecessary
24539 escaping.
24540
24541 @item fontcolor
24542 Specify font color expression. This is arithmetic expression that should return
24543 integer value 0xRRGGBB. It can contain variables:
24544 @table @option
24545 @item frequency, freq, f
24546 the frequency where it is evaluated
24547 @item timeclamp, tc
24548 the value of @var{timeclamp} option
24549 @end table
24550 and functions:
24551 @table @option
24552 @item midi(f)
24553 midi number of frequency f, some midi numbers: E0(16), C1(24), C2(36), A4(69)
24554 @item r(x), g(x), b(x)
24555 red, green, and blue value of intensity x.
24556 @end table
24557 Default value is @code{st(0, (midi(f)-59.5)/12);
24558 st(1, if(between(ld(0),0,1), 0.5-0.5*cos(2*PI*ld(0)), 0));
24559 r(1-ld(1)) + b(ld(1))}.
24560
24561 @item axisfile
24562 Specify image file to draw the axis. This option override @var{fontfile} and
24563 @var{fontcolor} option.
24564
24565 @item axis, text
24566 Enable/disable drawing text to the axis. If it is set to @code{0}, drawing to
24567 the axis is disabled, ignoring @var{fontfile} and @var{axisfile} option.
24568 Default value is @code{1}.
24569
24570 @item csp
24571 Set colorspace. The accepted values are:
24572 @table @samp
24573 @item unspecified
24574 Unspecified (default)
24575
24576 @item bt709
24577 BT.709
24578
24579 @item fcc
24580 FCC
24581
24582 @item bt470bg
24583 BT.470BG or BT.601-6 625
24584
24585 @item smpte170m
24586 SMPTE-170M or BT.601-6 525
24587
24588 @item smpte240m
24589 SMPTE-240M
24590
24591 @item bt2020ncl
24592 BT.2020 with non-constant luminance
24593
24594 @end table
24595
24596 @item cscheme
24597 Set spectrogram color scheme. This is list of floating point values with format
24598 @code{left_r|left_g|left_b|right_r|right_g|right_b}.
24599 The default is @code{1|0.5|0|0|0.5|1}.
24600
24601 @end table
24602
24603 @subsection Examples
24604
24605 @itemize
24606 @item
24607 Playing audio while showing the spectrum:
24608 @example
24609 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
24610 @end example
24611
24612 @item
24613 Same as above, but with frame rate 30 fps:
24614 @example
24615 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
24616 @end example
24617
24618 @item
24619 Playing at 1280x720:
24620 @example
24621 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
24622 @end example
24623
24624 @item
24625 Disable sonogram display:
24626 @example
24627 sono_h=0
24628 @end example
24629
24630 @item
24631 A1 and its harmonics: A1, A2, (near)E3, A3:
24632 @example
24633 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),
24634                  asplit[a][out1]; [a] showcqt [out0]'
24635 @end example
24636
24637 @item
24638 Same as above, but with more accuracy in frequency domain:
24639 @example
24640 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),
24641                  asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]'
24642 @end example
24643
24644 @item
24645 Custom volume:
24646 @example
24647 bar_v=10:sono_v=bar_v*a_weighting(f)
24648 @end example
24649
24650 @item
24651 Custom gamma, now spectrum is linear to the amplitude.
24652 @example
24653 bar_g=2:sono_g=2
24654 @end example
24655
24656 @item
24657 Custom tlength equation:
24658 @example
24659 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)))'
24660 @end example
24661
24662 @item
24663 Custom fontcolor and fontfile, C-note is colored green, others are colored blue:
24664 @example
24665 fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
24666 @end example
24667
24668 @item
24669 Custom font using fontconfig:
24670 @example
24671 font='Courier New,Monospace,mono|bold'
24672 @end example
24673
24674 @item
24675 Custom frequency range with custom axis using image file:
24676 @example
24677 axisfile=myaxis.png:basefreq=40:endfreq=10000
24678 @end example
24679 @end itemize
24680
24681 @section showfreqs
24682
24683 Convert input audio to video output representing the audio power spectrum.
24684 Audio amplitude is on Y-axis while frequency is on X-axis.
24685
24686 The filter accepts the following options:
24687
24688 @table @option
24689 @item size, s
24690 Specify size of video. For the syntax of this option, check the
24691 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24692 Default is @code{1024x512}.
24693
24694 @item mode
24695 Set display mode.
24696 This set how each frequency bin will be represented.
24697
24698 It accepts the following values:
24699 @table @samp
24700 @item line
24701 @item bar
24702 @item dot
24703 @end table
24704 Default is @code{bar}.
24705
24706 @item ascale
24707 Set amplitude scale.
24708
24709 It accepts the following values:
24710 @table @samp
24711 @item lin
24712 Linear scale.
24713
24714 @item sqrt
24715 Square root scale.
24716
24717 @item cbrt
24718 Cubic root scale.
24719
24720 @item log
24721 Logarithmic scale.
24722 @end table
24723 Default is @code{log}.
24724
24725 @item fscale
24726 Set frequency scale.
24727
24728 It accepts the following values:
24729 @table @samp
24730 @item lin
24731 Linear scale.
24732
24733 @item log
24734 Logarithmic scale.
24735
24736 @item rlog
24737 Reverse logarithmic scale.
24738 @end table
24739 Default is @code{lin}.
24740
24741 @item win_size
24742 Set window size. Allowed range is from 16 to 65536.
24743
24744 Default is @code{2048}
24745
24746 @item win_func
24747 Set windowing function.
24748
24749 It accepts the following values:
24750 @table @samp
24751 @item rect
24752 @item bartlett
24753 @item hanning
24754 @item hamming
24755 @item blackman
24756 @item welch
24757 @item flattop
24758 @item bharris
24759 @item bnuttall
24760 @item bhann
24761 @item sine
24762 @item nuttall
24763 @item lanczos
24764 @item gauss
24765 @item tukey
24766 @item dolph
24767 @item cauchy
24768 @item parzen
24769 @item poisson
24770 @item bohman
24771 @end table
24772 Default is @code{hanning}.
24773
24774 @item overlap
24775 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
24776 which means optimal overlap for selected window function will be picked.
24777
24778 @item averaging
24779 Set time averaging. Setting this to 0 will display current maximal peaks.
24780 Default is @code{1}, which means time averaging is disabled.
24781
24782 @item colors
24783 Specify list of colors separated by space or by '|' which will be used to
24784 draw channel frequencies. Unrecognized or missing colors will be replaced
24785 by white color.
24786
24787 @item cmode
24788 Set channel display mode.
24789
24790 It accepts the following values:
24791 @table @samp
24792 @item combined
24793 @item separate
24794 @end table
24795 Default is @code{combined}.
24796
24797 @item minamp
24798 Set minimum amplitude used in @code{log} amplitude scaler.
24799
24800 @end table
24801
24802 @section showspatial
24803
24804 Convert stereo input audio to a video output, representing the spatial relationship
24805 between two channels.
24806
24807 The filter accepts the following options:
24808
24809 @table @option
24810 @item size, s
24811 Specify the video size for the output. For the syntax of this option, check the
24812 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24813 Default value is @code{512x512}.
24814
24815 @item win_size
24816 Set window size. Allowed range is from @var{1024} to @var{65536}. Default size is @var{4096}.
24817
24818 @item win_func
24819 Set window function.
24820
24821 It accepts the following values:
24822 @table @samp
24823 @item rect
24824 @item bartlett
24825 @item hann
24826 @item hanning
24827 @item hamming
24828 @item blackman
24829 @item welch
24830 @item flattop
24831 @item bharris
24832 @item bnuttall
24833 @item bhann
24834 @item sine
24835 @item nuttall
24836 @item lanczos
24837 @item gauss
24838 @item tukey
24839 @item dolph
24840 @item cauchy
24841 @item parzen
24842 @item poisson
24843 @item bohman
24844 @end table
24845
24846 Default value is @code{hann}.
24847
24848 @item overlap
24849 Set ratio of overlap window. Default value is @code{0.5}.
24850 When value is @code{1} overlap is set to recommended size for specific
24851 window function currently used.
24852 @end table
24853
24854 @anchor{showspectrum}
24855 @section showspectrum
24856
24857 Convert input audio to a video output, representing the audio frequency
24858 spectrum.
24859
24860 The filter accepts the following options:
24861
24862 @table @option
24863 @item size, s
24864 Specify the video size for the output. For the syntax of this option, check the
24865 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24866 Default value is @code{640x512}.
24867
24868 @item slide
24869 Specify how the spectrum should slide along the window.
24870
24871 It accepts the following values:
24872 @table @samp
24873 @item replace
24874 the samples start again on the left when they reach the right
24875 @item scroll
24876 the samples scroll from right to left
24877 @item fullframe
24878 frames are only produced when the samples reach the right
24879 @item rscroll
24880 the samples scroll from left to right
24881 @end table
24882
24883 Default value is @code{replace}.
24884
24885 @item mode
24886 Specify display mode.
24887
24888 It accepts the following values:
24889 @table @samp
24890 @item combined
24891 all channels are displayed in the same row
24892 @item separate
24893 all channels are displayed in separate rows
24894 @end table
24895
24896 Default value is @samp{combined}.
24897
24898 @item color
24899 Specify display color mode.
24900
24901 It accepts the following values:
24902 @table @samp
24903 @item channel
24904 each channel is displayed in a separate color
24905 @item intensity
24906 each channel is displayed using the same color scheme
24907 @item rainbow
24908 each channel is displayed using the rainbow color scheme
24909 @item moreland
24910 each channel is displayed using the moreland color scheme
24911 @item nebulae
24912 each channel is displayed using the nebulae color scheme
24913 @item fire
24914 each channel is displayed using the fire color scheme
24915 @item fiery
24916 each channel is displayed using the fiery color scheme
24917 @item fruit
24918 each channel is displayed using the fruit color scheme
24919 @item cool
24920 each channel is displayed using the cool color scheme
24921 @item magma
24922 each channel is displayed using the magma color scheme
24923 @item green
24924 each channel is displayed using the green color scheme
24925 @item viridis
24926 each channel is displayed using the viridis color scheme
24927 @item plasma
24928 each channel is displayed using the plasma color scheme
24929 @item cividis
24930 each channel is displayed using the cividis color scheme
24931 @item terrain
24932 each channel is displayed using the terrain color scheme
24933 @end table
24934
24935 Default value is @samp{channel}.
24936
24937 @item scale
24938 Specify scale used for calculating intensity color values.
24939
24940 It accepts the following values:
24941 @table @samp
24942 @item lin
24943 linear
24944 @item sqrt
24945 square root, default
24946 @item cbrt
24947 cubic root
24948 @item log
24949 logarithmic
24950 @item 4thrt
24951 4th root
24952 @item 5thrt
24953 5th root
24954 @end table
24955
24956 Default value is @samp{sqrt}.
24957
24958 @item fscale
24959 Specify frequency scale.
24960
24961 It accepts the following values:
24962 @table @samp
24963 @item lin
24964 linear
24965 @item log
24966 logarithmic
24967 @end table
24968
24969 Default value is @samp{lin}.
24970
24971 @item saturation
24972 Set saturation modifier for displayed colors. Negative values provide
24973 alternative color scheme. @code{0} is no saturation at all.
24974 Saturation must be in [-10.0, 10.0] range.
24975 Default value is @code{1}.
24976
24977 @item win_func
24978 Set window function.
24979
24980 It accepts the following values:
24981 @table @samp
24982 @item rect
24983 @item bartlett
24984 @item hann
24985 @item hanning
24986 @item hamming
24987 @item blackman
24988 @item welch
24989 @item flattop
24990 @item bharris
24991 @item bnuttall
24992 @item bhann
24993 @item sine
24994 @item nuttall
24995 @item lanczos
24996 @item gauss
24997 @item tukey
24998 @item dolph
24999 @item cauchy
25000 @item parzen
25001 @item poisson
25002 @item bohman
25003 @end table
25004
25005 Default value is @code{hann}.
25006
25007 @item orientation
25008 Set orientation of time vs frequency axis. Can be @code{vertical} or
25009 @code{horizontal}. Default is @code{vertical}.
25010
25011 @item overlap
25012 Set ratio of overlap window. Default value is @code{0}.
25013 When value is @code{1} overlap is set to recommended size for specific
25014 window function currently used.
25015
25016 @item gain
25017 Set scale gain for calculating intensity color values.
25018 Default value is @code{1}.
25019
25020 @item data
25021 Set which data to display. Can be @code{magnitude}, default or @code{phase}.
25022
25023 @item rotation
25024 Set color rotation, must be in [-1.0, 1.0] range.
25025 Default value is @code{0}.
25026
25027 @item start
25028 Set start frequency from which to display spectrogram. Default is @code{0}.
25029
25030 @item stop
25031 Set stop frequency to which to display spectrogram. Default is @code{0}.
25032
25033 @item fps
25034 Set upper frame rate limit. Default is @code{auto}, unlimited.
25035
25036 @item legend
25037 Draw time and frequency axes and legends. Default is disabled.
25038 @end table
25039
25040 The usage is very similar to the showwaves filter; see the examples in that
25041 section.
25042
25043 @subsection Examples
25044
25045 @itemize
25046 @item
25047 Large window with logarithmic color scaling:
25048 @example
25049 showspectrum=s=1280x480:scale=log
25050 @end example
25051
25052 @item
25053 Complete example for a colored and sliding spectrum per channel using @command{ffplay}:
25054 @example
25055 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
25056              [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
25057 @end example
25058 @end itemize
25059
25060 @section showspectrumpic
25061
25062 Convert input audio to a single video frame, representing the audio frequency
25063 spectrum.
25064
25065 The filter accepts the following options:
25066
25067 @table @option
25068 @item size, s
25069 Specify the video size for the output. For the syntax of this option, check the
25070 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25071 Default value is @code{4096x2048}.
25072
25073 @item mode
25074 Specify display mode.
25075
25076 It accepts the following values:
25077 @table @samp
25078 @item combined
25079 all channels are displayed in the same row
25080 @item separate
25081 all channels are displayed in separate rows
25082 @end table
25083 Default value is @samp{combined}.
25084
25085 @item color
25086 Specify display color mode.
25087
25088 It accepts the following values:
25089 @table @samp
25090 @item channel
25091 each channel is displayed in a separate color
25092 @item intensity
25093 each channel is displayed using the same color scheme
25094 @item rainbow
25095 each channel is displayed using the rainbow color scheme
25096 @item moreland
25097 each channel is displayed using the moreland color scheme
25098 @item nebulae
25099 each channel is displayed using the nebulae color scheme
25100 @item fire
25101 each channel is displayed using the fire color scheme
25102 @item fiery
25103 each channel is displayed using the fiery color scheme
25104 @item fruit
25105 each channel is displayed using the fruit color scheme
25106 @item cool
25107 each channel is displayed using the cool color scheme
25108 @item magma
25109 each channel is displayed using the magma color scheme
25110 @item green
25111 each channel is displayed using the green color scheme
25112 @item viridis
25113 each channel is displayed using the viridis color scheme
25114 @item plasma
25115 each channel is displayed using the plasma color scheme
25116 @item cividis
25117 each channel is displayed using the cividis color scheme
25118 @item terrain
25119 each channel is displayed using the terrain color scheme
25120 @end table
25121 Default value is @samp{intensity}.
25122
25123 @item scale
25124 Specify scale used for calculating intensity color values.
25125
25126 It accepts the following values:
25127 @table @samp
25128 @item lin
25129 linear
25130 @item sqrt
25131 square root, default
25132 @item cbrt
25133 cubic root
25134 @item log
25135 logarithmic
25136 @item 4thrt
25137 4th root
25138 @item 5thrt
25139 5th root
25140 @end table
25141 Default value is @samp{log}.
25142
25143 @item fscale
25144 Specify frequency scale.
25145
25146 It accepts the following values:
25147 @table @samp
25148 @item lin
25149 linear
25150 @item log
25151 logarithmic
25152 @end table
25153
25154 Default value is @samp{lin}.
25155
25156 @item saturation
25157 Set saturation modifier for displayed colors. Negative values provide
25158 alternative color scheme. @code{0} is no saturation at all.
25159 Saturation must be in [-10.0, 10.0] range.
25160 Default value is @code{1}.
25161
25162 @item win_func
25163 Set window function.
25164
25165 It accepts the following values:
25166 @table @samp
25167 @item rect
25168 @item bartlett
25169 @item hann
25170 @item hanning
25171 @item hamming
25172 @item blackman
25173 @item welch
25174 @item flattop
25175 @item bharris
25176 @item bnuttall
25177 @item bhann
25178 @item sine
25179 @item nuttall
25180 @item lanczos
25181 @item gauss
25182 @item tukey
25183 @item dolph
25184 @item cauchy
25185 @item parzen
25186 @item poisson
25187 @item bohman
25188 @end table
25189 Default value is @code{hann}.
25190
25191 @item orientation
25192 Set orientation of time vs frequency axis. Can be @code{vertical} or
25193 @code{horizontal}. Default is @code{vertical}.
25194
25195 @item gain
25196 Set scale gain for calculating intensity color values.
25197 Default value is @code{1}.
25198
25199 @item legend
25200 Draw time and frequency axes and legends. Default is enabled.
25201
25202 @item rotation
25203 Set color rotation, must be in [-1.0, 1.0] range.
25204 Default value is @code{0}.
25205
25206 @item start
25207 Set start frequency from which to display spectrogram. Default is @code{0}.
25208
25209 @item stop
25210 Set stop frequency to which to display spectrogram. Default is @code{0}.
25211 @end table
25212
25213 @subsection Examples
25214
25215 @itemize
25216 @item
25217 Extract an audio spectrogram of a whole audio track
25218 in a 1024x1024 picture using @command{ffmpeg}:
25219 @example
25220 ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
25221 @end example
25222 @end itemize
25223
25224 @section showvolume
25225
25226 Convert input audio volume to a video output.
25227
25228 The filter accepts the following options:
25229
25230 @table @option
25231 @item rate, r
25232 Set video rate.
25233
25234 @item b
25235 Set border width, allowed range is [0, 5]. Default is 1.
25236
25237 @item w
25238 Set channel width, allowed range is [80, 8192]. Default is 400.
25239
25240 @item h
25241 Set channel height, allowed range is [1, 900]. Default is 20.
25242
25243 @item f
25244 Set fade, allowed range is [0, 1]. Default is 0.95.
25245
25246 @item c
25247 Set volume color expression.
25248
25249 The expression can use the following variables:
25250
25251 @table @option
25252 @item VOLUME
25253 Current max volume of channel in dB.
25254
25255 @item PEAK
25256 Current peak.
25257
25258 @item CHANNEL
25259 Current channel number, starting from 0.
25260 @end table
25261
25262 @item t
25263 If set, displays channel names. Default is enabled.
25264
25265 @item v
25266 If set, displays volume values. Default is enabled.
25267
25268 @item o
25269 Set orientation, can be horizontal: @code{h} or vertical: @code{v},
25270 default is @code{h}.
25271
25272 @item s
25273 Set step size, allowed range is [0, 5]. Default is 0, which means
25274 step is disabled.
25275
25276 @item p
25277 Set background opacity, allowed range is [0, 1]. Default is 0.
25278
25279 @item m
25280 Set metering mode, can be peak: @code{p} or rms: @code{r},
25281 default is @code{p}.
25282
25283 @item ds
25284 Set display scale, can be linear: @code{lin} or log: @code{log},
25285 default is @code{lin}.
25286
25287 @item dm
25288 In second.
25289 If set to > 0., display a line for the max level
25290 in the previous seconds.
25291 default is disabled: @code{0.}
25292
25293 @item dmc
25294 The color of the max line. Use when @code{dm} option is set to > 0.
25295 default is: @code{orange}
25296 @end table
25297
25298 @section showwaves
25299
25300 Convert input audio to a video output, representing the samples waves.
25301
25302 The filter accepts the following options:
25303
25304 @table @option
25305 @item size, s
25306 Specify the video size for the output. For the syntax of this option, check the
25307 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25308 Default value is @code{600x240}.
25309
25310 @item mode
25311 Set display mode.
25312
25313 Available values are:
25314 @table @samp
25315 @item point
25316 Draw a point for each sample.
25317
25318 @item line
25319 Draw a vertical line for each sample.
25320
25321 @item p2p
25322 Draw a point for each sample and a line between them.
25323
25324 @item cline
25325 Draw a centered vertical line for each sample.
25326 @end table
25327
25328 Default value is @code{point}.
25329
25330 @item n
25331 Set the number of samples which are printed on the same column. A
25332 larger value will decrease the frame rate. Must be a positive
25333 integer. This option can be set only if the value for @var{rate}
25334 is not explicitly specified.
25335
25336 @item rate, r
25337 Set the (approximate) output frame rate. This is done by setting the
25338 option @var{n}. Default value is "25".
25339
25340 @item split_channels
25341 Set if channels should be drawn separately or overlap. Default value is 0.
25342
25343 @item colors
25344 Set colors separated by '|' which are going to be used for drawing of each channel.
25345
25346 @item scale
25347 Set amplitude scale.
25348
25349 Available values are:
25350 @table @samp
25351 @item lin
25352 Linear.
25353
25354 @item log
25355 Logarithmic.
25356
25357 @item sqrt
25358 Square root.
25359
25360 @item cbrt
25361 Cubic root.
25362 @end table
25363
25364 Default is linear.
25365
25366 @item draw
25367 Set the draw mode. This is mostly useful to set for high @var{n}.
25368
25369 Available values are:
25370 @table @samp
25371 @item scale
25372 Scale pixel values for each drawn sample.
25373
25374 @item full
25375 Draw every sample directly.
25376 @end table
25377
25378 Default value is @code{scale}.
25379 @end table
25380
25381 @subsection Examples
25382
25383 @itemize
25384 @item
25385 Output the input file audio and the corresponding video representation
25386 at the same time:
25387 @example
25388 amovie=a.mp3,asplit[out0],showwaves[out1]
25389 @end example
25390
25391 @item
25392 Create a synthetic signal and show it with showwaves, forcing a
25393 frame rate of 30 frames per second:
25394 @example
25395 aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
25396 @end example
25397 @end itemize
25398
25399 @section showwavespic
25400
25401 Convert input audio to a single video frame, representing the samples waves.
25402
25403 The filter accepts the following options:
25404
25405 @table @option
25406 @item size, s
25407 Specify the video size for the output. For the syntax of this option, check the
25408 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25409 Default value is @code{600x240}.
25410
25411 @item split_channels
25412 Set if channels should be drawn separately or overlap. Default value is 0.
25413
25414 @item colors
25415 Set colors separated by '|' which are going to be used for drawing of each channel.
25416
25417 @item scale
25418 Set amplitude scale.
25419
25420 Available values are:
25421 @table @samp
25422 @item lin
25423 Linear.
25424
25425 @item log
25426 Logarithmic.
25427
25428 @item sqrt
25429 Square root.
25430
25431 @item cbrt
25432 Cubic root.
25433 @end table
25434
25435 Default is linear.
25436
25437 @item draw
25438 Set the draw mode.
25439
25440 Available values are:
25441 @table @samp
25442 @item scale
25443 Scale pixel values for each drawn sample.
25444
25445 @item full
25446 Draw every sample directly.
25447 @end table
25448
25449 Default value is @code{scale}.
25450 @end table
25451
25452 @subsection Examples
25453
25454 @itemize
25455 @item
25456 Extract a channel split representation of the wave form of a whole audio track
25457 in a 1024x800 picture using @command{ffmpeg}:
25458 @example
25459 ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
25460 @end example
25461 @end itemize
25462
25463 @section sidedata, asidedata
25464
25465 Delete frame side data, or select frames based on it.
25466
25467 This filter accepts the following options:
25468
25469 @table @option
25470 @item mode
25471 Set mode of operation of the filter.
25472
25473 Can be one of the following:
25474
25475 @table @samp
25476 @item select
25477 Select every frame with side data of @code{type}.
25478
25479 @item delete
25480 Delete side data of @code{type}. If @code{type} is not set, delete all side
25481 data in the frame.
25482
25483 @end table
25484
25485 @item type
25486 Set side data type used with all modes. Must be set for @code{select} mode. For
25487 the list of frame side data types, refer to the @code{AVFrameSideDataType} enum
25488 in @file{libavutil/frame.h}. For example, to choose
25489 @code{AV_FRAME_DATA_PANSCAN} side data, you must specify @code{PANSCAN}.
25490
25491 @end table
25492
25493 @section spectrumsynth
25494
25495 Synthesize audio from 2 input video spectrums, first input stream represents
25496 magnitude across time and second represents phase across time.
25497 The filter will transform from frequency domain as displayed in videos back
25498 to time domain as presented in audio output.
25499
25500 This filter is primarily created for reversing processed @ref{showspectrum}
25501 filter outputs, but can synthesize sound from other spectrograms too.
25502 But in such case results are going to be poor if the phase data is not
25503 available, because in such cases phase data need to be recreated, usually
25504 it's just recreated from random noise.
25505 For best results use gray only output (@code{channel} color mode in
25506 @ref{showspectrum} filter) and @code{log} scale for magnitude video and
25507 @code{lin} scale for phase video. To produce phase, for 2nd video, use
25508 @code{data} option. Inputs videos should generally use @code{fullframe}
25509 slide mode as that saves resources needed for decoding video.
25510
25511 The filter accepts the following options:
25512
25513 @table @option
25514 @item sample_rate
25515 Specify sample rate of output audio, the sample rate of audio from which
25516 spectrum was generated may differ.
25517
25518 @item channels
25519 Set number of channels represented in input video spectrums.
25520
25521 @item scale
25522 Set scale which was used when generating magnitude input spectrum.
25523 Can be @code{lin} or @code{log}. Default is @code{log}.
25524
25525 @item slide
25526 Set slide which was used when generating inputs spectrums.
25527 Can be @code{replace}, @code{scroll}, @code{fullframe} or @code{rscroll}.
25528 Default is @code{fullframe}.
25529
25530 @item win_func
25531 Set window function used for resynthesis.
25532
25533 @item overlap
25534 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
25535 which means optimal overlap for selected window function will be picked.
25536
25537 @item orientation
25538 Set orientation of input videos. Can be @code{vertical} or @code{horizontal}.
25539 Default is @code{vertical}.
25540 @end table
25541
25542 @subsection Examples
25543
25544 @itemize
25545 @item
25546 First create magnitude and phase videos from audio, assuming audio is stereo with 44100 sample rate,
25547 then resynthesize videos back to audio with spectrumsynth:
25548 @example
25549 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
25550 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
25551 ffmpeg -i magnitude.nut -i phase.nut -lavfi spectrumsynth=channels=2:sample_rate=44100:win_func=hann:overlap=0.875:slide=fullframe output.flac
25552 @end example
25553 @end itemize
25554
25555 @section split, asplit
25556
25557 Split input into several identical outputs.
25558
25559 @code{asplit} works with audio input, @code{split} with video.
25560
25561 The filter accepts a single parameter which specifies the number of outputs. If
25562 unspecified, it defaults to 2.
25563
25564 @subsection Examples
25565
25566 @itemize
25567 @item
25568 Create two separate outputs from the same input:
25569 @example
25570 [in] split [out0][out1]
25571 @end example
25572
25573 @item
25574 To create 3 or more outputs, you need to specify the number of
25575 outputs, like in:
25576 @example
25577 [in] asplit=3 [out0][out1][out2]
25578 @end example
25579
25580 @item
25581 Create two separate outputs from the same input, one cropped and
25582 one padded:
25583 @example
25584 [in] split [splitout1][splitout2];
25585 [splitout1] crop=100:100:0:0    [cropout];
25586 [splitout2] pad=200:200:100:100 [padout];
25587 @end example
25588
25589 @item
25590 Create 5 copies of the input audio with @command{ffmpeg}:
25591 @example
25592 ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
25593 @end example
25594 @end itemize
25595
25596 @section zmq, azmq
25597
25598 Receive commands sent through a libzmq client, and forward them to
25599 filters in the filtergraph.
25600
25601 @code{zmq} and @code{azmq} work as a pass-through filters. @code{zmq}
25602 must be inserted between two video filters, @code{azmq} between two
25603 audio filters. Both are capable to send messages to any filter type.
25604
25605 To enable these filters you need to install the libzmq library and
25606 headers and configure FFmpeg with @code{--enable-libzmq}.
25607
25608 For more information about libzmq see:
25609 @url{http://www.zeromq.org/}
25610
25611 The @code{zmq} and @code{azmq} filters work as a libzmq server, which
25612 receives messages sent through a network interface defined by the
25613 @option{bind_address} (or the abbreviation "@option{b}") option.
25614 Default value of this option is @file{tcp://localhost:5555}. You may
25615 want to alter this value to your needs, but do not forget to escape any
25616 ':' signs (see @ref{filtergraph escaping}).
25617
25618 The received message must be in the form:
25619 @example
25620 @var{TARGET} @var{COMMAND} [@var{ARG}]
25621 @end example
25622
25623 @var{TARGET} specifies the target of the command, usually the name of
25624 the filter class or a specific filter instance name. The default
25625 filter instance name uses the pattern @samp{Parsed_<filter_name>_<index>},
25626 but you can override this by using the @samp{filter_name@@id} syntax
25627 (see @ref{Filtergraph syntax}).
25628
25629 @var{COMMAND} specifies the name of the command for the target filter.
25630
25631 @var{ARG} is optional and specifies the optional argument list for the
25632 given @var{COMMAND}.
25633
25634 Upon reception, the message is processed and the corresponding command
25635 is injected into the filtergraph. Depending on the result, the filter
25636 will send a reply to the client, adopting the format:
25637 @example
25638 @var{ERROR_CODE} @var{ERROR_REASON}
25639 @var{MESSAGE}
25640 @end example
25641
25642 @var{MESSAGE} is optional.
25643
25644 @subsection Examples
25645
25646 Look at @file{tools/zmqsend} for an example of a zmq client which can
25647 be used to send commands processed by these filters.
25648
25649 Consider the following filtergraph generated by @command{ffplay}.
25650 In this example the last overlay filter has an instance name. All other
25651 filters will have default instance names.
25652
25653 @example
25654 ffplay -dumpgraph 1 -f lavfi "
25655 color=s=100x100:c=red  [l];
25656 color=s=100x100:c=blue [r];
25657 nullsrc=s=200x100, zmq [bg];
25658 [bg][l]   overlay     [bg+l];
25659 [bg+l][r] overlay@@my=x=100 "
25660 @end example
25661
25662 To change the color of the left side of the video, the following
25663 command can be used:
25664 @example
25665 echo Parsed_color_0 c yellow | tools/zmqsend
25666 @end example
25667
25668 To change the right side:
25669 @example
25670 echo Parsed_color_1 c pink | tools/zmqsend
25671 @end example
25672
25673 To change the position of the right side:
25674 @example
25675 echo overlay@@my x 150 | tools/zmqsend
25676 @end example
25677
25678
25679 @c man end MULTIMEDIA FILTERS
25680
25681 @chapter Multimedia Sources
25682 @c man begin MULTIMEDIA SOURCES
25683
25684 Below is a description of the currently available multimedia sources.
25685
25686 @section amovie
25687
25688 This is the same as @ref{movie} source, except it selects an audio
25689 stream by default.
25690
25691 @anchor{movie}
25692 @section movie
25693
25694 Read audio and/or video stream(s) from a movie container.
25695
25696 It accepts the following parameters:
25697
25698 @table @option
25699 @item filename
25700 The name of the resource to read (not necessarily a file; it can also be a
25701 device or a stream accessed through some protocol).
25702
25703 @item format_name, f
25704 Specifies the format assumed for the movie to read, and can be either
25705 the name of a container or an input device. If not specified, the
25706 format is guessed from @var{movie_name} or by probing.
25707
25708 @item seek_point, sp
25709 Specifies the seek point in seconds. The frames will be output
25710 starting from this seek point. The parameter is evaluated with
25711 @code{av_strtod}, so the numerical value may be suffixed by an IS
25712 postfix. The default value is "0".
25713
25714 @item streams, s
25715 Specifies the streams to read. Several streams can be specified,
25716 separated by "+". The source will then have as many outputs, in the
25717 same order. The syntax is explained in the @ref{Stream specifiers,,"Stream specifiers"
25718 section in the ffmpeg manual,ffmpeg}. Two special names, "dv" and "da" specify
25719 respectively the default (best suited) video and audio stream. Default
25720 is "dv", or "da" if the filter is called as "amovie".
25721
25722 @item stream_index, si
25723 Specifies the index of the video stream to read. If the value is -1,
25724 the most suitable video stream will be automatically selected. The default
25725 value is "-1". Deprecated. If the filter is called "amovie", it will select
25726 audio instead of video.
25727
25728 @item loop
25729 Specifies how many times to read the stream in sequence.
25730 If the value is 0, the stream will be looped infinitely.
25731 Default value is "1".
25732
25733 Note that when the movie is looped the source timestamps are not
25734 changed, so it will generate non monotonically increasing timestamps.
25735
25736 @item discontinuity
25737 Specifies the time difference between frames above which the point is
25738 considered a timestamp discontinuity which is removed by adjusting the later
25739 timestamps.
25740 @end table
25741
25742 It allows overlaying a second video on top of the main input of
25743 a filtergraph, as shown in this graph:
25744 @example
25745 input -----------> deltapts0 --> overlay --> output
25746                                     ^
25747                                     |
25748 movie --> scale--> deltapts1 -------+
25749 @end example
25750 @subsection Examples
25751
25752 @itemize
25753 @item
25754 Skip 3.2 seconds from the start of the AVI file in.avi, and overlay it
25755 on top of the input labelled "in":
25756 @example
25757 movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
25758 [in] setpts=PTS-STARTPTS [main];
25759 [main][over] overlay=16:16 [out]
25760 @end example
25761
25762 @item
25763 Read from a video4linux2 device, and overlay it on top of the input
25764 labelled "in":
25765 @example
25766 movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
25767 [in] setpts=PTS-STARTPTS [main];
25768 [main][over] overlay=16:16 [out]
25769 @end example
25770
25771 @item
25772 Read the first video stream and the audio stream with id 0x81 from
25773 dvd.vob; the video is connected to the pad named "video" and the audio is
25774 connected to the pad named "audio":
25775 @example
25776 movie=dvd.vob:s=v:0+#0x81 [video] [audio]
25777 @end example
25778 @end itemize
25779
25780 @subsection Commands
25781
25782 Both movie and amovie support the following commands:
25783 @table @option
25784 @item seek
25785 Perform seek using "av_seek_frame".
25786 The syntax is: seek @var{stream_index}|@var{timestamp}|@var{flags}
25787 @itemize
25788 @item
25789 @var{stream_index}: If stream_index is -1, a default
25790 stream is selected, and @var{timestamp} is automatically converted
25791 from AV_TIME_BASE units to the stream specific time_base.
25792 @item
25793 @var{timestamp}: Timestamp in AVStream.time_base units
25794 or, if no stream is specified, in AV_TIME_BASE units.
25795 @item
25796 @var{flags}: Flags which select direction and seeking mode.
25797 @end itemize
25798
25799 @item get_duration
25800 Get movie duration in AV_TIME_BASE units.
25801
25802 @end table
25803
25804 @c man end MULTIMEDIA SOURCES