]> git.sesse.net Git - ffmpeg/blob - doc/filters.texi
avformat/apm: read header correctly
[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 512. 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 chromanr
7187 Reduce chrominance noise.
7188
7189 The filter accepts the following options:
7190
7191 @table @option
7192 @item thres
7193 Set threshold for averaging chrominance values.
7194 Sum of absolute difference of U and V pixel components or current
7195 pixel and neighbour pixels lower than this threshold will be used in
7196 averaging. Luma component is left unchanged and is copied to output.
7197 Default value is 30. Allowed range is from 1 to 200.
7198
7199 @item sizew
7200 Set horizontal radius of rectangle used for averaging.
7201 Allowed range is from 1 to 100. Default value is 5.
7202
7203 @item sizeh
7204 Set vertical radius of rectangle used for averaging.
7205 Allowed range is from 1 to 100. Default value is 5.
7206
7207 @item stepw
7208 Set horizontal step when averaging. Default value is 1.
7209 Allowed range is from 1 to 50.
7210 Mostly useful to speed-up filtering.
7211
7212 @item steph
7213 Set vertical step when averaging. Default value is 1.
7214 Allowed range is from 1 to 50.
7215 Mostly useful to speed-up filtering.
7216 @end table
7217
7218 @subsection Commands
7219 This filter supports same @ref{commands} as options.
7220 The command accepts the same syntax of the corresponding option.
7221
7222 @section chromashift
7223 Shift chroma pixels horizontally and/or vertically.
7224
7225 The filter accepts the following options:
7226 @table @option
7227 @item cbh
7228 Set amount to shift chroma-blue horizontally.
7229 @item cbv
7230 Set amount to shift chroma-blue vertically.
7231 @item crh
7232 Set amount to shift chroma-red horizontally.
7233 @item crv
7234 Set amount to shift chroma-red vertically.
7235 @item edge
7236 Set edge mode, can be @var{smear}, default, or @var{warp}.
7237 @end table
7238
7239 @subsection Commands
7240
7241 This filter supports the all above options as @ref{commands}.
7242
7243 @section ciescope
7244
7245 Display CIE color diagram with pixels overlaid onto it.
7246
7247 The filter accepts the following options:
7248
7249 @table @option
7250 @item system
7251 Set color system.
7252
7253 @table @samp
7254 @item ntsc, 470m
7255 @item ebu, 470bg
7256 @item smpte
7257 @item 240m
7258 @item apple
7259 @item widergb
7260 @item cie1931
7261 @item rec709, hdtv
7262 @item uhdtv, rec2020
7263 @item dcip3
7264 @end table
7265
7266 @item cie
7267 Set CIE system.
7268
7269 @table @samp
7270 @item xyy
7271 @item ucs
7272 @item luv
7273 @end table
7274
7275 @item gamuts
7276 Set what gamuts to draw.
7277
7278 See @code{system} option for available values.
7279
7280 @item size, s
7281 Set ciescope size, by default set to 512.
7282
7283 @item intensity, i
7284 Set intensity used to map input pixel values to CIE diagram.
7285
7286 @item contrast
7287 Set contrast used to draw tongue colors that are out of active color system gamut.
7288
7289 @item corrgamma
7290 Correct gamma displayed on scope, by default enabled.
7291
7292 @item showwhite
7293 Show white point on CIE diagram, by default disabled.
7294
7295 @item gamma
7296 Set input gamma. Used only with XYZ input color space.
7297 @end table
7298
7299 @section codecview
7300
7301 Visualize information exported by some codecs.
7302
7303 Some codecs can export information through frames using side-data or other
7304 means. For example, some MPEG based codecs export motion vectors through the
7305 @var{export_mvs} flag in the codec @option{flags2} option.
7306
7307 The filter accepts the following option:
7308
7309 @table @option
7310 @item mv
7311 Set motion vectors to visualize.
7312
7313 Available flags for @var{mv} are:
7314
7315 @table @samp
7316 @item pf
7317 forward predicted MVs of P-frames
7318 @item bf
7319 forward predicted MVs of B-frames
7320 @item bb
7321 backward predicted MVs of B-frames
7322 @end table
7323
7324 @item qp
7325 Display quantization parameters using the chroma planes.
7326
7327 @item mv_type, mvt
7328 Set motion vectors type to visualize. Includes MVs from all frames unless specified by @var{frame_type} option.
7329
7330 Available flags for @var{mv_type} are:
7331
7332 @table @samp
7333 @item fp
7334 forward predicted MVs
7335 @item bp
7336 backward predicted MVs
7337 @end table
7338
7339 @item frame_type, ft
7340 Set frame type to visualize motion vectors of.
7341
7342 Available flags for @var{frame_type} are:
7343
7344 @table @samp
7345 @item if
7346 intra-coded frames (I-frames)
7347 @item pf
7348 predicted frames (P-frames)
7349 @item bf
7350 bi-directionally predicted frames (B-frames)
7351 @end table
7352 @end table
7353
7354 @subsection Examples
7355
7356 @itemize
7357 @item
7358 Visualize forward predicted MVs of all frames using @command{ffplay}:
7359 @example
7360 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp
7361 @end example
7362
7363 @item
7364 Visualize multi-directionals MVs of P and B-Frames using @command{ffplay}:
7365 @example
7366 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
7367 @end example
7368 @end itemize
7369
7370 @section colorbalance
7371 Modify intensity of primary colors (red, green and blue) of input frames.
7372
7373 The filter allows an input frame to be adjusted in the shadows, midtones or highlights
7374 regions for the red-cyan, green-magenta or blue-yellow balance.
7375
7376 A positive adjustment value shifts the balance towards the primary color, a negative
7377 value towards the complementary color.
7378
7379 The filter accepts the following options:
7380
7381 @table @option
7382 @item rs
7383 @item gs
7384 @item bs
7385 Adjust red, green and blue shadows (darkest pixels).
7386
7387 @item rm
7388 @item gm
7389 @item bm
7390 Adjust red, green and blue midtones (medium pixels).
7391
7392 @item rh
7393 @item gh
7394 @item bh
7395 Adjust red, green and blue highlights (brightest pixels).
7396
7397 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
7398
7399 @item pl
7400 Preserve lightness when changing color balance. Default is disabled.
7401 @end table
7402
7403 @subsection Examples
7404
7405 @itemize
7406 @item
7407 Add red color cast to shadows:
7408 @example
7409 colorbalance=rs=.3
7410 @end example
7411 @end itemize
7412
7413 @subsection Commands
7414
7415 This filter supports the all above options as @ref{commands}.
7416
7417 @section colorchannelmixer
7418
7419 Adjust video input frames by re-mixing color channels.
7420
7421 This filter modifies a color channel by adding the values associated to
7422 the other channels of the same pixels. For example if the value to
7423 modify is red, the output value will be:
7424 @example
7425 @var{red}=@var{red}*@var{rr} + @var{blue}*@var{rb} + @var{green}*@var{rg} + @var{alpha}*@var{ra}
7426 @end example
7427
7428 The filter accepts the following options:
7429
7430 @table @option
7431 @item rr
7432 @item rg
7433 @item rb
7434 @item ra
7435 Adjust contribution of input red, green, blue and alpha channels for output red channel.
7436 Default is @code{1} for @var{rr}, and @code{0} for @var{rg}, @var{rb} and @var{ra}.
7437
7438 @item gr
7439 @item gg
7440 @item gb
7441 @item ga
7442 Adjust contribution of input red, green, blue and alpha channels for output green channel.
7443 Default is @code{1} for @var{gg}, and @code{0} for @var{gr}, @var{gb} and @var{ga}.
7444
7445 @item br
7446 @item bg
7447 @item bb
7448 @item ba
7449 Adjust contribution of input red, green, blue and alpha channels for output blue channel.
7450 Default is @code{1} for @var{bb}, and @code{0} for @var{br}, @var{bg} and @var{ba}.
7451
7452 @item ar
7453 @item ag
7454 @item ab
7455 @item aa
7456 Adjust contribution of input red, green, blue and alpha channels for output alpha channel.
7457 Default is @code{1} for @var{aa}, and @code{0} for @var{ar}, @var{ag} and @var{ab}.
7458
7459 Allowed ranges for options are @code{[-2.0, 2.0]}.
7460 @end table
7461
7462 @subsection Examples
7463
7464 @itemize
7465 @item
7466 Convert source to grayscale:
7467 @example
7468 colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
7469 @end example
7470 @item
7471 Simulate sepia tones:
7472 @example
7473 colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
7474 @end example
7475 @end itemize
7476
7477 @subsection Commands
7478
7479 This filter supports the all above options as @ref{commands}.
7480
7481 @section colorkey
7482 RGB colorspace color keying.
7483
7484 The filter accepts the following options:
7485
7486 @table @option
7487 @item color
7488 The color which will be replaced with transparency.
7489
7490 @item similarity
7491 Similarity percentage with the key color.
7492
7493 0.01 matches only the exact key color, while 1.0 matches everything.
7494
7495 @item blend
7496 Blend percentage.
7497
7498 0.0 makes pixels either fully transparent, or not transparent at all.
7499
7500 Higher values result in semi-transparent pixels, with a higher transparency
7501 the more similar the pixels color is to the key color.
7502 @end table
7503
7504 @subsection Examples
7505
7506 @itemize
7507 @item
7508 Make every green pixel in the input image transparent:
7509 @example
7510 ffmpeg -i input.png -vf colorkey=green out.png
7511 @end example
7512
7513 @item
7514 Overlay a greenscreen-video on top of a static background image.
7515 @example
7516 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
7517 @end example
7518 @end itemize
7519
7520 @subsection Commands
7521 This filter supports same @ref{commands} as options.
7522 The command accepts the same syntax of the corresponding option.
7523
7524 If the specified expression is not valid, it is kept at its current
7525 value.
7526
7527 @section colorhold
7528 Remove all color information for all RGB colors except for certain one.
7529
7530 The filter accepts the following options:
7531
7532 @table @option
7533 @item color
7534 The color which will not be replaced with neutral gray.
7535
7536 @item similarity
7537 Similarity percentage with the above color.
7538 0.01 matches only the exact key color, while 1.0 matches everything.
7539
7540 @item blend
7541 Blend percentage. 0.0 makes pixels fully gray.
7542 Higher values result in more preserved color.
7543 @end table
7544
7545 @subsection Commands
7546 This filter supports same @ref{commands} as options.
7547 The command accepts the same syntax of the corresponding option.
7548
7549 If the specified expression is not valid, it is kept at its current
7550 value.
7551
7552 @section colorlevels
7553
7554 Adjust video input frames using levels.
7555
7556 The filter accepts the following options:
7557
7558 @table @option
7559 @item rimin
7560 @item gimin
7561 @item bimin
7562 @item aimin
7563 Adjust red, green, blue and alpha input black point.
7564 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
7565
7566 @item rimax
7567 @item gimax
7568 @item bimax
7569 @item aimax
7570 Adjust red, green, blue and alpha input white point.
7571 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{1}.
7572
7573 Input levels are used to lighten highlights (bright tones), darken shadows
7574 (dark tones), change the balance of bright and dark tones.
7575
7576 @item romin
7577 @item gomin
7578 @item bomin
7579 @item aomin
7580 Adjust red, green, blue and alpha output black point.
7581 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{0}.
7582
7583 @item romax
7584 @item gomax
7585 @item bomax
7586 @item aomax
7587 Adjust red, green, blue and alpha output white point.
7588 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{1}.
7589
7590 Output levels allows manual selection of a constrained output level range.
7591 @end table
7592
7593 @subsection Examples
7594
7595 @itemize
7596 @item
7597 Make video output darker:
7598 @example
7599 colorlevels=rimin=0.058:gimin=0.058:bimin=0.058
7600 @end example
7601
7602 @item
7603 Increase contrast:
7604 @example
7605 colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96
7606 @end example
7607
7608 @item
7609 Make video output lighter:
7610 @example
7611 colorlevels=rimax=0.902:gimax=0.902:bimax=0.902
7612 @end example
7613
7614 @item
7615 Increase brightness:
7616 @example
7617 colorlevels=romin=0.5:gomin=0.5:bomin=0.5
7618 @end example
7619 @end itemize
7620
7621 @subsection Commands
7622
7623 This filter supports the all above options as @ref{commands}.
7624
7625 @section colormatrix
7626
7627 Convert color matrix.
7628
7629 The filter accepts the following options:
7630
7631 @table @option
7632 @item src
7633 @item dst
7634 Specify the source and destination color matrix. Both values must be
7635 specified.
7636
7637 The accepted values are:
7638 @table @samp
7639 @item bt709
7640 BT.709
7641
7642 @item fcc
7643 FCC
7644
7645 @item bt601
7646 BT.601
7647
7648 @item bt470
7649 BT.470
7650
7651 @item bt470bg
7652 BT.470BG
7653
7654 @item smpte170m
7655 SMPTE-170M
7656
7657 @item smpte240m
7658 SMPTE-240M
7659
7660 @item bt2020
7661 BT.2020
7662 @end table
7663 @end table
7664
7665 For example to convert from BT.601 to SMPTE-240M, use the command:
7666 @example
7667 colormatrix=bt601:smpte240m
7668 @end example
7669
7670 @section colorspace
7671
7672 Convert colorspace, transfer characteristics or color primaries.
7673 Input video needs to have an even size.
7674
7675 The filter accepts the following options:
7676
7677 @table @option
7678 @anchor{all}
7679 @item all
7680 Specify all color properties at once.
7681
7682 The accepted values are:
7683 @table @samp
7684 @item bt470m
7685 BT.470M
7686
7687 @item bt470bg
7688 BT.470BG
7689
7690 @item bt601-6-525
7691 BT.601-6 525
7692
7693 @item bt601-6-625
7694 BT.601-6 625
7695
7696 @item bt709
7697 BT.709
7698
7699 @item smpte170m
7700 SMPTE-170M
7701
7702 @item smpte240m
7703 SMPTE-240M
7704
7705 @item bt2020
7706 BT.2020
7707
7708 @end table
7709
7710 @anchor{space}
7711 @item space
7712 Specify output colorspace.
7713
7714 The accepted values are:
7715 @table @samp
7716 @item bt709
7717 BT.709
7718
7719 @item fcc
7720 FCC
7721
7722 @item bt470bg
7723 BT.470BG or BT.601-6 625
7724
7725 @item smpte170m
7726 SMPTE-170M or BT.601-6 525
7727
7728 @item smpte240m
7729 SMPTE-240M
7730
7731 @item ycgco
7732 YCgCo
7733
7734 @item bt2020ncl
7735 BT.2020 with non-constant luminance
7736
7737 @end table
7738
7739 @anchor{trc}
7740 @item trc
7741 Specify output transfer characteristics.
7742
7743 The accepted values are:
7744 @table @samp
7745 @item bt709
7746 BT.709
7747
7748 @item bt470m
7749 BT.470M
7750
7751 @item bt470bg
7752 BT.470BG
7753
7754 @item gamma22
7755 Constant gamma of 2.2
7756
7757 @item gamma28
7758 Constant gamma of 2.8
7759
7760 @item smpte170m
7761 SMPTE-170M, BT.601-6 625 or BT.601-6 525
7762
7763 @item smpte240m
7764 SMPTE-240M
7765
7766 @item srgb
7767 SRGB
7768
7769 @item iec61966-2-1
7770 iec61966-2-1
7771
7772 @item iec61966-2-4
7773 iec61966-2-4
7774
7775 @item xvycc
7776 xvycc
7777
7778 @item bt2020-10
7779 BT.2020 for 10-bits content
7780
7781 @item bt2020-12
7782 BT.2020 for 12-bits content
7783
7784 @end table
7785
7786 @anchor{primaries}
7787 @item primaries
7788 Specify output color primaries.
7789
7790 The accepted values are:
7791 @table @samp
7792 @item bt709
7793 BT.709
7794
7795 @item bt470m
7796 BT.470M
7797
7798 @item bt470bg
7799 BT.470BG or BT.601-6 625
7800
7801 @item smpte170m
7802 SMPTE-170M or BT.601-6 525
7803
7804 @item smpte240m
7805 SMPTE-240M
7806
7807 @item film
7808 film
7809
7810 @item smpte431
7811 SMPTE-431
7812
7813 @item smpte432
7814 SMPTE-432
7815
7816 @item bt2020
7817 BT.2020
7818
7819 @item jedec-p22
7820 JEDEC P22 phosphors
7821
7822 @end table
7823
7824 @anchor{range}
7825 @item range
7826 Specify output color range.
7827
7828 The accepted values are:
7829 @table @samp
7830 @item tv
7831 TV (restricted) range
7832
7833 @item mpeg
7834 MPEG (restricted) range
7835
7836 @item pc
7837 PC (full) range
7838
7839 @item jpeg
7840 JPEG (full) range
7841
7842 @end table
7843
7844 @item format
7845 Specify output color format.
7846
7847 The accepted values are:
7848 @table @samp
7849 @item yuv420p
7850 YUV 4:2:0 planar 8-bits
7851
7852 @item yuv420p10
7853 YUV 4:2:0 planar 10-bits
7854
7855 @item yuv420p12
7856 YUV 4:2:0 planar 12-bits
7857
7858 @item yuv422p
7859 YUV 4:2:2 planar 8-bits
7860
7861 @item yuv422p10
7862 YUV 4:2:2 planar 10-bits
7863
7864 @item yuv422p12
7865 YUV 4:2:2 planar 12-bits
7866
7867 @item yuv444p
7868 YUV 4:4:4 planar 8-bits
7869
7870 @item yuv444p10
7871 YUV 4:4:4 planar 10-bits
7872
7873 @item yuv444p12
7874 YUV 4:4:4 planar 12-bits
7875
7876 @end table
7877
7878 @item fast
7879 Do a fast conversion, which skips gamma/primary correction. This will take
7880 significantly less CPU, but will be mathematically incorrect. To get output
7881 compatible with that produced by the colormatrix filter, use fast=1.
7882
7883 @item dither
7884 Specify dithering mode.
7885
7886 The accepted values are:
7887 @table @samp
7888 @item none
7889 No dithering
7890
7891 @item fsb
7892 Floyd-Steinberg dithering
7893 @end table
7894
7895 @item wpadapt
7896 Whitepoint adaptation mode.
7897
7898 The accepted values are:
7899 @table @samp
7900 @item bradford
7901 Bradford whitepoint adaptation
7902
7903 @item vonkries
7904 von Kries whitepoint adaptation
7905
7906 @item identity
7907 identity whitepoint adaptation (i.e. no whitepoint adaptation)
7908 @end table
7909
7910 @item iall
7911 Override all input properties at once. Same accepted values as @ref{all}.
7912
7913 @item ispace
7914 Override input colorspace. Same accepted values as @ref{space}.
7915
7916 @item iprimaries
7917 Override input color primaries. Same accepted values as @ref{primaries}.
7918
7919 @item itrc
7920 Override input transfer characteristics. Same accepted values as @ref{trc}.
7921
7922 @item irange
7923 Override input color range. Same accepted values as @ref{range}.
7924
7925 @end table
7926
7927 The filter converts the transfer characteristics, color space and color
7928 primaries to the specified user values. The output value, if not specified,
7929 is set to a default value based on the "all" property. If that property is
7930 also not specified, the filter will log an error. The output color range and
7931 format default to the same value as the input color range and format. The
7932 input transfer characteristics, color space, color primaries and color range
7933 should be set on the input data. If any of these are missing, the filter will
7934 log an error and no conversion will take place.
7935
7936 For example to convert the input to SMPTE-240M, use the command:
7937 @example
7938 colorspace=smpte240m
7939 @end example
7940
7941 @section convolution
7942
7943 Apply convolution of 3x3, 5x5, 7x7 or horizontal/vertical up to 49 elements.
7944
7945 The filter accepts the following options:
7946
7947 @table @option
7948 @item 0m
7949 @item 1m
7950 @item 2m
7951 @item 3m
7952 Set matrix for each plane.
7953 Matrix is sequence of 9, 25 or 49 signed integers in @var{square} mode,
7954 and from 1 to 49 odd number of signed integers in @var{row} mode.
7955
7956 @item 0rdiv
7957 @item 1rdiv
7958 @item 2rdiv
7959 @item 3rdiv
7960 Set multiplier for calculated value for each plane.
7961 If unset or 0, it will be sum of all matrix elements.
7962
7963 @item 0bias
7964 @item 1bias
7965 @item 2bias
7966 @item 3bias
7967 Set bias for each plane. This value is added to the result of the multiplication.
7968 Useful for making the overall image brighter or darker. Default is 0.0.
7969
7970 @item 0mode
7971 @item 1mode
7972 @item 2mode
7973 @item 3mode
7974 Set matrix mode for each plane. Can be @var{square}, @var{row} or @var{column}.
7975 Default is @var{square}.
7976 @end table
7977
7978 @subsection Examples
7979
7980 @itemize
7981 @item
7982 Apply sharpen:
7983 @example
7984 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"
7985 @end example
7986
7987 @item
7988 Apply blur:
7989 @example
7990 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"
7991 @end example
7992
7993 @item
7994 Apply edge enhance:
7995 @example
7996 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"
7997 @end example
7998
7999 @item
8000 Apply edge detect:
8001 @example
8002 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"
8003 @end example
8004
8005 @item
8006 Apply laplacian edge detector which includes diagonals:
8007 @example
8008 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"
8009 @end example
8010
8011 @item
8012 Apply emboss:
8013 @example
8014 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"
8015 @end example
8016 @end itemize
8017
8018 @section convolve
8019
8020 Apply 2D convolution of video stream in frequency domain using second stream
8021 as impulse.
8022
8023 The filter accepts the following options:
8024
8025 @table @option
8026 @item planes
8027 Set which planes to process.
8028
8029 @item impulse
8030 Set which impulse video frames will be processed, can be @var{first}
8031 or @var{all}. Default is @var{all}.
8032 @end table
8033
8034 The @code{convolve} filter also supports the @ref{framesync} options.
8035
8036 @section copy
8037
8038 Copy the input video source unchanged to the output. This is mainly useful for
8039 testing purposes.
8040
8041 @anchor{coreimage}
8042 @section coreimage
8043 Video filtering on GPU using Apple's CoreImage API on OSX.
8044
8045 Hardware acceleration is based on an OpenGL context. Usually, this means it is
8046 processed by video hardware. However, software-based OpenGL implementations
8047 exist which means there is no guarantee for hardware processing. It depends on
8048 the respective OSX.
8049
8050 There are many filters and image generators provided by Apple that come with a
8051 large variety of options. The filter has to be referenced by its name along
8052 with its options.
8053
8054 The coreimage filter accepts the following options:
8055 @table @option
8056 @item list_filters
8057 List all available filters and generators along with all their respective
8058 options as well as possible minimum and maximum values along with the default
8059 values.
8060 @example
8061 list_filters=true
8062 @end example
8063
8064 @item filter
8065 Specify all filters by their respective name and options.
8066 Use @var{list_filters} to determine all valid filter names and options.
8067 Numerical options are specified by a float value and are automatically clamped
8068 to their respective value range.  Vector and color options have to be specified
8069 by a list of space separated float values. Character escaping has to be done.
8070 A special option name @code{default} is available to use default options for a
8071 filter.
8072
8073 It is required to specify either @code{default} or at least one of the filter options.
8074 All omitted options are used with their default values.
8075 The syntax of the filter string is as follows:
8076 @example
8077 filter=<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...][#<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...]][#...]
8078 @end example
8079
8080 @item output_rect
8081 Specify a rectangle where the output of the filter chain is copied into the
8082 input image. It is given by a list of space separated float values:
8083 @example
8084 output_rect=x\ y\ width\ height
8085 @end example
8086 If not given, the output rectangle equals the dimensions of the input image.
8087 The output rectangle is automatically cropped at the borders of the input
8088 image. Negative values are valid for each component.
8089 @example
8090 output_rect=25\ 25\ 100\ 100
8091 @end example
8092 @end table
8093
8094 Several filters can be chained for successive processing without GPU-HOST
8095 transfers allowing for fast processing of complex filter chains.
8096 Currently, only filters with zero (generators) or exactly one (filters) input
8097 image and one output image are supported. Also, transition filters are not yet
8098 usable as intended.
8099
8100 Some filters generate output images with additional padding depending on the
8101 respective filter kernel. The padding is automatically removed to ensure the
8102 filter output has the same size as the input image.
8103
8104 For image generators, the size of the output image is determined by the
8105 previous output image of the filter chain or the input image of the whole
8106 filterchain, respectively. The generators do not use the pixel information of
8107 this image to generate their output. However, the generated output is
8108 blended onto this image, resulting in partial or complete coverage of the
8109 output image.
8110
8111 The @ref{coreimagesrc} video source can be used for generating input images
8112 which are directly fed into the filter chain. By using it, providing input
8113 images by another video source or an input video is not required.
8114
8115 @subsection Examples
8116
8117 @itemize
8118
8119 @item
8120 List all filters available:
8121 @example
8122 coreimage=list_filters=true
8123 @end example
8124
8125 @item
8126 Use the CIBoxBlur filter with default options to blur an image:
8127 @example
8128 coreimage=filter=CIBoxBlur@@default
8129 @end example
8130
8131 @item
8132 Use a filter chain with CISepiaTone at default values and CIVignetteEffect with
8133 its center at 100x100 and a radius of 50 pixels:
8134 @example
8135 coreimage=filter=CIBoxBlur@@default#CIVignetteEffect@@inputCenter=100\ 100@@inputRadius=50
8136 @end example
8137
8138 @item
8139 Use nullsrc and CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
8140 given as complete and escaped command-line for Apple's standard bash shell:
8141 @example
8142 ffmpeg -f lavfi -i nullsrc=s=100x100,coreimage=filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
8143 @end example
8144 @end itemize
8145
8146 @section cover_rect
8147
8148 Cover a rectangular object
8149
8150 It accepts the following options:
8151
8152 @table @option
8153 @item cover
8154 Filepath of the optional cover image, needs to be in yuv420.
8155
8156 @item mode
8157 Set covering mode.
8158
8159 It accepts the following values:
8160 @table @samp
8161 @item cover
8162 cover it by the supplied image
8163 @item blur
8164 cover it by interpolating the surrounding pixels
8165 @end table
8166
8167 Default value is @var{blur}.
8168 @end table
8169
8170 @subsection Examples
8171
8172 @itemize
8173 @item
8174 Cover a rectangular object by the supplied image of a given video using @command{ffmpeg}:
8175 @example
8176 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
8177 @end example
8178 @end itemize
8179
8180 @section crop
8181
8182 Crop the input video to given dimensions.
8183
8184 It accepts the following parameters:
8185
8186 @table @option
8187 @item w, out_w
8188 The width of the output video. It defaults to @code{iw}.
8189 This expression is evaluated only once during the filter
8190 configuration, or when the @samp{w} or @samp{out_w} command is sent.
8191
8192 @item h, out_h
8193 The height of the output video. It defaults to @code{ih}.
8194 This expression is evaluated only once during the filter
8195 configuration, or when the @samp{h} or @samp{out_h} command is sent.
8196
8197 @item x
8198 The horizontal position, in the input video, of the left edge of the output
8199 video. It defaults to @code{(in_w-out_w)/2}.
8200 This expression is evaluated per-frame.
8201
8202 @item y
8203 The vertical position, in the input video, of the top edge of the output video.
8204 It defaults to @code{(in_h-out_h)/2}.
8205 This expression is evaluated per-frame.
8206
8207 @item keep_aspect
8208 If set to 1 will force the output display aspect ratio
8209 to be the same of the input, by changing the output sample aspect
8210 ratio. It defaults to 0.
8211
8212 @item exact
8213 Enable exact cropping. If enabled, subsampled videos will be cropped at exact
8214 width/height/x/y as specified and will not be rounded to nearest smaller value.
8215 It defaults to 0.
8216 @end table
8217
8218 The @var{out_w}, @var{out_h}, @var{x}, @var{y} parameters are
8219 expressions containing the following constants:
8220
8221 @table @option
8222 @item x
8223 @item y
8224 The computed values for @var{x} and @var{y}. They are evaluated for
8225 each new frame.
8226
8227 @item in_w
8228 @item in_h
8229 The input width and height.
8230
8231 @item iw
8232 @item ih
8233 These are the same as @var{in_w} and @var{in_h}.
8234
8235 @item out_w
8236 @item out_h
8237 The output (cropped) width and height.
8238
8239 @item ow
8240 @item oh
8241 These are the same as @var{out_w} and @var{out_h}.
8242
8243 @item a
8244 same as @var{iw} / @var{ih}
8245
8246 @item sar
8247 input sample aspect ratio
8248
8249 @item dar
8250 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
8251
8252 @item hsub
8253 @item vsub
8254 horizontal and vertical chroma subsample values. For example for the
8255 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
8256
8257 @item n
8258 The number of the input frame, starting from 0.
8259
8260 @item pos
8261 the position in the file of the input frame, NAN if unknown
8262
8263 @item t
8264 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
8265
8266 @end table
8267
8268 The expression for @var{out_w} may depend on the value of @var{out_h},
8269 and the expression for @var{out_h} may depend on @var{out_w}, but they
8270 cannot depend on @var{x} and @var{y}, as @var{x} and @var{y} are
8271 evaluated after @var{out_w} and @var{out_h}.
8272
8273 The @var{x} and @var{y} parameters specify the expressions for the
8274 position of the top-left corner of the output (non-cropped) area. They
8275 are evaluated for each frame. If the evaluated value is not valid, it
8276 is approximated to the nearest valid value.
8277
8278 The expression for @var{x} may depend on @var{y}, and the expression
8279 for @var{y} may depend on @var{x}.
8280
8281 @subsection Examples
8282
8283 @itemize
8284 @item
8285 Crop area with size 100x100 at position (12,34).
8286 @example
8287 crop=100:100:12:34
8288 @end example
8289
8290 Using named options, the example above becomes:
8291 @example
8292 crop=w=100:h=100:x=12:y=34
8293 @end example
8294
8295 @item
8296 Crop the central input area with size 100x100:
8297 @example
8298 crop=100:100
8299 @end example
8300
8301 @item
8302 Crop the central input area with size 2/3 of the input video:
8303 @example
8304 crop=2/3*in_w:2/3*in_h
8305 @end example
8306
8307 @item
8308 Crop the input video central square:
8309 @example
8310 crop=out_w=in_h
8311 crop=in_h
8312 @end example
8313
8314 @item
8315 Delimit the rectangle with the top-left corner placed at position
8316 100:100 and the right-bottom corner corresponding to the right-bottom
8317 corner of the input image.
8318 @example
8319 crop=in_w-100:in_h-100:100:100
8320 @end example
8321
8322 @item
8323 Crop 10 pixels from the left and right borders, and 20 pixels from
8324 the top and bottom borders
8325 @example
8326 crop=in_w-2*10:in_h-2*20
8327 @end example
8328
8329 @item
8330 Keep only the bottom right quarter of the input image:
8331 @example
8332 crop=in_w/2:in_h/2:in_w/2:in_h/2
8333 @end example
8334
8335 @item
8336 Crop height for getting Greek harmony:
8337 @example
8338 crop=in_w:1/PHI*in_w
8339 @end example
8340
8341 @item
8342 Apply trembling effect:
8343 @example
8344 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)
8345 @end example
8346
8347 @item
8348 Apply erratic camera effect depending on timestamp:
8349 @example
8350 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)"
8351 @end example
8352
8353 @item
8354 Set x depending on the value of y:
8355 @example
8356 crop=in_w/2:in_h/2:y:10+10*sin(n/10)
8357 @end example
8358 @end itemize
8359
8360 @subsection Commands
8361
8362 This filter supports the following commands:
8363 @table @option
8364 @item w, out_w
8365 @item h, out_h
8366 @item x
8367 @item y
8368 Set width/height of the output video and the horizontal/vertical position
8369 in the input video.
8370 The command accepts the same syntax of the corresponding option.
8371
8372 If the specified expression is not valid, it is kept at its current
8373 value.
8374 @end table
8375
8376 @section cropdetect
8377
8378 Auto-detect the crop size.
8379
8380 It calculates the necessary cropping parameters and prints the
8381 recommended parameters via the logging system. The detected dimensions
8382 correspond to the non-black area of the input video.
8383
8384 It accepts the following parameters:
8385
8386 @table @option
8387
8388 @item limit
8389 Set higher black value threshold, which can be optionally specified
8390 from nothing (0) to everything (255 for 8-bit based formats). An intensity
8391 value greater to the set value is considered non-black. It defaults to 24.
8392 You can also specify a value between 0.0 and 1.0 which will be scaled depending
8393 on the bitdepth of the pixel format.
8394
8395 @item round
8396 The value which the width/height should be divisible by. It defaults to
8397 16. The offset is automatically adjusted to center the video. Use 2 to
8398 get only even dimensions (needed for 4:2:2 video). 16 is best when
8399 encoding to most video codecs.
8400
8401 @item reset_count, reset
8402 Set the counter that determines after how many frames cropdetect will
8403 reset the previously detected largest video area and start over to
8404 detect the current optimal crop area. Default value is 0.
8405
8406 This can be useful when channel logos distort the video area. 0
8407 indicates 'never reset', and returns the largest area encountered during
8408 playback.
8409 @end table
8410
8411 @anchor{cue}
8412 @section cue
8413
8414 Delay video filtering until a given wallclock timestamp. The filter first
8415 passes on @option{preroll} amount of frames, then it buffers at most
8416 @option{buffer} amount of frames and waits for the cue. After reaching the cue
8417 it forwards the buffered frames and also any subsequent frames coming in its
8418 input.
8419
8420 The filter can be used synchronize the output of multiple ffmpeg processes for
8421 realtime output devices like decklink. By putting the delay in the filtering
8422 chain and pre-buffering frames the process can pass on data to output almost
8423 immediately after the target wallclock timestamp is reached.
8424
8425 Perfect frame accuracy cannot be guaranteed, but the result is good enough for
8426 some use cases.
8427
8428 @table @option
8429
8430 @item cue
8431 The cue timestamp expressed in a UNIX timestamp in microseconds. Default is 0.
8432
8433 @item preroll
8434 The duration of content to pass on as preroll expressed in seconds. Default is 0.
8435
8436 @item buffer
8437 The maximum duration of content to buffer before waiting for the cue expressed
8438 in seconds. Default is 0.
8439
8440 @end table
8441
8442 @anchor{curves}
8443 @section curves
8444
8445 Apply color adjustments using curves.
8446
8447 This filter is similar to the Adobe Photoshop and GIMP curves tools. Each
8448 component (red, green and blue) has its values defined by @var{N} key points
8449 tied from each other using a smooth curve. The x-axis represents the pixel
8450 values from the input frame, and the y-axis the new pixel values to be set for
8451 the output frame.
8452
8453 By default, a component curve is defined by the two points @var{(0;0)} and
8454 @var{(1;1)}. This creates a straight line where each original pixel value is
8455 "adjusted" to its own value, which means no change to the image.
8456
8457 The filter allows you to redefine these two points and add some more. A new
8458 curve (using a natural cubic spline interpolation) will be define to pass
8459 smoothly through all these new coordinates. The new defined points needs to be
8460 strictly increasing over the x-axis, and their @var{x} and @var{y} values must
8461 be in the @var{[0;1]} interval.  If the computed curves happened to go outside
8462 the vector spaces, the values will be clipped accordingly.
8463
8464 The filter accepts the following options:
8465
8466 @table @option
8467 @item preset
8468 Select one of the available color presets. This option can be used in addition
8469 to the @option{r}, @option{g}, @option{b} parameters; in this case, the later
8470 options takes priority on the preset values.
8471 Available presets are:
8472 @table @samp
8473 @item none
8474 @item color_negative
8475 @item cross_process
8476 @item darker
8477 @item increase_contrast
8478 @item lighter
8479 @item linear_contrast
8480 @item medium_contrast
8481 @item negative
8482 @item strong_contrast
8483 @item vintage
8484 @end table
8485 Default is @code{none}.
8486 @item master, m
8487 Set the master key points. These points will define a second pass mapping. It
8488 is sometimes called a "luminance" or "value" mapping. It can be used with
8489 @option{r}, @option{g}, @option{b} or @option{all} since it acts like a
8490 post-processing LUT.
8491 @item red, r
8492 Set the key points for the red component.
8493 @item green, g
8494 Set the key points for the green component.
8495 @item blue, b
8496 Set the key points for the blue component.
8497 @item all
8498 Set the key points for all components (not including master).
8499 Can be used in addition to the other key points component
8500 options. In this case, the unset component(s) will fallback on this
8501 @option{all} setting.
8502 @item psfile
8503 Specify a Photoshop curves file (@code{.acv}) to import the settings from.
8504 @item plot
8505 Save Gnuplot script of the curves in specified file.
8506 @end table
8507
8508 To avoid some filtergraph syntax conflicts, each key points list need to be
8509 defined using the following syntax: @code{x0/y0 x1/y1 x2/y2 ...}.
8510
8511 @subsection Examples
8512
8513 @itemize
8514 @item
8515 Increase slightly the middle level of blue:
8516 @example
8517 curves=blue='0/0 0.5/0.58 1/1'
8518 @end example
8519
8520 @item
8521 Vintage effect:
8522 @example
8523 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'
8524 @end example
8525 Here we obtain the following coordinates for each components:
8526 @table @var
8527 @item red
8528 @code{(0;0.11) (0.42;0.51) (1;0.95)}
8529 @item green
8530 @code{(0;0) (0.50;0.48) (1;1)}
8531 @item blue
8532 @code{(0;0.22) (0.49;0.44) (1;0.80)}
8533 @end table
8534
8535 @item
8536 The previous example can also be achieved with the associated built-in preset:
8537 @example
8538 curves=preset=vintage
8539 @end example
8540
8541 @item
8542 Or simply:
8543 @example
8544 curves=vintage
8545 @end example
8546
8547 @item
8548 Use a Photoshop preset and redefine the points of the green component:
8549 @example
8550 curves=psfile='MyCurvesPresets/purple.acv':green='0/0 0.45/0.53 1/1'
8551 @end example
8552
8553 @item
8554 Check out the curves of the @code{cross_process} profile using @command{ffmpeg}
8555 and @command{gnuplot}:
8556 @example
8557 ffmpeg -f lavfi -i color -vf curves=cross_process:plot=/tmp/curves.plt -frames:v 1 -f null -
8558 gnuplot -p /tmp/curves.plt
8559 @end example
8560 @end itemize
8561
8562 @section datascope
8563
8564 Video data analysis filter.
8565
8566 This filter shows hexadecimal pixel values of part of video.
8567
8568 The filter accepts the following options:
8569
8570 @table @option
8571 @item size, s
8572 Set output video size.
8573
8574 @item x
8575 Set x offset from where to pick pixels.
8576
8577 @item y
8578 Set y offset from where to pick pixels.
8579
8580 @item mode
8581 Set scope mode, can be one of the following:
8582 @table @samp
8583 @item mono
8584 Draw hexadecimal pixel values with white color on black background.
8585
8586 @item color
8587 Draw hexadecimal pixel values with input video pixel color on black
8588 background.
8589
8590 @item color2
8591 Draw hexadecimal pixel values on color background picked from input video,
8592 the text color is picked in such way so its always visible.
8593 @end table
8594
8595 @item axis
8596 Draw rows and columns numbers on left and top of video.
8597
8598 @item opacity
8599 Set background opacity.
8600
8601 @item format
8602 Set display number format. Can be @code{hex}, or @code{dec}. Default is @code{hex}.
8603 @end table
8604
8605 @section dblur
8606 Apply Directional blur filter.
8607
8608 The filter accepts the following options:
8609
8610 @table @option
8611 @item angle
8612 Set angle of directional blur. Default is @code{45}.
8613
8614 @item radius
8615 Set radius of directional blur. Default is @code{5}.
8616
8617 @item planes
8618 Set which planes to filter. By default all planes are filtered.
8619 @end table
8620
8621 @subsection Commands
8622 This filter supports same @ref{commands} as options.
8623 The command accepts the same syntax of the corresponding option.
8624
8625 If the specified expression is not valid, it is kept at its current
8626 value.
8627
8628 @section dctdnoiz
8629
8630 Denoise frames using 2D DCT (frequency domain filtering).
8631
8632 This filter is not designed for real time.
8633
8634 The filter accepts the following options:
8635
8636 @table @option
8637 @item sigma, s
8638 Set the noise sigma constant.
8639
8640 This @var{sigma} defines a hard threshold of @code{3 * sigma}; every DCT
8641 coefficient (absolute value) below this threshold with be dropped.
8642
8643 If you need a more advanced filtering, see @option{expr}.
8644
8645 Default is @code{0}.
8646
8647 @item overlap
8648 Set number overlapping pixels for each block. Since the filter can be slow, you
8649 may want to reduce this value, at the cost of a less effective filter and the
8650 risk of various artefacts.
8651
8652 If the overlapping value doesn't permit processing the whole input width or
8653 height, a warning will be displayed and according borders won't be denoised.
8654
8655 Default value is @var{blocksize}-1, which is the best possible setting.
8656
8657 @item expr, e
8658 Set the coefficient factor expression.
8659
8660 For each coefficient of a DCT block, this expression will be evaluated as a
8661 multiplier value for the coefficient.
8662
8663 If this is option is set, the @option{sigma} option will be ignored.
8664
8665 The absolute value of the coefficient can be accessed through the @var{c}
8666 variable.
8667
8668 @item n
8669 Set the @var{blocksize} using the number of bits. @code{1<<@var{n}} defines the
8670 @var{blocksize}, which is the width and height of the processed blocks.
8671
8672 The default value is @var{3} (8x8) and can be raised to @var{4} for a
8673 @var{blocksize} of 16x16. Note that changing this setting has huge consequences
8674 on the speed processing. Also, a larger block size does not necessarily means a
8675 better de-noising.
8676 @end table
8677
8678 @subsection Examples
8679
8680 Apply a denoise with a @option{sigma} of @code{4.5}:
8681 @example
8682 dctdnoiz=4.5
8683 @end example
8684
8685 The same operation can be achieved using the expression system:
8686 @example
8687 dctdnoiz=e='gte(c, 4.5*3)'
8688 @end example
8689
8690 Violent denoise using a block size of @code{16x16}:
8691 @example
8692 dctdnoiz=15:n=4
8693 @end example
8694
8695 @section deband
8696
8697 Remove banding artifacts from input video.
8698 It works by replacing banded pixels with average value of referenced pixels.
8699
8700 The filter accepts the following options:
8701
8702 @table @option
8703 @item 1thr
8704 @item 2thr
8705 @item 3thr
8706 @item 4thr
8707 Set banding detection threshold for each plane. Default is 0.02.
8708 Valid range is 0.00003 to 0.5.
8709 If difference between current pixel and reference pixel is less than threshold,
8710 it will be considered as banded.
8711
8712 @item range, r
8713 Banding detection range in pixels. Default is 16. If positive, random number
8714 in range 0 to set value will be used. If negative, exact absolute value
8715 will be used.
8716 The range defines square of four pixels around current pixel.
8717
8718 @item direction, d
8719 Set direction in radians from which four pixel will be compared. If positive,
8720 random direction from 0 to set direction will be picked. If negative, exact of
8721 absolute value will be picked. For example direction 0, -PI or -2*PI radians
8722 will pick only pixels on same row and -PI/2 will pick only pixels on same
8723 column.
8724
8725 @item blur, b
8726 If enabled, current pixel is compared with average value of all four
8727 surrounding pixels. The default is enabled. If disabled current pixel is
8728 compared with all four surrounding pixels. The pixel is considered banded
8729 if only all four differences with surrounding pixels are less than threshold.
8730
8731 @item coupling, c
8732 If enabled, current pixel is changed if and only if all pixel components are banded,
8733 e.g. banding detection threshold is triggered for all color components.
8734 The default is disabled.
8735 @end table
8736
8737 @section deblock
8738
8739 Remove blocking artifacts from input video.
8740
8741 The filter accepts the following options:
8742
8743 @table @option
8744 @item filter
8745 Set filter type, can be @var{weak} or @var{strong}. Default is @var{strong}.
8746 This controls what kind of deblocking is applied.
8747
8748 @item block
8749 Set size of block, allowed range is from 4 to 512. Default is @var{8}.
8750
8751 @item alpha
8752 @item beta
8753 @item gamma
8754 @item delta
8755 Set blocking detection thresholds. Allowed range is 0 to 1.
8756 Defaults are: @var{0.098} for @var{alpha} and @var{0.05} for the rest.
8757 Using higher threshold gives more deblocking strength.
8758 Setting @var{alpha} controls threshold detection at exact edge of block.
8759 Remaining options controls threshold detection near the edge. Each one for
8760 below/above or left/right. Setting any of those to @var{0} disables
8761 deblocking.
8762
8763 @item planes
8764 Set planes to filter. Default is to filter all available planes.
8765 @end table
8766
8767 @subsection Examples
8768
8769 @itemize
8770 @item
8771 Deblock using weak filter and block size of 4 pixels.
8772 @example
8773 deblock=filter=weak:block=4
8774 @end example
8775
8776 @item
8777 Deblock using strong filter, block size of 4 pixels and custom thresholds for
8778 deblocking more edges.
8779 @example
8780 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05
8781 @end example
8782
8783 @item
8784 Similar as above, but filter only first plane.
8785 @example
8786 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=1
8787 @end example
8788
8789 @item
8790 Similar as above, but filter only second and third plane.
8791 @example
8792 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=6
8793 @end example
8794 @end itemize
8795
8796 @anchor{decimate}
8797 @section decimate
8798
8799 Drop duplicated frames at regular intervals.
8800
8801 The filter accepts the following options:
8802
8803 @table @option
8804 @item cycle
8805 Set the number of frames from which one will be dropped. Setting this to
8806 @var{N} means one frame in every batch of @var{N} frames will be dropped.
8807 Default is @code{5}.
8808
8809 @item dupthresh
8810 Set the threshold for duplicate detection. If the difference metric for a frame
8811 is less than or equal to this value, then it is declared as duplicate. Default
8812 is @code{1.1}
8813
8814 @item scthresh
8815 Set scene change threshold. Default is @code{15}.
8816
8817 @item blockx
8818 @item blocky
8819 Set the size of the x and y-axis blocks used during metric calculations.
8820 Larger blocks give better noise suppression, but also give worse detection of
8821 small movements. Must be a power of two. Default is @code{32}.
8822
8823 @item ppsrc
8824 Mark main input as a pre-processed input and activate clean source input
8825 stream. This allows the input to be pre-processed with various filters to help
8826 the metrics calculation while keeping the frame selection lossless. When set to
8827 @code{1}, the first stream is for the pre-processed input, and the second
8828 stream is the clean source from where the kept frames are chosen. Default is
8829 @code{0}.
8830
8831 @item chroma
8832 Set whether or not chroma is considered in the metric calculations. Default is
8833 @code{1}.
8834 @end table
8835
8836 @section deconvolve
8837
8838 Apply 2D deconvolution of video stream in frequency domain using second stream
8839 as impulse.
8840
8841 The filter accepts the following options:
8842
8843 @table @option
8844 @item planes
8845 Set which planes to process.
8846
8847 @item impulse
8848 Set which impulse video frames will be processed, can be @var{first}
8849 or @var{all}. Default is @var{all}.
8850
8851 @item noise
8852 Set noise when doing divisions. Default is @var{0.0000001}. Useful when width
8853 and height are not same and not power of 2 or if stream prior to convolving
8854 had noise.
8855 @end table
8856
8857 The @code{deconvolve} filter also supports the @ref{framesync} options.
8858
8859 @section dedot
8860
8861 Reduce cross-luminance (dot-crawl) and cross-color (rainbows) from video.
8862
8863 It accepts the following options:
8864
8865 @table @option
8866 @item m
8867 Set mode of operation. Can be combination of @var{dotcrawl} for cross-luminance reduction and/or
8868 @var{rainbows} for cross-color reduction.
8869
8870 @item lt
8871 Set spatial luma threshold. Lower values increases reduction of cross-luminance.
8872
8873 @item tl
8874 Set tolerance for temporal luma. Higher values increases reduction of cross-luminance.
8875
8876 @item tc
8877 Set tolerance for chroma temporal variation. Higher values increases reduction of cross-color.
8878
8879 @item ct
8880 Set temporal chroma threshold. Lower values increases reduction of cross-color.
8881 @end table
8882
8883 @section deflate
8884
8885 Apply deflate effect to the video.
8886
8887 This filter replaces the pixel by the local(3x3) average by taking into account
8888 only values lower than the pixel.
8889
8890 It accepts the following options:
8891
8892 @table @option
8893 @item threshold0
8894 @item threshold1
8895 @item threshold2
8896 @item threshold3
8897 Limit the maximum change for each plane, default is 65535.
8898 If 0, plane will remain unchanged.
8899 @end table
8900
8901 @subsection Commands
8902
8903 This filter supports the all above options as @ref{commands}.
8904
8905 @section deflicker
8906
8907 Remove temporal frame luminance variations.
8908
8909 It accepts the following options:
8910
8911 @table @option
8912 @item size, s
8913 Set moving-average filter size in frames. Default is 5. Allowed range is 2 - 129.
8914
8915 @item mode, m
8916 Set averaging mode to smooth temporal luminance variations.
8917
8918 Available values are:
8919 @table @samp
8920 @item am
8921 Arithmetic mean
8922
8923 @item gm
8924 Geometric mean
8925
8926 @item hm
8927 Harmonic mean
8928
8929 @item qm
8930 Quadratic mean
8931
8932 @item cm
8933 Cubic mean
8934
8935 @item pm
8936 Power mean
8937
8938 @item median
8939 Median
8940 @end table
8941
8942 @item bypass
8943 Do not actually modify frame. Useful when one only wants metadata.
8944 @end table
8945
8946 @section dejudder
8947
8948 Remove judder produced by partially interlaced telecined content.
8949
8950 Judder can be introduced, for instance, by @ref{pullup} filter. If the original
8951 source was partially telecined content then the output of @code{pullup,dejudder}
8952 will have a variable frame rate. May change the recorded frame rate of the
8953 container. Aside from that change, this filter will not affect constant frame
8954 rate video.
8955
8956 The option available in this filter is:
8957 @table @option
8958
8959 @item cycle
8960 Specify the length of the window over which the judder repeats.
8961
8962 Accepts any integer greater than 1. Useful values are:
8963 @table @samp
8964
8965 @item 4
8966 If the original was telecined from 24 to 30 fps (Film to NTSC).
8967
8968 @item 5
8969 If the original was telecined from 25 to 30 fps (PAL to NTSC).
8970
8971 @item 20
8972 If a mixture of the two.
8973 @end table
8974
8975 The default is @samp{4}.
8976 @end table
8977
8978 @section delogo
8979
8980 Suppress a TV station logo by a simple interpolation of the surrounding
8981 pixels. Just set a rectangle covering the logo and watch it disappear
8982 (and sometimes something even uglier appear - your mileage may vary).
8983
8984 It accepts the following parameters:
8985 @table @option
8986
8987 @item x
8988 @item y
8989 Specify the top left corner coordinates of the logo. They must be
8990 specified.
8991
8992 @item w
8993 @item h
8994 Specify the width and height of the logo to clear. They must be
8995 specified.
8996
8997 @item band, t
8998 Specify the thickness of the fuzzy edge of the rectangle (added to
8999 @var{w} and @var{h}). The default value is 1. This option is
9000 deprecated, setting higher values should no longer be necessary and
9001 is not recommended.
9002
9003 @item show
9004 When set to 1, a green rectangle is drawn on the screen to simplify
9005 finding the right @var{x}, @var{y}, @var{w}, and @var{h} parameters.
9006 The default value is 0.
9007
9008 The rectangle is drawn on the outermost pixels which will be (partly)
9009 replaced with interpolated values. The values of the next pixels
9010 immediately outside this rectangle in each direction will be used to
9011 compute the interpolated pixel values inside the rectangle.
9012
9013 @end table
9014
9015 @subsection Examples
9016
9017 @itemize
9018 @item
9019 Set a rectangle covering the area with top left corner coordinates 0,0
9020 and size 100x77, and a band of size 10:
9021 @example
9022 delogo=x=0:y=0:w=100:h=77:band=10
9023 @end example
9024
9025 @end itemize
9026
9027 @anchor{derain}
9028 @section derain
9029
9030 Remove the rain in the input image/video by applying the derain methods based on
9031 convolutional neural networks. Supported models:
9032
9033 @itemize
9034 @item
9035 Recurrent Squeeze-and-Excitation Context Aggregation Net (RESCAN).
9036 See @url{http://openaccess.thecvf.com/content_ECCV_2018/papers/Xia_Li_Recurrent_Squeeze-and-Excitation_Context_ECCV_2018_paper.pdf}.
9037 @end itemize
9038
9039 Training as well as model generation scripts are provided in
9040 the repository at @url{https://github.com/XueweiMeng/derain_filter.git}.
9041
9042 Native model files (.model) can be generated from TensorFlow model
9043 files (.pb) by using tools/python/convert.py
9044
9045 The filter accepts the following options:
9046
9047 @table @option
9048 @item filter_type
9049 Specify which filter to use. This option accepts the following values:
9050
9051 @table @samp
9052 @item derain
9053 Derain filter. To conduct derain filter, you need to use a derain model.
9054
9055 @item dehaze
9056 Dehaze filter. To conduct dehaze filter, you need to use a dehaze model.
9057 @end table
9058 Default value is @samp{derain}.
9059
9060 @item dnn_backend
9061 Specify which DNN backend to use for model loading and execution. This option accepts
9062 the following values:
9063
9064 @table @samp
9065 @item native
9066 Native implementation of DNN loading and execution.
9067
9068 @item tensorflow
9069 TensorFlow backend. To enable this backend you
9070 need to install the TensorFlow for C library (see
9071 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
9072 @code{--enable-libtensorflow}
9073 @end table
9074 Default value is @samp{native}.
9075
9076 @item model
9077 Set path to model file specifying network architecture and its parameters.
9078 Note that different backends use different file formats. TensorFlow and native
9079 backend can load files for only its format.
9080 @end table
9081
9082 It can also be finished with @ref{dnn_processing} filter.
9083
9084 @section deshake
9085
9086 Attempt to fix small changes in horizontal and/or vertical shift. This
9087 filter helps remove camera shake from hand-holding a camera, bumping a
9088 tripod, moving on a vehicle, etc.
9089
9090 The filter accepts the following options:
9091
9092 @table @option
9093
9094 @item x
9095 @item y
9096 @item w
9097 @item h
9098 Specify a rectangular area where to limit the search for motion
9099 vectors.
9100 If desired the search for motion vectors can be limited to a
9101 rectangular area of the frame defined by its top left corner, width
9102 and height. These parameters have the same meaning as the drawbox
9103 filter which can be used to visualise the position of the bounding
9104 box.
9105
9106 This is useful when simultaneous movement of subjects within the frame
9107 might be confused for camera motion by the motion vector search.
9108
9109 If any or all of @var{x}, @var{y}, @var{w} and @var{h} are set to -1
9110 then the full frame is used. This allows later options to be set
9111 without specifying the bounding box for the motion vector search.
9112
9113 Default - search the whole frame.
9114
9115 @item rx
9116 @item ry
9117 Specify the maximum extent of movement in x and y directions in the
9118 range 0-64 pixels. Default 16.
9119
9120 @item edge
9121 Specify how to generate pixels to fill blanks at the edge of the
9122 frame. Available values are:
9123 @table @samp
9124 @item blank, 0
9125 Fill zeroes at blank locations
9126 @item original, 1
9127 Original image at blank locations
9128 @item clamp, 2
9129 Extruded edge value at blank locations
9130 @item mirror, 3
9131 Mirrored edge at blank locations
9132 @end table
9133 Default value is @samp{mirror}.
9134
9135 @item blocksize
9136 Specify the blocksize to use for motion search. Range 4-128 pixels,
9137 default 8.
9138
9139 @item contrast
9140 Specify the contrast threshold for blocks. Only blocks with more than
9141 the specified contrast (difference between darkest and lightest
9142 pixels) will be considered. Range 1-255, default 125.
9143
9144 @item search
9145 Specify the search strategy. Available values are:
9146 @table @samp
9147 @item exhaustive, 0
9148 Set exhaustive search
9149 @item less, 1
9150 Set less exhaustive search.
9151 @end table
9152 Default value is @samp{exhaustive}.
9153
9154 @item filename
9155 If set then a detailed log of the motion search is written to the
9156 specified file.
9157
9158 @end table
9159
9160 @section despill
9161
9162 Remove unwanted contamination of foreground colors, caused by reflected color of
9163 greenscreen or bluescreen.
9164
9165 This filter accepts the following options:
9166
9167 @table @option
9168 @item type
9169 Set what type of despill to use.
9170
9171 @item mix
9172 Set how spillmap will be generated.
9173
9174 @item expand
9175 Set how much to get rid of still remaining spill.
9176
9177 @item red
9178 Controls amount of red in spill area.
9179
9180 @item green
9181 Controls amount of green in spill area.
9182 Should be -1 for greenscreen.
9183
9184 @item blue
9185 Controls amount of blue in spill area.
9186 Should be -1 for bluescreen.
9187
9188 @item brightness
9189 Controls brightness of spill area, preserving colors.
9190
9191 @item alpha
9192 Modify alpha from generated spillmap.
9193 @end table
9194
9195 @section detelecine
9196
9197 Apply an exact inverse of the telecine operation. It requires a predefined
9198 pattern specified using the pattern option which must be the same as that passed
9199 to the telecine filter.
9200
9201 This filter accepts the following options:
9202
9203 @table @option
9204 @item first_field
9205 @table @samp
9206 @item top, t
9207 top field first
9208 @item bottom, b
9209 bottom field first
9210 The default value is @code{top}.
9211 @end table
9212
9213 @item pattern
9214 A string of numbers representing the pulldown pattern you wish to apply.
9215 The default value is @code{23}.
9216
9217 @item start_frame
9218 A number representing position of the first frame with respect to the telecine
9219 pattern. This is to be used if the stream is cut. The default value is @code{0}.
9220 @end table
9221
9222 @section dilation
9223
9224 Apply dilation effect to the video.
9225
9226 This filter replaces the pixel by the local(3x3) maximum.
9227
9228 It accepts the following options:
9229
9230 @table @option
9231 @item threshold0
9232 @item threshold1
9233 @item threshold2
9234 @item threshold3
9235 Limit the maximum change for each plane, default is 65535.
9236 If 0, plane will remain unchanged.
9237
9238 @item coordinates
9239 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
9240 pixels are used.
9241
9242 Flags to local 3x3 coordinates maps like this:
9243
9244     1 2 3
9245     4   5
9246     6 7 8
9247 @end table
9248
9249 @subsection Commands
9250
9251 This filter supports the all above options as @ref{commands}.
9252
9253 @section displace
9254
9255 Displace pixels as indicated by second and third input stream.
9256
9257 It takes three input streams and outputs one stream, the first input is the
9258 source, and second and third input are displacement maps.
9259
9260 The second input specifies how much to displace pixels along the
9261 x-axis, while the third input specifies how much to displace pixels
9262 along the y-axis.
9263 If one of displacement map streams terminates, last frame from that
9264 displacement map will be used.
9265
9266 Note that once generated, displacements maps can be reused over and over again.
9267
9268 A description of the accepted options follows.
9269
9270 @table @option
9271 @item edge
9272 Set displace behavior for pixels that are out of range.
9273
9274 Available values are:
9275 @table @samp
9276 @item blank
9277 Missing pixels are replaced by black pixels.
9278
9279 @item smear
9280 Adjacent pixels will spread out to replace missing pixels.
9281
9282 @item wrap
9283 Out of range pixels are wrapped so they point to pixels of other side.
9284
9285 @item mirror
9286 Out of range pixels will be replaced with mirrored pixels.
9287 @end table
9288 Default is @samp{smear}.
9289
9290 @end table
9291
9292 @subsection Examples
9293
9294 @itemize
9295 @item
9296 Add ripple effect to rgb input of video size hd720:
9297 @example
9298 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
9299 @end example
9300
9301 @item
9302 Add wave effect to rgb input of video size hd720:
9303 @example
9304 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
9305 @end example
9306 @end itemize
9307
9308 @anchor{dnn_processing}
9309 @section dnn_processing
9310
9311 Do image processing with deep neural networks. It works together with another filter
9312 which converts the pixel format of the Frame to what the dnn network requires.
9313
9314 The filter accepts the following options:
9315
9316 @table @option
9317 @item dnn_backend
9318 Specify which DNN backend to use for model loading and execution. This option accepts
9319 the following values:
9320
9321 @table @samp
9322 @item native
9323 Native implementation of DNN loading and execution.
9324
9325 @item tensorflow
9326 TensorFlow backend. To enable this backend you
9327 need to install the TensorFlow for C library (see
9328 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
9329 @code{--enable-libtensorflow}
9330
9331 @item openvino
9332 OpenVINO backend. To enable this backend you
9333 need to build and install the OpenVINO for C library (see
9334 @url{https://github.com/openvinotoolkit/openvino/blob/master/build-instruction.md}) and configure FFmpeg with
9335 @code{--enable-libopenvino} (--extra-cflags=-I... --extra-ldflags=-L... might
9336 be needed if the header files and libraries are not installed into system path)
9337
9338 @end table
9339
9340 Default value is @samp{native}.
9341
9342 @item model
9343 Set path to model file specifying network architecture and its parameters.
9344 Note that different backends use different file formats. TensorFlow, OpenVINO and native
9345 backend can load files for only its format.
9346
9347 Native model file (.model) can be generated from TensorFlow model file (.pb) by using tools/python/convert.py
9348
9349 @item input
9350 Set the input name of the dnn network.
9351
9352 @item output
9353 Set the output name of the dnn network.
9354
9355 @end table
9356
9357 @subsection Examples
9358
9359 @itemize
9360 @item
9361 Remove rain in rgb24 frame with can.pb (see @ref{derain} filter):
9362 @example
9363 ./ffmpeg -i rain.jpg -vf format=rgb24,dnn_processing=dnn_backend=tensorflow:model=can.pb:input=x:output=y derain.jpg
9364 @end example
9365
9366 @item
9367 Halve the pixel value of the frame with format gray32f:
9368 @example
9369 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
9370 @end example
9371
9372 @item
9373 Handle the Y channel with srcnn.pb (see @ref{sr} filter) for frame with yuv420p (planar YUV formats supported):
9374 @example
9375 ./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
9376 @end example
9377
9378 @item
9379 Handle the Y channel with espcn.pb (see @ref{sr} filter), which changes frame size, for format yuv420p (planar YUV formats supported):
9380 @example
9381 ./ffmpeg -i 480p.jpg -vf format=yuv420p,dnn_processing=dnn_backend=tensorflow:model=espcn.pb:input=x:output=y -y tmp.espcn.jpg
9382 @end example
9383
9384 @end itemize
9385
9386 @section drawbox
9387
9388 Draw a colored box on the input image.
9389
9390 It accepts the following parameters:
9391
9392 @table @option
9393 @item x
9394 @item y
9395 The expressions which specify the top left corner coordinates of the box. It defaults to 0.
9396
9397 @item width, w
9398 @item height, h
9399 The expressions which specify the width and height of the box; if 0 they are interpreted as
9400 the input width and height. It defaults to 0.
9401
9402 @item color, c
9403 Specify the color of the box to write. For the general syntax of this option,
9404 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
9405 value @code{invert} is used, the box edge color is the same as the
9406 video with inverted luma.
9407
9408 @item thickness, t
9409 The expression which sets the thickness of the box edge.
9410 A value of @code{fill} will create a filled box. Default value is @code{3}.
9411
9412 See below for the list of accepted constants.
9413
9414 @item replace
9415 Applicable if the input has alpha. With value @code{1}, the pixels of the painted box
9416 will overwrite the video's color and alpha pixels.
9417 Default is @code{0}, which composites the box onto the input, leaving the video's alpha intact.
9418 @end table
9419
9420 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
9421 following constants:
9422
9423 @table @option
9424 @item dar
9425 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
9426
9427 @item hsub
9428 @item vsub
9429 horizontal and vertical chroma subsample values. For example for the
9430 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
9431
9432 @item in_h, ih
9433 @item in_w, iw
9434 The input width and height.
9435
9436 @item sar
9437 The input sample aspect ratio.
9438
9439 @item x
9440 @item y
9441 The x and y offset coordinates where the box is drawn.
9442
9443 @item w
9444 @item h
9445 The width and height of the drawn box.
9446
9447 @item t
9448 The thickness of the drawn box.
9449
9450 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
9451 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
9452
9453 @end table
9454
9455 @subsection Examples
9456
9457 @itemize
9458 @item
9459 Draw a black box around the edge of the input image:
9460 @example
9461 drawbox
9462 @end example
9463
9464 @item
9465 Draw a box with color red and an opacity of 50%:
9466 @example
9467 drawbox=10:20:200:60:red@@0.5
9468 @end example
9469
9470 The previous example can be specified as:
9471 @example
9472 drawbox=x=10:y=20:w=200:h=60:color=red@@0.5
9473 @end example
9474
9475 @item
9476 Fill the box with pink color:
9477 @example
9478 drawbox=x=10:y=10:w=100:h=100:color=pink@@0.5:t=fill
9479 @end example
9480
9481 @item
9482 Draw a 2-pixel red 2.40:1 mask:
9483 @example
9484 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
9485 @end example
9486 @end itemize
9487
9488 @subsection Commands
9489 This filter supports same commands as options.
9490 The command accepts the same syntax of the corresponding option.
9491
9492 If the specified expression is not valid, it is kept at its current
9493 value.
9494
9495 @anchor{drawgraph}
9496 @section drawgraph
9497 Draw a graph using input video metadata.
9498
9499 It accepts the following parameters:
9500
9501 @table @option
9502 @item m1
9503 Set 1st frame metadata key from which metadata values will be used to draw a graph.
9504
9505 @item fg1
9506 Set 1st foreground color expression.
9507
9508 @item m2
9509 Set 2nd frame metadata key from which metadata values will be used to draw a graph.
9510
9511 @item fg2
9512 Set 2nd foreground color expression.
9513
9514 @item m3
9515 Set 3rd frame metadata key from which metadata values will be used to draw a graph.
9516
9517 @item fg3
9518 Set 3rd foreground color expression.
9519
9520 @item m4
9521 Set 4th frame metadata key from which metadata values will be used to draw a graph.
9522
9523 @item fg4
9524 Set 4th foreground color expression.
9525
9526 @item min
9527 Set minimal value of metadata value.
9528
9529 @item max
9530 Set maximal value of metadata value.
9531
9532 @item bg
9533 Set graph background color. Default is white.
9534
9535 @item mode
9536 Set graph mode.
9537
9538 Available values for mode is:
9539 @table @samp
9540 @item bar
9541 @item dot
9542 @item line
9543 @end table
9544
9545 Default is @code{line}.
9546
9547 @item slide
9548 Set slide mode.
9549
9550 Available values for slide is:
9551 @table @samp
9552 @item frame
9553 Draw new frame when right border is reached.
9554
9555 @item replace
9556 Replace old columns with new ones.
9557
9558 @item scroll
9559 Scroll from right to left.
9560
9561 @item rscroll
9562 Scroll from left to right.
9563
9564 @item picture
9565 Draw single picture.
9566 @end table
9567
9568 Default is @code{frame}.
9569
9570 @item size
9571 Set size of graph video. For the syntax of this option, check the
9572 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
9573 The default value is @code{900x256}.
9574
9575 @item rate, r
9576 Set the output frame rate. Default value is @code{25}.
9577
9578 The foreground color expressions can use the following variables:
9579 @table @option
9580 @item MIN
9581 Minimal value of metadata value.
9582
9583 @item MAX
9584 Maximal value of metadata value.
9585
9586 @item VAL
9587 Current metadata key value.
9588 @end table
9589
9590 The color is defined as 0xAABBGGRR.
9591 @end table
9592
9593 Example using metadata from @ref{signalstats} filter:
9594 @example
9595 signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255
9596 @end example
9597
9598 Example using metadata from @ref{ebur128} filter:
9599 @example
9600 ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-120:max=5
9601 @end example
9602
9603 @section drawgrid
9604
9605 Draw a grid on the input image.
9606
9607 It accepts the following parameters:
9608
9609 @table @option
9610 @item x
9611 @item y
9612 The expressions which specify the coordinates of some point of grid intersection (meant to configure offset). Both default to 0.
9613
9614 @item width, w
9615 @item height, h
9616 The expressions which specify the width and height of the grid cell, if 0 they are interpreted as the
9617 input width and height, respectively, minus @code{thickness}, so image gets
9618 framed. Default to 0.
9619
9620 @item color, c
9621 Specify the color of the grid. For the general syntax of this option,
9622 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
9623 value @code{invert} is used, the grid color is the same as the
9624 video with inverted luma.
9625
9626 @item thickness, t
9627 The expression which sets the thickness of the grid line. Default value is @code{1}.
9628
9629 See below for the list of accepted constants.
9630
9631 @item replace
9632 Applicable if the input has alpha. With @code{1} the pixels of the painted grid
9633 will overwrite the video's color and alpha pixels.
9634 Default is @code{0}, which composites the grid onto the input, leaving the video's alpha intact.
9635 @end table
9636
9637 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
9638 following constants:
9639
9640 @table @option
9641 @item dar
9642 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
9643
9644 @item hsub
9645 @item vsub
9646 horizontal and vertical chroma subsample values. For example for the
9647 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
9648
9649 @item in_h, ih
9650 @item in_w, iw
9651 The input grid cell width and height.
9652
9653 @item sar
9654 The input sample aspect ratio.
9655
9656 @item x
9657 @item y
9658 The x and y coordinates of some point of grid intersection (meant to configure offset).
9659
9660 @item w
9661 @item h
9662 The width and height of the drawn cell.
9663
9664 @item t
9665 The thickness of the drawn cell.
9666
9667 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
9668 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
9669
9670 @end table
9671
9672 @subsection Examples
9673
9674 @itemize
9675 @item
9676 Draw a grid with cell 100x100 pixels, thickness 2 pixels, with color red and an opacity of 50%:
9677 @example
9678 drawgrid=width=100:height=100:thickness=2:color=red@@0.5
9679 @end example
9680
9681 @item
9682 Draw a white 3x3 grid with an opacity of 50%:
9683 @example
9684 drawgrid=w=iw/3:h=ih/3:t=2:c=white@@0.5
9685 @end example
9686 @end itemize
9687
9688 @subsection Commands
9689 This filter supports same commands as options.
9690 The command accepts the same syntax of the corresponding option.
9691
9692 If the specified expression is not valid, it is kept at its current
9693 value.
9694
9695 @anchor{drawtext}
9696 @section drawtext
9697
9698 Draw a text string or text from a specified file on top of a video, using the
9699 libfreetype library.
9700
9701 To enable compilation of this filter, you need to configure FFmpeg with
9702 @code{--enable-libfreetype}.
9703 To enable default font fallback and the @var{font} option you need to
9704 configure FFmpeg with @code{--enable-libfontconfig}.
9705 To enable the @var{text_shaping} option, you need to configure FFmpeg with
9706 @code{--enable-libfribidi}.
9707
9708 @subsection Syntax
9709
9710 It accepts the following parameters:
9711
9712 @table @option
9713
9714 @item box
9715 Used to draw a box around text using the background color.
9716 The value must be either 1 (enable) or 0 (disable).
9717 The default value of @var{box} is 0.
9718
9719 @item boxborderw
9720 Set the width of the border to be drawn around the box using @var{boxcolor}.
9721 The default value of @var{boxborderw} is 0.
9722
9723 @item boxcolor
9724 The color to be used for drawing box around text. For the syntax of this
9725 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
9726
9727 The default value of @var{boxcolor} is "white".
9728
9729 @item line_spacing
9730 Set the line spacing in pixels of the border to be drawn around the box using @var{box}.
9731 The default value of @var{line_spacing} is 0.
9732
9733 @item borderw
9734 Set the width of the border to be drawn around the text using @var{bordercolor}.
9735 The default value of @var{borderw} is 0.
9736
9737 @item bordercolor
9738 Set the color to be used for drawing border around text. For the syntax of this
9739 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
9740
9741 The default value of @var{bordercolor} is "black".
9742
9743 @item expansion
9744 Select how the @var{text} is expanded. Can be either @code{none},
9745 @code{strftime} (deprecated) or
9746 @code{normal} (default). See the @ref{drawtext_expansion, Text expansion} section
9747 below for details.
9748
9749 @item basetime
9750 Set a start time for the count. Value is in microseconds. Only applied
9751 in the deprecated strftime expansion mode. To emulate in normal expansion
9752 mode use the @code{pts} function, supplying the start time (in seconds)
9753 as the second argument.
9754
9755 @item fix_bounds
9756 If true, check and fix text coords to avoid clipping.
9757
9758 @item fontcolor
9759 The color to be used for drawing fonts. For the syntax of this option, check
9760 the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
9761
9762 The default value of @var{fontcolor} is "black".
9763
9764 @item fontcolor_expr
9765 String which is expanded the same way as @var{text} to obtain dynamic
9766 @var{fontcolor} value. By default this option has empty value and is not
9767 processed. When this option is set, it overrides @var{fontcolor} option.
9768
9769 @item font
9770 The font family to be used for drawing text. By default Sans.
9771
9772 @item fontfile
9773 The font file to be used for drawing text. The path must be included.
9774 This parameter is mandatory if the fontconfig support is disabled.
9775
9776 @item alpha
9777 Draw the text applying alpha blending. The value can
9778 be a number between 0.0 and 1.0.
9779 The expression accepts the same variables @var{x, y} as well.
9780 The default value is 1.
9781 Please see @var{fontcolor_expr}.
9782
9783 @item fontsize
9784 The font size to be used for drawing text.
9785 The default value of @var{fontsize} is 16.
9786
9787 @item text_shaping
9788 If set to 1, attempt to shape the text (for example, reverse the order of
9789 right-to-left text and join Arabic characters) before drawing it.
9790 Otherwise, just draw the text exactly as given.
9791 By default 1 (if supported).
9792
9793 @item ft_load_flags
9794 The flags to be used for loading the fonts.
9795
9796 The flags map the corresponding flags supported by libfreetype, and are
9797 a combination of the following values:
9798 @table @var
9799 @item default
9800 @item no_scale
9801 @item no_hinting
9802 @item render
9803 @item no_bitmap
9804 @item vertical_layout
9805 @item force_autohint
9806 @item crop_bitmap
9807 @item pedantic
9808 @item ignore_global_advance_width
9809 @item no_recurse
9810 @item ignore_transform
9811 @item monochrome
9812 @item linear_design
9813 @item no_autohint
9814 @end table
9815
9816 Default value is "default".
9817
9818 For more information consult the documentation for the FT_LOAD_*
9819 libfreetype flags.
9820
9821 @item shadowcolor
9822 The color to be used for drawing a shadow behind the drawn text. For the
9823 syntax of this option, check the @ref{color syntax,,"Color" section in the
9824 ffmpeg-utils manual,ffmpeg-utils}.
9825
9826 The default value of @var{shadowcolor} is "black".
9827
9828 @item shadowx
9829 @item shadowy
9830 The x and y offsets for the text shadow position with respect to the
9831 position of the text. They can be either positive or negative
9832 values. The default value for both is "0".
9833
9834 @item start_number
9835 The starting frame number for the n/frame_num variable. The default value
9836 is "0".
9837
9838 @item tabsize
9839 The size in number of spaces to use for rendering the tab.
9840 Default value is 4.
9841
9842 @item timecode
9843 Set the initial timecode representation in "hh:mm:ss[:;.]ff"
9844 format. It can be used with or without text parameter. @var{timecode_rate}
9845 option must be specified.
9846
9847 @item timecode_rate, rate, r
9848 Set the timecode frame rate (timecode only). Value will be rounded to nearest
9849 integer. Minimum value is "1".
9850 Drop-frame timecode is supported for frame rates 30 & 60.
9851
9852 @item tc24hmax
9853 If set to 1, the output of the timecode option will wrap around at 24 hours.
9854 Default is 0 (disabled).
9855
9856 @item text
9857 The text string to be drawn. The text must be a sequence of UTF-8
9858 encoded characters.
9859 This parameter is mandatory if no file is specified with the parameter
9860 @var{textfile}.
9861
9862 @item textfile
9863 A text file containing text to be drawn. The text must be a sequence
9864 of UTF-8 encoded characters.
9865
9866 This parameter is mandatory if no text string is specified with the
9867 parameter @var{text}.
9868
9869 If both @var{text} and @var{textfile} are specified, an error is thrown.
9870
9871 @item reload
9872 If set to 1, the @var{textfile} will be reloaded before each frame.
9873 Be sure to update it atomically, or it may be read partially, or even fail.
9874
9875 @item x
9876 @item y
9877 The expressions which specify the offsets where text will be drawn
9878 within the video frame. They are relative to the top/left border of the
9879 output image.
9880
9881 The default value of @var{x} and @var{y} is "0".
9882
9883 See below for the list of accepted constants and functions.
9884 @end table
9885
9886 The parameters for @var{x} and @var{y} are expressions containing the
9887 following constants and functions:
9888
9889 @table @option
9890 @item dar
9891 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
9892
9893 @item hsub
9894 @item vsub
9895 horizontal and vertical chroma subsample values. For example for the
9896 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
9897
9898 @item line_h, lh
9899 the height of each text line
9900
9901 @item main_h, h, H
9902 the input height
9903
9904 @item main_w, w, W
9905 the input width
9906
9907 @item max_glyph_a, ascent
9908 the maximum distance from the baseline to the highest/upper grid
9909 coordinate used to place a glyph outline point, for all the rendered
9910 glyphs.
9911 It is a positive value, due to the grid's orientation with the Y axis
9912 upwards.
9913
9914 @item max_glyph_d, descent
9915 the maximum distance from the baseline to the lowest grid coordinate
9916 used to place a glyph outline point, for all the rendered glyphs.
9917 This is a negative value, due to the grid's orientation, with the Y axis
9918 upwards.
9919
9920 @item max_glyph_h
9921 maximum glyph height, that is the maximum height for all the glyphs
9922 contained in the rendered text, it is equivalent to @var{ascent} -
9923 @var{descent}.
9924
9925 @item max_glyph_w
9926 maximum glyph width, that is the maximum width for all the glyphs
9927 contained in the rendered text
9928
9929 @item n
9930 the number of input frame, starting from 0
9931
9932 @item rand(min, max)
9933 return a random number included between @var{min} and @var{max}
9934
9935 @item sar
9936 The input sample aspect ratio.
9937
9938 @item t
9939 timestamp expressed in seconds, NAN if the input timestamp is unknown
9940
9941 @item text_h, th
9942 the height of the rendered text
9943
9944 @item text_w, tw
9945 the width of the rendered text
9946
9947 @item x
9948 @item y
9949 the x and y offset coordinates where the text is drawn.
9950
9951 These parameters allow the @var{x} and @var{y} expressions to refer
9952 to each other, so you can for example specify @code{y=x/dar}.
9953
9954 @item pict_type
9955 A one character description of the current frame's picture type.
9956
9957 @item pkt_pos
9958 The current packet's position in the input file or stream
9959 (in bytes, from the start of the input). A value of -1 indicates
9960 this info is not available.
9961
9962 @item pkt_duration
9963 The current packet's duration, in seconds.
9964
9965 @item pkt_size
9966 The current packet's size (in bytes).
9967 @end table
9968
9969 @anchor{drawtext_expansion}
9970 @subsection Text expansion
9971
9972 If @option{expansion} is set to @code{strftime},
9973 the filter recognizes strftime() sequences in the provided text and
9974 expands them accordingly. Check the documentation of strftime(). This
9975 feature is deprecated.
9976
9977 If @option{expansion} is set to @code{none}, the text is printed verbatim.
9978
9979 If @option{expansion} is set to @code{normal} (which is the default),
9980 the following expansion mechanism is used.
9981
9982 The backslash character @samp{\}, followed by any character, always expands to
9983 the second character.
9984
9985 Sequences of the form @code{%@{...@}} are expanded. The text between the
9986 braces is a function name, possibly followed by arguments separated by ':'.
9987 If the arguments contain special characters or delimiters (':' or '@}'),
9988 they should be escaped.
9989
9990 Note that they probably must also be escaped as the value for the
9991 @option{text} option in the filter argument string and as the filter
9992 argument in the filtergraph description, and possibly also for the shell,
9993 that makes up to four levels of escaping; using a text file avoids these
9994 problems.
9995
9996 The following functions are available:
9997
9998 @table @command
9999
10000 @item expr, e
10001 The expression evaluation result.
10002
10003 It must take one argument specifying the expression to be evaluated,
10004 which accepts the same constants and functions as the @var{x} and
10005 @var{y} values. Note that not all constants should be used, for
10006 example the text size is not known when evaluating the expression, so
10007 the constants @var{text_w} and @var{text_h} will have an undefined
10008 value.
10009
10010 @item expr_int_format, eif
10011 Evaluate the expression's value and output as formatted integer.
10012
10013 The first argument is the expression to be evaluated, just as for the @var{expr} function.
10014 The second argument specifies the output format. Allowed values are @samp{x},
10015 @samp{X}, @samp{d} and @samp{u}. They are treated exactly as in the
10016 @code{printf} function.
10017 The third parameter is optional and sets the number of positions taken by the output.
10018 It can be used to add padding with zeros from the left.
10019
10020 @item gmtime
10021 The time at which the filter is running, expressed in UTC.
10022 It can accept an argument: a strftime() format string.
10023
10024 @item localtime
10025 The time at which the filter is running, expressed in the local time zone.
10026 It can accept an argument: a strftime() format string.
10027
10028 @item metadata
10029 Frame metadata. Takes one or two arguments.
10030
10031 The first argument is mandatory and specifies the metadata key.
10032
10033 The second argument is optional and specifies a default value, used when the
10034 metadata key is not found or empty.
10035
10036 Available metadata can be identified by inspecting entries
10037 starting with TAG included within each frame section
10038 printed by running @code{ffprobe -show_frames}.
10039
10040 String metadata generated in filters leading to
10041 the drawtext filter are also available.
10042
10043 @item n, frame_num
10044 The frame number, starting from 0.
10045
10046 @item pict_type
10047 A one character description of the current picture type.
10048
10049 @item pts
10050 The timestamp of the current frame.
10051 It can take up to three arguments.
10052
10053 The first argument is the format of the timestamp; it defaults to @code{flt}
10054 for seconds as a decimal number with microsecond accuracy; @code{hms} stands
10055 for a formatted @var{[-]HH:MM:SS.mmm} timestamp with millisecond accuracy.
10056 @code{gmtime} stands for the timestamp of the frame formatted as UTC time;
10057 @code{localtime} stands for the timestamp of the frame formatted as
10058 local time zone time.
10059
10060 The second argument is an offset added to the timestamp.
10061
10062 If the format is set to @code{hms}, a third argument @code{24HH} may be
10063 supplied to present the hour part of the formatted timestamp in 24h format
10064 (00-23).
10065
10066 If the format is set to @code{localtime} or @code{gmtime},
10067 a third argument may be supplied: a strftime() format string.
10068 By default, @var{YYYY-MM-DD HH:MM:SS} format will be used.
10069 @end table
10070
10071 @subsection Commands
10072
10073 This filter supports altering parameters via commands:
10074 @table @option
10075 @item reinit
10076 Alter existing filter parameters.
10077
10078 Syntax for the argument is the same as for filter invocation, e.g.
10079
10080 @example
10081 fontsize=56:fontcolor=green:text='Hello World'
10082 @end example
10083
10084 Full filter invocation with sendcmd would look like this:
10085
10086 @example
10087 sendcmd=c='56.0 drawtext reinit fontsize=56\:fontcolor=green\:text=Hello\\ World'
10088 @end example
10089 @end table
10090
10091 If the entire argument can't be parsed or applied as valid values then the filter will
10092 continue with its existing parameters.
10093
10094 @subsection Examples
10095
10096 @itemize
10097 @item
10098 Draw "Test Text" with font FreeSerif, using the default values for the
10099 optional parameters.
10100
10101 @example
10102 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
10103 @end example
10104
10105 @item
10106 Draw 'Test Text' with font FreeSerif of size 24 at position x=100
10107 and y=50 (counting from the top-left corner of the screen), text is
10108 yellow with a red box around it. Both the text and the box have an
10109 opacity of 20%.
10110
10111 @example
10112 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
10113           x=100: y=50: fontsize=24: fontcolor=yellow@@0.2: box=1: boxcolor=red@@0.2"
10114 @end example
10115
10116 Note that the double quotes are not necessary if spaces are not used
10117 within the parameter list.
10118
10119 @item
10120 Show the text at the center of the video frame:
10121 @example
10122 drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h)/2"
10123 @end example
10124
10125 @item
10126 Show the text at a random position, switching to a new position every 30 seconds:
10127 @example
10128 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)"
10129 @end example
10130
10131 @item
10132 Show a text line sliding from right to left in the last row of the video
10133 frame. The file @file{LONG_LINE} is assumed to contain a single line
10134 with no newlines.
10135 @example
10136 drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
10137 @end example
10138
10139 @item
10140 Show the content of file @file{CREDITS} off the bottom of the frame and scroll up.
10141 @example
10142 drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
10143 @end example
10144
10145 @item
10146 Draw a single green letter "g", at the center of the input video.
10147 The glyph baseline is placed at half screen height.
10148 @example
10149 drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
10150 @end example
10151
10152 @item
10153 Show text for 1 second every 3 seconds:
10154 @example
10155 drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'"
10156 @end example
10157
10158 @item
10159 Use fontconfig to set the font. Note that the colons need to be escaped.
10160 @example
10161 drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
10162 @end example
10163
10164 @item
10165 Print the date of a real-time encoding (see strftime(3)):
10166 @example
10167 drawtext='fontfile=FreeSans.ttf:text=%@{localtime\:%a %b %d %Y@}'
10168 @end example
10169
10170 @item
10171 Show text fading in and out (appearing/disappearing):
10172 @example
10173 #!/bin/sh
10174 DS=1.0 # display start
10175 DE=10.0 # display end
10176 FID=1.5 # fade in duration
10177 FOD=5 # fade out duration
10178 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 @}"
10179 @end example
10180
10181 @item
10182 Horizontally align multiple separate texts. Note that @option{max_glyph_a}
10183 and the @option{fontsize} value are included in the @option{y} offset.
10184 @example
10185 drawtext=fontfile=FreeSans.ttf:text=DOG:fontsize=24:x=10:y=20+24-max_glyph_a,
10186 drawtext=fontfile=FreeSans.ttf:text=cow:fontsize=24:x=80:y=20+24-max_glyph_a
10187 @end example
10188
10189 @item
10190 Plot special @var{lavf.image2dec.source_basename} metadata onto each frame if
10191 such metadata exists. Otherwise, plot the string "NA". Note that image2 demuxer
10192 must have option @option{-export_path_metadata 1} for the special metadata fields
10193 to be available for filters.
10194 @example
10195 drawtext="fontsize=20:fontcolor=white:fontfile=FreeSans.ttf:text='%@{metadata\:lavf.image2dec.source_basename\:NA@}':x=10:y=10"
10196 @end example
10197
10198 @end itemize
10199
10200 For more information about libfreetype, check:
10201 @url{http://www.freetype.org/}.
10202
10203 For more information about fontconfig, check:
10204 @url{http://freedesktop.org/software/fontconfig/fontconfig-user.html}.
10205
10206 For more information about libfribidi, check:
10207 @url{http://fribidi.org/}.
10208
10209 @section edgedetect
10210
10211 Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
10212
10213 The filter accepts the following options:
10214
10215 @table @option
10216 @item low
10217 @item high
10218 Set low and high threshold values used by the Canny thresholding
10219 algorithm.
10220
10221 The high threshold selects the "strong" edge pixels, which are then
10222 connected through 8-connectivity with the "weak" edge pixels selected
10223 by the low threshold.
10224
10225 @var{low} and @var{high} threshold values must be chosen in the range
10226 [0,1], and @var{low} should be lesser or equal to @var{high}.
10227
10228 Default value for @var{low} is @code{20/255}, and default value for @var{high}
10229 is @code{50/255}.
10230
10231 @item mode
10232 Define the drawing mode.
10233
10234 @table @samp
10235 @item wires
10236 Draw white/gray wires on black background.
10237
10238 @item colormix
10239 Mix the colors to create a paint/cartoon effect.
10240
10241 @item canny
10242 Apply Canny edge detector on all selected planes.
10243 @end table
10244 Default value is @var{wires}.
10245
10246 @item planes
10247 Select planes for filtering. By default all available planes are filtered.
10248 @end table
10249
10250 @subsection Examples
10251
10252 @itemize
10253 @item
10254 Standard edge detection with custom values for the hysteresis thresholding:
10255 @example
10256 edgedetect=low=0.1:high=0.4
10257 @end example
10258
10259 @item
10260 Painting effect without thresholding:
10261 @example
10262 edgedetect=mode=colormix:high=0
10263 @end example
10264 @end itemize
10265
10266 @section elbg
10267
10268 Apply a posterize effect using the ELBG (Enhanced LBG) algorithm.
10269
10270 For each input image, the filter will compute the optimal mapping from
10271 the input to the output given the codebook length, that is the number
10272 of distinct output colors.
10273
10274 This filter accepts the following options.
10275
10276 @table @option
10277 @item codebook_length, l
10278 Set codebook length. The value must be a positive integer, and
10279 represents the number of distinct output colors. Default value is 256.
10280
10281 @item nb_steps, n
10282 Set the maximum number of iterations to apply for computing the optimal
10283 mapping. The higher the value the better the result and the higher the
10284 computation time. Default value is 1.
10285
10286 @item seed, s
10287 Set a random seed, must be an integer included between 0 and
10288 UINT32_MAX. If not specified, or if explicitly set to -1, the filter
10289 will try to use a good random seed on a best effort basis.
10290
10291 @item pal8
10292 Set pal8 output pixel format. This option does not work with codebook
10293 length greater than 256.
10294 @end table
10295
10296 @section entropy
10297
10298 Measure graylevel entropy in histogram of color channels of video frames.
10299
10300 It accepts the following parameters:
10301
10302 @table @option
10303 @item mode
10304 Can be either @var{normal} or @var{diff}. Default is @var{normal}.
10305
10306 @var{diff} mode measures entropy of histogram delta values, absolute differences
10307 between neighbour histogram values.
10308 @end table
10309
10310 @section eq
10311 Set brightness, contrast, saturation and approximate gamma adjustment.
10312
10313 The filter accepts the following options:
10314
10315 @table @option
10316 @item contrast
10317 Set the contrast expression. The value must be a float value in range
10318 @code{-1000.0} to @code{1000.0}. The default value is "1".
10319
10320 @item brightness
10321 Set the brightness expression. The value must be a float value in
10322 range @code{-1.0} to @code{1.0}. The default value is "0".
10323
10324 @item saturation
10325 Set the saturation expression. The value must be a float in
10326 range @code{0.0} to @code{3.0}. The default value is "1".
10327
10328 @item gamma
10329 Set the gamma expression. The value must be a float in range
10330 @code{0.1} to @code{10.0}.  The default value is "1".
10331
10332 @item gamma_r
10333 Set the gamma expression for red. The value must be a float in
10334 range @code{0.1} to @code{10.0}. The default value is "1".
10335
10336 @item gamma_g
10337 Set the gamma expression for green. The value must be a float in range
10338 @code{0.1} to @code{10.0}. The default value is "1".
10339
10340 @item gamma_b
10341 Set the gamma expression for blue. The value must be a float in range
10342 @code{0.1} to @code{10.0}. The default value is "1".
10343
10344 @item gamma_weight
10345 Set the gamma weight expression. It can be used to reduce the effect
10346 of a high gamma value on bright image areas, e.g. keep them from
10347 getting overamplified and just plain white. The value must be a float
10348 in range @code{0.0} to @code{1.0}. A value of @code{0.0} turns the
10349 gamma correction all the way down while @code{1.0} leaves it at its
10350 full strength. Default is "1".
10351
10352 @item eval
10353 Set when the expressions for brightness, contrast, saturation and
10354 gamma expressions are evaluated.
10355
10356 It accepts the following values:
10357 @table @samp
10358 @item init
10359 only evaluate expressions once during the filter initialization or
10360 when a command is processed
10361
10362 @item frame
10363 evaluate expressions for each incoming frame
10364 @end table
10365
10366 Default value is @samp{init}.
10367 @end table
10368
10369 The expressions accept the following parameters:
10370 @table @option
10371 @item n
10372 frame count of the input frame starting from 0
10373
10374 @item pos
10375 byte position of the corresponding packet in the input file, NAN if
10376 unspecified
10377
10378 @item r
10379 frame rate of the input video, NAN if the input frame rate is unknown
10380
10381 @item t
10382 timestamp expressed in seconds, NAN if the input timestamp is unknown
10383 @end table
10384
10385 @subsection Commands
10386 The filter supports the following commands:
10387
10388 @table @option
10389 @item contrast
10390 Set the contrast expression.
10391
10392 @item brightness
10393 Set the brightness expression.
10394
10395 @item saturation
10396 Set the saturation expression.
10397
10398 @item gamma
10399 Set the gamma expression.
10400
10401 @item gamma_r
10402 Set the gamma_r expression.
10403
10404 @item gamma_g
10405 Set gamma_g expression.
10406
10407 @item gamma_b
10408 Set gamma_b expression.
10409
10410 @item gamma_weight
10411 Set gamma_weight expression.
10412
10413 The command accepts the same syntax of the corresponding option.
10414
10415 If the specified expression is not valid, it is kept at its current
10416 value.
10417
10418 @end table
10419
10420 @section erosion
10421
10422 Apply erosion effect to the video.
10423
10424 This filter replaces the pixel by the local(3x3) minimum.
10425
10426 It accepts the following options:
10427
10428 @table @option
10429 @item threshold0
10430 @item threshold1
10431 @item threshold2
10432 @item threshold3
10433 Limit the maximum change for each plane, default is 65535.
10434 If 0, plane will remain unchanged.
10435
10436 @item coordinates
10437 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
10438 pixels are used.
10439
10440 Flags to local 3x3 coordinates maps like this:
10441
10442     1 2 3
10443     4   5
10444     6 7 8
10445 @end table
10446
10447 @subsection Commands
10448
10449 This filter supports the all above options as @ref{commands}.
10450
10451 @section extractplanes
10452
10453 Extract color channel components from input video stream into
10454 separate grayscale video streams.
10455
10456 The filter accepts the following option:
10457
10458 @table @option
10459 @item planes
10460 Set plane(s) to extract.
10461
10462 Available values for planes are:
10463 @table @samp
10464 @item y
10465 @item u
10466 @item v
10467 @item a
10468 @item r
10469 @item g
10470 @item b
10471 @end table
10472
10473 Choosing planes not available in the input will result in an error.
10474 That means you cannot select @code{r}, @code{g}, @code{b} planes
10475 with @code{y}, @code{u}, @code{v} planes at same time.
10476 @end table
10477
10478 @subsection Examples
10479
10480 @itemize
10481 @item
10482 Extract luma, u and v color channel component from input video frame
10483 into 3 grayscale outputs:
10484 @example
10485 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
10486 @end example
10487 @end itemize
10488
10489 @section fade
10490
10491 Apply a fade-in/out effect to the input video.
10492
10493 It accepts the following parameters:
10494
10495 @table @option
10496 @item type, t
10497 The effect type can be either "in" for a fade-in, or "out" for a fade-out
10498 effect.
10499 Default is @code{in}.
10500
10501 @item start_frame, s
10502 Specify the number of the frame to start applying the fade
10503 effect at. Default is 0.
10504
10505 @item nb_frames, n
10506 The number of frames that the fade effect lasts. At the end of the
10507 fade-in effect, the output video will have the same intensity as the input video.
10508 At the end of the fade-out transition, the output video will be filled with the
10509 selected @option{color}.
10510 Default is 25.
10511
10512 @item alpha
10513 If set to 1, fade only alpha channel, if one exists on the input.
10514 Default value is 0.
10515
10516 @item start_time, st
10517 Specify the timestamp (in seconds) of the frame to start to apply the fade
10518 effect. If both start_frame and start_time are specified, the fade will start at
10519 whichever comes last.  Default is 0.
10520
10521 @item duration, d
10522 The number of seconds for which the fade effect has to last. At the end of the
10523 fade-in effect the output video will have the same intensity as the input video,
10524 at the end of the fade-out transition the output video will be filled with the
10525 selected @option{color}.
10526 If both duration and nb_frames are specified, duration is used. Default is 0
10527 (nb_frames is used by default).
10528
10529 @item color, c
10530 Specify the color of the fade. Default is "black".
10531 @end table
10532
10533 @subsection Examples
10534
10535 @itemize
10536 @item
10537 Fade in the first 30 frames of video:
10538 @example
10539 fade=in:0:30
10540 @end example
10541
10542 The command above is equivalent to:
10543 @example
10544 fade=t=in:s=0:n=30
10545 @end example
10546
10547 @item
10548 Fade out the last 45 frames of a 200-frame video:
10549 @example
10550 fade=out:155:45
10551 fade=type=out:start_frame=155:nb_frames=45
10552 @end example
10553
10554 @item
10555 Fade in the first 25 frames and fade out the last 25 frames of a 1000-frame video:
10556 @example
10557 fade=in:0:25, fade=out:975:25
10558 @end example
10559
10560 @item
10561 Make the first 5 frames yellow, then fade in from frame 5-24:
10562 @example
10563 fade=in:5:20:color=yellow
10564 @end example
10565
10566 @item
10567 Fade in alpha over first 25 frames of video:
10568 @example
10569 fade=in:0:25:alpha=1
10570 @end example
10571
10572 @item
10573 Make the first 5.5 seconds black, then fade in for 0.5 seconds:
10574 @example
10575 fade=t=in:st=5.5:d=0.5
10576 @end example
10577
10578 @end itemize
10579
10580 @section fftdnoiz
10581 Denoise frames using 3D FFT (frequency domain filtering).
10582
10583 The filter accepts the following options:
10584
10585 @table @option
10586 @item sigma
10587 Set the noise sigma constant. This sets denoising strength.
10588 Default value is 1. Allowed range is from 0 to 30.
10589 Using very high sigma with low overlap may give blocking artifacts.
10590
10591 @item amount
10592 Set amount of denoising. By default all detected noise is reduced.
10593 Default value is 1. Allowed range is from 0 to 1.
10594
10595 @item block
10596 Set size of block, Default is 4, can be 3, 4, 5 or 6.
10597 Actual size of block in pixels is 2 to power of @var{block}, so by default
10598 block size in pixels is 2^4 which is 16.
10599
10600 @item overlap
10601 Set block overlap. Default is 0.5. Allowed range is from 0.2 to 0.8.
10602
10603 @item prev
10604 Set number of previous frames to use for denoising. By default is set to 0.
10605
10606 @item next
10607 Set number of next frames to to use for denoising. By default is set to 0.
10608
10609 @item planes
10610 Set planes which will be filtered, by default are all available filtered
10611 except alpha.
10612 @end table
10613
10614 @section fftfilt
10615 Apply arbitrary expressions to samples in frequency domain
10616
10617 @table @option
10618 @item dc_Y
10619 Adjust the dc value (gain) of the luma plane of the image. The filter
10620 accepts an integer value in range @code{0} to @code{1000}. The default
10621 value is set to @code{0}.
10622
10623 @item dc_U
10624 Adjust the dc value (gain) of the 1st chroma plane of the image. The
10625 filter accepts an integer value in range @code{0} to @code{1000}. The
10626 default value is set to @code{0}.
10627
10628 @item dc_V
10629 Adjust the dc value (gain) of the 2nd chroma plane of the image. The
10630 filter accepts an integer value in range @code{0} to @code{1000}. The
10631 default value is set to @code{0}.
10632
10633 @item weight_Y
10634 Set the frequency domain weight expression for the luma plane.
10635
10636 @item weight_U
10637 Set the frequency domain weight expression for the 1st chroma plane.
10638
10639 @item weight_V
10640 Set the frequency domain weight expression for the 2nd chroma plane.
10641
10642 @item eval
10643 Set when the expressions are evaluated.
10644
10645 It accepts the following values:
10646 @table @samp
10647 @item init
10648 Only evaluate expressions once during the filter initialization.
10649
10650 @item frame
10651 Evaluate expressions for each incoming frame.
10652 @end table
10653
10654 Default value is @samp{init}.
10655
10656 The filter accepts the following variables:
10657 @item X
10658 @item Y
10659 The coordinates of the current sample.
10660
10661 @item W
10662 @item H
10663 The width and height of the image.
10664
10665 @item N
10666 The number of input frame, starting from 0.
10667 @end table
10668
10669 @subsection Examples
10670
10671 @itemize
10672 @item
10673 High-pass:
10674 @example
10675 fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)'
10676 @end example
10677
10678 @item
10679 Low-pass:
10680 @example
10681 fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)'
10682 @end example
10683
10684 @item
10685 Sharpen:
10686 @example
10687 fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)'
10688 @end example
10689
10690 @item
10691 Blur:
10692 @example
10693 fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))'
10694 @end example
10695
10696 @end itemize
10697
10698 @section field
10699
10700 Extract a single field from an interlaced image using stride
10701 arithmetic to avoid wasting CPU time. The output frames are marked as
10702 non-interlaced.
10703
10704 The filter accepts the following options:
10705
10706 @table @option
10707 @item type
10708 Specify whether to extract the top (if the value is @code{0} or
10709 @code{top}) or the bottom field (if the value is @code{1} or
10710 @code{bottom}).
10711 @end table
10712
10713 @section fieldhint
10714
10715 Create new frames by copying the top and bottom fields from surrounding frames
10716 supplied as numbers by the hint file.
10717
10718 @table @option
10719 @item hint
10720 Set file containing hints: absolute/relative frame numbers.
10721
10722 There must be one line for each frame in a clip. Each line must contain two
10723 numbers separated by the comma, optionally followed by @code{-} or @code{+}.
10724 Numbers supplied on each line of file can not be out of [N-1,N+1] where N
10725 is current frame number for @code{absolute} mode or out of [-1, 1] range
10726 for @code{relative} mode. First number tells from which frame to pick up top
10727 field and second number tells from which frame to pick up bottom field.
10728
10729 If optionally followed by @code{+} output frame will be marked as interlaced,
10730 else if followed by @code{-} output frame will be marked as progressive, else
10731 it will be marked same as input frame.
10732 If optionally followed by @code{t} output frame will use only top field, or in
10733 case of @code{b} it will use only bottom field.
10734 If line starts with @code{#} or @code{;} that line is skipped.
10735
10736 @item mode
10737 Can be item @code{absolute} or @code{relative}. Default is @code{absolute}.
10738 @end table
10739
10740 Example of first several lines of @code{hint} file for @code{relative} mode:
10741 @example
10742 0,0 - # first frame
10743 1,0 - # second frame, use third's frame top field and second's frame bottom field
10744 1,0 - # third frame, use fourth's frame top field and third's frame bottom field
10745 1,0 -
10746 0,0 -
10747 0,0 -
10748 1,0 -
10749 1,0 -
10750 1,0 -
10751 0,0 -
10752 0,0 -
10753 1,0 -
10754 1,0 -
10755 1,0 -
10756 0,0 -
10757 @end example
10758
10759 @section fieldmatch
10760
10761 Field matching filter for inverse telecine. It is meant to reconstruct the
10762 progressive frames from a telecined stream. The filter does not drop duplicated
10763 frames, so to achieve a complete inverse telecine @code{fieldmatch} needs to be
10764 followed by a decimation filter such as @ref{decimate} in the filtergraph.
10765
10766 The separation of the field matching and the decimation is notably motivated by
10767 the possibility of inserting a de-interlacing filter fallback between the two.
10768 If the source has mixed telecined and real interlaced content,
10769 @code{fieldmatch} will not be able to match fields for the interlaced parts.
10770 But these remaining combed frames will be marked as interlaced, and thus can be
10771 de-interlaced by a later filter such as @ref{yadif} before decimation.
10772
10773 In addition to the various configuration options, @code{fieldmatch} can take an
10774 optional second stream, activated through the @option{ppsrc} option. If
10775 enabled, the frames reconstruction will be based on the fields and frames from
10776 this second stream. This allows the first input to be pre-processed in order to
10777 help the various algorithms of the filter, while keeping the output lossless
10778 (assuming the fields are matched properly). Typically, a field-aware denoiser,
10779 or brightness/contrast adjustments can help.
10780
10781 Note that this filter uses the same algorithms as TIVTC/TFM (AviSynth project)
10782 and VIVTC/VFM (VapourSynth project). The later is a light clone of TFM from
10783 which @code{fieldmatch} is based on. While the semantic and usage are very
10784 close, some behaviour and options names can differ.
10785
10786 The @ref{decimate} filter currently only works for constant frame rate input.
10787 If your input has mixed telecined (30fps) and progressive content with a lower
10788 framerate like 24fps use the following filterchain to produce the necessary cfr
10789 stream: @code{dejudder,fps=30000/1001,fieldmatch,decimate}.
10790
10791 The filter accepts the following options:
10792
10793 @table @option
10794 @item order
10795 Specify the assumed field order of the input stream. Available values are:
10796
10797 @table @samp
10798 @item auto
10799 Auto detect parity (use FFmpeg's internal parity value).
10800 @item bff
10801 Assume bottom field first.
10802 @item tff
10803 Assume top field first.
10804 @end table
10805
10806 Note that it is sometimes recommended not to trust the parity announced by the
10807 stream.
10808
10809 Default value is @var{auto}.
10810
10811 @item mode
10812 Set the matching mode or strategy to use. @option{pc} mode is the safest in the
10813 sense that it won't risk creating jerkiness due to duplicate frames when
10814 possible, but if there are bad edits or blended fields it will end up
10815 outputting combed frames when a good match might actually exist. On the other
10816 hand, @option{pcn_ub} mode is the most risky in terms of creating jerkiness,
10817 but will almost always find a good frame if there is one. The other values are
10818 all somewhere in between @option{pc} and @option{pcn_ub} in terms of risking
10819 jerkiness and creating duplicate frames versus finding good matches in sections
10820 with bad edits, orphaned fields, blended fields, etc.
10821
10822 More details about p/c/n/u/b are available in @ref{p/c/n/u/b meaning} section.
10823
10824 Available values are:
10825
10826 @table @samp
10827 @item pc
10828 2-way matching (p/c)
10829 @item pc_n
10830 2-way matching, and trying 3rd match if still combed (p/c + n)
10831 @item pc_u
10832 2-way matching, and trying 3rd match (same order) if still combed (p/c + u)
10833 @item pc_n_ub
10834 2-way matching, trying 3rd match if still combed, and trying 4th/5th matches if
10835 still combed (p/c + n + u/b)
10836 @item pcn
10837 3-way matching (p/c/n)
10838 @item pcn_ub
10839 3-way matching, and trying 4th/5th matches if all 3 of the original matches are
10840 detected as combed (p/c/n + u/b)
10841 @end table
10842
10843 The parenthesis at the end indicate the matches that would be used for that
10844 mode assuming @option{order}=@var{tff} (and @option{field} on @var{auto} or
10845 @var{top}).
10846
10847 In terms of speed @option{pc} mode is by far the fastest and @option{pcn_ub} is
10848 the slowest.
10849
10850 Default value is @var{pc_n}.
10851
10852 @item ppsrc
10853 Mark the main input stream as a pre-processed input, and enable the secondary
10854 input stream as the clean source to pick the fields from. See the filter
10855 introduction for more details. It is similar to the @option{clip2} feature from
10856 VFM/TFM.
10857
10858 Default value is @code{0} (disabled).
10859
10860 @item field
10861 Set the field to match from. It is recommended to set this to the same value as
10862 @option{order} unless you experience matching failures with that setting. In
10863 certain circumstances changing the field that is used to match from can have a
10864 large impact on matching performance. Available values are:
10865
10866 @table @samp
10867 @item auto
10868 Automatic (same value as @option{order}).
10869 @item bottom
10870 Match from the bottom field.
10871 @item top
10872 Match from the top field.
10873 @end table
10874
10875 Default value is @var{auto}.
10876
10877 @item mchroma
10878 Set whether or not chroma is included during the match comparisons. In most
10879 cases it is recommended to leave this enabled. You should set this to @code{0}
10880 only if your clip has bad chroma problems such as heavy rainbowing or other
10881 artifacts. Setting this to @code{0} could also be used to speed things up at
10882 the cost of some accuracy.
10883
10884 Default value is @code{1}.
10885
10886 @item y0
10887 @item y1
10888 These define an exclusion band which excludes the lines between @option{y0} and
10889 @option{y1} from being included in the field matching decision. An exclusion
10890 band can be used to ignore subtitles, a logo, or other things that may
10891 interfere with the matching. @option{y0} sets the starting scan line and
10892 @option{y1} sets the ending line; all lines in between @option{y0} and
10893 @option{y1} (including @option{y0} and @option{y1}) will be ignored. Setting
10894 @option{y0} and @option{y1} to the same value will disable the feature.
10895 @option{y0} and @option{y1} defaults to @code{0}.
10896
10897 @item scthresh
10898 Set the scene change detection threshold as a percentage of maximum change on
10899 the luma plane. Good values are in the @code{[8.0, 14.0]} range. Scene change
10900 detection is only relevant in case @option{combmatch}=@var{sc}.  The range for
10901 @option{scthresh} is @code{[0.0, 100.0]}.
10902
10903 Default value is @code{12.0}.
10904
10905 @item combmatch
10906 When @option{combatch} is not @var{none}, @code{fieldmatch} will take into
10907 account the combed scores of matches when deciding what match to use as the
10908 final match. Available values are:
10909
10910 @table @samp
10911 @item none
10912 No final matching based on combed scores.
10913 @item sc
10914 Combed scores are only used when a scene change is detected.
10915 @item full
10916 Use combed scores all the time.
10917 @end table
10918
10919 Default is @var{sc}.
10920
10921 @item combdbg
10922 Force @code{fieldmatch} to calculate the combed metrics for certain matches and
10923 print them. This setting is known as @option{micout} in TFM/VFM vocabulary.
10924 Available values are:
10925
10926 @table @samp
10927 @item none
10928 No forced calculation.
10929 @item pcn
10930 Force p/c/n calculations.
10931 @item pcnub
10932 Force p/c/n/u/b calculations.
10933 @end table
10934
10935 Default value is @var{none}.
10936
10937 @item cthresh
10938 This is the area combing threshold used for combed frame detection. This
10939 essentially controls how "strong" or "visible" combing must be to be detected.
10940 Larger values mean combing must be more visible and smaller values mean combing
10941 can be less visible or strong and still be detected. Valid settings are from
10942 @code{-1} (every pixel will be detected as combed) to @code{255} (no pixel will
10943 be detected as combed). This is basically a pixel difference value. A good
10944 range is @code{[8, 12]}.
10945
10946 Default value is @code{9}.
10947
10948 @item chroma
10949 Sets whether or not chroma is considered in the combed frame decision.  Only
10950 disable this if your source has chroma problems (rainbowing, etc.) that are
10951 causing problems for the combed frame detection with chroma enabled. Actually,
10952 using @option{chroma}=@var{0} is usually more reliable, except for the case
10953 where there is chroma only combing in the source.
10954
10955 Default value is @code{0}.
10956
10957 @item blockx
10958 @item blocky
10959 Respectively set the x-axis and y-axis size of the window used during combed
10960 frame detection. This has to do with the size of the area in which
10961 @option{combpel} pixels are required to be detected as combed for a frame to be
10962 declared combed. See the @option{combpel} parameter description for more info.
10963 Possible values are any number that is a power of 2 starting at 4 and going up
10964 to 512.
10965
10966 Default value is @code{16}.
10967
10968 @item combpel
10969 The number of combed pixels inside any of the @option{blocky} by
10970 @option{blockx} size blocks on the frame for the frame to be detected as
10971 combed. While @option{cthresh} controls how "visible" the combing must be, this
10972 setting controls "how much" combing there must be in any localized area (a
10973 window defined by the @option{blockx} and @option{blocky} settings) on the
10974 frame. Minimum value is @code{0} and maximum is @code{blocky x blockx} (at
10975 which point no frames will ever be detected as combed). This setting is known
10976 as @option{MI} in TFM/VFM vocabulary.
10977
10978 Default value is @code{80}.
10979 @end table
10980
10981 @anchor{p/c/n/u/b meaning}
10982 @subsection p/c/n/u/b meaning
10983
10984 @subsubsection p/c/n
10985
10986 We assume the following telecined stream:
10987
10988 @example
10989 Top fields:     1 2 2 3 4
10990 Bottom fields:  1 2 3 4 4
10991 @end example
10992
10993 The numbers correspond to the progressive frame the fields relate to. Here, the
10994 first two frames are progressive, the 3rd and 4th are combed, and so on.
10995
10996 When @code{fieldmatch} is configured to run a matching from bottom
10997 (@option{field}=@var{bottom}) this is how this input stream get transformed:
10998
10999 @example
11000 Input stream:
11001                 T     1 2 2 3 4
11002                 B     1 2 3 4 4   <-- matching reference
11003
11004 Matches:              c c n n c
11005
11006 Output stream:
11007                 T     1 2 3 4 4
11008                 B     1 2 3 4 4
11009 @end example
11010
11011 As a result of the field matching, we can see that some frames get duplicated.
11012 To perform a complete inverse telecine, you need to rely on a decimation filter
11013 after this operation. See for instance the @ref{decimate} filter.
11014
11015 The same operation now matching from top fields (@option{field}=@var{top})
11016 looks like this:
11017
11018 @example
11019 Input stream:
11020                 T     1 2 2 3 4   <-- matching reference
11021                 B     1 2 3 4 4
11022
11023 Matches:              c c p p c
11024
11025 Output stream:
11026                 T     1 2 2 3 4
11027                 B     1 2 2 3 4
11028 @end example
11029
11030 In these examples, we can see what @var{p}, @var{c} and @var{n} mean;
11031 basically, they refer to the frame and field of the opposite parity:
11032
11033 @itemize
11034 @item @var{p} matches the field of the opposite parity in the previous frame
11035 @item @var{c} matches the field of the opposite parity in the current frame
11036 @item @var{n} matches the field of the opposite parity in the next frame
11037 @end itemize
11038
11039 @subsubsection u/b
11040
11041 The @var{u} and @var{b} matching are a bit special in the sense that they match
11042 from the opposite parity flag. In the following examples, we assume that we are
11043 currently matching the 2nd frame (Top:2, bottom:2). According to the match, a
11044 'x' is placed above and below each matched fields.
11045
11046 With bottom matching (@option{field}=@var{bottom}):
11047 @example
11048 Match:           c         p           n          b          u
11049
11050                  x       x               x        x          x
11051   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
11052   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
11053                  x         x           x        x              x
11054
11055 Output frames:
11056                  2          1          2          2          2
11057                  2          2          2          1          3
11058 @end example
11059
11060 With top matching (@option{field}=@var{top}):
11061 @example
11062 Match:           c         p           n          b          u
11063
11064                  x         x           x        x              x
11065   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
11066   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
11067                  x       x               x        x          x
11068
11069 Output frames:
11070                  2          2          2          1          2
11071                  2          1          3          2          2
11072 @end example
11073
11074 @subsection Examples
11075
11076 Simple IVTC of a top field first telecined stream:
11077 @example
11078 fieldmatch=order=tff:combmatch=none, decimate
11079 @end example
11080
11081 Advanced IVTC, with fallback on @ref{yadif} for still combed frames:
11082 @example
11083 fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
11084 @end example
11085
11086 @section fieldorder
11087
11088 Transform the field order of the input video.
11089
11090 It accepts the following parameters:
11091
11092 @table @option
11093
11094 @item order
11095 The output field order. Valid values are @var{tff} for top field first or @var{bff}
11096 for bottom field first.
11097 @end table
11098
11099 The default value is @samp{tff}.
11100
11101 The transformation is done by shifting the picture content up or down
11102 by one line, and filling the remaining line with appropriate picture content.
11103 This method is consistent with most broadcast field order converters.
11104
11105 If the input video is not flagged as being interlaced, or it is already
11106 flagged as being of the required output field order, then this filter does
11107 not alter the incoming video.
11108
11109 It is very useful when converting to or from PAL DV material,
11110 which is bottom field first.
11111
11112 For example:
11113 @example
11114 ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
11115 @end example
11116
11117 @section fifo, afifo
11118
11119 Buffer input images and send them when they are requested.
11120
11121 It is mainly useful when auto-inserted by the libavfilter
11122 framework.
11123
11124 It does not take parameters.
11125
11126 @section fillborders
11127
11128 Fill borders of the input video, without changing video stream dimensions.
11129 Sometimes video can have garbage at the four edges and you may not want to
11130 crop video input to keep size multiple of some number.
11131
11132 This filter accepts the following options:
11133
11134 @table @option
11135 @item left
11136 Number of pixels to fill from left border.
11137
11138 @item right
11139 Number of pixels to fill from right border.
11140
11141 @item top
11142 Number of pixels to fill from top border.
11143
11144 @item bottom
11145 Number of pixels to fill from bottom border.
11146
11147 @item mode
11148 Set fill mode.
11149
11150 It accepts the following values:
11151 @table @samp
11152 @item smear
11153 fill pixels using outermost pixels
11154
11155 @item mirror
11156 fill pixels using mirroring
11157
11158 @item fixed
11159 fill pixels with constant value
11160 @end table
11161
11162 Default is @var{smear}.
11163
11164 @item color
11165 Set color for pixels in fixed mode. Default is @var{black}.
11166 @end table
11167
11168 @subsection Commands
11169 This filter supports same @ref{commands} as options.
11170 The command accepts the same syntax of the corresponding option.
11171
11172 If the specified expression is not valid, it is kept at its current
11173 value.
11174
11175 @section find_rect
11176
11177 Find a rectangular object
11178
11179 It accepts the following options:
11180
11181 @table @option
11182 @item object
11183 Filepath of the object image, needs to be in gray8.
11184
11185 @item threshold
11186 Detection threshold, default is 0.5.
11187
11188 @item mipmaps
11189 Number of mipmaps, default is 3.
11190
11191 @item xmin, ymin, xmax, ymax
11192 Specifies the rectangle in which to search.
11193 @end table
11194
11195 @subsection Examples
11196
11197 @itemize
11198 @item
11199 Cover a rectangular object by the supplied image of a given video using @command{ffmpeg}:
11200 @example
11201 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
11202 @end example
11203 @end itemize
11204
11205 @section floodfill
11206
11207 Flood area with values of same pixel components with another values.
11208
11209 It accepts the following options:
11210 @table @option
11211 @item x
11212 Set pixel x coordinate.
11213
11214 @item y
11215 Set pixel y coordinate.
11216
11217 @item s0
11218 Set source #0 component value.
11219
11220 @item s1
11221 Set source #1 component value.
11222
11223 @item s2
11224 Set source #2 component value.
11225
11226 @item s3
11227 Set source #3 component value.
11228
11229 @item d0
11230 Set destination #0 component value.
11231
11232 @item d1
11233 Set destination #1 component value.
11234
11235 @item d2
11236 Set destination #2 component value.
11237
11238 @item d3
11239 Set destination #3 component value.
11240 @end table
11241
11242 @anchor{format}
11243 @section format
11244
11245 Convert the input video to one of the specified pixel formats.
11246 Libavfilter will try to pick one that is suitable as input to
11247 the next filter.
11248
11249 It accepts the following parameters:
11250 @table @option
11251
11252 @item pix_fmts
11253 A '|'-separated list of pixel format names, such as
11254 "pix_fmts=yuv420p|monow|rgb24".
11255
11256 @end table
11257
11258 @subsection Examples
11259
11260 @itemize
11261 @item
11262 Convert the input video to the @var{yuv420p} format
11263 @example
11264 format=pix_fmts=yuv420p
11265 @end example
11266
11267 Convert the input video to any of the formats in the list
11268 @example
11269 format=pix_fmts=yuv420p|yuv444p|yuv410p
11270 @end example
11271 @end itemize
11272
11273 @anchor{fps}
11274 @section fps
11275
11276 Convert the video to specified constant frame rate by duplicating or dropping
11277 frames as necessary.
11278
11279 It accepts the following parameters:
11280 @table @option
11281
11282 @item fps
11283 The desired output frame rate. The default is @code{25}.
11284
11285 @item start_time
11286 Assume the first PTS should be the given value, in seconds. This allows for
11287 padding/trimming at the start of stream. By default, no assumption is made
11288 about the first frame's expected PTS, so no padding or trimming is done.
11289 For example, this could be set to 0 to pad the beginning with duplicates of
11290 the first frame if a video stream starts after the audio stream or to trim any
11291 frames with a negative PTS.
11292
11293 @item round
11294 Timestamp (PTS) rounding method.
11295
11296 Possible values are:
11297 @table @option
11298 @item zero
11299 round towards 0
11300 @item inf
11301 round away from 0
11302 @item down
11303 round towards -infinity
11304 @item up
11305 round towards +infinity
11306 @item near
11307 round to nearest
11308 @end table
11309 The default is @code{near}.
11310
11311 @item eof_action
11312 Action performed when reading the last frame.
11313
11314 Possible values are:
11315 @table @option
11316 @item round
11317 Use same timestamp rounding method as used for other frames.
11318 @item pass
11319 Pass through last frame if input duration has not been reached yet.
11320 @end table
11321 The default is @code{round}.
11322
11323 @end table
11324
11325 Alternatively, the options can be specified as a flat string:
11326 @var{fps}[:@var{start_time}[:@var{round}]].
11327
11328 See also the @ref{setpts} filter.
11329
11330 @subsection Examples
11331
11332 @itemize
11333 @item
11334 A typical usage in order to set the fps to 25:
11335 @example
11336 fps=fps=25
11337 @end example
11338
11339 @item
11340 Sets the fps to 24, using abbreviation and rounding method to round to nearest:
11341 @example
11342 fps=fps=film:round=near
11343 @end example
11344 @end itemize
11345
11346 @section framepack
11347
11348 Pack two different video streams into a stereoscopic video, setting proper
11349 metadata on supported codecs. The two views should have the same size and
11350 framerate and processing will stop when the shorter video ends. Please note
11351 that you may conveniently adjust view properties with the @ref{scale} and
11352 @ref{fps} filters.
11353
11354 It accepts the following parameters:
11355 @table @option
11356
11357 @item format
11358 The desired packing format. Supported values are:
11359
11360 @table @option
11361
11362 @item sbs
11363 The views are next to each other (default).
11364
11365 @item tab
11366 The views are on top of each other.
11367
11368 @item lines
11369 The views are packed by line.
11370
11371 @item columns
11372 The views are packed by column.
11373
11374 @item frameseq
11375 The views are temporally interleaved.
11376
11377 @end table
11378
11379 @end table
11380
11381 Some examples:
11382
11383 @example
11384 # Convert left and right views into a frame-sequential video
11385 ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT
11386
11387 # Convert views into a side-by-side video with the same output resolution as the input
11388 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
11389 @end example
11390
11391 @section framerate
11392
11393 Change the frame rate by interpolating new video output frames from the source
11394 frames.
11395
11396 This filter is not designed to function correctly with interlaced media. If
11397 you wish to change the frame rate of interlaced media then you are required
11398 to deinterlace before this filter and re-interlace after this filter.
11399
11400 A description of the accepted options follows.
11401
11402 @table @option
11403 @item fps
11404 Specify the output frames per second. This option can also be specified
11405 as a value alone. The default is @code{50}.
11406
11407 @item interp_start
11408 Specify the start of a range where the output frame will be created as a
11409 linear interpolation of two frames. The range is [@code{0}-@code{255}],
11410 the default is @code{15}.
11411
11412 @item interp_end
11413 Specify the end of a range where the output frame will be created as a
11414 linear interpolation of two frames. The range is [@code{0}-@code{255}],
11415 the default is @code{240}.
11416
11417 @item scene
11418 Specify the level at which a scene change is detected as a value between
11419 0 and 100 to indicate a new scene; a low value reflects a low
11420 probability for the current frame to introduce a new scene, while a higher
11421 value means the current frame is more likely to be one.
11422 The default is @code{8.2}.
11423
11424 @item flags
11425 Specify flags influencing the filter process.
11426
11427 Available value for @var{flags} is:
11428
11429 @table @option
11430 @item scene_change_detect, scd
11431 Enable scene change detection using the value of the option @var{scene}.
11432 This flag is enabled by default.
11433 @end table
11434 @end table
11435
11436 @section framestep
11437
11438 Select one frame every N-th frame.
11439
11440 This filter accepts the following option:
11441 @table @option
11442 @item step
11443 Select frame after every @code{step} frames.
11444 Allowed values are positive integers higher than 0. Default value is @code{1}.
11445 @end table
11446
11447 @section freezedetect
11448
11449 Detect frozen video.
11450
11451 This filter logs a message and sets frame metadata when it detects that the
11452 input video has no significant change in content during a specified duration.
11453 Video freeze detection calculates the mean average absolute difference of all
11454 the components of video frames and compares it to a noise floor.
11455
11456 The printed times and duration are expressed in seconds. The
11457 @code{lavfi.freezedetect.freeze_start} metadata key is set on the first frame
11458 whose timestamp equals or exceeds the detection duration and it contains the
11459 timestamp of the first frame of the freeze. The
11460 @code{lavfi.freezedetect.freeze_duration} and
11461 @code{lavfi.freezedetect.freeze_end} metadata keys are set on the first frame
11462 after the freeze.
11463
11464 The filter accepts the following options:
11465
11466 @table @option
11467 @item noise, n
11468 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
11469 specified value) or as a difference ratio between 0 and 1. Default is -60dB, or
11470 0.001.
11471
11472 @item duration, d
11473 Set freeze duration until notification (default is 2 seconds).
11474 @end table
11475
11476 @section freezeframes
11477
11478 Freeze video frames.
11479
11480 This filter freezes video frames using frame from 2nd input.
11481
11482 The filter accepts the following options:
11483
11484 @table @option
11485 @item first
11486 Set number of first frame from which to start freeze.
11487
11488 @item last
11489 Set number of last frame from which to end freeze.
11490
11491 @item replace
11492 Set number of frame from 2nd input which will be used instead of replaced frames.
11493 @end table
11494
11495 @anchor{frei0r}
11496 @section frei0r
11497
11498 Apply a frei0r effect to the input video.
11499
11500 To enable the compilation of this filter, you need to install the frei0r
11501 header and configure FFmpeg with @code{--enable-frei0r}.
11502
11503 It accepts the following parameters:
11504
11505 @table @option
11506
11507 @item filter_name
11508 The name of the frei0r effect to load. If the environment variable
11509 @env{FREI0R_PATH} is defined, the frei0r effect is searched for in each of the
11510 directories specified by the colon-separated list in @env{FREI0R_PATH}.
11511 Otherwise, the standard frei0r paths are searched, in this order:
11512 @file{HOME/.frei0r-1/lib/}, @file{/usr/local/lib/frei0r-1/},
11513 @file{/usr/lib/frei0r-1/}.
11514
11515 @item filter_params
11516 A '|'-separated list of parameters to pass to the frei0r effect.
11517
11518 @end table
11519
11520 A frei0r effect parameter can be a boolean (its value is either
11521 "y" or "n"), a double, a color (specified as
11522 @var{R}/@var{G}/@var{B}, where @var{R}, @var{G}, and @var{B} are floating point
11523 numbers between 0.0 and 1.0, inclusive) or a color description as specified in the
11524 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils},
11525 a position (specified as @var{X}/@var{Y}, where
11526 @var{X} and @var{Y} are floating point numbers) and/or a string.
11527
11528 The number and types of parameters depend on the loaded effect. If an
11529 effect parameter is not specified, the default value is set.
11530
11531 @subsection Examples
11532
11533 @itemize
11534 @item
11535 Apply the distort0r effect, setting the first two double parameters:
11536 @example
11537 frei0r=filter_name=distort0r:filter_params=0.5|0.01
11538 @end example
11539
11540 @item
11541 Apply the colordistance effect, taking a color as the first parameter:
11542 @example
11543 frei0r=colordistance:0.2/0.3/0.4
11544 frei0r=colordistance:violet
11545 frei0r=colordistance:0x112233
11546 @end example
11547
11548 @item
11549 Apply the perspective effect, specifying the top left and top right image
11550 positions:
11551 @example
11552 frei0r=perspective:0.2/0.2|0.8/0.2
11553 @end example
11554 @end itemize
11555
11556 For more information, see
11557 @url{http://frei0r.dyne.org}
11558
11559 @section fspp
11560
11561 Apply fast and simple postprocessing. It is a faster version of @ref{spp}.
11562
11563 It splits (I)DCT into horizontal/vertical passes. Unlike the simple post-
11564 processing filter, one of them is performed once per block, not per pixel.
11565 This allows for much higher speed.
11566
11567 The filter accepts the following options:
11568
11569 @table @option
11570 @item quality
11571 Set quality. This option defines the number of levels for averaging. It accepts
11572 an integer in the range 4-5. Default value is @code{4}.
11573
11574 @item qp
11575 Force a constant quantization parameter. It accepts an integer in range 0-63.
11576 If not set, the filter will use the QP from the video stream (if available).
11577
11578 @item strength
11579 Set filter strength. It accepts an integer in range -15 to 32. Lower values mean
11580 more details but also more artifacts, while higher values make the image smoother
11581 but also blurrier. Default value is @code{0} âˆ’ PSNR optimal.
11582
11583 @item use_bframe_qp
11584 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
11585 option may cause flicker since the B-Frames have often larger QP. Default is
11586 @code{0} (not enabled).
11587
11588 @end table
11589
11590 @section gblur
11591
11592 Apply Gaussian blur filter.
11593
11594 The filter accepts the following options:
11595
11596 @table @option
11597 @item sigma
11598 Set horizontal sigma, standard deviation of Gaussian blur. Default is @code{0.5}.
11599
11600 @item steps
11601 Set number of steps for Gaussian approximation. Default is @code{1}.
11602
11603 @item planes
11604 Set which planes to filter. By default all planes are filtered.
11605
11606 @item sigmaV
11607 Set vertical sigma, if negative it will be same as @code{sigma}.
11608 Default is @code{-1}.
11609 @end table
11610
11611 @subsection Commands
11612 This filter supports same commands as options.
11613 The command accepts the same syntax of the corresponding option.
11614
11615 If the specified expression is not valid, it is kept at its current
11616 value.
11617
11618 @section geq
11619
11620 Apply generic equation to each pixel.
11621
11622 The filter accepts the following options:
11623
11624 @table @option
11625 @item lum_expr, lum
11626 Set the luminance expression.
11627 @item cb_expr, cb
11628 Set the chrominance blue expression.
11629 @item cr_expr, cr
11630 Set the chrominance red expression.
11631 @item alpha_expr, a
11632 Set the alpha expression.
11633 @item red_expr, r
11634 Set the red expression.
11635 @item green_expr, g
11636 Set the green expression.
11637 @item blue_expr, b
11638 Set the blue expression.
11639 @end table
11640
11641 The colorspace is selected according to the specified options. If one
11642 of the @option{lum_expr}, @option{cb_expr}, or @option{cr_expr}
11643 options is specified, the filter will automatically select a YCbCr
11644 colorspace. If one of the @option{red_expr}, @option{green_expr}, or
11645 @option{blue_expr} options is specified, it will select an RGB
11646 colorspace.
11647
11648 If one of the chrominance expression is not defined, it falls back on the other
11649 one. If no alpha expression is specified it will evaluate to opaque value.
11650 If none of chrominance expressions are specified, they will evaluate
11651 to the luminance expression.
11652
11653 The expressions can use the following variables and functions:
11654
11655 @table @option
11656 @item N
11657 The sequential number of the filtered frame, starting from @code{0}.
11658
11659 @item X
11660 @item Y
11661 The coordinates of the current sample.
11662
11663 @item W
11664 @item H
11665 The width and height of the image.
11666
11667 @item SW
11668 @item SH
11669 Width and height scale depending on the currently filtered plane. It is the
11670 ratio between the corresponding luma plane number of pixels and the current
11671 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
11672 @code{0.5,0.5} for chroma planes.
11673
11674 @item T
11675 Time of the current frame, expressed in seconds.
11676
11677 @item p(x, y)
11678 Return the value of the pixel at location (@var{x},@var{y}) of the current
11679 plane.
11680
11681 @item lum(x, y)
11682 Return the value of the pixel at location (@var{x},@var{y}) of the luminance
11683 plane.
11684
11685 @item cb(x, y)
11686 Return the value of the pixel at location (@var{x},@var{y}) of the
11687 blue-difference chroma plane. Return 0 if there is no such plane.
11688
11689 @item cr(x, y)
11690 Return the value of the pixel at location (@var{x},@var{y}) of the
11691 red-difference chroma plane. Return 0 if there is no such plane.
11692
11693 @item r(x, y)
11694 @item g(x, y)
11695 @item b(x, y)
11696 Return the value of the pixel at location (@var{x},@var{y}) of the
11697 red/green/blue component. Return 0 if there is no such component.
11698
11699 @item alpha(x, y)
11700 Return the value of the pixel at location (@var{x},@var{y}) of the alpha
11701 plane. Return 0 if there is no such plane.
11702
11703 @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)
11704 Sum of sample values in the rectangle from (0,0) to (x,y), this allows obtaining
11705 sums of samples within a rectangle. See the functions without the sum postfix.
11706
11707 @item interpolation
11708 Set one of interpolation methods:
11709 @table @option
11710 @item nearest, n
11711 @item bilinear, b
11712 @end table
11713 Default is bilinear.
11714 @end table
11715
11716 For functions, if @var{x} and @var{y} are outside the area, the value will be
11717 automatically clipped to the closer edge.
11718
11719 Please note that this filter can use multiple threads in which case each slice
11720 will have its own expression state. If you want to use only a single expression
11721 state because your expressions depend on previous state then you should limit
11722 the number of filter threads to 1.
11723
11724 @subsection Examples
11725
11726 @itemize
11727 @item
11728 Flip the image horizontally:
11729 @example
11730 geq=p(W-X\,Y)
11731 @end example
11732
11733 @item
11734 Generate a bidimensional sine wave, with angle @code{PI/3} and a
11735 wavelength of 100 pixels:
11736 @example
11737 geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
11738 @end example
11739
11740 @item
11741 Generate a fancy enigmatic moving light:
11742 @example
11743 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
11744 @end example
11745
11746 @item
11747 Generate a quick emboss effect:
11748 @example
11749 format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
11750 @end example
11751
11752 @item
11753 Modify RGB components depending on pixel position:
11754 @example
11755 geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
11756 @end example
11757
11758 @item
11759 Create a radial gradient that is the same size as the input (also see
11760 the @ref{vignette} filter):
11761 @example
11762 geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
11763 @end example
11764 @end itemize
11765
11766 @section gradfun
11767
11768 Fix the banding artifacts that are sometimes introduced into nearly flat
11769 regions by truncation to 8-bit color depth.
11770 Interpolate the gradients that should go where the bands are, and
11771 dither them.
11772
11773 It is designed for playback only.  Do not use it prior to
11774 lossy compression, because compression tends to lose the dither and
11775 bring back the bands.
11776
11777 It accepts the following parameters:
11778
11779 @table @option
11780
11781 @item strength
11782 The maximum amount by which the filter will change any one pixel. This is also
11783 the threshold for detecting nearly flat regions. Acceptable values range from
11784 .51 to 64; the default value is 1.2. Out-of-range values will be clipped to the
11785 valid range.
11786
11787 @item radius
11788 The neighborhood to fit the gradient to. A larger radius makes for smoother
11789 gradients, but also prevents the filter from modifying the pixels near detailed
11790 regions. Acceptable values are 8-32; the default value is 16. Out-of-range
11791 values will be clipped to the valid range.
11792
11793 @end table
11794
11795 Alternatively, the options can be specified as a flat string:
11796 @var{strength}[:@var{radius}]
11797
11798 @subsection Examples
11799
11800 @itemize
11801 @item
11802 Apply the filter with a @code{3.5} strength and radius of @code{8}:
11803 @example
11804 gradfun=3.5:8
11805 @end example
11806
11807 @item
11808 Specify radius, omitting the strength (which will fall-back to the default
11809 value):
11810 @example
11811 gradfun=radius=8
11812 @end example
11813
11814 @end itemize
11815
11816 @anchor{graphmonitor}
11817 @section graphmonitor
11818 Show various filtergraph stats.
11819
11820 With this filter one can debug complete filtergraph.
11821 Especially issues with links filling with queued frames.
11822
11823 The filter accepts the following options:
11824
11825 @table @option
11826 @item size, s
11827 Set video output size. Default is @var{hd720}.
11828
11829 @item opacity, o
11830 Set video opacity. Default is @var{0.9}. Allowed range is from @var{0} to @var{1}.
11831
11832 @item mode, m
11833 Set output mode, can be @var{fulll} or @var{compact}.
11834 In @var{compact} mode only filters with some queued frames have displayed stats.
11835
11836 @item flags, f
11837 Set flags which enable which stats are shown in video.
11838
11839 Available values for flags are:
11840 @table @samp
11841 @item queue
11842 Display number of queued frames in each link.
11843
11844 @item frame_count_in
11845 Display number of frames taken from filter.
11846
11847 @item frame_count_out
11848 Display number of frames given out from filter.
11849
11850 @item pts
11851 Display current filtered frame pts.
11852
11853 @item time
11854 Display current filtered frame time.
11855
11856 @item timebase
11857 Display time base for filter link.
11858
11859 @item format
11860 Display used format for filter link.
11861
11862 @item size
11863 Display video size or number of audio channels in case of audio used by filter link.
11864
11865 @item rate
11866 Display video frame rate or sample rate in case of audio used by filter link.
11867 @end table
11868
11869 @item rate, r
11870 Set upper limit for video rate of output stream, Default value is @var{25}.
11871 This guarantee that output video frame rate will not be higher than this value.
11872 @end table
11873
11874 @section greyedge
11875 A color constancy variation filter which estimates scene illumination via grey edge algorithm
11876 and corrects the scene colors accordingly.
11877
11878 See: @url{https://staff.science.uva.nl/th.gevers/pub/GeversTIP07.pdf}
11879
11880 The filter accepts the following options:
11881
11882 @table @option
11883 @item difford
11884 The order of differentiation to be applied on the scene. Must be chosen in the range
11885 [0,2] and default value is 1.
11886
11887 @item minknorm
11888 The Minkowski parameter to be used for calculating the Minkowski distance. Must
11889 be chosen in the range [0,20] and default value is 1. Set to 0 for getting
11890 max value instead of calculating Minkowski distance.
11891
11892 @item sigma
11893 The standard deviation of Gaussian blur to be applied on the scene. Must be
11894 chosen in the range [0,1024.0] and default value = 1. floor( @var{sigma} * break_off_sigma(3) )
11895 can't be equal to 0 if @var{difford} is greater than 0.
11896 @end table
11897
11898 @subsection Examples
11899 @itemize
11900
11901 @item
11902 Grey Edge:
11903 @example
11904 greyedge=difford=1:minknorm=5:sigma=2
11905 @end example
11906
11907 @item
11908 Max Edge:
11909 @example
11910 greyedge=difford=1:minknorm=0:sigma=2
11911 @end example
11912
11913 @end itemize
11914
11915 @anchor{haldclut}
11916 @section haldclut
11917
11918 Apply a Hald CLUT to a video stream.
11919
11920 First input is the video stream to process, and second one is the Hald CLUT.
11921 The Hald CLUT input can be a simple picture or a complete video stream.
11922
11923 The filter accepts the following options:
11924
11925 @table @option
11926 @item shortest
11927 Force termination when the shortest input terminates. Default is @code{0}.
11928 @item repeatlast
11929 Continue applying the last CLUT after the end of the stream. A value of
11930 @code{0} disable the filter after the last frame of the CLUT is reached.
11931 Default is @code{1}.
11932 @end table
11933
11934 @code{haldclut} also has the same interpolation options as @ref{lut3d} (both
11935 filters share the same internals).
11936
11937 This filter also supports the @ref{framesync} options.
11938
11939 More information about the Hald CLUT can be found on Eskil Steenberg's website
11940 (Hald CLUT author) at @url{http://www.quelsolaar.com/technology/clut.html}.
11941
11942 @subsection Workflow examples
11943
11944 @subsubsection Hald CLUT video stream
11945
11946 Generate an identity Hald CLUT stream altered with various effects:
11947 @example
11948 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
11949 @end example
11950
11951 Note: make sure you use a lossless codec.
11952
11953 Then use it with @code{haldclut} to apply it on some random stream:
11954 @example
11955 ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
11956 @end example
11957
11958 The Hald CLUT will be applied to the 10 first seconds (duration of
11959 @file{clut.nut}), then the latest picture of that CLUT stream will be applied
11960 to the remaining frames of the @code{mandelbrot} stream.
11961
11962 @subsubsection Hald CLUT with preview
11963
11964 A Hald CLUT is supposed to be a squared image of @code{Level*Level*Level} by
11965 @code{Level*Level*Level} pixels. For a given Hald CLUT, FFmpeg will select the
11966 biggest possible square starting at the top left of the picture. The remaining
11967 padding pixels (bottom or right) will be ignored. This area can be used to add
11968 a preview of the Hald CLUT.
11969
11970 Typically, the following generated Hald CLUT will be supported by the
11971 @code{haldclut} filter:
11972
11973 @example
11974 ffmpeg -f lavfi -i @ref{haldclutsrc}=8 -vf "
11975    pad=iw+320 [padded_clut];
11976    smptebars=s=320x256, split [a][b];
11977    [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
11978    [main][b] overlay=W-320" -frames:v 1 clut.png
11979 @end example
11980
11981 It contains the original and a preview of the effect of the CLUT: SMPTE color
11982 bars are displayed on the right-top, and below the same color bars processed by
11983 the color changes.
11984
11985 Then, the effect of this Hald CLUT can be visualized with:
11986 @example
11987 ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
11988 @end example
11989
11990 @section hflip
11991
11992 Flip the input video horizontally.
11993
11994 For example, to horizontally flip the input video with @command{ffmpeg}:
11995 @example
11996 ffmpeg -i in.avi -vf "hflip" out.avi
11997 @end example
11998
11999 @section histeq
12000 This filter applies a global color histogram equalization on a
12001 per-frame basis.
12002
12003 It can be used to correct video that has a compressed range of pixel
12004 intensities.  The filter redistributes the pixel intensities to
12005 equalize their distribution across the intensity range. It may be
12006 viewed as an "automatically adjusting contrast filter". This filter is
12007 useful only for correcting degraded or poorly captured source
12008 video.
12009
12010 The filter accepts the following options:
12011
12012 @table @option
12013 @item strength
12014 Determine the amount of equalization to be applied.  As the strength
12015 is reduced, the distribution of pixel intensities more-and-more
12016 approaches that of the input frame. The value must be a float number
12017 in the range [0,1] and defaults to 0.200.
12018
12019 @item intensity
12020 Set the maximum intensity that can generated and scale the output
12021 values appropriately.  The strength should be set as desired and then
12022 the intensity can be limited if needed to avoid washing-out. The value
12023 must be a float number in the range [0,1] and defaults to 0.210.
12024
12025 @item antibanding
12026 Set the antibanding level. If enabled the filter will randomly vary
12027 the luminance of output pixels by a small amount to avoid banding of
12028 the histogram. Possible values are @code{none}, @code{weak} or
12029 @code{strong}. It defaults to @code{none}.
12030 @end table
12031
12032 @anchor{histogram}
12033 @section histogram
12034
12035 Compute and draw a color distribution histogram for the input video.
12036
12037 The computed histogram is a representation of the color component
12038 distribution in an image.
12039
12040 Standard histogram displays the color components distribution in an image.
12041 Displays color graph for each color component. Shows distribution of
12042 the Y, U, V, A or R, G, B components, depending on input format, in the
12043 current frame. Below each graph a color component scale meter is shown.
12044
12045 The filter accepts the following options:
12046
12047 @table @option
12048 @item level_height
12049 Set height of level. Default value is @code{200}.
12050 Allowed range is [50, 2048].
12051
12052 @item scale_height
12053 Set height of color scale. Default value is @code{12}.
12054 Allowed range is [0, 40].
12055
12056 @item display_mode
12057 Set display mode.
12058 It accepts the following values:
12059 @table @samp
12060 @item stack
12061 Per color component graphs are placed below each other.
12062
12063 @item parade
12064 Per color component graphs are placed side by side.
12065
12066 @item overlay
12067 Presents information identical to that in the @code{parade}, except
12068 that the graphs representing color components are superimposed directly
12069 over one another.
12070 @end table
12071 Default is @code{stack}.
12072
12073 @item levels_mode
12074 Set mode. Can be either @code{linear}, or @code{logarithmic}.
12075 Default is @code{linear}.
12076
12077 @item components
12078 Set what color components to display.
12079 Default is @code{7}.
12080
12081 @item fgopacity
12082 Set foreground opacity. Default is @code{0.7}.
12083
12084 @item bgopacity
12085 Set background opacity. Default is @code{0.5}.
12086 @end table
12087
12088 @subsection Examples
12089
12090 @itemize
12091
12092 @item
12093 Calculate and draw histogram:
12094 @example
12095 ffplay -i input -vf histogram
12096 @end example
12097
12098 @end itemize
12099
12100 @anchor{hqdn3d}
12101 @section hqdn3d
12102
12103 This is a high precision/quality 3d denoise filter. It aims to reduce
12104 image noise, producing smooth images and making still images really
12105 still. It should enhance compressibility.
12106
12107 It accepts the following optional parameters:
12108
12109 @table @option
12110 @item luma_spatial
12111 A non-negative floating point number which specifies spatial luma strength.
12112 It defaults to 4.0.
12113
12114 @item chroma_spatial
12115 A non-negative floating point number which specifies spatial chroma strength.
12116 It defaults to 3.0*@var{luma_spatial}/4.0.
12117
12118 @item luma_tmp
12119 A floating point number which specifies luma temporal strength. It defaults to
12120 6.0*@var{luma_spatial}/4.0.
12121
12122 @item chroma_tmp
12123 A floating point number which specifies chroma temporal strength. It defaults to
12124 @var{luma_tmp}*@var{chroma_spatial}/@var{luma_spatial}.
12125 @end table
12126
12127 @subsection Commands
12128 This filter supports same @ref{commands} as options.
12129 The command accepts the same syntax of the corresponding option.
12130
12131 If the specified expression is not valid, it is kept at its current
12132 value.
12133
12134 @anchor{hwdownload}
12135 @section hwdownload
12136
12137 Download hardware frames to system memory.
12138
12139 The input must be in hardware frames, and the output a non-hardware format.
12140 Not all formats will be supported on the output - it may be necessary to insert
12141 an additional @option{format} filter immediately following in the graph to get
12142 the output in a supported format.
12143
12144 @section hwmap
12145
12146 Map hardware frames to system memory or to another device.
12147
12148 This filter has several different modes of operation; which one is used depends
12149 on the input and output formats:
12150 @itemize
12151 @item
12152 Hardware frame input, normal frame output
12153
12154 Map the input frames to system memory and pass them to the output.  If the
12155 original hardware frame is later required (for example, after overlaying
12156 something else on part of it), the @option{hwmap} filter can be used again
12157 in the next mode to retrieve it.
12158 @item
12159 Normal frame input, hardware frame output
12160
12161 If the input is actually a software-mapped hardware frame, then unmap it -
12162 that is, return the original hardware frame.
12163
12164 Otherwise, a device must be provided.  Create new hardware surfaces on that
12165 device for the output, then map them back to the software format at the input
12166 and give those frames to the preceding filter.  This will then act like the
12167 @option{hwupload} filter, but may be able to avoid an additional copy when
12168 the input is already in a compatible format.
12169 @item
12170 Hardware frame input and output
12171
12172 A device must be supplied for the output, either directly or with the
12173 @option{derive_device} option.  The input and output devices must be of
12174 different types and compatible - the exact meaning of this is
12175 system-dependent, but typically it means that they must refer to the same
12176 underlying hardware context (for example, refer to the same graphics card).
12177
12178 If the input frames were originally created on the output device, then unmap
12179 to retrieve the original frames.
12180
12181 Otherwise, map the frames to the output device - create new hardware frames
12182 on the output corresponding to the frames on the input.
12183 @end itemize
12184
12185 The following additional parameters are accepted:
12186
12187 @table @option
12188 @item mode
12189 Set the frame mapping mode.  Some combination of:
12190 @table @var
12191 @item read
12192 The mapped frame should be readable.
12193 @item write
12194 The mapped frame should be writeable.
12195 @item overwrite
12196 The mapping will always overwrite the entire frame.
12197
12198 This may improve performance in some cases, as the original contents of the
12199 frame need not be loaded.
12200 @item direct
12201 The mapping must not involve any copying.
12202
12203 Indirect mappings to copies of frames are created in some cases where either
12204 direct mapping is not possible or it would have unexpected properties.
12205 Setting this flag ensures that the mapping is direct and will fail if that is
12206 not possible.
12207 @end table
12208 Defaults to @var{read+write} if not specified.
12209
12210 @item derive_device @var{type}
12211 Rather than using the device supplied at initialisation, instead derive a new
12212 device of type @var{type} from the device the input frames exist on.
12213
12214 @item reverse
12215 In a hardware to hardware mapping, map in reverse - create frames in the sink
12216 and map them back to the source.  This may be necessary in some cases where
12217 a mapping in one direction is required but only the opposite direction is
12218 supported by the devices being used.
12219
12220 This option is dangerous - it may break the preceding filter in undefined
12221 ways if there are any additional constraints on that filter's output.
12222 Do not use it without fully understanding the implications of its use.
12223 @end table
12224
12225 @anchor{hwupload}
12226 @section hwupload
12227
12228 Upload system memory frames to hardware surfaces.
12229
12230 The device to upload to must be supplied when the filter is initialised.  If
12231 using ffmpeg, select the appropriate device with the @option{-filter_hw_device}
12232 option or with the @option{derive_device} option.  The input and output devices
12233 must be of different types and compatible - the exact meaning of this is
12234 system-dependent, but typically it means that they must refer to the same
12235 underlying hardware context (for example, refer to the same graphics card).
12236
12237 The following additional parameters are accepted:
12238
12239 @table @option
12240 @item derive_device @var{type}
12241 Rather than using the device supplied at initialisation, instead derive a new
12242 device of type @var{type} from the device the input frames exist on.
12243 @end table
12244
12245 @anchor{hwupload_cuda}
12246 @section hwupload_cuda
12247
12248 Upload system memory frames to a CUDA device.
12249
12250 It accepts the following optional parameters:
12251
12252 @table @option
12253 @item device
12254 The number of the CUDA device to use
12255 @end table
12256
12257 @section hqx
12258
12259 Apply a high-quality magnification filter designed for pixel art. This filter
12260 was originally created by Maxim Stepin.
12261
12262 It accepts the following option:
12263
12264 @table @option
12265 @item n
12266 Set the scaling dimension: @code{2} for @code{hq2x}, @code{3} for
12267 @code{hq3x} and @code{4} for @code{hq4x}.
12268 Default is @code{3}.
12269 @end table
12270
12271 @section hstack
12272 Stack input videos horizontally.
12273
12274 All streams must be of same pixel format and of same height.
12275
12276 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
12277 to create same output.
12278
12279 The filter accepts the following option:
12280
12281 @table @option
12282 @item inputs
12283 Set number of input streams. Default is 2.
12284
12285 @item shortest
12286 If set to 1, force the output to terminate when the shortest input
12287 terminates. Default value is 0.
12288 @end table
12289
12290 @section hue
12291
12292 Modify the hue and/or the saturation of the input.
12293
12294 It accepts the following parameters:
12295
12296 @table @option
12297 @item h
12298 Specify the hue angle as a number of degrees. It accepts an expression,
12299 and defaults to "0".
12300
12301 @item s
12302 Specify the saturation in the [-10,10] range. It accepts an expression and
12303 defaults to "1".
12304
12305 @item H
12306 Specify the hue angle as a number of radians. It accepts an
12307 expression, and defaults to "0".
12308
12309 @item b
12310 Specify the brightness in the [-10,10] range. It accepts an expression and
12311 defaults to "0".
12312 @end table
12313
12314 @option{h} and @option{H} are mutually exclusive, and can't be
12315 specified at the same time.
12316
12317 The @option{b}, @option{h}, @option{H} and @option{s} option values are
12318 expressions containing the following constants:
12319
12320 @table @option
12321 @item n
12322 frame count of the input frame starting from 0
12323
12324 @item pts
12325 presentation timestamp of the input frame expressed in time base units
12326
12327 @item r
12328 frame rate of the input video, NAN if the input frame rate is unknown
12329
12330 @item t
12331 timestamp expressed in seconds, NAN if the input timestamp is unknown
12332
12333 @item tb
12334 time base of the input video
12335 @end table
12336
12337 @subsection Examples
12338
12339 @itemize
12340 @item
12341 Set the hue to 90 degrees and the saturation to 1.0:
12342 @example
12343 hue=h=90:s=1
12344 @end example
12345
12346 @item
12347 Same command but expressing the hue in radians:
12348 @example
12349 hue=H=PI/2:s=1
12350 @end example
12351
12352 @item
12353 Rotate hue and make the saturation swing between 0
12354 and 2 over a period of 1 second:
12355 @example
12356 hue="H=2*PI*t: s=sin(2*PI*t)+1"
12357 @end example
12358
12359 @item
12360 Apply a 3 seconds saturation fade-in effect starting at 0:
12361 @example
12362 hue="s=min(t/3\,1)"
12363 @end example
12364
12365 The general fade-in expression can be written as:
12366 @example
12367 hue="s=min(0\, max((t-START)/DURATION\, 1))"
12368 @end example
12369
12370 @item
12371 Apply a 3 seconds saturation fade-out effect starting at 5 seconds:
12372 @example
12373 hue="s=max(0\, min(1\, (8-t)/3))"
12374 @end example
12375
12376 The general fade-out expression can be written as:
12377 @example
12378 hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
12379 @end example
12380
12381 @end itemize
12382
12383 @subsection Commands
12384
12385 This filter supports the following commands:
12386 @table @option
12387 @item b
12388 @item s
12389 @item h
12390 @item H
12391 Modify the hue and/or the saturation and/or brightness of the input video.
12392 The command accepts the same syntax of the corresponding option.
12393
12394 If the specified expression is not valid, it is kept at its current
12395 value.
12396 @end table
12397
12398 @section hysteresis
12399
12400 Grow first stream into second stream by connecting components.
12401 This makes it possible to build more robust edge masks.
12402
12403 This filter accepts the following options:
12404
12405 @table @option
12406 @item planes
12407 Set which planes will be processed as bitmap, unprocessed planes will be
12408 copied from first stream.
12409 By default value 0xf, all planes will be processed.
12410
12411 @item threshold
12412 Set threshold which is used in filtering. If pixel component value is higher than
12413 this value filter algorithm for connecting components is activated.
12414 By default value is 0.
12415 @end table
12416
12417 The @code{hysteresis} filter also supports the @ref{framesync} options.
12418
12419 @section idet
12420
12421 Detect video interlacing type.
12422
12423 This filter tries to detect if the input frames are interlaced, progressive,
12424 top or bottom field first. It will also try to detect fields that are
12425 repeated between adjacent frames (a sign of telecine).
12426
12427 Single frame detection considers only immediately adjacent frames when classifying each frame.
12428 Multiple frame detection incorporates the classification history of previous frames.
12429
12430 The filter will log these metadata values:
12431
12432 @table @option
12433 @item single.current_frame
12434 Detected type of current frame using single-frame detection. One of:
12435 ``tff'' (top field first), ``bff'' (bottom field first),
12436 ``progressive'', or ``undetermined''
12437
12438 @item single.tff
12439 Cumulative number of frames detected as top field first using single-frame detection.
12440
12441 @item multiple.tff
12442 Cumulative number of frames detected as top field first using multiple-frame detection.
12443
12444 @item single.bff
12445 Cumulative number of frames detected as bottom field first using single-frame detection.
12446
12447 @item multiple.current_frame
12448 Detected type of current frame using multiple-frame detection. One of:
12449 ``tff'' (top field first), ``bff'' (bottom field first),
12450 ``progressive'', or ``undetermined''
12451
12452 @item multiple.bff
12453 Cumulative number of frames detected as bottom field first using multiple-frame detection.
12454
12455 @item single.progressive
12456 Cumulative number of frames detected as progressive using single-frame detection.
12457
12458 @item multiple.progressive
12459 Cumulative number of frames detected as progressive using multiple-frame detection.
12460
12461 @item single.undetermined
12462 Cumulative number of frames that could not be classified using single-frame detection.
12463
12464 @item multiple.undetermined
12465 Cumulative number of frames that could not be classified using multiple-frame detection.
12466
12467 @item repeated.current_frame
12468 Which field in the current frame is repeated from the last. One of ``neither'', ``top'', or ``bottom''.
12469
12470 @item repeated.neither
12471 Cumulative number of frames with no repeated field.
12472
12473 @item repeated.top
12474 Cumulative number of frames with the top field repeated from the previous frame's top field.
12475
12476 @item repeated.bottom
12477 Cumulative number of frames with the bottom field repeated from the previous frame's bottom field.
12478 @end table
12479
12480 The filter accepts the following options:
12481
12482 @table @option
12483 @item intl_thres
12484 Set interlacing threshold.
12485 @item prog_thres
12486 Set progressive threshold.
12487 @item rep_thres
12488 Threshold for repeated field detection.
12489 @item half_life
12490 Number of frames after which a given frame's contribution to the
12491 statistics is halved (i.e., it contributes only 0.5 to its
12492 classification). The default of 0 means that all frames seen are given
12493 full weight of 1.0 forever.
12494 @item analyze_interlaced_flag
12495 When this is not 0 then idet will use the specified number of frames to determine
12496 if the interlaced flag is accurate, it will not count undetermined frames.
12497 If the flag is found to be accurate it will be used without any further
12498 computations, if it is found to be inaccurate it will be cleared without any
12499 further computations. This allows inserting the idet filter as a low computational
12500 method to clean up the interlaced flag
12501 @end table
12502
12503 @section il
12504
12505 Deinterleave or interleave fields.
12506
12507 This filter allows one to process interlaced images fields without
12508 deinterlacing them. Deinterleaving splits the input frame into 2
12509 fields (so called half pictures). Odd lines are moved to the top
12510 half of the output image, even lines to the bottom half.
12511 You can process (filter) them independently and then re-interleave them.
12512
12513 The filter accepts the following options:
12514
12515 @table @option
12516 @item luma_mode, l
12517 @item chroma_mode, c
12518 @item alpha_mode, a
12519 Available values for @var{luma_mode}, @var{chroma_mode} and
12520 @var{alpha_mode} are:
12521
12522 @table @samp
12523 @item none
12524 Do nothing.
12525
12526 @item deinterleave, d
12527 Deinterleave fields, placing one above the other.
12528
12529 @item interleave, i
12530 Interleave fields. Reverse the effect of deinterleaving.
12531 @end table
12532 Default value is @code{none}.
12533
12534 @item luma_swap, ls
12535 @item chroma_swap, cs
12536 @item alpha_swap, as
12537 Swap luma/chroma/alpha fields. Exchange even & odd lines. Default value is @code{0}.
12538 @end table
12539
12540 @subsection Commands
12541
12542 This filter supports the all above options as @ref{commands}.
12543
12544 @section inflate
12545
12546 Apply inflate effect to the video.
12547
12548 This filter replaces the pixel by the local(3x3) average by taking into account
12549 only values higher than the pixel.
12550
12551 It accepts the following options:
12552
12553 @table @option
12554 @item threshold0
12555 @item threshold1
12556 @item threshold2
12557 @item threshold3
12558 Limit the maximum change for each plane, default is 65535.
12559 If 0, plane will remain unchanged.
12560 @end table
12561
12562 @subsection Commands
12563
12564 This filter supports the all above options as @ref{commands}.
12565
12566 @section interlace
12567
12568 Simple interlacing filter from progressive contents. This interleaves upper (or
12569 lower) lines from odd frames with lower (or upper) lines from even frames,
12570 halving the frame rate and preserving image height.
12571
12572 @example
12573    Original        Original             New Frame
12574    Frame 'j'      Frame 'j+1'             (tff)
12575   ==========      ===========       ==================
12576     Line 0  -------------------->    Frame 'j' Line 0
12577     Line 1          Line 1  ---->   Frame 'j+1' Line 1
12578     Line 2 --------------------->    Frame 'j' Line 2
12579     Line 3          Line 3  ---->   Frame 'j+1' Line 3
12580      ...             ...                   ...
12581 New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
12582 @end example
12583
12584 It accepts the following optional parameters:
12585
12586 @table @option
12587 @item scan
12588 This determines whether the interlaced frame is taken from the even
12589 (tff - default) or odd (bff) lines of the progressive frame.
12590
12591 @item lowpass
12592 Vertical lowpass filter to avoid twitter interlacing and
12593 reduce moire patterns.
12594
12595 @table @samp
12596 @item 0, off
12597 Disable vertical lowpass filter
12598
12599 @item 1, linear
12600 Enable linear filter (default)
12601
12602 @item 2, complex
12603 Enable complex filter. This will slightly less reduce twitter and moire
12604 but better retain detail and subjective sharpness impression.
12605
12606 @end table
12607 @end table
12608
12609 @section kerndeint
12610
12611 Deinterlace input video by applying Donald Graft's adaptive kernel
12612 deinterling. Work on interlaced parts of a video to produce
12613 progressive frames.
12614
12615 The description of the accepted parameters follows.
12616
12617 @table @option
12618 @item thresh
12619 Set the threshold which affects the filter's tolerance when
12620 determining if a pixel line must be processed. It must be an integer
12621 in the range [0,255] and defaults to 10. A value of 0 will result in
12622 applying the process on every pixels.
12623
12624 @item map
12625 Paint pixels exceeding the threshold value to white if set to 1.
12626 Default is 0.
12627
12628 @item order
12629 Set the fields order. Swap fields if set to 1, leave fields alone if
12630 0. Default is 0.
12631
12632 @item sharp
12633 Enable additional sharpening if set to 1. Default is 0.
12634
12635 @item twoway
12636 Enable twoway sharpening if set to 1. Default is 0.
12637 @end table
12638
12639 @subsection Examples
12640
12641 @itemize
12642 @item
12643 Apply default values:
12644 @example
12645 kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
12646 @end example
12647
12648 @item
12649 Enable additional sharpening:
12650 @example
12651 kerndeint=sharp=1
12652 @end example
12653
12654 @item
12655 Paint processed pixels in white:
12656 @example
12657 kerndeint=map=1
12658 @end example
12659 @end itemize
12660
12661 @section lagfun
12662
12663 Slowly update darker pixels.
12664
12665 This filter makes short flashes of light appear longer.
12666 This filter accepts the following options:
12667
12668 @table @option
12669 @item decay
12670 Set factor for decaying. Default is .95. Allowed range is from 0 to 1.
12671
12672 @item planes
12673 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
12674 @end table
12675
12676 @section lenscorrection
12677
12678 Correct radial lens distortion
12679
12680 This filter can be used to correct for radial distortion as can result from the use
12681 of wide angle lenses, and thereby re-rectify the image. To find the right parameters
12682 one can use tools available for example as part of opencv or simply trial-and-error.
12683 To use opencv use the calibration sample (under samples/cpp) from the opencv sources
12684 and extract the k1 and k2 coefficients from the resulting matrix.
12685
12686 Note that effectively the same filter is available in the open-source tools Krita and
12687 Digikam from the KDE project.
12688
12689 In contrast to the @ref{vignette} filter, which can also be used to compensate lens errors,
12690 this filter corrects the distortion of the image, whereas @ref{vignette} corrects the
12691 brightness distribution, so you may want to use both filters together in certain
12692 cases, though you will have to take care of ordering, i.e. whether vignetting should
12693 be applied before or after lens correction.
12694
12695 @subsection Options
12696
12697 The filter accepts the following options:
12698
12699 @table @option
12700 @item cx
12701 Relative x-coordinate of the focal point of the image, and thereby the center of the
12702 distortion. This value has a range [0,1] and is expressed as fractions of the image
12703 width. Default is 0.5.
12704 @item cy
12705 Relative y-coordinate of the focal point of the image, and thereby the center of the
12706 distortion. This value has a range [0,1] and is expressed as fractions of the image
12707 height. Default is 0.5.
12708 @item k1
12709 Coefficient of the quadratic correction term. This value has a range [-1,1]. 0 means
12710 no correction. Default is 0.
12711 @item k2
12712 Coefficient of the double quadratic correction term. This value has a range [-1,1].
12713 0 means no correction. Default is 0.
12714 @end table
12715
12716 The formula that generates the correction is:
12717
12718 @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)
12719
12720 where @var{r_0} is halve of the image diagonal and @var{r_src} and @var{r_tgt} are the
12721 distances from the focal point in the source and target images, respectively.
12722
12723 @section lensfun
12724
12725 Apply lens correction via the lensfun library (@url{http://lensfun.sourceforge.net/}).
12726
12727 The @code{lensfun} filter requires the camera make, camera model, and lens model
12728 to apply the lens correction. The filter will load the lensfun database and
12729 query it to find the corresponding camera and lens entries in the database. As
12730 long as these entries can be found with the given options, the filter can
12731 perform corrections on frames. Note that incomplete strings will result in the
12732 filter choosing the best match with the given options, and the filter will
12733 output the chosen camera and lens models (logged with level "info"). You must
12734 provide the make, camera model, and lens model as they are required.
12735
12736 The filter accepts the following options:
12737
12738 @table @option
12739 @item make
12740 The make of the camera (for example, "Canon"). This option is required.
12741
12742 @item model
12743 The model of the camera (for example, "Canon EOS 100D"). This option is
12744 required.
12745
12746 @item lens_model
12747 The model of the lens (for example, "Canon EF-S 18-55mm f/3.5-5.6 IS STM"). This
12748 option is required.
12749
12750 @item mode
12751 The type of correction to apply. The following values are valid options:
12752
12753 @table @samp
12754 @item vignetting
12755 Enables fixing lens vignetting.
12756
12757 @item geometry
12758 Enables fixing lens geometry. This is the default.
12759
12760 @item subpixel
12761 Enables fixing chromatic aberrations.
12762
12763 @item vig_geo
12764 Enables fixing lens vignetting and lens geometry.
12765
12766 @item vig_subpixel
12767 Enables fixing lens vignetting and chromatic aberrations.
12768
12769 @item distortion
12770 Enables fixing both lens geometry and chromatic aberrations.
12771
12772 @item all
12773 Enables all possible corrections.
12774
12775 @end table
12776 @item focal_length
12777 The focal length of the image/video (zoom; expected constant for video). For
12778 example, a 18--55mm lens has focal length range of [18--55], so a value in that
12779 range should be chosen when using that lens. Default 18.
12780
12781 @item aperture
12782 The aperture of the image/video (expected constant for video). Note that
12783 aperture is only used for vignetting correction. Default 3.5.
12784
12785 @item focus_distance
12786 The focus distance of the image/video (expected constant for video). Note that
12787 focus distance is only used for vignetting and only slightly affects the
12788 vignetting correction process. If unknown, leave it at the default value (which
12789 is 1000).
12790
12791 @item scale
12792 The scale factor which is applied after transformation. After correction the
12793 video is no longer necessarily rectangular. This parameter controls how much of
12794 the resulting image is visible. The value 0 means that a value will be chosen
12795 automatically such that there is little or no unmapped area in the output
12796 image. 1.0 means that no additional scaling is done. Lower values may result
12797 in more of the corrected image being visible, while higher values may avoid
12798 unmapped areas in the output.
12799
12800 @item target_geometry
12801 The target geometry of the output image/video. The following values are valid
12802 options:
12803
12804 @table @samp
12805 @item rectilinear (default)
12806 @item fisheye
12807 @item panoramic
12808 @item equirectangular
12809 @item fisheye_orthographic
12810 @item fisheye_stereographic
12811 @item fisheye_equisolid
12812 @item fisheye_thoby
12813 @end table
12814 @item reverse
12815 Apply the reverse of image correction (instead of correcting distortion, apply
12816 it).
12817
12818 @item interpolation
12819 The type of interpolation used when correcting distortion. The following values
12820 are valid options:
12821
12822 @table @samp
12823 @item nearest
12824 @item linear (default)
12825 @item lanczos
12826 @end table
12827 @end table
12828
12829 @subsection Examples
12830
12831 @itemize
12832 @item
12833 Apply lens correction with make "Canon", camera model "Canon EOS 100D", and lens
12834 model "Canon EF-S 18-55mm f/3.5-5.6 IS STM" with focal length of "18" and
12835 aperture of "8.0".
12836
12837 @example
12838 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
12839 @end example
12840
12841 @item
12842 Apply the same as before, but only for the first 5 seconds of video.
12843
12844 @example
12845 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
12846 @end example
12847
12848 @end itemize
12849
12850 @section libvmaf
12851
12852 Obtain the VMAF (Video Multi-Method Assessment Fusion)
12853 score between two input videos.
12854
12855 The obtained VMAF score is printed through the logging system.
12856
12857 It requires Netflix's vmaf library (libvmaf) as a pre-requisite.
12858 After installing the library it can be enabled using:
12859 @code{./configure --enable-libvmaf}.
12860 If no model path is specified it uses the default model: @code{vmaf_v0.6.1.pkl}.
12861
12862 The filter has following options:
12863
12864 @table @option
12865 @item model_path
12866 Set the model path which is to be used for SVM.
12867 Default value: @code{"/usr/local/share/model/vmaf_v0.6.1.pkl"}
12868
12869 @item log_path
12870 Set the file path to be used to store logs.
12871
12872 @item log_fmt
12873 Set the format of the log file (xml or json).
12874
12875 @item enable_transform
12876 This option can enable/disable the @code{score_transform} applied to the final predicted VMAF score,
12877 if you have specified score_transform option in the input parameter file passed to @code{run_vmaf_training.py}
12878 Default value: @code{false}
12879
12880 @item phone_model
12881 Invokes the phone model which will generate VMAF scores higher than in the
12882 regular model, which is more suitable for laptop, TV, etc. viewing conditions.
12883 Default value: @code{false}
12884
12885 @item psnr
12886 Enables computing psnr along with vmaf.
12887 Default value: @code{false}
12888
12889 @item ssim
12890 Enables computing ssim along with vmaf.
12891 Default value: @code{false}
12892
12893 @item ms_ssim
12894 Enables computing ms_ssim along with vmaf.
12895 Default value: @code{false}
12896
12897 @item pool
12898 Set the pool method to be used for computing vmaf.
12899 Options are @code{min}, @code{harmonic_mean} or @code{mean} (default).
12900
12901 @item n_threads
12902 Set number of threads to be used when computing vmaf.
12903 Default value: @code{0}, which makes use of all available logical processors.
12904
12905 @item n_subsample
12906 Set interval for frame subsampling used when computing vmaf.
12907 Default value: @code{1}
12908
12909 @item enable_conf_interval
12910 Enables confidence interval.
12911 Default value: @code{false}
12912 @end table
12913
12914 This filter also supports the @ref{framesync} options.
12915
12916 @subsection Examples
12917 @itemize
12918 @item
12919 On the below examples the input file @file{main.mpg} being processed is
12920 compared with the reference file @file{ref.mpg}.
12921
12922 @example
12923 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf -f null -
12924 @end example
12925
12926 @item
12927 Example with options:
12928 @example
12929 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf="psnr=1:log_fmt=json" -f null -
12930 @end example
12931
12932 @item
12933 Example with options and different containers:
12934 @example
12935 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 -
12936 @end example
12937 @end itemize
12938
12939 @section limiter
12940
12941 Limits the pixel components values to the specified range [min, max].
12942
12943 The filter accepts the following options:
12944
12945 @table @option
12946 @item min
12947 Lower bound. Defaults to the lowest allowed value for the input.
12948
12949 @item max
12950 Upper bound. Defaults to the highest allowed value for the input.
12951
12952 @item planes
12953 Specify which planes will be processed. Defaults to all available.
12954 @end table
12955
12956 @section loop
12957
12958 Loop video frames.
12959
12960 The filter accepts the following options:
12961
12962 @table @option
12963 @item loop
12964 Set the number of loops. Setting this value to -1 will result in infinite loops.
12965 Default is 0.
12966
12967 @item size
12968 Set maximal size in number of frames. Default is 0.
12969
12970 @item start
12971 Set first frame of loop. Default is 0.
12972 @end table
12973
12974 @subsection Examples
12975
12976 @itemize
12977 @item
12978 Loop single first frame infinitely:
12979 @example
12980 loop=loop=-1:size=1:start=0
12981 @end example
12982
12983 @item
12984 Loop single first frame 10 times:
12985 @example
12986 loop=loop=10:size=1:start=0
12987 @end example
12988
12989 @item
12990 Loop 10 first frames 5 times:
12991 @example
12992 loop=loop=5:size=10:start=0
12993 @end example
12994 @end itemize
12995
12996 @section lut1d
12997
12998 Apply a 1D LUT to an input video.
12999
13000 The filter accepts the following options:
13001
13002 @table @option
13003 @item file
13004 Set the 1D LUT file name.
13005
13006 Currently supported formats:
13007 @table @samp
13008 @item cube
13009 Iridas
13010 @item csp
13011 cineSpace
13012 @end table
13013
13014 @item interp
13015 Select interpolation mode.
13016
13017 Available values are:
13018
13019 @table @samp
13020 @item nearest
13021 Use values from the nearest defined point.
13022 @item linear
13023 Interpolate values using the linear interpolation.
13024 @item cosine
13025 Interpolate values using the cosine interpolation.
13026 @item cubic
13027 Interpolate values using the cubic interpolation.
13028 @item spline
13029 Interpolate values using the spline interpolation.
13030 @end table
13031 @end table
13032
13033 @anchor{lut3d}
13034 @section lut3d
13035
13036 Apply a 3D LUT to an input video.
13037
13038 The filter accepts the following options:
13039
13040 @table @option
13041 @item file
13042 Set the 3D LUT file name.
13043
13044 Currently supported formats:
13045 @table @samp
13046 @item 3dl
13047 AfterEffects
13048 @item cube
13049 Iridas
13050 @item dat
13051 DaVinci
13052 @item m3d
13053 Pandora
13054 @item csp
13055 cineSpace
13056 @end table
13057 @item interp
13058 Select interpolation mode.
13059
13060 Available values are:
13061
13062 @table @samp
13063 @item nearest
13064 Use values from the nearest defined point.
13065 @item trilinear
13066 Interpolate values using the 8 points defining a cube.
13067 @item tetrahedral
13068 Interpolate values using a tetrahedron.
13069 @end table
13070 @end table
13071
13072 @section lumakey
13073
13074 Turn certain luma values into transparency.
13075
13076 The filter accepts the following options:
13077
13078 @table @option
13079 @item threshold
13080 Set the luma which will be used as base for transparency.
13081 Default value is @code{0}.
13082
13083 @item tolerance
13084 Set the range of luma values to be keyed out.
13085 Default value is @code{0.01}.
13086
13087 @item softness
13088 Set the range of softness. Default value is @code{0}.
13089 Use this to control gradual transition from zero to full transparency.
13090 @end table
13091
13092 @subsection Commands
13093 This filter supports same @ref{commands} as options.
13094 The command accepts the same syntax of the corresponding option.
13095
13096 If the specified expression is not valid, it is kept at its current
13097 value.
13098
13099 @section lut, lutrgb, lutyuv
13100
13101 Compute a look-up table for binding each pixel component input value
13102 to an output value, and apply it to the input video.
13103
13104 @var{lutyuv} applies a lookup table to a YUV input video, @var{lutrgb}
13105 to an RGB input video.
13106
13107 These filters accept the following parameters:
13108 @table @option
13109 @item c0
13110 set first pixel component expression
13111 @item c1
13112 set second pixel component expression
13113 @item c2
13114 set third pixel component expression
13115 @item c3
13116 set fourth pixel component expression, corresponds to the alpha component
13117
13118 @item r
13119 set red component expression
13120 @item g
13121 set green component expression
13122 @item b
13123 set blue component expression
13124 @item a
13125 alpha component expression
13126
13127 @item y
13128 set Y/luminance component expression
13129 @item u
13130 set U/Cb component expression
13131 @item v
13132 set V/Cr component expression
13133 @end table
13134
13135 Each of them specifies the expression to use for computing the lookup table for
13136 the corresponding pixel component values.
13137
13138 The exact component associated to each of the @var{c*} options depends on the
13139 format in input.
13140
13141 The @var{lut} filter requires either YUV or RGB pixel formats in input,
13142 @var{lutrgb} requires RGB pixel formats in input, and @var{lutyuv} requires YUV.
13143
13144 The expressions can contain the following constants and functions:
13145
13146 @table @option
13147 @item w
13148 @item h
13149 The input width and height.
13150
13151 @item val
13152 The input value for the pixel component.
13153
13154 @item clipval
13155 The input value, clipped to the @var{minval}-@var{maxval} range.
13156
13157 @item maxval
13158 The maximum value for the pixel component.
13159
13160 @item minval
13161 The minimum value for the pixel component.
13162
13163 @item negval
13164 The negated value for the pixel component value, clipped to the
13165 @var{minval}-@var{maxval} range; it corresponds to the expression
13166 "maxval-clipval+minval".
13167
13168 @item clip(val)
13169 The computed value in @var{val}, clipped to the
13170 @var{minval}-@var{maxval} range.
13171
13172 @item gammaval(gamma)
13173 The computed gamma correction value of the pixel component value,
13174 clipped to the @var{minval}-@var{maxval} range. It corresponds to the
13175 expression
13176 "pow((clipval-minval)/(maxval-minval)\,@var{gamma})*(maxval-minval)+minval"
13177
13178 @end table
13179
13180 All expressions default to "val".
13181
13182 @subsection Examples
13183
13184 @itemize
13185 @item
13186 Negate input video:
13187 @example
13188 lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
13189 lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
13190 @end example
13191
13192 The above is the same as:
13193 @example
13194 lutrgb="r=negval:g=negval:b=negval"
13195 lutyuv="y=negval:u=negval:v=negval"
13196 @end example
13197
13198 @item
13199 Negate luminance:
13200 @example
13201 lutyuv=y=negval
13202 @end example
13203
13204 @item
13205 Remove chroma components, turning the video into a graytone image:
13206 @example
13207 lutyuv="u=128:v=128"
13208 @end example
13209
13210 @item
13211 Apply a luma burning effect:
13212 @example
13213 lutyuv="y=2*val"
13214 @end example
13215
13216 @item
13217 Remove green and blue components:
13218 @example
13219 lutrgb="g=0:b=0"
13220 @end example
13221
13222 @item
13223 Set a constant alpha channel value on input:
13224 @example
13225 format=rgba,lutrgb=a="maxval-minval/2"
13226 @end example
13227
13228 @item
13229 Correct luminance gamma by a factor of 0.5:
13230 @example
13231 lutyuv=y=gammaval(0.5)
13232 @end example
13233
13234 @item
13235 Discard least significant bits of luma:
13236 @example
13237 lutyuv=y='bitand(val, 128+64+32)'
13238 @end example
13239
13240 @item
13241 Technicolor like effect:
13242 @example
13243 lutyuv=u='(val-maxval/2)*2+maxval/2':v='(val-maxval/2)*2+maxval/2'
13244 @end example
13245 @end itemize
13246
13247 @section lut2, tlut2
13248
13249 The @code{lut2} filter takes two input streams and outputs one
13250 stream.
13251
13252 The @code{tlut2} (time lut2) filter takes two consecutive frames
13253 from one single stream.
13254
13255 This filter accepts the following parameters:
13256 @table @option
13257 @item c0
13258 set first pixel component expression
13259 @item c1
13260 set second pixel component expression
13261 @item c2
13262 set third pixel component expression
13263 @item c3
13264 set fourth pixel component expression, corresponds to the alpha component
13265
13266 @item d
13267 set output bit depth, only available for @code{lut2} filter. By default is 0,
13268 which means bit depth is automatically picked from first input format.
13269 @end table
13270
13271 The @code{lut2} filter also supports the @ref{framesync} options.
13272
13273 Each of them specifies the expression to use for computing the lookup table for
13274 the corresponding pixel component values.
13275
13276 The exact component associated to each of the @var{c*} options depends on the
13277 format in inputs.
13278
13279 The expressions can contain the following constants:
13280
13281 @table @option
13282 @item w
13283 @item h
13284 The input width and height.
13285
13286 @item x
13287 The first input value for the pixel component.
13288
13289 @item y
13290 The second input value for the pixel component.
13291
13292 @item bdx
13293 The first input video bit depth.
13294
13295 @item bdy
13296 The second input video bit depth.
13297 @end table
13298
13299 All expressions default to "x".
13300
13301 @subsection Examples
13302
13303 @itemize
13304 @item
13305 Highlight differences between two RGB video streams:
13306 @example
13307 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)'
13308 @end example
13309
13310 @item
13311 Highlight differences between two YUV video streams:
13312 @example
13313 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)'
13314 @end example
13315
13316 @item
13317 Show max difference between two video streams:
13318 @example
13319 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)))'
13320 @end example
13321 @end itemize
13322
13323 @section maskedclamp
13324
13325 Clamp the first input stream with the second input and third input stream.
13326
13327 Returns the value of first stream to be between second input
13328 stream - @code{undershoot} and third input stream + @code{overshoot}.
13329
13330 This filter accepts the following options:
13331 @table @option
13332 @item undershoot
13333 Default value is @code{0}.
13334
13335 @item overshoot
13336 Default value is @code{0}.
13337
13338 @item planes
13339 Set which planes will be processed as bitmap, unprocessed planes will be
13340 copied from first stream.
13341 By default value 0xf, all planes will be processed.
13342 @end table
13343
13344 @section maskedmax
13345
13346 Merge the second and third input stream into output stream using absolute differences
13347 between second input stream and first input stream and absolute difference between
13348 third input stream and first input stream. The picked value will be from second input
13349 stream if second absolute difference is greater than first one or from third input stream
13350 otherwise.
13351
13352 This filter accepts the following options:
13353 @table @option
13354 @item planes
13355 Set which planes will be processed as bitmap, unprocessed planes will be
13356 copied from first stream.
13357 By default value 0xf, all planes will be processed.
13358 @end table
13359
13360 @section maskedmerge
13361
13362 Merge the first input stream with the second input stream using per pixel
13363 weights in the third input stream.
13364
13365 A value of 0 in the third stream pixel component means that pixel component
13366 from first stream is returned unchanged, while maximum value (eg. 255 for
13367 8-bit videos) means that pixel component from second stream is returned
13368 unchanged. Intermediate values define the amount of merging between both
13369 input stream's pixel components.
13370
13371 This filter accepts the following options:
13372 @table @option
13373 @item planes
13374 Set which planes will be processed as bitmap, unprocessed planes will be
13375 copied from first stream.
13376 By default value 0xf, all planes will be processed.
13377 @end table
13378
13379 @section maskedmin
13380
13381 Merge the second and third input stream into output stream using absolute differences
13382 between second input stream and first input stream and absolute difference between
13383 third input stream and first input stream. The picked value will be from second input
13384 stream if second absolute difference is less than first one or from third input stream
13385 otherwise.
13386
13387 This filter accepts the following options:
13388 @table @option
13389 @item planes
13390 Set which planes will be processed as bitmap, unprocessed planes will be
13391 copied from first stream.
13392 By default value 0xf, all planes will be processed.
13393 @end table
13394
13395 @section maskedthreshold
13396 Pick pixels comparing absolute difference of two video streams with fixed
13397 threshold.
13398
13399 If absolute difference between pixel component of first and second video
13400 stream is equal or lower than user supplied threshold than pixel component
13401 from first video stream is picked, otherwise pixel component from second
13402 video stream is picked.
13403
13404 This filter accepts the following options:
13405 @table @option
13406 @item threshold
13407 Set threshold used when picking pixels from absolute difference from two input
13408 video streams.
13409
13410 @item planes
13411 Set which planes will be processed as bitmap, unprocessed planes will be
13412 copied from second stream.
13413 By default value 0xf, all planes will be processed.
13414 @end table
13415
13416 @section maskfun
13417 Create mask from input video.
13418
13419 For example it is useful to create motion masks after @code{tblend} filter.
13420
13421 This filter accepts the following options:
13422
13423 @table @option
13424 @item low
13425 Set low threshold. Any pixel component lower or exact than this value will be set to 0.
13426
13427 @item high
13428 Set high threshold. Any pixel component higher than this value will be set to max value
13429 allowed for current pixel format.
13430
13431 @item planes
13432 Set planes to filter, by default all available planes are filtered.
13433
13434 @item fill
13435 Fill all frame pixels with this value.
13436
13437 @item sum
13438 Set max average pixel value for frame. If sum of all pixel components is higher that this
13439 average, output frame will be completely filled with value set by @var{fill} option.
13440 Typically useful for scene changes when used in combination with @code{tblend} filter.
13441 @end table
13442
13443 @section mcdeint
13444
13445 Apply motion-compensation deinterlacing.
13446
13447 It needs one field per frame as input and must thus be used together
13448 with yadif=1/3 or equivalent.
13449
13450 This filter accepts the following options:
13451 @table @option
13452 @item mode
13453 Set the deinterlacing mode.
13454
13455 It accepts one of the following values:
13456 @table @samp
13457 @item fast
13458 @item medium
13459 @item slow
13460 use iterative motion estimation
13461 @item extra_slow
13462 like @samp{slow}, but use multiple reference frames.
13463 @end table
13464 Default value is @samp{fast}.
13465
13466 @item parity
13467 Set the picture field parity assumed for the input video. It must be
13468 one of the following values:
13469
13470 @table @samp
13471 @item 0, tff
13472 assume top field first
13473 @item 1, bff
13474 assume bottom field first
13475 @end table
13476
13477 Default value is @samp{bff}.
13478
13479 @item qp
13480 Set per-block quantization parameter (QP) used by the internal
13481 encoder.
13482
13483 Higher values should result in a smoother motion vector field but less
13484 optimal individual vectors. Default value is 1.
13485 @end table
13486
13487 @section median
13488
13489 Pick median pixel from certain rectangle defined by radius.
13490
13491 This filter accepts the following options:
13492
13493 @table @option
13494 @item radius
13495 Set horizontal radius size. Default value is @code{1}.
13496 Allowed range is integer from 1 to 127.
13497
13498 @item planes
13499 Set which planes to process. Default is @code{15}, which is all available planes.
13500
13501 @item radiusV
13502 Set vertical radius size. Default value is @code{0}.
13503 Allowed range is integer from 0 to 127.
13504 If it is 0, value will be picked from horizontal @code{radius} option.
13505
13506 @item percentile
13507 Set median percentile. Default value is @code{0.5}.
13508 Default value of @code{0.5} will pick always median values, while @code{0} will pick
13509 minimum values, and @code{1} maximum values.
13510 @end table
13511
13512 @subsection Commands
13513 This filter supports same @ref{commands} as options.
13514 The command accepts the same syntax of the corresponding option.
13515
13516 If the specified expression is not valid, it is kept at its current
13517 value.
13518
13519 @section mergeplanes
13520
13521 Merge color channel components from several video streams.
13522
13523 The filter accepts up to 4 input streams, and merge selected input
13524 planes to the output video.
13525
13526 This filter accepts the following options:
13527 @table @option
13528 @item mapping
13529 Set input to output plane mapping. Default is @code{0}.
13530
13531 The mappings is specified as a bitmap. It should be specified as a
13532 hexadecimal number in the form 0xAa[Bb[Cc[Dd]]]. 'Aa' describes the
13533 mapping for the first plane of the output stream. 'A' sets the number of
13534 the input stream to use (from 0 to 3), and 'a' the plane number of the
13535 corresponding input to use (from 0 to 3). The rest of the mappings is
13536 similar, 'Bb' describes the mapping for the output stream second
13537 plane, 'Cc' describes the mapping for the output stream third plane and
13538 'Dd' describes the mapping for the output stream fourth plane.
13539
13540 @item format
13541 Set output pixel format. Default is @code{yuva444p}.
13542 @end table
13543
13544 @subsection Examples
13545
13546 @itemize
13547 @item
13548 Merge three gray video streams of same width and height into single video stream:
13549 @example
13550 [a0][a1][a2]mergeplanes=0x001020:yuv444p
13551 @end example
13552
13553 @item
13554 Merge 1st yuv444p stream and 2nd gray video stream into yuva444p video stream:
13555 @example
13556 [a0][a1]mergeplanes=0x00010210:yuva444p
13557 @end example
13558
13559 @item
13560 Swap Y and A plane in yuva444p stream:
13561 @example
13562 format=yuva444p,mergeplanes=0x03010200:yuva444p
13563 @end example
13564
13565 @item
13566 Swap U and V plane in yuv420p stream:
13567 @example
13568 format=yuv420p,mergeplanes=0x000201:yuv420p
13569 @end example
13570
13571 @item
13572 Cast a rgb24 clip to yuv444p:
13573 @example
13574 format=rgb24,mergeplanes=0x000102:yuv444p
13575 @end example
13576 @end itemize
13577
13578 @section mestimate
13579
13580 Estimate and export motion vectors using block matching algorithms.
13581 Motion vectors are stored in frame side data to be used by other filters.
13582
13583 This filter accepts the following options:
13584 @table @option
13585 @item method
13586 Specify the motion estimation method. Accepts one of the following values:
13587
13588 @table @samp
13589 @item esa
13590 Exhaustive search algorithm.
13591 @item tss
13592 Three step search algorithm.
13593 @item tdls
13594 Two dimensional logarithmic search algorithm.
13595 @item ntss
13596 New three step search algorithm.
13597 @item fss
13598 Four step search algorithm.
13599 @item ds
13600 Diamond search algorithm.
13601 @item hexbs
13602 Hexagon-based search algorithm.
13603 @item epzs
13604 Enhanced predictive zonal search algorithm.
13605 @item umh
13606 Uneven multi-hexagon search algorithm.
13607 @end table
13608 Default value is @samp{esa}.
13609
13610 @item mb_size
13611 Macroblock size. Default @code{16}.
13612
13613 @item search_param
13614 Search parameter. Default @code{7}.
13615 @end table
13616
13617 @section midequalizer
13618
13619 Apply Midway Image Equalization effect using two video streams.
13620
13621 Midway Image Equalization adjusts a pair of images to have the same
13622 histogram, while maintaining their dynamics as much as possible. It's
13623 useful for e.g. matching exposures from a pair of stereo cameras.
13624
13625 This filter has two inputs and one output, which must be of same pixel format, but
13626 may be of different sizes. The output of filter is first input adjusted with
13627 midway histogram of both inputs.
13628
13629 This filter accepts the following option:
13630
13631 @table @option
13632 @item planes
13633 Set which planes to process. Default is @code{15}, which is all available planes.
13634 @end table
13635
13636 @section minterpolate
13637
13638 Convert the video to specified frame rate using motion interpolation.
13639
13640 This filter accepts the following options:
13641 @table @option
13642 @item fps
13643 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}.
13644
13645 @item mi_mode
13646 Motion interpolation mode. Following values are accepted:
13647 @table @samp
13648 @item dup
13649 Duplicate previous or next frame for interpolating new ones.
13650 @item blend
13651 Blend source frames. Interpolated frame is mean of previous and next frames.
13652 @item mci
13653 Motion compensated interpolation. Following options are effective when this mode is selected:
13654
13655 @table @samp
13656 @item mc_mode
13657 Motion compensation mode. Following values are accepted:
13658 @table @samp
13659 @item obmc
13660 Overlapped block motion compensation.
13661 @item aobmc
13662 Adaptive overlapped block motion compensation. Window weighting coefficients are controlled adaptively according to the reliabilities of the neighboring motion vectors to reduce oversmoothing.
13663 @end table
13664 Default mode is @samp{obmc}.
13665
13666 @item me_mode
13667 Motion estimation mode. Following values are accepted:
13668 @table @samp
13669 @item bidir
13670 Bidirectional motion estimation. Motion vectors are estimated for each source frame in both forward and backward directions.
13671 @item bilat
13672 Bilateral motion estimation. Motion vectors are estimated directly for interpolated frame.
13673 @end table
13674 Default mode is @samp{bilat}.
13675
13676 @item me
13677 The algorithm to be used for motion estimation. Following values are accepted:
13678 @table @samp
13679 @item esa
13680 Exhaustive search algorithm.
13681 @item tss
13682 Three step search algorithm.
13683 @item tdls
13684 Two dimensional logarithmic search algorithm.
13685 @item ntss
13686 New three step search algorithm.
13687 @item fss
13688 Four step search algorithm.
13689 @item ds
13690 Diamond search algorithm.
13691 @item hexbs
13692 Hexagon-based search algorithm.
13693 @item epzs
13694 Enhanced predictive zonal search algorithm.
13695 @item umh
13696 Uneven multi-hexagon search algorithm.
13697 @end table
13698 Default algorithm is @samp{epzs}.
13699
13700 @item mb_size
13701 Macroblock size. Default @code{16}.
13702
13703 @item search_param
13704 Motion estimation search parameter. Default @code{32}.
13705
13706 @item vsbmc
13707 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).
13708 @end table
13709 @end table
13710
13711 @item scd
13712 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:
13713 @table @samp
13714 @item none
13715 Disable scene change detection.
13716 @item fdiff
13717 Frame difference. Corresponding pixel values are compared and if it satisfies @var{scd_threshold} scene change is detected.
13718 @end table
13719 Default method is @samp{fdiff}.
13720
13721 @item scd_threshold
13722 Scene change detection threshold. Default is @code{10.}.
13723 @end table
13724
13725 @section mix
13726
13727 Mix several video input streams into one video stream.
13728
13729 A description of the accepted options follows.
13730
13731 @table @option
13732 @item nb_inputs
13733 The number of inputs. If unspecified, it defaults to 2.
13734
13735 @item weights
13736 Specify weight of each input video stream as sequence.
13737 Each weight is separated by space. If number of weights
13738 is smaller than number of @var{frames} last specified
13739 weight will be used for all remaining unset weights.
13740
13741 @item scale
13742 Specify scale, if it is set it will be multiplied with sum
13743 of each weight multiplied with pixel values to give final destination
13744 pixel value. By default @var{scale} is auto scaled to sum of weights.
13745
13746 @item duration
13747 Specify how end of stream is determined.
13748 @table @samp
13749 @item longest
13750 The duration of the longest input. (default)
13751
13752 @item shortest
13753 The duration of the shortest input.
13754
13755 @item first
13756 The duration of the first input.
13757 @end table
13758 @end table
13759
13760 @section mpdecimate
13761
13762 Drop frames that do not differ greatly from the previous frame in
13763 order to reduce frame rate.
13764
13765 The main use of this filter is for very-low-bitrate encoding
13766 (e.g. streaming over dialup modem), but it could in theory be used for
13767 fixing movies that were inverse-telecined incorrectly.
13768
13769 A description of the accepted options follows.
13770
13771 @table @option
13772 @item max
13773 Set the maximum number of consecutive frames which can be dropped (if
13774 positive), or the minimum interval between dropped frames (if
13775 negative). If the value is 0, the frame is dropped disregarding the
13776 number of previous sequentially dropped frames.
13777
13778 Default value is 0.
13779
13780 @item hi
13781 @item lo
13782 @item frac
13783 Set the dropping threshold values.
13784
13785 Values for @option{hi} and @option{lo} are for 8x8 pixel blocks and
13786 represent actual pixel value differences, so a threshold of 64
13787 corresponds to 1 unit of difference for each pixel, or the same spread
13788 out differently over the block.
13789
13790 A frame is a candidate for dropping if no 8x8 blocks differ by more
13791 than a threshold of @option{hi}, and if no more than @option{frac} blocks (1
13792 meaning the whole image) differ by more than a threshold of @option{lo}.
13793
13794 Default value for @option{hi} is 64*12, default value for @option{lo} is
13795 64*5, and default value for @option{frac} is 0.33.
13796 @end table
13797
13798
13799 @section negate
13800
13801 Negate (invert) the input video.
13802
13803 It accepts the following option:
13804
13805 @table @option
13806
13807 @item negate_alpha
13808 With value 1, it negates the alpha component, if present. Default value is 0.
13809 @end table
13810
13811 @anchor{nlmeans}
13812 @section nlmeans
13813
13814 Denoise frames using Non-Local Means algorithm.
13815
13816 Each pixel is adjusted by looking for other pixels with similar contexts. This
13817 context similarity is defined by comparing their surrounding patches of size
13818 @option{p}x@option{p}. Patches are searched in an area of @option{r}x@option{r}
13819 around the pixel.
13820
13821 Note that the research area defines centers for patches, which means some
13822 patches will be made of pixels outside that research area.
13823
13824 The filter accepts the following options.
13825
13826 @table @option
13827 @item s
13828 Set denoising strength. Default is 1.0. Must be in range [1.0, 30.0].
13829
13830 @item p
13831 Set patch size. Default is 7. Must be odd number in range [0, 99].
13832
13833 @item pc
13834 Same as @option{p} but for chroma planes.
13835
13836 The default value is @var{0} and means automatic.
13837
13838 @item r
13839 Set research size. Default is 15. Must be odd number in range [0, 99].
13840
13841 @item rc
13842 Same as @option{r} but for chroma planes.
13843
13844 The default value is @var{0} and means automatic.
13845 @end table
13846
13847 @section nnedi
13848
13849 Deinterlace video using neural network edge directed interpolation.
13850
13851 This filter accepts the following options:
13852
13853 @table @option
13854 @item weights
13855 Mandatory option, without binary file filter can not work.
13856 Currently file can be found here:
13857 https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin
13858
13859 @item deint
13860 Set which frames to deinterlace, by default it is @code{all}.
13861 Can be @code{all} or @code{interlaced}.
13862
13863 @item field
13864 Set mode of operation.
13865
13866 Can be one of the following:
13867
13868 @table @samp
13869 @item af
13870 Use frame flags, both fields.
13871 @item a
13872 Use frame flags, single field.
13873 @item t
13874 Use top field only.
13875 @item b
13876 Use bottom field only.
13877 @item tf
13878 Use both fields, top first.
13879 @item bf
13880 Use both fields, bottom first.
13881 @end table
13882
13883 @item planes
13884 Set which planes to process, by default filter process all frames.
13885
13886 @item nsize
13887 Set size of local neighborhood around each pixel, used by the predictor neural
13888 network.
13889
13890 Can be one of the following:
13891
13892 @table @samp
13893 @item s8x6
13894 @item s16x6
13895 @item s32x6
13896 @item s48x6
13897 @item s8x4
13898 @item s16x4
13899 @item s32x4
13900 @end table
13901
13902 @item nns
13903 Set the number of neurons in predictor neural network.
13904 Can be one of the following:
13905
13906 @table @samp
13907 @item n16
13908 @item n32
13909 @item n64
13910 @item n128
13911 @item n256
13912 @end table
13913
13914 @item qual
13915 Controls the number of different neural network predictions that are blended
13916 together to compute the final output value. Can be @code{fast}, default or
13917 @code{slow}.
13918
13919 @item etype
13920 Set which set of weights to use in the predictor.
13921 Can be one of the following:
13922
13923 @table @samp
13924 @item a
13925 weights trained to minimize absolute error
13926 @item s
13927 weights trained to minimize squared error
13928 @end table
13929
13930 @item pscrn
13931 Controls whether or not the prescreener neural network is used to decide
13932 which pixels should be processed by the predictor neural network and which
13933 can be handled by simple cubic interpolation.
13934 The prescreener is trained to know whether cubic interpolation will be
13935 sufficient for a pixel or whether it should be predicted by the predictor nn.
13936 The computational complexity of the prescreener nn is much less than that of
13937 the predictor nn. Since most pixels can be handled by cubic interpolation,
13938 using the prescreener generally results in much faster processing.
13939 The prescreener is pretty accurate, so the difference between using it and not
13940 using it is almost always unnoticeable.
13941
13942 Can be one of the following:
13943
13944 @table @samp
13945 @item none
13946 @item original
13947 @item new
13948 @end table
13949
13950 Default is @code{new}.
13951
13952 @item fapprox
13953 Set various debugging flags.
13954 @end table
13955
13956 @section noformat
13957
13958 Force libavfilter not to use any of the specified pixel formats for the
13959 input to the next filter.
13960
13961 It accepts the following parameters:
13962 @table @option
13963
13964 @item pix_fmts
13965 A '|'-separated list of pixel format names, such as
13966 pix_fmts=yuv420p|monow|rgb24".
13967
13968 @end table
13969
13970 @subsection Examples
13971
13972 @itemize
13973 @item
13974 Force libavfilter to use a format different from @var{yuv420p} for the
13975 input to the vflip filter:
13976 @example
13977 noformat=pix_fmts=yuv420p,vflip
13978 @end example
13979
13980 @item
13981 Convert the input video to any of the formats not contained in the list:
13982 @example
13983 noformat=yuv420p|yuv444p|yuv410p
13984 @end example
13985 @end itemize
13986
13987 @section noise
13988
13989 Add noise on video input frame.
13990
13991 The filter accepts the following options:
13992
13993 @table @option
13994 @item all_seed
13995 @item c0_seed
13996 @item c1_seed
13997 @item c2_seed
13998 @item c3_seed
13999 Set noise seed for specific pixel component or all pixel components in case
14000 of @var{all_seed}. Default value is @code{123457}.
14001
14002 @item all_strength, alls
14003 @item c0_strength, c0s
14004 @item c1_strength, c1s
14005 @item c2_strength, c2s
14006 @item c3_strength, c3s
14007 Set noise strength for specific pixel component or all pixel components in case
14008 @var{all_strength}. Default value is @code{0}. Allowed range is [0, 100].
14009
14010 @item all_flags, allf
14011 @item c0_flags, c0f
14012 @item c1_flags, c1f
14013 @item c2_flags, c2f
14014 @item c3_flags, c3f
14015 Set pixel component flags or set flags for all components if @var{all_flags}.
14016 Available values for component flags are:
14017 @table @samp
14018 @item a
14019 averaged temporal noise (smoother)
14020 @item p
14021 mix random noise with a (semi)regular pattern
14022 @item t
14023 temporal noise (noise pattern changes between frames)
14024 @item u
14025 uniform noise (gaussian otherwise)
14026 @end table
14027 @end table
14028
14029 @subsection Examples
14030
14031 Add temporal and uniform noise to input video:
14032 @example
14033 noise=alls=20:allf=t+u
14034 @end example
14035
14036 @section normalize
14037
14038 Normalize RGB video (aka histogram stretching, contrast stretching).
14039 See: https://en.wikipedia.org/wiki/Normalization_(image_processing)
14040
14041 For each channel of each frame, the filter computes the input range and maps
14042 it linearly to the user-specified output range. The output range defaults
14043 to the full dynamic range from pure black to pure white.
14044
14045 Temporal smoothing can be used on the input range to reduce flickering (rapid
14046 changes in brightness) caused when small dark or bright objects enter or leave
14047 the scene. This is similar to the auto-exposure (automatic gain control) on a
14048 video camera, and, like a video camera, it may cause a period of over- or
14049 under-exposure of the video.
14050
14051 The R,G,B channels can be normalized independently, which may cause some
14052 color shifting, or linked together as a single channel, which prevents
14053 color shifting. Linked normalization preserves hue. Independent normalization
14054 does not, so it can be used to remove some color casts. Independent and linked
14055 normalization can be combined in any ratio.
14056
14057 The normalize filter accepts the following options:
14058
14059 @table @option
14060 @item blackpt
14061 @item whitept
14062 Colors which define the output range. The minimum input value is mapped to
14063 the @var{blackpt}. The maximum input value is mapped to the @var{whitept}.
14064 The defaults are black and white respectively. Specifying white for
14065 @var{blackpt} and black for @var{whitept} will give color-inverted,
14066 normalized video. Shades of grey can be used to reduce the dynamic range
14067 (contrast). Specifying saturated colors here can create some interesting
14068 effects.
14069
14070 @item smoothing
14071 The number of previous frames to use for temporal smoothing. The input range
14072 of each channel is smoothed using a rolling average over the current frame
14073 and the @var{smoothing} previous frames. The default is 0 (no temporal
14074 smoothing).
14075
14076 @item independence
14077 Controls the ratio of independent (color shifting) channel normalization to
14078 linked (color preserving) normalization. 0.0 is fully linked, 1.0 is fully
14079 independent. Defaults to 1.0 (fully independent).
14080
14081 @item strength
14082 Overall strength of the filter. 1.0 is full strength. 0.0 is a rather
14083 expensive no-op. Defaults to 1.0 (full strength).
14084
14085 @end table
14086
14087 @subsection Commands
14088 This filter supports same @ref{commands} as options, excluding @var{smoothing} option.
14089 The command accepts the same syntax of the corresponding option.
14090
14091 If the specified expression is not valid, it is kept at its current
14092 value.
14093
14094 @subsection Examples
14095
14096 Stretch video contrast to use the full dynamic range, with no temporal
14097 smoothing; may flicker depending on the source content:
14098 @example
14099 normalize=blackpt=black:whitept=white:smoothing=0
14100 @end example
14101
14102 As above, but with 50 frames of temporal smoothing; flicker should be
14103 reduced, depending on the source content:
14104 @example
14105 normalize=blackpt=black:whitept=white:smoothing=50
14106 @end example
14107
14108 As above, but with hue-preserving linked channel normalization:
14109 @example
14110 normalize=blackpt=black:whitept=white:smoothing=50:independence=0
14111 @end example
14112
14113 As above, but with half strength:
14114 @example
14115 normalize=blackpt=black:whitept=white:smoothing=50:independence=0:strength=0.5
14116 @end example
14117
14118 Map the darkest input color to red, the brightest input color to cyan:
14119 @example
14120 normalize=blackpt=red:whitept=cyan
14121 @end example
14122
14123 @section null
14124
14125 Pass the video source unchanged to the output.
14126
14127 @section ocr
14128 Optical Character Recognition
14129
14130 This filter uses Tesseract for optical character recognition. To enable
14131 compilation of this filter, you need to configure FFmpeg with
14132 @code{--enable-libtesseract}.
14133
14134 It accepts the following options:
14135
14136 @table @option
14137 @item datapath
14138 Set datapath to tesseract data. Default is to use whatever was
14139 set at installation.
14140
14141 @item language
14142 Set language, default is "eng".
14143
14144 @item whitelist
14145 Set character whitelist.
14146
14147 @item blacklist
14148 Set character blacklist.
14149 @end table
14150
14151 The filter exports recognized text as the frame metadata @code{lavfi.ocr.text}.
14152 The filter exports confidence of recognized words as the frame metadata @code{lavfi.ocr.confidence}.
14153
14154 @section ocv
14155
14156 Apply a video transform using libopencv.
14157
14158 To enable this filter, install the libopencv library and headers and
14159 configure FFmpeg with @code{--enable-libopencv}.
14160
14161 It accepts the following parameters:
14162
14163 @table @option
14164
14165 @item filter_name
14166 The name of the libopencv filter to apply.
14167
14168 @item filter_params
14169 The parameters to pass to the libopencv filter. If not specified, the default
14170 values are assumed.
14171
14172 @end table
14173
14174 Refer to the official libopencv documentation for more precise
14175 information:
14176 @url{http://docs.opencv.org/master/modules/imgproc/doc/filtering.html}
14177
14178 Several libopencv filters are supported; see the following subsections.
14179
14180 @anchor{dilate}
14181 @subsection dilate
14182
14183 Dilate an image by using a specific structuring element.
14184 It corresponds to the libopencv function @code{cvDilate}.
14185
14186 It accepts the parameters: @var{struct_el}|@var{nb_iterations}.
14187
14188 @var{struct_el} represents a structuring element, and has the syntax:
14189 @var{cols}x@var{rows}+@var{anchor_x}x@var{anchor_y}/@var{shape}
14190
14191 @var{cols} and @var{rows} represent the number of columns and rows of
14192 the structuring element, @var{anchor_x} and @var{anchor_y} the anchor
14193 point, and @var{shape} the shape for the structuring element. @var{shape}
14194 must be "rect", "cross", "ellipse", or "custom".
14195
14196 If the value for @var{shape} is "custom", it must be followed by a
14197 string of the form "=@var{filename}". The file with name
14198 @var{filename} is assumed to represent a binary image, with each
14199 printable character corresponding to a bright pixel. When a custom
14200 @var{shape} is used, @var{cols} and @var{rows} are ignored, the number
14201 or columns and rows of the read file are assumed instead.
14202
14203 The default value for @var{struct_el} is "3x3+0x0/rect".
14204
14205 @var{nb_iterations} specifies the number of times the transform is
14206 applied to the image, and defaults to 1.
14207
14208 Some examples:
14209 @example
14210 # Use the default values
14211 ocv=dilate
14212
14213 # Dilate using a structuring element with a 5x5 cross, iterating two times
14214 ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
14215
14216 # Read the shape from the file diamond.shape, iterating two times.
14217 # The file diamond.shape may contain a pattern of characters like this
14218 #   *
14219 #  ***
14220 # *****
14221 #  ***
14222 #   *
14223 # The specified columns and rows are ignored
14224 # but the anchor point coordinates are not
14225 ocv=dilate:0x0+2x2/custom=diamond.shape|2
14226 @end example
14227
14228 @subsection erode
14229
14230 Erode an image by using a specific structuring element.
14231 It corresponds to the libopencv function @code{cvErode}.
14232
14233 It accepts the parameters: @var{struct_el}:@var{nb_iterations},
14234 with the same syntax and semantics as the @ref{dilate} filter.
14235
14236 @subsection smooth
14237
14238 Smooth the input video.
14239
14240 The filter takes the following parameters:
14241 @var{type}|@var{param1}|@var{param2}|@var{param3}|@var{param4}.
14242
14243 @var{type} is the type of smooth filter to apply, and must be one of
14244 the following values: "blur", "blur_no_scale", "median", "gaussian",
14245 or "bilateral". The default value is "gaussian".
14246
14247 The meaning of @var{param1}, @var{param2}, @var{param3}, and @var{param4}
14248 depends on the smooth type. @var{param1} and
14249 @var{param2} accept integer positive values or 0. @var{param3} and
14250 @var{param4} accept floating point values.
14251
14252 The default value for @var{param1} is 3. The default value for the
14253 other parameters is 0.
14254
14255 These parameters correspond to the parameters assigned to the
14256 libopencv function @code{cvSmooth}.
14257
14258 @section oscilloscope
14259
14260 2D Video Oscilloscope.
14261
14262 Useful to measure spatial impulse, step responses, chroma delays, etc.
14263
14264 It accepts the following parameters:
14265
14266 @table @option
14267 @item x
14268 Set scope center x position.
14269
14270 @item y
14271 Set scope center y position.
14272
14273 @item s
14274 Set scope size, relative to frame diagonal.
14275
14276 @item t
14277 Set scope tilt/rotation.
14278
14279 @item o
14280 Set trace opacity.
14281
14282 @item tx
14283 Set trace center x position.
14284
14285 @item ty
14286 Set trace center y position.
14287
14288 @item tw
14289 Set trace width, relative to width of frame.
14290
14291 @item th
14292 Set trace height, relative to height of frame.
14293
14294 @item c
14295 Set which components to trace. By default it traces first three components.
14296
14297 @item g
14298 Draw trace grid. By default is enabled.
14299
14300 @item st
14301 Draw some statistics. By default is enabled.
14302
14303 @item sc
14304 Draw scope. By default is enabled.
14305 @end table
14306
14307 @subsection Commands
14308 This filter supports same @ref{commands} as options.
14309 The command accepts the same syntax of the corresponding option.
14310
14311 If the specified expression is not valid, it is kept at its current
14312 value.
14313
14314 @subsection Examples
14315
14316 @itemize
14317 @item
14318 Inspect full first row of video frame.
14319 @example
14320 oscilloscope=x=0.5:y=0:s=1
14321 @end example
14322
14323 @item
14324 Inspect full last row of video frame.
14325 @example
14326 oscilloscope=x=0.5:y=1:s=1
14327 @end example
14328
14329 @item
14330 Inspect full 5th line of video frame of height 1080.
14331 @example
14332 oscilloscope=x=0.5:y=5/1080:s=1
14333 @end example
14334
14335 @item
14336 Inspect full last column of video frame.
14337 @example
14338 oscilloscope=x=1:y=0.5:s=1:t=1
14339 @end example
14340
14341 @end itemize
14342
14343 @anchor{overlay}
14344 @section overlay
14345
14346 Overlay one video on top of another.
14347
14348 It takes two inputs and has one output. The first input is the "main"
14349 video on which the second input is overlaid.
14350
14351 It accepts the following parameters:
14352
14353 A description of the accepted options follows.
14354
14355 @table @option
14356 @item x
14357 @item y
14358 Set the expression for the x and y coordinates of the overlaid video
14359 on the main video. Default value is "0" for both expressions. In case
14360 the expression is invalid, it is set to a huge value (meaning that the
14361 overlay will not be displayed within the output visible area).
14362
14363 @item eof_action
14364 See @ref{framesync}.
14365
14366 @item eval
14367 Set when the expressions for @option{x}, and @option{y} are evaluated.
14368
14369 It accepts the following values:
14370 @table @samp
14371 @item init
14372 only evaluate expressions once during the filter initialization or
14373 when a command is processed
14374
14375 @item frame
14376 evaluate expressions for each incoming frame
14377 @end table
14378
14379 Default value is @samp{frame}.
14380
14381 @item shortest
14382 See @ref{framesync}.
14383
14384 @item format
14385 Set the format for the output video.
14386
14387 It accepts the following values:
14388 @table @samp
14389 @item yuv420
14390 force YUV420 output
14391
14392 @item yuv420p10
14393 force YUV420p10 output
14394
14395 @item yuv422
14396 force YUV422 output
14397
14398 @item yuv422p10
14399 force YUV422p10 output
14400
14401 @item yuv444
14402 force YUV444 output
14403
14404 @item rgb
14405 force packed RGB output
14406
14407 @item gbrp
14408 force planar RGB output
14409
14410 @item auto
14411 automatically pick format
14412 @end table
14413
14414 Default value is @samp{yuv420}.
14415
14416 @item repeatlast
14417 See @ref{framesync}.
14418
14419 @item alpha
14420 Set format of alpha of the overlaid video, it can be @var{straight} or
14421 @var{premultiplied}. Default is @var{straight}.
14422 @end table
14423
14424 The @option{x}, and @option{y} expressions can contain the following
14425 parameters.
14426
14427 @table @option
14428 @item main_w, W
14429 @item main_h, H
14430 The main input width and height.
14431
14432 @item overlay_w, w
14433 @item overlay_h, h
14434 The overlay input width and height.
14435
14436 @item x
14437 @item y
14438 The computed values for @var{x} and @var{y}. They are evaluated for
14439 each new frame.
14440
14441 @item hsub
14442 @item vsub
14443 horizontal and vertical chroma subsample values of the output
14444 format. For example for the pixel format "yuv422p" @var{hsub} is 2 and
14445 @var{vsub} is 1.
14446
14447 @item n
14448 the number of input frame, starting from 0
14449
14450 @item pos
14451 the position in the file of the input frame, NAN if unknown
14452
14453 @item t
14454 The timestamp, expressed in seconds. It's NAN if the input timestamp is unknown.
14455
14456 @end table
14457
14458 This filter also supports the @ref{framesync} options.
14459
14460 Note that the @var{n}, @var{pos}, @var{t} variables are available only
14461 when evaluation is done @emph{per frame}, and will evaluate to NAN
14462 when @option{eval} is set to @samp{init}.
14463
14464 Be aware that frames are taken from each input video in timestamp
14465 order, hence, if their initial timestamps differ, it is a good idea
14466 to pass the two inputs through a @var{setpts=PTS-STARTPTS} filter to
14467 have them begin in the same zero timestamp, as the example for
14468 the @var{movie} filter does.
14469
14470 You can chain together more overlays but you should test the
14471 efficiency of such approach.
14472
14473 @subsection Commands
14474
14475 This filter supports the following commands:
14476 @table @option
14477 @item x
14478 @item y
14479 Modify the x and y of the overlay input.
14480 The command accepts the same syntax of the corresponding option.
14481
14482 If the specified expression is not valid, it is kept at its current
14483 value.
14484 @end table
14485
14486 @subsection Examples
14487
14488 @itemize
14489 @item
14490 Draw the overlay at 10 pixels from the bottom right corner of the main
14491 video:
14492 @example
14493 overlay=main_w-overlay_w-10:main_h-overlay_h-10
14494 @end example
14495
14496 Using named options the example above becomes:
14497 @example
14498 overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
14499 @end example
14500
14501 @item
14502 Insert a transparent PNG logo in the bottom left corner of the input,
14503 using the @command{ffmpeg} tool with the @code{-filter_complex} option:
14504 @example
14505 ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
14506 @end example
14507
14508 @item
14509 Insert 2 different transparent PNG logos (second logo on bottom
14510 right corner) using the @command{ffmpeg} tool:
14511 @example
14512 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
14513 @end example
14514
14515 @item
14516 Add a transparent color layer on top of the main video; @code{WxH}
14517 must specify the size of the main input to the overlay filter:
14518 @example
14519 color=color=red@@.3:size=WxH [over]; [in][over] overlay [out]
14520 @end example
14521
14522 @item
14523 Play an original video and a filtered version (here with the deshake
14524 filter) side by side using the @command{ffplay} tool:
14525 @example
14526 ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
14527 @end example
14528
14529 The above command is the same as:
14530 @example
14531 ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
14532 @end example
14533
14534 @item
14535 Make a sliding overlay appearing from the left to the right top part of the
14536 screen starting since time 2:
14537 @example
14538 overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
14539 @end example
14540
14541 @item
14542 Compose output by putting two input videos side to side:
14543 @example
14544 ffmpeg -i left.avi -i right.avi -filter_complex "
14545 nullsrc=size=200x100 [background];
14546 [0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
14547 [1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
14548 [background][left]       overlay=shortest=1       [background+left];
14549 [background+left][right] overlay=shortest=1:x=100 [left+right]
14550 "
14551 @end example
14552
14553 @item
14554 Mask 10-20 seconds of a video by applying the delogo filter to a section
14555 @example
14556 ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
14557 -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]'
14558 masked.avi
14559 @end example
14560
14561 @item
14562 Chain several overlays in cascade:
14563 @example
14564 nullsrc=s=200x200 [bg];
14565 testsrc=s=100x100, split=4 [in0][in1][in2][in3];
14566 [in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
14567 [in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
14568 [in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
14569 [in3] null,       [mid2] overlay=100:100 [out0]
14570 @end example
14571
14572 @end itemize
14573
14574 @anchor{overlay_cuda}
14575 @section overlay_cuda
14576
14577 Overlay one video on top of another.
14578
14579 This is the CUDA cariant of the @ref{overlay} filter.
14580 It only accepts CUDA frames. The underlying input pixel formats have to match.
14581
14582 It takes two inputs and has one output. The first input is the "main"
14583 video on which the second input is overlaid.
14584
14585 It accepts the following parameters:
14586
14587 @table @option
14588 @item x
14589 @item y
14590 Set the x and y coordinates of the overlaid video on the main video.
14591 Default value is "0" for both expressions.
14592
14593 @item eof_action
14594 See @ref{framesync}.
14595
14596 @item shortest
14597 See @ref{framesync}.
14598
14599 @item repeatlast
14600 See @ref{framesync}.
14601
14602 @end table
14603
14604 This filter also supports the @ref{framesync} options.
14605
14606 @section owdenoise
14607
14608 Apply Overcomplete Wavelet denoiser.
14609
14610 The filter accepts the following options:
14611
14612 @table @option
14613 @item depth
14614 Set depth.
14615
14616 Larger depth values will denoise lower frequency components more, but
14617 slow down filtering.
14618
14619 Must be an int in the range 8-16, default is @code{8}.
14620
14621 @item luma_strength, ls
14622 Set luma strength.
14623
14624 Must be a double value in the range 0-1000, default is @code{1.0}.
14625
14626 @item chroma_strength, cs
14627 Set chroma strength.
14628
14629 Must be a double value in the range 0-1000, default is @code{1.0}.
14630 @end table
14631
14632 @anchor{pad}
14633 @section pad
14634
14635 Add paddings to the input image, and place the original input at the
14636 provided @var{x}, @var{y} coordinates.
14637
14638 It accepts the following parameters:
14639
14640 @table @option
14641 @item width, w
14642 @item height, h
14643 Specify an expression for the size of the output image with the
14644 paddings added. If the value for @var{width} or @var{height} is 0, the
14645 corresponding input size is used for the output.
14646
14647 The @var{width} expression can reference the value set by the
14648 @var{height} expression, and vice versa.
14649
14650 The default value of @var{width} and @var{height} is 0.
14651
14652 @item x
14653 @item y
14654 Specify the offsets to place the input image at within the padded area,
14655 with respect to the top/left border of the output image.
14656
14657 The @var{x} expression can reference the value set by the @var{y}
14658 expression, and vice versa.
14659
14660 The default value of @var{x} and @var{y} is 0.
14661
14662 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
14663 so the input image is centered on the padded area.
14664
14665 @item color
14666 Specify the color of the padded area. For the syntax of this option,
14667 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
14668 manual,ffmpeg-utils}.
14669
14670 The default value of @var{color} is "black".
14671
14672 @item eval
14673 Specify when to evaluate  @var{width}, @var{height}, @var{x} and @var{y} expression.
14674
14675 It accepts the following values:
14676
14677 @table @samp
14678 @item init
14679 Only evaluate expressions once during the filter initialization or when
14680 a command is processed.
14681
14682 @item frame
14683 Evaluate expressions for each incoming frame.
14684
14685 @end table
14686
14687 Default value is @samp{init}.
14688
14689 @item aspect
14690 Pad to aspect instead to a resolution.
14691
14692 @end table
14693
14694 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
14695 options are expressions containing the following constants:
14696
14697 @table @option
14698 @item in_w
14699 @item in_h
14700 The input video width and height.
14701
14702 @item iw
14703 @item ih
14704 These are the same as @var{in_w} and @var{in_h}.
14705
14706 @item out_w
14707 @item out_h
14708 The output width and height (the size of the padded area), as
14709 specified by the @var{width} and @var{height} expressions.
14710
14711 @item ow
14712 @item oh
14713 These are the same as @var{out_w} and @var{out_h}.
14714
14715 @item x
14716 @item y
14717 The x and y offsets as specified by the @var{x} and @var{y}
14718 expressions, or NAN if not yet specified.
14719
14720 @item a
14721 same as @var{iw} / @var{ih}
14722
14723 @item sar
14724 input sample aspect ratio
14725
14726 @item dar
14727 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
14728
14729 @item hsub
14730 @item vsub
14731 The horizontal and vertical chroma subsample values. For example for the
14732 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
14733 @end table
14734
14735 @subsection Examples
14736
14737 @itemize
14738 @item
14739 Add paddings with the color "violet" to the input video. The output video
14740 size is 640x480, and the top-left corner of the input video is placed at
14741 column 0, row 40
14742 @example
14743 pad=640:480:0:40:violet
14744 @end example
14745
14746 The example above is equivalent to the following command:
14747 @example
14748 pad=width=640:height=480:x=0:y=40:color=violet
14749 @end example
14750
14751 @item
14752 Pad the input to get an output with dimensions increased by 3/2,
14753 and put the input video at the center of the padded area:
14754 @example
14755 pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
14756 @end example
14757
14758 @item
14759 Pad the input to get a squared output with size equal to the maximum
14760 value between the input width and height, and put the input video at
14761 the center of the padded area:
14762 @example
14763 pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
14764 @end example
14765
14766 @item
14767 Pad the input to get a final w/h ratio of 16:9:
14768 @example
14769 pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
14770 @end example
14771
14772 @item
14773 In case of anamorphic video, in order to set the output display aspect
14774 correctly, it is necessary to use @var{sar} in the expression,
14775 according to the relation:
14776 @example
14777 (ih * X / ih) * sar = output_dar
14778 X = output_dar / sar
14779 @end example
14780
14781 Thus the previous example needs to be modified to:
14782 @example
14783 pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
14784 @end example
14785
14786 @item
14787 Double the output size and put the input video in the bottom-right
14788 corner of the output padded area:
14789 @example
14790 pad="2*iw:2*ih:ow-iw:oh-ih"
14791 @end example
14792 @end itemize
14793
14794 @anchor{palettegen}
14795 @section palettegen
14796
14797 Generate one palette for a whole video stream.
14798
14799 It accepts the following options:
14800
14801 @table @option
14802 @item max_colors
14803 Set the maximum number of colors to quantize in the palette.
14804 Note: the palette will still contain 256 colors; the unused palette entries
14805 will be black.
14806
14807 @item reserve_transparent
14808 Create a palette of 255 colors maximum and reserve the last one for
14809 transparency. Reserving the transparency color is useful for GIF optimization.
14810 If not set, the maximum of colors in the palette will be 256. You probably want
14811 to disable this option for a standalone image.
14812 Set by default.
14813
14814 @item transparency_color
14815 Set the color that will be used as background for transparency.
14816
14817 @item stats_mode
14818 Set statistics mode.
14819
14820 It accepts the following values:
14821 @table @samp
14822 @item full
14823 Compute full frame histograms.
14824 @item diff
14825 Compute histograms only for the part that differs from previous frame. This
14826 might be relevant to give more importance to the moving part of your input if
14827 the background is static.
14828 @item single
14829 Compute new histogram for each frame.
14830 @end table
14831
14832 Default value is @var{full}.
14833 @end table
14834
14835 The filter also exports the frame metadata @code{lavfi.color_quant_ratio}
14836 (@code{nb_color_in / nb_color_out}) which you can use to evaluate the degree of
14837 color quantization of the palette. This information is also visible at
14838 @var{info} logging level.
14839
14840 @subsection Examples
14841
14842 @itemize
14843 @item
14844 Generate a representative palette of a given video using @command{ffmpeg}:
14845 @example
14846 ffmpeg -i input.mkv -vf palettegen palette.png
14847 @end example
14848 @end itemize
14849
14850 @section paletteuse
14851
14852 Use a palette to downsample an input video stream.
14853
14854 The filter takes two inputs: one video stream and a palette. The palette must
14855 be a 256 pixels image.
14856
14857 It accepts the following options:
14858
14859 @table @option
14860 @item dither
14861 Select dithering mode. Available algorithms are:
14862 @table @samp
14863 @item bayer
14864 Ordered 8x8 bayer dithering (deterministic)
14865 @item heckbert
14866 Dithering as defined by Paul Heckbert in 1982 (simple error diffusion).
14867 Note: this dithering is sometimes considered "wrong" and is included as a
14868 reference.
14869 @item floyd_steinberg
14870 Floyd and Steingberg dithering (error diffusion)
14871 @item sierra2
14872 Frankie Sierra dithering v2 (error diffusion)
14873 @item sierra2_4a
14874 Frankie Sierra dithering v2 "Lite" (error diffusion)
14875 @end table
14876
14877 Default is @var{sierra2_4a}.
14878
14879 @item bayer_scale
14880 When @var{bayer} dithering is selected, this option defines the scale of the
14881 pattern (how much the crosshatch pattern is visible). A low value means more
14882 visible pattern for less banding, and higher value means less visible pattern
14883 at the cost of more banding.
14884
14885 The option must be an integer value in the range [0,5]. Default is @var{2}.
14886
14887 @item diff_mode
14888 If set, define the zone to process
14889
14890 @table @samp
14891 @item rectangle
14892 Only the changing rectangle will be reprocessed. This is similar to GIF
14893 cropping/offsetting compression mechanism. This option can be useful for speed
14894 if only a part of the image is changing, and has use cases such as limiting the
14895 scope of the error diffusal @option{dither} to the rectangle that bounds the
14896 moving scene (it leads to more deterministic output if the scene doesn't change
14897 much, and as a result less moving noise and better GIF compression).
14898 @end table
14899
14900 Default is @var{none}.
14901
14902 @item new
14903 Take new palette for each output frame.
14904
14905 @item alpha_threshold
14906 Sets the alpha threshold for transparency. Alpha values above this threshold
14907 will be treated as completely opaque, and values below this threshold will be
14908 treated as completely transparent.
14909
14910 The option must be an integer value in the range [0,255]. Default is @var{128}.
14911 @end table
14912
14913 @subsection Examples
14914
14915 @itemize
14916 @item
14917 Use a palette (generated for example with @ref{palettegen}) to encode a GIF
14918 using @command{ffmpeg}:
14919 @example
14920 ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
14921 @end example
14922 @end itemize
14923
14924 @section perspective
14925
14926 Correct perspective of video not recorded perpendicular to the screen.
14927
14928 A description of the accepted parameters follows.
14929
14930 @table @option
14931 @item x0
14932 @item y0
14933 @item x1
14934 @item y1
14935 @item x2
14936 @item y2
14937 @item x3
14938 @item y3
14939 Set coordinates expression for top left, top right, bottom left and bottom right corners.
14940 Default values are @code{0:0:W:0:0:H:W:H} with which perspective will remain unchanged.
14941 If the @code{sense} option is set to @code{source}, then the specified points will be sent
14942 to the corners of the destination. If the @code{sense} option is set to @code{destination},
14943 then the corners of the source will be sent to the specified coordinates.
14944
14945 The expressions can use the following variables:
14946
14947 @table @option
14948 @item W
14949 @item H
14950 the width and height of video frame.
14951 @item in
14952 Input frame count.
14953 @item on
14954 Output frame count.
14955 @end table
14956
14957 @item interpolation
14958 Set interpolation for perspective correction.
14959
14960 It accepts the following values:
14961 @table @samp
14962 @item linear
14963 @item cubic
14964 @end table
14965
14966 Default value is @samp{linear}.
14967
14968 @item sense
14969 Set interpretation of coordinate options.
14970
14971 It accepts the following values:
14972 @table @samp
14973 @item 0, source
14974
14975 Send point in the source specified by the given coordinates to
14976 the corners of the destination.
14977
14978 @item 1, destination
14979
14980 Send the corners of the source to the point in the destination specified
14981 by the given coordinates.
14982
14983 Default value is @samp{source}.
14984 @end table
14985
14986 @item eval
14987 Set when the expressions for coordinates @option{x0,y0,...x3,y3} are evaluated.
14988
14989 It accepts the following values:
14990 @table @samp
14991 @item init
14992 only evaluate expressions once during the filter initialization or
14993 when a command is processed
14994
14995 @item frame
14996 evaluate expressions for each incoming frame
14997 @end table
14998
14999 Default value is @samp{init}.
15000 @end table
15001
15002 @section phase
15003
15004 Delay interlaced video by one field time so that the field order changes.
15005
15006 The intended use is to fix PAL movies that have been captured with the
15007 opposite field order to the film-to-video transfer.
15008
15009 A description of the accepted parameters follows.
15010
15011 @table @option
15012 @item mode
15013 Set phase mode.
15014
15015 It accepts the following values:
15016 @table @samp
15017 @item t
15018 Capture field order top-first, transfer bottom-first.
15019 Filter will delay the bottom field.
15020
15021 @item b
15022 Capture field order bottom-first, transfer top-first.
15023 Filter will delay the top field.
15024
15025 @item p
15026 Capture and transfer with the same field order. This mode only exists
15027 for the documentation of the other options to refer to, but if you
15028 actually select it, the filter will faithfully do nothing.
15029
15030 @item a
15031 Capture field order determined automatically by field flags, transfer
15032 opposite.
15033 Filter selects among @samp{t} and @samp{b} modes on a frame by frame
15034 basis using field flags. If no field information is available,
15035 then this works just like @samp{u}.
15036
15037 @item u
15038 Capture unknown or varying, transfer opposite.
15039 Filter selects among @samp{t} and @samp{b} on a frame by frame basis by
15040 analyzing the images and selecting the alternative that produces best
15041 match between the fields.
15042
15043 @item T
15044 Capture top-first, transfer unknown or varying.
15045 Filter selects among @samp{t} and @samp{p} using image analysis.
15046
15047 @item B
15048 Capture bottom-first, transfer unknown or varying.
15049 Filter selects among @samp{b} and @samp{p} using image analysis.
15050
15051 @item A
15052 Capture determined by field flags, transfer unknown or varying.
15053 Filter selects among @samp{t}, @samp{b} and @samp{p} using field flags and
15054 image analysis. If no field information is available, then this works just
15055 like @samp{U}. This is the default mode.
15056
15057 @item U
15058 Both capture and transfer unknown or varying.
15059 Filter selects among @samp{t}, @samp{b} and @samp{p} using image analysis only.
15060 @end table
15061 @end table
15062
15063 @section photosensitivity
15064 Reduce various flashes in video, so to help users with epilepsy.
15065
15066 It accepts the following options:
15067 @table @option
15068 @item frames, f
15069 Set how many frames to use when filtering. Default is 30.
15070
15071 @item threshold, t
15072 Set detection threshold factor. Default is 1.
15073 Lower is stricter.
15074
15075 @item skip
15076 Set how many pixels to skip when sampling frames. Default is 1.
15077 Allowed range is from 1 to 1024.
15078
15079 @item bypass
15080 Leave frames unchanged. Default is disabled.
15081 @end table
15082
15083 @section pixdesctest
15084
15085 Pixel format descriptor test filter, mainly useful for internal
15086 testing. The output video should be equal to the input video.
15087
15088 For example:
15089 @example
15090 format=monow, pixdesctest
15091 @end example
15092
15093 can be used to test the monowhite pixel format descriptor definition.
15094
15095 @section pixscope
15096
15097 Display sample values of color channels. Mainly useful for checking color
15098 and levels. Minimum supported resolution is 640x480.
15099
15100 The filters accept the following options:
15101
15102 @table @option
15103 @item x
15104 Set scope X position, relative offset on X axis.
15105
15106 @item y
15107 Set scope Y position, relative offset on Y axis.
15108
15109 @item w
15110 Set scope width.
15111
15112 @item h
15113 Set scope height.
15114
15115 @item o
15116 Set window opacity. This window also holds statistics about pixel area.
15117
15118 @item wx
15119 Set window X position, relative offset on X axis.
15120
15121 @item wy
15122 Set window Y position, relative offset on Y axis.
15123 @end table
15124
15125 @section pp
15126
15127 Enable the specified chain of postprocessing subfilters using libpostproc. This
15128 library should be automatically selected with a GPL build (@code{--enable-gpl}).
15129 Subfilters must be separated by '/' and can be disabled by prepending a '-'.
15130 Each subfilter and some options have a short and a long name that can be used
15131 interchangeably, i.e. dr/dering are the same.
15132
15133 The filters accept the following options:
15134
15135 @table @option
15136 @item subfilters
15137 Set postprocessing subfilters string.
15138 @end table
15139
15140 All subfilters share common options to determine their scope:
15141
15142 @table @option
15143 @item a/autoq
15144 Honor the quality commands for this subfilter.
15145
15146 @item c/chrom
15147 Do chrominance filtering, too (default).
15148
15149 @item y/nochrom
15150 Do luminance filtering only (no chrominance).
15151
15152 @item n/noluma
15153 Do chrominance filtering only (no luminance).
15154 @end table
15155
15156 These options can be appended after the subfilter name, separated by a '|'.
15157
15158 Available subfilters are:
15159
15160 @table @option
15161 @item hb/hdeblock[|difference[|flatness]]
15162 Horizontal deblocking filter
15163 @table @option
15164 @item difference
15165 Difference factor where higher values mean more deblocking (default: @code{32}).
15166 @item flatness
15167 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15168 @end table
15169
15170 @item vb/vdeblock[|difference[|flatness]]
15171 Vertical deblocking filter
15172 @table @option
15173 @item difference
15174 Difference factor where higher values mean more deblocking (default: @code{32}).
15175 @item flatness
15176 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15177 @end table
15178
15179 @item ha/hadeblock[|difference[|flatness]]
15180 Accurate horizontal deblocking filter
15181 @table @option
15182 @item difference
15183 Difference factor where higher values mean more deblocking (default: @code{32}).
15184 @item flatness
15185 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15186 @end table
15187
15188 @item va/vadeblock[|difference[|flatness]]
15189 Accurate vertical deblocking filter
15190 @table @option
15191 @item difference
15192 Difference factor where higher values mean more deblocking (default: @code{32}).
15193 @item flatness
15194 Flatness threshold where lower values mean more deblocking (default: @code{39}).
15195 @end table
15196 @end table
15197
15198 The horizontal and vertical deblocking filters share the difference and
15199 flatness values so you cannot set different horizontal and vertical
15200 thresholds.
15201
15202 @table @option
15203 @item h1/x1hdeblock
15204 Experimental horizontal deblocking filter
15205
15206 @item v1/x1vdeblock
15207 Experimental vertical deblocking filter
15208
15209 @item dr/dering
15210 Deringing filter
15211
15212 @item tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer
15213 @table @option
15214 @item threshold1
15215 larger -> stronger filtering
15216 @item threshold2
15217 larger -> stronger filtering
15218 @item threshold3
15219 larger -> stronger filtering
15220 @end table
15221
15222 @item al/autolevels[:f/fullyrange], automatic brightness / contrast correction
15223 @table @option
15224 @item f/fullyrange
15225 Stretch luminance to @code{0-255}.
15226 @end table
15227
15228 @item lb/linblenddeint
15229 Linear blend deinterlacing filter that deinterlaces the given block by
15230 filtering all lines with a @code{(1 2 1)} filter.
15231
15232 @item li/linipoldeint
15233 Linear interpolating deinterlacing filter that deinterlaces the given block by
15234 linearly interpolating every second line.
15235
15236 @item ci/cubicipoldeint
15237 Cubic interpolating deinterlacing filter deinterlaces the given block by
15238 cubically interpolating every second line.
15239
15240 @item md/mediandeint
15241 Median deinterlacing filter that deinterlaces the given block by applying a
15242 median filter to every second line.
15243
15244 @item fd/ffmpegdeint
15245 FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
15246 second line with a @code{(-1 4 2 4 -1)} filter.
15247
15248 @item l5/lowpass5
15249 Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
15250 block by filtering all lines with a @code{(-1 2 6 2 -1)} filter.
15251
15252 @item fq/forceQuant[|quantizer]
15253 Overrides the quantizer table from the input with the constant quantizer you
15254 specify.
15255 @table @option
15256 @item quantizer
15257 Quantizer to use
15258 @end table
15259
15260 @item de/default
15261 Default pp filter combination (@code{hb|a,vb|a,dr|a})
15262
15263 @item fa/fast
15264 Fast pp filter combination (@code{h1|a,v1|a,dr|a})
15265
15266 @item ac
15267 High quality pp filter combination (@code{ha|a|128|7,va|a,dr|a})
15268 @end table
15269
15270 @subsection Examples
15271
15272 @itemize
15273 @item
15274 Apply horizontal and vertical deblocking, deringing and automatic
15275 brightness/contrast:
15276 @example
15277 pp=hb/vb/dr/al
15278 @end example
15279
15280 @item
15281 Apply default filters without brightness/contrast correction:
15282 @example
15283 pp=de/-al
15284 @end example
15285
15286 @item
15287 Apply default filters and temporal denoiser:
15288 @example
15289 pp=default/tmpnoise|1|2|3
15290 @end example
15291
15292 @item
15293 Apply deblocking on luminance only, and switch vertical deblocking on or off
15294 automatically depending on available CPU time:
15295 @example
15296 pp=hb|y/vb|a
15297 @end example
15298 @end itemize
15299
15300 @section pp7
15301 Apply Postprocessing filter 7. It is variant of the @ref{spp} filter,
15302 similar to spp = 6 with 7 point DCT, where only the center sample is
15303 used after IDCT.
15304
15305 The filter accepts the following options:
15306
15307 @table @option
15308 @item qp
15309 Force a constant quantization parameter. It accepts an integer in range
15310 0 to 63. If not set, the filter will use the QP from the video stream
15311 (if available).
15312
15313 @item mode
15314 Set thresholding mode. Available modes are:
15315
15316 @table @samp
15317 @item hard
15318 Set hard thresholding.
15319 @item soft
15320 Set soft thresholding (better de-ringing effect, but likely blurrier).
15321 @item medium
15322 Set medium thresholding (good results, default).
15323 @end table
15324 @end table
15325
15326 @section premultiply
15327 Apply alpha premultiply effect to input video stream using first plane
15328 of second stream as alpha.
15329
15330 Both streams must have same dimensions and same pixel format.
15331
15332 The filter accepts the following option:
15333
15334 @table @option
15335 @item planes
15336 Set which planes will be processed, unprocessed planes will be copied.
15337 By default value 0xf, all planes will be processed.
15338
15339 @item inplace
15340 Do not require 2nd input for processing, instead use alpha plane from input stream.
15341 @end table
15342
15343 @section prewitt
15344 Apply prewitt operator to input video stream.
15345
15346 The filter accepts the following option:
15347
15348 @table @option
15349 @item planes
15350 Set which planes will be processed, unprocessed planes will be copied.
15351 By default value 0xf, all planes will be processed.
15352
15353 @item scale
15354 Set value which will be multiplied with filtered result.
15355
15356 @item delta
15357 Set value which will be added to filtered result.
15358 @end table
15359
15360 @section pseudocolor
15361
15362 Alter frame colors in video with pseudocolors.
15363
15364 This filter accepts the following options:
15365
15366 @table @option
15367 @item c0
15368 set pixel first component expression
15369
15370 @item c1
15371 set pixel second component expression
15372
15373 @item c2
15374 set pixel third component expression
15375
15376 @item c3
15377 set pixel fourth component expression, corresponds to the alpha component
15378
15379 @item i
15380 set component to use as base for altering colors
15381 @end table
15382
15383 Each of them specifies the expression to use for computing the lookup table for
15384 the corresponding pixel component values.
15385
15386 The expressions can contain the following constants and functions:
15387
15388 @table @option
15389 @item w
15390 @item h
15391 The input width and height.
15392
15393 @item val
15394 The input value for the pixel component.
15395
15396 @item ymin, umin, vmin, amin
15397 The minimum allowed component value.
15398
15399 @item ymax, umax, vmax, amax
15400 The maximum allowed component value.
15401 @end table
15402
15403 All expressions default to "val".
15404
15405 @subsection Examples
15406
15407 @itemize
15408 @item
15409 Change too high luma values to gradient:
15410 @example
15411 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'"
15412 @end example
15413 @end itemize
15414
15415 @section psnr
15416
15417 Obtain the average, maximum and minimum PSNR (Peak Signal to Noise
15418 Ratio) between two input videos.
15419
15420 This filter takes in input two input videos, the first input is
15421 considered the "main" source and is passed unchanged to the
15422 output. The second input is used as a "reference" video for computing
15423 the PSNR.
15424
15425 Both video inputs must have the same resolution and pixel format for
15426 this filter to work correctly. Also it assumes that both inputs
15427 have the same number of frames, which are compared one by one.
15428
15429 The obtained average PSNR is printed through the logging system.
15430
15431 The filter stores the accumulated MSE (mean squared error) of each
15432 frame, and at the end of the processing it is averaged across all frames
15433 equally, and the following formula is applied to obtain the PSNR:
15434
15435 @example
15436 PSNR = 10*log10(MAX^2/MSE)
15437 @end example
15438
15439 Where MAX is the average of the maximum values of each component of the
15440 image.
15441
15442 The description of the accepted parameters follows.
15443
15444 @table @option
15445 @item stats_file, f
15446 If specified the filter will use the named file to save the PSNR of
15447 each individual frame. When filename equals "-" the data is sent to
15448 standard output.
15449
15450 @item stats_version
15451 Specifies which version of the stats file format to use. Details of
15452 each format are written below.
15453 Default value is 1.
15454
15455 @item stats_add_max
15456 Determines whether the max value is output to the stats log.
15457 Default value is 0.
15458 Requires stats_version >= 2. If this is set and stats_version < 2,
15459 the filter will return an error.
15460 @end table
15461
15462 This filter also supports the @ref{framesync} options.
15463
15464 The file printed if @var{stats_file} is selected, contains a sequence of
15465 key/value pairs of the form @var{key}:@var{value} for each compared
15466 couple of frames.
15467
15468 If a @var{stats_version} greater than 1 is specified, a header line precedes
15469 the list of per-frame-pair stats, with key value pairs following the frame
15470 format with the following parameters:
15471
15472 @table @option
15473 @item psnr_log_version
15474 The version of the log file format. Will match @var{stats_version}.
15475
15476 @item fields
15477 A comma separated list of the per-frame-pair parameters included in
15478 the log.
15479 @end table
15480
15481 A description of each shown per-frame-pair parameter follows:
15482
15483 @table @option
15484 @item n
15485 sequential number of the input frame, starting from 1
15486
15487 @item mse_avg
15488 Mean Square Error pixel-by-pixel average difference of the compared
15489 frames, averaged over all the image components.
15490
15491 @item mse_y, mse_u, mse_v, mse_r, mse_g, mse_b, mse_a
15492 Mean Square Error pixel-by-pixel average difference of the compared
15493 frames for the component specified by the suffix.
15494
15495 @item psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a
15496 Peak Signal to Noise ratio of the compared frames for the component
15497 specified by the suffix.
15498
15499 @item max_avg, max_y, max_u, max_v
15500 Maximum allowed value for each channel, and average over all
15501 channels.
15502 @end table
15503
15504 @subsection Examples
15505 @itemize
15506 @item
15507 For example:
15508 @example
15509 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
15510 [main][ref] psnr="stats_file=stats.log" [out]
15511 @end example
15512
15513 On this example the input file being processed is compared with the
15514 reference file @file{ref_movie.mpg}. The PSNR of each individual frame
15515 is stored in @file{stats.log}.
15516
15517 @item
15518 Another example with different containers:
15519 @example
15520 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 -
15521 @end example
15522 @end itemize
15523
15524 @anchor{pullup}
15525 @section pullup
15526
15527 Pulldown reversal (inverse telecine) filter, capable of handling mixed
15528 hard-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
15529 content.
15530
15531 The pullup filter is designed to take advantage of future context in making
15532 its decisions. This filter is stateless in the sense that it does not lock
15533 onto a pattern to follow, but it instead looks forward to the following
15534 fields in order to identify matches and rebuild progressive frames.
15535
15536 To produce content with an even framerate, insert the fps filter after
15537 pullup, use @code{fps=24000/1001} if the input frame rate is 29.97fps,
15538 @code{fps=24} for 30fps and the (rare) telecined 25fps input.
15539
15540 The filter accepts the following options:
15541
15542 @table @option
15543 @item jl
15544 @item jr
15545 @item jt
15546 @item jb
15547 These options set the amount of "junk" to ignore at the left, right, top, and
15548 bottom of the image, respectively. Left and right are in units of 8 pixels,
15549 while top and bottom are in units of 2 lines.
15550 The default is 8 pixels on each side.
15551
15552 @item sb
15553 Set the strict breaks. Setting this option to 1 will reduce the chances of
15554 filter generating an occasional mismatched frame, but it may also cause an
15555 excessive number of frames to be dropped during high motion sequences.
15556 Conversely, setting it to -1 will make filter match fields more easily.
15557 This may help processing of video where there is slight blurring between
15558 the fields, but may also cause there to be interlaced frames in the output.
15559 Default value is @code{0}.
15560
15561 @item mp
15562 Set the metric plane to use. It accepts the following values:
15563 @table @samp
15564 @item l
15565 Use luma plane.
15566
15567 @item u
15568 Use chroma blue plane.
15569
15570 @item v
15571 Use chroma red plane.
15572 @end table
15573
15574 This option may be set to use chroma plane instead of the default luma plane
15575 for doing filter's computations. This may improve accuracy on very clean
15576 source material, but more likely will decrease accuracy, especially if there
15577 is chroma noise (rainbow effect) or any grayscale video.
15578 The main purpose of setting @option{mp} to a chroma plane is to reduce CPU
15579 load and make pullup usable in realtime on slow machines.
15580 @end table
15581
15582 For best results (without duplicated frames in the output file) it is
15583 necessary to change the output frame rate. For example, to inverse
15584 telecine NTSC input:
15585 @example
15586 ffmpeg -i input -vf pullup -r 24000/1001 ...
15587 @end example
15588
15589 @section qp
15590
15591 Change video quantization parameters (QP).
15592
15593 The filter accepts the following option:
15594
15595 @table @option
15596 @item qp
15597 Set expression for quantization parameter.
15598 @end table
15599
15600 The expression is evaluated through the eval API and can contain, among others,
15601 the following constants:
15602
15603 @table @var
15604 @item known
15605 1 if index is not 129, 0 otherwise.
15606
15607 @item qp
15608 Sequential index starting from -129 to 128.
15609 @end table
15610
15611 @subsection Examples
15612
15613 @itemize
15614 @item
15615 Some equation like:
15616 @example
15617 qp=2+2*sin(PI*qp)
15618 @end example
15619 @end itemize
15620
15621 @section random
15622
15623 Flush video frames from internal cache of frames into a random order.
15624 No frame is discarded.
15625 Inspired by @ref{frei0r} nervous filter.
15626
15627 @table @option
15628 @item frames
15629 Set size in number of frames of internal cache, in range from @code{2} to
15630 @code{512}. Default is @code{30}.
15631
15632 @item seed
15633 Set seed for random number generator, must be an integer included between
15634 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
15635 less than @code{0}, the filter will try to use a good random seed on a
15636 best effort basis.
15637 @end table
15638
15639 @section readeia608
15640
15641 Read closed captioning (EIA-608) information from the top lines of a video frame.
15642
15643 This filter adds frame metadata for @code{lavfi.readeia608.X.cc} and
15644 @code{lavfi.readeia608.X.line}, where @code{X} is the number of the identified line
15645 with EIA-608 data (starting from 0). A description of each metadata value follows:
15646
15647 @table @option
15648 @item lavfi.readeia608.X.cc
15649 The two bytes stored as EIA-608 data (printed in hexadecimal).
15650
15651 @item lavfi.readeia608.X.line
15652 The number of the line on which the EIA-608 data was identified and read.
15653 @end table
15654
15655 This filter accepts the following options:
15656
15657 @table @option
15658 @item scan_min
15659 Set the line to start scanning for EIA-608 data. Default is @code{0}.
15660
15661 @item scan_max
15662 Set the line to end scanning for EIA-608 data. Default is @code{29}.
15663
15664 @item spw
15665 Set the ratio of width reserved for sync code detection.
15666 Default is @code{0.27}. Allowed range is @code{[0.1 - 0.7]}.
15667
15668 @item chp
15669 Enable checking the parity bit. In the event of a parity error, the filter will output
15670 @code{0x00} for that character. Default is false.
15671
15672 @item lp
15673 Lowpass lines prior to further processing. Default is enabled.
15674 @end table
15675
15676 @subsection Examples
15677
15678 @itemize
15679 @item
15680 Output a csv with presentation time and the first two lines of identified EIA-608 captioning data.
15681 @example
15682 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
15683 @end example
15684 @end itemize
15685
15686 @section readvitc
15687
15688 Read vertical interval timecode (VITC) information from the top lines of a
15689 video frame.
15690
15691 The filter adds frame metadata key @code{lavfi.readvitc.tc_str} with the
15692 timecode value, if a valid timecode has been detected. Further metadata key
15693 @code{lavfi.readvitc.found} is set to 0/1 depending on whether
15694 timecode data has been found or not.
15695
15696 This filter accepts the following options:
15697
15698 @table @option
15699 @item scan_max
15700 Set the maximum number of lines to scan for VITC data. If the value is set to
15701 @code{-1} the full video frame is scanned. Default is @code{45}.
15702
15703 @item thr_b
15704 Set the luma threshold for black. Accepts float numbers in the range [0.0,1.0],
15705 default value is @code{0.2}. The value must be equal or less than @code{thr_w}.
15706
15707 @item thr_w
15708 Set the luma threshold for white. Accepts float numbers in the range [0.0,1.0],
15709 default value is @code{0.6}. The value must be equal or greater than @code{thr_b}.
15710 @end table
15711
15712 @subsection Examples
15713
15714 @itemize
15715 @item
15716 Detect and draw VITC data onto the video frame; if no valid VITC is detected,
15717 draw @code{--:--:--:--} as a placeholder:
15718 @example
15719 ffmpeg -i input.avi -filter:v 'readvitc,drawtext=fontfile=FreeMono.ttf:text=%@{metadata\\:lavfi.readvitc.tc_str\\:--\\\\\\:--\\\\\\:--\\\\\\:--@}:x=(w-tw)/2:y=400-ascent'
15720 @end example
15721 @end itemize
15722
15723 @section remap
15724
15725 Remap pixels using 2nd: Xmap and 3rd: Ymap input video stream.
15726
15727 Destination pixel at position (X, Y) will be picked from source (x, y) position
15728 where x = Xmap(X, Y) and y = Ymap(X, Y). If mapping values are out of range, zero
15729 value for pixel will be used for destination pixel.
15730
15731 Xmap and Ymap input video streams must be of same dimensions. Output video stream
15732 will have Xmap/Ymap video stream dimensions.
15733 Xmap and Ymap input video streams are 16bit depth, single channel.
15734
15735 @table @option
15736 @item format
15737 Specify pixel format of output from this filter. Can be @code{color} or @code{gray}.
15738 Default is @code{color}.
15739
15740 @item fill
15741 Specify the color of the unmapped pixels. For the syntax of this option,
15742 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
15743 manual,ffmpeg-utils}. Default color is @code{black}.
15744 @end table
15745
15746 @section removegrain
15747
15748 The removegrain filter is a spatial denoiser for progressive video.
15749
15750 @table @option
15751 @item m0
15752 Set mode for the first plane.
15753
15754 @item m1
15755 Set mode for the second plane.
15756
15757 @item m2
15758 Set mode for the third plane.
15759
15760 @item m3
15761 Set mode for the fourth plane.
15762 @end table
15763
15764 Range of mode is from 0 to 24. Description of each mode follows:
15765
15766 @table @var
15767 @item 0
15768 Leave input plane unchanged. Default.
15769
15770 @item 1
15771 Clips the pixel with the minimum and maximum of the 8 neighbour pixels.
15772
15773 @item 2
15774 Clips the pixel with the second minimum and maximum of the 8 neighbour pixels.
15775
15776 @item 3
15777 Clips the pixel with the third minimum and maximum of the 8 neighbour pixels.
15778
15779 @item 4
15780 Clips the pixel with the fourth minimum and maximum of the 8 neighbour pixels.
15781 This is equivalent to a median filter.
15782
15783 @item 5
15784 Line-sensitive clipping giving the minimal change.
15785
15786 @item 6
15787 Line-sensitive clipping, intermediate.
15788
15789 @item 7
15790 Line-sensitive clipping, intermediate.
15791
15792 @item 8
15793 Line-sensitive clipping, intermediate.
15794
15795 @item 9
15796 Line-sensitive clipping on a line where the neighbours pixels are the closest.
15797
15798 @item 10
15799 Replaces the target pixel with the closest neighbour.
15800
15801 @item 11
15802 [1 2 1] horizontal and vertical kernel blur.
15803
15804 @item 12
15805 Same as mode 11.
15806
15807 @item 13
15808 Bob mode, interpolates top field from the line where the neighbours
15809 pixels are the closest.
15810
15811 @item 14
15812 Bob mode, interpolates bottom field from the line where the neighbours
15813 pixels are the closest.
15814
15815 @item 15
15816 Bob mode, interpolates top field. Same as 13 but with a more complicated
15817 interpolation formula.
15818
15819 @item 16
15820 Bob mode, interpolates bottom field. Same as 14 but with a more complicated
15821 interpolation formula.
15822
15823 @item 17
15824 Clips the pixel with the minimum and maximum of respectively the maximum and
15825 minimum of each pair of opposite neighbour pixels.
15826
15827 @item 18
15828 Line-sensitive clipping using opposite neighbours whose greatest distance from
15829 the current pixel is minimal.
15830
15831 @item 19
15832 Replaces the pixel with the average of its 8 neighbours.
15833
15834 @item 20
15835 Averages the 9 pixels ([1 1 1] horizontal and vertical blur).
15836
15837 @item 21
15838 Clips pixels using the averages of opposite neighbour.
15839
15840 @item 22
15841 Same as mode 21 but simpler and faster.
15842
15843 @item 23
15844 Small edge and halo removal, but reputed useless.
15845
15846 @item 24
15847 Similar as 23.
15848 @end table
15849
15850 @section removelogo
15851
15852 Suppress a TV station logo, using an image file to determine which
15853 pixels comprise the logo. It works by filling in the pixels that
15854 comprise the logo with neighboring pixels.
15855
15856 The filter accepts the following options:
15857
15858 @table @option
15859 @item filename, f
15860 Set the filter bitmap file, which can be any image format supported by
15861 libavformat. The width and height of the image file must match those of the
15862 video stream being processed.
15863 @end table
15864
15865 Pixels in the provided bitmap image with a value of zero are not
15866 considered part of the logo, non-zero pixels are considered part of
15867 the logo. If you use white (255) for the logo and black (0) for the
15868 rest, you will be safe. For making the filter bitmap, it is
15869 recommended to take a screen capture of a black frame with the logo
15870 visible, and then using a threshold filter followed by the erode
15871 filter once or twice.
15872
15873 If needed, little splotches can be fixed manually. Remember that if
15874 logo pixels are not covered, the filter quality will be much
15875 reduced. Marking too many pixels as part of the logo does not hurt as
15876 much, but it will increase the amount of blurring needed to cover over
15877 the image and will destroy more information than necessary, and extra
15878 pixels will slow things down on a large logo.
15879
15880 @section repeatfields
15881
15882 This filter uses the repeat_field flag from the Video ES headers and hard repeats
15883 fields based on its value.
15884
15885 @section reverse
15886
15887 Reverse a video clip.
15888
15889 Warning: This filter requires memory to buffer the entire clip, so trimming
15890 is suggested.
15891
15892 @subsection Examples
15893
15894 @itemize
15895 @item
15896 Take the first 5 seconds of a clip, and reverse it.
15897 @example
15898 trim=end=5,reverse
15899 @end example
15900 @end itemize
15901
15902 @section rgbashift
15903 Shift R/G/B/A pixels horizontally and/or vertically.
15904
15905 The filter accepts the following options:
15906 @table @option
15907 @item rh
15908 Set amount to shift red horizontally.
15909 @item rv
15910 Set amount to shift red vertically.
15911 @item gh
15912 Set amount to shift green horizontally.
15913 @item gv
15914 Set amount to shift green vertically.
15915 @item bh
15916 Set amount to shift blue horizontally.
15917 @item bv
15918 Set amount to shift blue vertically.
15919 @item ah
15920 Set amount to shift alpha horizontally.
15921 @item av
15922 Set amount to shift alpha vertically.
15923 @item edge
15924 Set edge mode, can be @var{smear}, default, or @var{warp}.
15925 @end table
15926
15927 @subsection Commands
15928
15929 This filter supports the all above options as @ref{commands}.
15930
15931 @section roberts
15932 Apply roberts cross operator to input video stream.
15933
15934 The filter accepts the following option:
15935
15936 @table @option
15937 @item planes
15938 Set which planes will be processed, unprocessed planes will be copied.
15939 By default value 0xf, all planes will be processed.
15940
15941 @item scale
15942 Set value which will be multiplied with filtered result.
15943
15944 @item delta
15945 Set value which will be added to filtered result.
15946 @end table
15947
15948 @section rotate
15949
15950 Rotate video by an arbitrary angle expressed in radians.
15951
15952 The filter accepts the following options:
15953
15954 A description of the optional parameters follows.
15955 @table @option
15956 @item angle, a
15957 Set an expression for the angle by which to rotate the input video
15958 clockwise, expressed as a number of radians. A negative value will
15959 result in a counter-clockwise rotation. By default it is set to "0".
15960
15961 This expression is evaluated for each frame.
15962
15963 @item out_w, ow
15964 Set the output width expression, default value is "iw".
15965 This expression is evaluated just once during configuration.
15966
15967 @item out_h, oh
15968 Set the output height expression, default value is "ih".
15969 This expression is evaluated just once during configuration.
15970
15971 @item bilinear
15972 Enable bilinear interpolation if set to 1, a value of 0 disables
15973 it. Default value is 1.
15974
15975 @item fillcolor, c
15976 Set the color used to fill the output area not covered by the rotated
15977 image. For the general syntax of this option, check the
15978 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
15979 If the special value "none" is selected then no
15980 background is printed (useful for example if the background is never shown).
15981
15982 Default value is "black".
15983 @end table
15984
15985 The expressions for the angle and the output size can contain the
15986 following constants and functions:
15987
15988 @table @option
15989 @item n
15990 sequential number of the input frame, starting from 0. It is always NAN
15991 before the first frame is filtered.
15992
15993 @item t
15994 time in seconds of the input frame, it is set to 0 when the filter is
15995 configured. It is always NAN before the first frame is filtered.
15996
15997 @item hsub
15998 @item vsub
15999 horizontal and vertical chroma subsample values. For example for the
16000 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16001
16002 @item in_w, iw
16003 @item in_h, ih
16004 the input video width and height
16005
16006 @item out_w, ow
16007 @item out_h, oh
16008 the output width and height, that is the size of the padded area as
16009 specified by the @var{width} and @var{height} expressions
16010
16011 @item rotw(a)
16012 @item roth(a)
16013 the minimal width/height required for completely containing the input
16014 video rotated by @var{a} radians.
16015
16016 These are only available when computing the @option{out_w} and
16017 @option{out_h} expressions.
16018 @end table
16019
16020 @subsection Examples
16021
16022 @itemize
16023 @item
16024 Rotate the input by PI/6 radians clockwise:
16025 @example
16026 rotate=PI/6
16027 @end example
16028
16029 @item
16030 Rotate the input by PI/6 radians counter-clockwise:
16031 @example
16032 rotate=-PI/6
16033 @end example
16034
16035 @item
16036 Rotate the input by 45 degrees clockwise:
16037 @example
16038 rotate=45*PI/180
16039 @end example
16040
16041 @item
16042 Apply a constant rotation with period T, starting from an angle of PI/3:
16043 @example
16044 rotate=PI/3+2*PI*t/T
16045 @end example
16046
16047 @item
16048 Make the input video rotation oscillating with a period of T
16049 seconds and an amplitude of A radians:
16050 @example
16051 rotate=A*sin(2*PI/T*t)
16052 @end example
16053
16054 @item
16055 Rotate the video, output size is chosen so that the whole rotating
16056 input video is always completely contained in the output:
16057 @example
16058 rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
16059 @end example
16060
16061 @item
16062 Rotate the video, reduce the output size so that no background is ever
16063 shown:
16064 @example
16065 rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
16066 @end example
16067 @end itemize
16068
16069 @subsection Commands
16070
16071 The filter supports the following commands:
16072
16073 @table @option
16074 @item a, angle
16075 Set the angle expression.
16076 The command accepts the same syntax of the corresponding option.
16077
16078 If the specified expression is not valid, it is kept at its current
16079 value.
16080 @end table
16081
16082 @section sab
16083
16084 Apply Shape Adaptive Blur.
16085
16086 The filter accepts the following options:
16087
16088 @table @option
16089 @item luma_radius, lr
16090 Set luma blur filter strength, must be a value in range 0.1-4.0, default
16091 value is 1.0. A greater value will result in a more blurred image, and
16092 in slower processing.
16093
16094 @item luma_pre_filter_radius, lpfr
16095 Set luma pre-filter radius, must be a value in the 0.1-2.0 range, default
16096 value is 1.0.
16097
16098 @item luma_strength, ls
16099 Set luma maximum difference between pixels to still be considered, must
16100 be a value in the 0.1-100.0 range, default value is 1.0.
16101
16102 @item chroma_radius, cr
16103 Set chroma blur filter strength, must be a value in range -0.9-4.0. A
16104 greater value will result in a more blurred image, and in slower
16105 processing.
16106
16107 @item chroma_pre_filter_radius, cpfr
16108 Set chroma pre-filter radius, must be a value in the -0.9-2.0 range.
16109
16110 @item chroma_strength, cs
16111 Set chroma maximum difference between pixels to still be considered,
16112 must be a value in the -0.9-100.0 range.
16113 @end table
16114
16115 Each chroma option value, if not explicitly specified, is set to the
16116 corresponding luma option value.
16117
16118 @anchor{scale}
16119 @section scale
16120
16121 Scale (resize) the input video, using the libswscale library.
16122
16123 The scale filter forces the output display aspect ratio to be the same
16124 of the input, by changing the output sample aspect ratio.
16125
16126 If the input image format is different from the format requested by
16127 the next filter, the scale filter will convert the input to the
16128 requested format.
16129
16130 @subsection Options
16131 The filter accepts the following options, or any of the options
16132 supported by the libswscale scaler.
16133
16134 See @ref{scaler_options,,the ffmpeg-scaler manual,ffmpeg-scaler} for
16135 the complete list of scaler options.
16136
16137 @table @option
16138 @item width, w
16139 @item height, h
16140 Set the output video dimension expression. Default value is the input
16141 dimension.
16142
16143 If the @var{width} or @var{w} value is 0, the input width is used for
16144 the output. If the @var{height} or @var{h} value is 0, the input height
16145 is used for the output.
16146
16147 If one and only one of the values is -n with n >= 1, the scale filter
16148 will use a value that maintains the aspect ratio of the input image,
16149 calculated from the other specified dimension. After that it will,
16150 however, make sure that the calculated dimension is divisible by n and
16151 adjust the value if necessary.
16152
16153 If both values are -n with n >= 1, the behavior will be identical to
16154 both values being set to 0 as previously detailed.
16155
16156 See below for the list of accepted constants for use in the dimension
16157 expression.
16158
16159 @item eval
16160 Specify when to evaluate @var{width} and @var{height} expression. It accepts the following values:
16161
16162 @table @samp
16163 @item init
16164 Only evaluate expressions once during the filter initialization or when a command is processed.
16165
16166 @item frame
16167 Evaluate expressions for each incoming frame.
16168
16169 @end table
16170
16171 Default value is @samp{init}.
16172
16173
16174 @item interl
16175 Set the interlacing mode. It accepts the following values:
16176
16177 @table @samp
16178 @item 1
16179 Force interlaced aware scaling.
16180
16181 @item 0
16182 Do not apply interlaced scaling.
16183
16184 @item -1
16185 Select interlaced aware scaling depending on whether the source frames
16186 are flagged as interlaced or not.
16187 @end table
16188
16189 Default value is @samp{0}.
16190
16191 @item flags
16192 Set libswscale scaling flags. See
16193 @ref{sws_flags,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
16194 complete list of values. If not explicitly specified the filter applies
16195 the default flags.
16196
16197
16198 @item param0, param1
16199 Set libswscale input parameters for scaling algorithms that need them. See
16200 @ref{sws_params,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
16201 complete documentation. If not explicitly specified the filter applies
16202 empty parameters.
16203
16204
16205
16206 @item size, s
16207 Set the video size. For the syntax of this option, check the
16208 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
16209
16210 @item in_color_matrix
16211 @item out_color_matrix
16212 Set in/output YCbCr color space type.
16213
16214 This allows the autodetected value to be overridden as well as allows forcing
16215 a specific value used for the output and encoder.
16216
16217 If not specified, the color space type depends on the pixel format.
16218
16219 Possible values:
16220
16221 @table @samp
16222 @item auto
16223 Choose automatically.
16224
16225 @item bt709
16226 Format conforming to International Telecommunication Union (ITU)
16227 Recommendation BT.709.
16228
16229 @item fcc
16230 Set color space conforming to the United States Federal Communications
16231 Commission (FCC) Code of Federal Regulations (CFR) Title 47 (2003) 73.682 (a).
16232
16233 @item bt601
16234 @item bt470
16235 @item smpte170m
16236 Set color space conforming to:
16237
16238 @itemize
16239 @item
16240 ITU Radiocommunication Sector (ITU-R) Recommendation BT.601
16241
16242 @item
16243 ITU-R Rec. BT.470-6 (1998) Systems B, B1, and G
16244
16245 @item
16246 Society of Motion Picture and Television Engineers (SMPTE) ST 170:2004
16247
16248 @end itemize
16249
16250 @item smpte240m
16251 Set color space conforming to SMPTE ST 240:1999.
16252
16253 @item bt2020
16254 Set color space conforming to ITU-R BT.2020 non-constant luminance system.
16255 @end table
16256
16257 @item in_range
16258 @item out_range
16259 Set in/output YCbCr sample range.
16260
16261 This allows the autodetected value to be overridden as well as allows forcing
16262 a specific value used for the output and encoder. If not specified, the
16263 range depends on the pixel format. Possible values:
16264
16265 @table @samp
16266 @item auto/unknown
16267 Choose automatically.
16268
16269 @item jpeg/full/pc
16270 Set full range (0-255 in case of 8-bit luma).
16271
16272 @item mpeg/limited/tv
16273 Set "MPEG" range (16-235 in case of 8-bit luma).
16274 @end table
16275
16276 @item force_original_aspect_ratio
16277 Enable decreasing or increasing output video width or height if necessary to
16278 keep the original aspect ratio. Possible values:
16279
16280 @table @samp
16281 @item disable
16282 Scale the video as specified and disable this feature.
16283
16284 @item decrease
16285 The output video dimensions will automatically be decreased if needed.
16286
16287 @item increase
16288 The output video dimensions will automatically be increased if needed.
16289
16290 @end table
16291
16292 One useful instance of this option is that when you know a specific device's
16293 maximum allowed resolution, you can use this to limit the output video to
16294 that, while retaining the aspect ratio. For example, device A allows
16295 1280x720 playback, and your video is 1920x800. Using this option (set it to
16296 decrease) and specifying 1280x720 to the command line makes the output
16297 1280x533.
16298
16299 Please note that this is a different thing than specifying -1 for @option{w}
16300 or @option{h}, you still need to specify the output resolution for this option
16301 to work.
16302
16303 @item force_divisible_by
16304 Ensures that both the output dimensions, width and height, are divisible by the
16305 given integer when used together with @option{force_original_aspect_ratio}. This
16306 works similar to using @code{-n} in the @option{w} and @option{h} options.
16307
16308 This option respects the value set for @option{force_original_aspect_ratio},
16309 increasing or decreasing the resolution accordingly. The video's aspect ratio
16310 may be slightly modified.
16311
16312 This option can be handy if you need to have a video fit within or exceed
16313 a defined resolution using @option{force_original_aspect_ratio} but also have
16314 encoder restrictions on width or height divisibility.
16315
16316 @end table
16317
16318 The values of the @option{w} and @option{h} options are expressions
16319 containing the following constants:
16320
16321 @table @var
16322 @item in_w
16323 @item in_h
16324 The input width and height
16325
16326 @item iw
16327 @item ih
16328 These are the same as @var{in_w} and @var{in_h}.
16329
16330 @item out_w
16331 @item out_h
16332 The output (scaled) width and height
16333
16334 @item ow
16335 @item oh
16336 These are the same as @var{out_w} and @var{out_h}
16337
16338 @item a
16339 The same as @var{iw} / @var{ih}
16340
16341 @item sar
16342 input sample aspect ratio
16343
16344 @item dar
16345 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
16346
16347 @item hsub
16348 @item vsub
16349 horizontal and vertical input chroma subsample values. For example for the
16350 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16351
16352 @item ohsub
16353 @item ovsub
16354 horizontal and vertical output chroma subsample values. For example for the
16355 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16356
16357 @item n
16358 The (sequential) number of the input frame, starting from 0.
16359 Only available with @code{eval=frame}.
16360
16361 @item t
16362 The presentation timestamp of the input frame, expressed as a number of
16363 seconds. Only available with @code{eval=frame}.
16364
16365 @item pos
16366 The position (byte offset) of the frame in the input stream, or NaN if
16367 this information is unavailable and/or meaningless (for example in case of synthetic video).
16368 Only available with @code{eval=frame}.
16369 @end table
16370
16371 @subsection Examples
16372
16373 @itemize
16374 @item
16375 Scale the input video to a size of 200x100
16376 @example
16377 scale=w=200:h=100
16378 @end example
16379
16380 This is equivalent to:
16381 @example
16382 scale=200:100
16383 @end example
16384
16385 or:
16386 @example
16387 scale=200x100
16388 @end example
16389
16390 @item
16391 Specify a size abbreviation for the output size:
16392 @example
16393 scale=qcif
16394 @end example
16395
16396 which can also be written as:
16397 @example
16398 scale=size=qcif
16399 @end example
16400
16401 @item
16402 Scale the input to 2x:
16403 @example
16404 scale=w=2*iw:h=2*ih
16405 @end example
16406
16407 @item
16408 The above is the same as:
16409 @example
16410 scale=2*in_w:2*in_h
16411 @end example
16412
16413 @item
16414 Scale the input to 2x with forced interlaced scaling:
16415 @example
16416 scale=2*iw:2*ih:interl=1
16417 @end example
16418
16419 @item
16420 Scale the input to half size:
16421 @example
16422 scale=w=iw/2:h=ih/2
16423 @end example
16424
16425 @item
16426 Increase the width, and set the height to the same size:
16427 @example
16428 scale=3/2*iw:ow
16429 @end example
16430
16431 @item
16432 Seek Greek harmony:
16433 @example
16434 scale=iw:1/PHI*iw
16435 scale=ih*PHI:ih
16436 @end example
16437
16438 @item
16439 Increase the height, and set the width to 3/2 of the height:
16440 @example
16441 scale=w=3/2*oh:h=3/5*ih
16442 @end example
16443
16444 @item
16445 Increase the size, making the size a multiple of the chroma
16446 subsample values:
16447 @example
16448 scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
16449 @end example
16450
16451 @item
16452 Increase the width to a maximum of 500 pixels,
16453 keeping the same aspect ratio as the input:
16454 @example
16455 scale=w='min(500\, iw*3/2):h=-1'
16456 @end example
16457
16458 @item
16459 Make pixels square by combining scale and setsar:
16460 @example
16461 scale='trunc(ih*dar):ih',setsar=1/1
16462 @end example
16463
16464 @item
16465 Make pixels square by combining scale and setsar,
16466 making sure the resulting resolution is even (required by some codecs):
16467 @example
16468 scale='trunc(ih*dar/2)*2:trunc(ih/2)*2',setsar=1/1
16469 @end example
16470 @end itemize
16471
16472 @subsection Commands
16473
16474 This filter supports the following commands:
16475 @table @option
16476 @item width, w
16477 @item height, h
16478 Set the output video dimension expression.
16479 The command accepts the same syntax of the corresponding option.
16480
16481 If the specified expression is not valid, it is kept at its current
16482 value.
16483 @end table
16484
16485 @section scale_npp
16486
16487 Use the NVIDIA Performance Primitives (libnpp) to perform scaling and/or pixel
16488 format conversion on CUDA video frames. Setting the output width and height
16489 works in the same way as for the @var{scale} filter.
16490
16491 The following additional options are accepted:
16492 @table @option
16493 @item format
16494 The pixel format of the output CUDA frames. If set to the string "same" (the
16495 default), the input format will be kept. Note that automatic format negotiation
16496 and conversion is not yet supported for hardware frames
16497
16498 @item interp_algo
16499 The interpolation algorithm used for resizing. One of the following:
16500 @table @option
16501 @item nn
16502 Nearest neighbour.
16503
16504 @item linear
16505 @item cubic
16506 @item cubic2p_bspline
16507 2-parameter cubic (B=1, C=0)
16508
16509 @item cubic2p_catmullrom
16510 2-parameter cubic (B=0, C=1/2)
16511
16512 @item cubic2p_b05c03
16513 2-parameter cubic (B=1/2, C=3/10)
16514
16515 @item super
16516 Supersampling
16517
16518 @item lanczos
16519 @end table
16520
16521 @item force_original_aspect_ratio
16522 Enable decreasing or increasing output video width or height if necessary to
16523 keep the original aspect ratio. Possible values:
16524
16525 @table @samp
16526 @item disable
16527 Scale the video as specified and disable this feature.
16528
16529 @item decrease
16530 The output video dimensions will automatically be decreased if needed.
16531
16532 @item increase
16533 The output video dimensions will automatically be increased if needed.
16534
16535 @end table
16536
16537 One useful instance of this option is that when you know a specific device's
16538 maximum allowed resolution, you can use this to limit the output video to
16539 that, while retaining the aspect ratio. For example, device A allows
16540 1280x720 playback, and your video is 1920x800. Using this option (set it to
16541 decrease) and specifying 1280x720 to the command line makes the output
16542 1280x533.
16543
16544 Please note that this is a different thing than specifying -1 for @option{w}
16545 or @option{h}, you still need to specify the output resolution for this option
16546 to work.
16547
16548 @item force_divisible_by
16549 Ensures that both the output dimensions, width and height, are divisible by the
16550 given integer when used together with @option{force_original_aspect_ratio}. This
16551 works similar to using @code{-n} in the @option{w} and @option{h} options.
16552
16553 This option respects the value set for @option{force_original_aspect_ratio},
16554 increasing or decreasing the resolution accordingly. The video's aspect ratio
16555 may be slightly modified.
16556
16557 This option can be handy if you need to have a video fit within or exceed
16558 a defined resolution using @option{force_original_aspect_ratio} but also have
16559 encoder restrictions on width or height divisibility.
16560
16561 @end table
16562
16563 @section scale2ref
16564
16565 Scale (resize) the input video, based on a reference video.
16566
16567 See the scale filter for available options, scale2ref supports the same but
16568 uses the reference video instead of the main input as basis. scale2ref also
16569 supports the following additional constants for the @option{w} and
16570 @option{h} options:
16571
16572 @table @var
16573 @item main_w
16574 @item main_h
16575 The main input video's width and height
16576
16577 @item main_a
16578 The same as @var{main_w} / @var{main_h}
16579
16580 @item main_sar
16581 The main input video's sample aspect ratio
16582
16583 @item main_dar, mdar
16584 The main input video's display aspect ratio. Calculated from
16585 @code{(main_w / main_h) * main_sar}.
16586
16587 @item main_hsub
16588 @item main_vsub
16589 The main input video's horizontal and vertical chroma subsample values.
16590 For example for the pixel format "yuv422p" @var{hsub} is 2 and @var{vsub}
16591 is 1.
16592
16593 @item main_n
16594 The (sequential) number of the main input frame, starting from 0.
16595 Only available with @code{eval=frame}.
16596
16597 @item main_t
16598 The presentation timestamp of the main input frame, expressed as a number of
16599 seconds. Only available with @code{eval=frame}.
16600
16601 @item main_pos
16602 The position (byte offset) of the frame in the main input stream, or NaN if
16603 this information is unavailable and/or meaningless (for example in case of synthetic video).
16604 Only available with @code{eval=frame}.
16605 @end table
16606
16607 @subsection Examples
16608
16609 @itemize
16610 @item
16611 Scale a subtitle stream (b) to match the main video (a) in size before overlaying
16612 @example
16613 'scale2ref[b][a];[a][b]overlay'
16614 @end example
16615
16616 @item
16617 Scale a logo to 1/10th the height of a video, while preserving its display aspect ratio.
16618 @example
16619 [logo-in][video-in]scale2ref=w=oh*mdar:h=ih/10[logo-out][video-out]
16620 @end example
16621 @end itemize
16622
16623 @subsection Commands
16624
16625 This filter supports the following commands:
16626 @table @option
16627 @item width, w
16628 @item height, h
16629 Set the output video dimension expression.
16630 The command accepts the same syntax of the corresponding option.
16631
16632 If the specified expression is not valid, it is kept at its current
16633 value.
16634 @end table
16635
16636 @section scroll
16637 Scroll input video horizontally and/or vertically by constant speed.
16638
16639 The filter accepts the following options:
16640 @table @option
16641 @item horizontal, h
16642 Set the horizontal scrolling speed. Default is 0. Allowed range is from -1 to 1.
16643 Negative values changes scrolling direction.
16644
16645 @item vertical, v
16646 Set the vertical scrolling speed. Default is 0. Allowed range is from -1 to 1.
16647 Negative values changes scrolling direction.
16648
16649 @item hpos
16650 Set the initial horizontal scrolling position. Default is 0. Allowed range is from 0 to 1.
16651
16652 @item vpos
16653 Set the initial vertical scrolling position. Default is 0. Allowed range is from 0 to 1.
16654 @end table
16655
16656 @subsection Commands
16657
16658 This filter supports the following @ref{commands}:
16659 @table @option
16660 @item horizontal, h
16661 Set the horizontal scrolling speed.
16662 @item vertical, v
16663 Set the vertical scrolling speed.
16664 @end table
16665
16666 @anchor{scdet}
16667 @section scdet
16668
16669 Detect video scene change.
16670
16671 This filter sets frame metadata with mafd between frame, the scene score, and
16672 forward the frame to the next filter, so they can use these metadata to detect
16673 scene change or others.
16674
16675 In addition, this filter logs a message and sets frame metadata when it detects
16676 a scene change by @option{threshold}.
16677
16678 @code{lavfi.scd.mafd} metadata keys are set with mafd for every frame.
16679
16680 @code{lavfi.scd.score} metadata keys are set with scene change score for every frame
16681 to detect scene change.
16682
16683 @code{lavfi.scd.time} metadata keys are set with current filtered frame time which
16684 detect scene change with @option{threshold}.
16685
16686 The filter accepts the following options:
16687
16688 @table @option
16689 @item threshold, t
16690 Set the scene change detection threshold as a percentage of maximum change. Good
16691 values are in the @code{[8.0, 14.0]} range. The range for @option{threshold} is
16692 @code{[0., 100.]}.
16693
16694 Default value is @code{10.}.
16695
16696 @item sc_pass, s
16697 Set the flag to pass scene change frames to the next filter. Default value is @code{0}
16698 You can enable it if you want to get snapshot of scene change frames only.
16699 @end table
16700
16701 @anchor{selectivecolor}
16702 @section selectivecolor
16703
16704 Adjust cyan, magenta, yellow and black (CMYK) to certain ranges of colors (such
16705 as "reds", "yellows", "greens", "cyans", ...). The adjustment range is defined
16706 by the "purity" of the color (that is, how saturated it already is).
16707
16708 This filter is similar to the Adobe Photoshop Selective Color tool.
16709
16710 The filter accepts the following options:
16711
16712 @table @option
16713 @item correction_method
16714 Select color correction method.
16715
16716 Available values are:
16717 @table @samp
16718 @item absolute
16719 Specified adjustments are applied "as-is" (added/subtracted to original pixel
16720 component value).
16721 @item relative
16722 Specified adjustments are relative to the original component value.
16723 @end table
16724 Default is @code{absolute}.
16725 @item reds
16726 Adjustments for red pixels (pixels where the red component is the maximum)
16727 @item yellows
16728 Adjustments for yellow pixels (pixels where the blue component is the minimum)
16729 @item greens
16730 Adjustments for green pixels (pixels where the green component is the maximum)
16731 @item cyans
16732 Adjustments for cyan pixels (pixels where the red component is the minimum)
16733 @item blues
16734 Adjustments for blue pixels (pixels where the blue component is the maximum)
16735 @item magentas
16736 Adjustments for magenta pixels (pixels where the green component is the minimum)
16737 @item whites
16738 Adjustments for white pixels (pixels where all components are greater than 128)
16739 @item neutrals
16740 Adjustments for all pixels except pure black and pure white
16741 @item blacks
16742 Adjustments for black pixels (pixels where all components are lesser than 128)
16743 @item psfile
16744 Specify a Photoshop selective color file (@code{.asv}) to import the settings from.
16745 @end table
16746
16747 All the adjustment settings (@option{reds}, @option{yellows}, ...) accept up to
16748 4 space separated floating point adjustment values in the [-1,1] range,
16749 respectively to adjust the amount of cyan, magenta, yellow and black for the
16750 pixels of its range.
16751
16752 @subsection Examples
16753
16754 @itemize
16755 @item
16756 Increase cyan by 50% and reduce yellow by 33% in every green areas, and
16757 increase magenta by 27% in blue areas:
16758 @example
16759 selectivecolor=greens=.5 0 -.33 0:blues=0 .27
16760 @end example
16761
16762 @item
16763 Use a Photoshop selective color preset:
16764 @example
16765 selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
16766 @end example
16767 @end itemize
16768
16769 @anchor{separatefields}
16770 @section separatefields
16771
16772 The @code{separatefields} takes a frame-based video input and splits
16773 each frame into its components fields, producing a new half height clip
16774 with twice the frame rate and twice the frame count.
16775
16776 This filter use field-dominance information in frame to decide which
16777 of each pair of fields to place first in the output.
16778 If it gets it wrong use @ref{setfield} filter before @code{separatefields} filter.
16779
16780 @section setdar, setsar
16781
16782 The @code{setdar} filter sets the Display Aspect Ratio for the filter
16783 output video.
16784
16785 This is done by changing the specified Sample (aka Pixel) Aspect
16786 Ratio, according to the following equation:
16787 @example
16788 @var{DAR} = @var{HORIZONTAL_RESOLUTION} / @var{VERTICAL_RESOLUTION} * @var{SAR}
16789 @end example
16790
16791 Keep in mind that the @code{setdar} filter does not modify the pixel
16792 dimensions of the video frame. Also, the display aspect ratio set by
16793 this filter may be changed by later filters in the filterchain,
16794 e.g. in case of scaling or if another "setdar" or a "setsar" filter is
16795 applied.
16796
16797 The @code{setsar} filter sets the Sample (aka Pixel) Aspect Ratio for
16798 the filter output video.
16799
16800 Note that as a consequence of the application of this filter, the
16801 output display aspect ratio will change according to the equation
16802 above.
16803
16804 Keep in mind that the sample aspect ratio set by the @code{setsar}
16805 filter may be changed by later filters in the filterchain, e.g. if
16806 another "setsar" or a "setdar" filter is applied.
16807
16808 It accepts the following parameters:
16809
16810 @table @option
16811 @item r, ratio, dar (@code{setdar} only), sar (@code{setsar} only)
16812 Set the aspect ratio used by the filter.
16813
16814 The parameter can be a floating point number string, an expression, or
16815 a string of the form @var{num}:@var{den}, where @var{num} and
16816 @var{den} are the numerator and denominator of the aspect ratio. If
16817 the parameter is not specified, it is assumed the value "0".
16818 In case the form "@var{num}:@var{den}" is used, the @code{:} character
16819 should be escaped.
16820
16821 @item max
16822 Set the maximum integer value to use for expressing numerator and
16823 denominator when reducing the expressed aspect ratio to a rational.
16824 Default value is @code{100}.
16825
16826 @end table
16827
16828 The parameter @var{sar} is an expression containing
16829 the following constants:
16830
16831 @table @option
16832 @item E, PI, PHI
16833 These are approximated values for the mathematical constants e
16834 (Euler's number), pi (Greek pi), and phi (the golden ratio).
16835
16836 @item w, h
16837 The input width and height.
16838
16839 @item a
16840 These are the same as @var{w} / @var{h}.
16841
16842 @item sar
16843 The input sample aspect ratio.
16844
16845 @item dar
16846 The input display aspect ratio. It is the same as
16847 (@var{w} / @var{h}) * @var{sar}.
16848
16849 @item hsub, vsub
16850 Horizontal and vertical chroma subsample values. For example, for the
16851 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
16852 @end table
16853
16854 @subsection Examples
16855
16856 @itemize
16857
16858 @item
16859 To change the display aspect ratio to 16:9, specify one of the following:
16860 @example
16861 setdar=dar=1.77777
16862 setdar=dar=16/9
16863 @end example
16864
16865 @item
16866 To change the sample aspect ratio to 10:11, specify:
16867 @example
16868 setsar=sar=10/11
16869 @end example
16870
16871 @item
16872 To set a display aspect ratio of 16:9, and specify a maximum integer value of
16873 1000 in the aspect ratio reduction, use the command:
16874 @example
16875 setdar=ratio=16/9:max=1000
16876 @end example
16877
16878 @end itemize
16879
16880 @anchor{setfield}
16881 @section setfield
16882
16883 Force field for the output video frame.
16884
16885 The @code{setfield} filter marks the interlace type field for the
16886 output frames. It does not change the input frame, but only sets the
16887 corresponding property, which affects how the frame is treated by
16888 following filters (e.g. @code{fieldorder} or @code{yadif}).
16889
16890 The filter accepts the following options:
16891
16892 @table @option
16893
16894 @item mode
16895 Available values are:
16896
16897 @table @samp
16898 @item auto
16899 Keep the same field property.
16900
16901 @item bff
16902 Mark the frame as bottom-field-first.
16903
16904 @item tff
16905 Mark the frame as top-field-first.
16906
16907 @item prog
16908 Mark the frame as progressive.
16909 @end table
16910 @end table
16911
16912 @anchor{setparams}
16913 @section setparams
16914
16915 Force frame parameter for the output video frame.
16916
16917 The @code{setparams} filter marks interlace and color range for the
16918 output frames. It does not change the input frame, but only sets the
16919 corresponding property, which affects how the frame is treated by
16920 filters/encoders.
16921
16922 @table @option
16923 @item field_mode
16924 Available values are:
16925
16926 @table @samp
16927 @item auto
16928 Keep the same field property (default).
16929
16930 @item bff
16931 Mark the frame as bottom-field-first.
16932
16933 @item tff
16934 Mark the frame as top-field-first.
16935
16936 @item prog
16937 Mark the frame as progressive.
16938 @end table
16939
16940 @item range
16941 Available values are:
16942
16943 @table @samp
16944 @item auto
16945 Keep the same color range property (default).
16946
16947 @item unspecified, unknown
16948 Mark the frame as unspecified color range.
16949
16950 @item limited, tv, mpeg
16951 Mark the frame as limited range.
16952
16953 @item full, pc, jpeg
16954 Mark the frame as full range.
16955 @end table
16956
16957 @item color_primaries
16958 Set the color primaries.
16959 Available values are:
16960
16961 @table @samp
16962 @item auto
16963 Keep the same color primaries property (default).
16964
16965 @item bt709
16966 @item unknown
16967 @item bt470m
16968 @item bt470bg
16969 @item smpte170m
16970 @item smpte240m
16971 @item film
16972 @item bt2020
16973 @item smpte428
16974 @item smpte431
16975 @item smpte432
16976 @item jedec-p22
16977 @end table
16978
16979 @item color_trc
16980 Set the color transfer.
16981 Available values are:
16982
16983 @table @samp
16984 @item auto
16985 Keep the same color trc property (default).
16986
16987 @item bt709
16988 @item unknown
16989 @item bt470m
16990 @item bt470bg
16991 @item smpte170m
16992 @item smpte240m
16993 @item linear
16994 @item log100
16995 @item log316
16996 @item iec61966-2-4
16997 @item bt1361e
16998 @item iec61966-2-1
16999 @item bt2020-10
17000 @item bt2020-12
17001 @item smpte2084
17002 @item smpte428
17003 @item arib-std-b67
17004 @end table
17005
17006 @item colorspace
17007 Set the colorspace.
17008 Available values are:
17009
17010 @table @samp
17011 @item auto
17012 Keep the same colorspace property (default).
17013
17014 @item gbr
17015 @item bt709
17016 @item unknown
17017 @item fcc
17018 @item bt470bg
17019 @item smpte170m
17020 @item smpte240m
17021 @item ycgco
17022 @item bt2020nc
17023 @item bt2020c
17024 @item smpte2085
17025 @item chroma-derived-nc
17026 @item chroma-derived-c
17027 @item ictcp
17028 @end table
17029 @end table
17030
17031 @section showinfo
17032
17033 Show a line containing various information for each input video frame.
17034 The input video is not modified.
17035
17036 This filter supports the following options:
17037
17038 @table @option
17039 @item checksum
17040 Calculate checksums of each plane. By default enabled.
17041 @end table
17042
17043 The shown line contains a sequence of key/value pairs of the form
17044 @var{key}:@var{value}.
17045
17046 The following values are shown in the output:
17047
17048 @table @option
17049 @item n
17050 The (sequential) number of the input frame, starting from 0.
17051
17052 @item pts
17053 The Presentation TimeStamp of the input frame, expressed as a number of
17054 time base units. The time base unit depends on the filter input pad.
17055
17056 @item pts_time
17057 The Presentation TimeStamp of the input frame, expressed as a number of
17058 seconds.
17059
17060 @item pos
17061 The position of the frame in the input stream, or -1 if this information is
17062 unavailable and/or meaningless (for example in case of synthetic video).
17063
17064 @item fmt
17065 The pixel format name.
17066
17067 @item sar
17068 The sample aspect ratio of the input frame, expressed in the form
17069 @var{num}/@var{den}.
17070
17071 @item s
17072 The size of the input frame. For the syntax of this option, check the
17073 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17074
17075 @item i
17076 The type of interlaced mode ("P" for "progressive", "T" for top field first, "B"
17077 for bottom field first).
17078
17079 @item iskey
17080 This is 1 if the frame is a key frame, 0 otherwise.
17081
17082 @item type
17083 The picture type of the input frame ("I" for an I-frame, "P" for a
17084 P-frame, "B" for a B-frame, or "?" for an unknown type).
17085 Also refer to the documentation of the @code{AVPictureType} enum and of
17086 the @code{av_get_picture_type_char} function defined in
17087 @file{libavutil/avutil.h}.
17088
17089 @item checksum
17090 The Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame.
17091
17092 @item plane_checksum
17093 The Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
17094 expressed in the form "[@var{c0} @var{c1} @var{c2} @var{c3}]".
17095
17096 @item mean
17097 The mean value of pixels in each plane of the input frame, expressed in the form
17098 "[@var{mean0} @var{mean1} @var{mean2} @var{mean3}]".
17099
17100 @item stdev
17101 The standard deviation of pixel values in each plane of the input frame, expressed
17102 in the form "[@var{stdev0} @var{stdev1} @var{stdev2} @var{stdev3}]".
17103
17104 @end table
17105
17106 @section showpalette
17107
17108 Displays the 256 colors palette of each frame. This filter is only relevant for
17109 @var{pal8} pixel format frames.
17110
17111 It accepts the following option:
17112
17113 @table @option
17114 @item s
17115 Set the size of the box used to represent one palette color entry. Default is
17116 @code{30} (for a @code{30x30} pixel box).
17117 @end table
17118
17119 @section shuffleframes
17120
17121 Reorder and/or duplicate and/or drop video frames.
17122
17123 It accepts the following parameters:
17124
17125 @table @option
17126 @item mapping
17127 Set the destination indexes of input frames.
17128 This is space or '|' separated list of indexes that maps input frames to output
17129 frames. Number of indexes also sets maximal value that each index may have.
17130 '-1' index have special meaning and that is to drop frame.
17131 @end table
17132
17133 The first frame has the index 0. The default is to keep the input unchanged.
17134
17135 @subsection Examples
17136
17137 @itemize
17138 @item
17139 Swap second and third frame of every three frames of the input:
17140 @example
17141 ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
17142 @end example
17143
17144 @item
17145 Swap 10th and 1st frame of every ten frames of the input:
17146 @example
17147 ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
17148 @end example
17149 @end itemize
17150
17151 @section shuffleplanes
17152
17153 Reorder and/or duplicate video planes.
17154
17155 It accepts the following parameters:
17156
17157 @table @option
17158
17159 @item map0
17160 The index of the input plane to be used as the first output plane.
17161
17162 @item map1
17163 The index of the input plane to be used as the second output plane.
17164
17165 @item map2
17166 The index of the input plane to be used as the third output plane.
17167
17168 @item map3
17169 The index of the input plane to be used as the fourth output plane.
17170
17171 @end table
17172
17173 The first plane has the index 0. The default is to keep the input unchanged.
17174
17175 @subsection Examples
17176
17177 @itemize
17178 @item
17179 Swap the second and third planes of the input:
17180 @example
17181 ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
17182 @end example
17183 @end itemize
17184
17185 @anchor{signalstats}
17186 @section signalstats
17187 Evaluate various visual metrics that assist in determining issues associated
17188 with the digitization of analog video media.
17189
17190 By default the filter will log these metadata values:
17191
17192 @table @option
17193 @item YMIN
17194 Display the minimal Y value contained within the input frame. Expressed in
17195 range of [0-255].
17196
17197 @item YLOW
17198 Display the Y value at the 10% percentile within the input frame. Expressed in
17199 range of [0-255].
17200
17201 @item YAVG
17202 Display the average Y value within the input frame. Expressed in range of
17203 [0-255].
17204
17205 @item YHIGH
17206 Display the Y value at the 90% percentile within the input frame. Expressed in
17207 range of [0-255].
17208
17209 @item YMAX
17210 Display the maximum Y value contained within the input frame. Expressed in
17211 range of [0-255].
17212
17213 @item UMIN
17214 Display the minimal U value contained within the input frame. Expressed in
17215 range of [0-255].
17216
17217 @item ULOW
17218 Display the U value at the 10% percentile within the input frame. Expressed in
17219 range of [0-255].
17220
17221 @item UAVG
17222 Display the average U value within the input frame. Expressed in range of
17223 [0-255].
17224
17225 @item UHIGH
17226 Display the U value at the 90% percentile within the input frame. Expressed in
17227 range of [0-255].
17228
17229 @item UMAX
17230 Display the maximum U value contained within the input frame. Expressed in
17231 range of [0-255].
17232
17233 @item VMIN
17234 Display the minimal V value contained within the input frame. Expressed in
17235 range of [0-255].
17236
17237 @item VLOW
17238 Display the V value at the 10% percentile within the input frame. Expressed in
17239 range of [0-255].
17240
17241 @item VAVG
17242 Display the average V value within the input frame. Expressed in range of
17243 [0-255].
17244
17245 @item VHIGH
17246 Display the V value at the 90% percentile within the input frame. Expressed in
17247 range of [0-255].
17248
17249 @item VMAX
17250 Display the maximum V value contained within the input frame. Expressed in
17251 range of [0-255].
17252
17253 @item SATMIN
17254 Display the minimal saturation value contained within the input frame.
17255 Expressed in range of [0-~181.02].
17256
17257 @item SATLOW
17258 Display the saturation value at the 10% percentile within the input frame.
17259 Expressed in range of [0-~181.02].
17260
17261 @item SATAVG
17262 Display the average saturation value within the input frame. Expressed in range
17263 of [0-~181.02].
17264
17265 @item SATHIGH
17266 Display the saturation value at the 90% percentile within the input frame.
17267 Expressed in range of [0-~181.02].
17268
17269 @item SATMAX
17270 Display the maximum saturation value contained within the input frame.
17271 Expressed in range of [0-~181.02].
17272
17273 @item HUEMED
17274 Display the median value for hue within the input frame. Expressed in range of
17275 [0-360].
17276
17277 @item HUEAVG
17278 Display the average value for hue within the input frame. Expressed in range of
17279 [0-360].
17280
17281 @item YDIF
17282 Display the average of sample value difference between all values of the Y
17283 plane in the current frame and corresponding values of the previous input frame.
17284 Expressed in range of [0-255].
17285
17286 @item UDIF
17287 Display the average of sample value difference between all values of the U
17288 plane in the current frame and corresponding values of the previous input frame.
17289 Expressed in range of [0-255].
17290
17291 @item VDIF
17292 Display the average of sample value difference between all values of the V
17293 plane in the current frame and corresponding values of the previous input frame.
17294 Expressed in range of [0-255].
17295
17296 @item YBITDEPTH
17297 Display bit depth of Y plane in current frame.
17298 Expressed in range of [0-16].
17299
17300 @item UBITDEPTH
17301 Display bit depth of U plane in current frame.
17302 Expressed in range of [0-16].
17303
17304 @item VBITDEPTH
17305 Display bit depth of V plane in current frame.
17306 Expressed in range of [0-16].
17307 @end table
17308
17309 The filter accepts the following options:
17310
17311 @table @option
17312 @item stat
17313 @item out
17314
17315 @option{stat} specify an additional form of image analysis.
17316 @option{out} output video with the specified type of pixel highlighted.
17317
17318 Both options accept the following values:
17319
17320 @table @samp
17321 @item tout
17322 Identify @var{temporal outliers} pixels. A @var{temporal outlier} is a pixel
17323 unlike the neighboring pixels of the same field. Examples of temporal outliers
17324 include the results of video dropouts, head clogs, or tape tracking issues.
17325
17326 @item vrep
17327 Identify @var{vertical line repetition}. Vertical line repetition includes
17328 similar rows of pixels within a frame. In born-digital video vertical line
17329 repetition is common, but this pattern is uncommon in video digitized from an
17330 analog source. When it occurs in video that results from the digitization of an
17331 analog source it can indicate concealment from a dropout compensator.
17332
17333 @item brng
17334 Identify pixels that fall outside of legal broadcast range.
17335 @end table
17336
17337 @item color, c
17338 Set the highlight color for the @option{out} option. The default color is
17339 yellow.
17340 @end table
17341
17342 @subsection Examples
17343
17344 @itemize
17345 @item
17346 Output data of various video metrics:
17347 @example
17348 ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
17349 @end example
17350
17351 @item
17352 Output specific data about the minimum and maximum values of the Y plane per frame:
17353 @example
17354 ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
17355 @end example
17356
17357 @item
17358 Playback video while highlighting pixels that are outside of broadcast range in red.
17359 @example
17360 ffplay example.mov -vf signalstats="out=brng:color=red"
17361 @end example
17362
17363 @item
17364 Playback video with signalstats metadata drawn over the frame.
17365 @example
17366 ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
17367 @end example
17368
17369 The contents of signalstat_drawtext.txt used in the command are:
17370 @example
17371 time %@{pts:hms@}
17372 Y (%@{metadata:lavfi.signalstats.YMIN@}-%@{metadata:lavfi.signalstats.YMAX@})
17373 U (%@{metadata:lavfi.signalstats.UMIN@}-%@{metadata:lavfi.signalstats.UMAX@})
17374 V (%@{metadata:lavfi.signalstats.VMIN@}-%@{metadata:lavfi.signalstats.VMAX@})
17375 saturation maximum: %@{metadata:lavfi.signalstats.SATMAX@}
17376
17377 @end example
17378 @end itemize
17379
17380 @anchor{signature}
17381 @section signature
17382
17383 Calculates the MPEG-7 Video Signature. The filter can handle more than one
17384 input. In this case the matching between the inputs can be calculated additionally.
17385 The filter always passes through the first input. The signature of each stream can
17386 be written into a file.
17387
17388 It accepts the following options:
17389
17390 @table @option
17391 @item detectmode
17392 Enable or disable the matching process.
17393
17394 Available values are:
17395
17396 @table @samp
17397 @item off
17398 Disable the calculation of a matching (default).
17399 @item full
17400 Calculate the matching for the whole video and output whether the whole video
17401 matches or only parts.
17402 @item fast
17403 Calculate only until a matching is found or the video ends. Should be faster in
17404 some cases.
17405 @end table
17406
17407 @item nb_inputs
17408 Set the number of inputs. The option value must be a non negative integer.
17409 Default value is 1.
17410
17411 @item filename
17412 Set the path to which the output is written. If there is more than one input,
17413 the path must be a prototype, i.e. must contain %d or %0nd (where n is a positive
17414 integer), that will be replaced with the input number. If no filename is
17415 specified, no output will be written. This is the default.
17416
17417 @item format
17418 Choose the output format.
17419
17420 Available values are:
17421
17422 @table @samp
17423 @item binary
17424 Use the specified binary representation (default).
17425 @item xml
17426 Use the specified xml representation.
17427 @end table
17428
17429 @item th_d
17430 Set threshold to detect one word as similar. The option value must be an integer
17431 greater than zero. The default value is 9000.
17432
17433 @item th_dc
17434 Set threshold to detect all words as similar. The option value must be an integer
17435 greater than zero. The default value is 60000.
17436
17437 @item th_xh
17438 Set threshold to detect frames as similar. The option value must be an integer
17439 greater than zero. The default value is 116.
17440
17441 @item th_di
17442 Set the minimum length of a sequence in frames to recognize it as matching
17443 sequence. The option value must be a non negative integer value.
17444 The default value is 0.
17445
17446 @item th_it
17447 Set the minimum relation, that matching frames to all frames must have.
17448 The option value must be a double value between 0 and 1. The default value is 0.5.
17449 @end table
17450
17451 @subsection Examples
17452
17453 @itemize
17454 @item
17455 To calculate the signature of an input video and store it in signature.bin:
17456 @example
17457 ffmpeg -i input.mkv -vf signature=filename=signature.bin -map 0:v -f null -
17458 @end example
17459
17460 @item
17461 To detect whether two videos match and store the signatures in XML format in
17462 signature0.xml and signature1.xml:
17463 @example
17464 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 -
17465 @end example
17466
17467 @end itemize
17468
17469 @anchor{smartblur}
17470 @section smartblur
17471
17472 Blur the input video without impacting the outlines.
17473
17474 It accepts the following options:
17475
17476 @table @option
17477 @item luma_radius, lr
17478 Set the luma radius. The option value must be a float number in
17479 the range [0.1,5.0] that specifies the variance of the gaussian filter
17480 used to blur the image (slower if larger). Default value is 1.0.
17481
17482 @item luma_strength, ls
17483 Set the luma strength. The option value must be a float number
17484 in the range [-1.0,1.0] that configures the blurring. A value included
17485 in [0.0,1.0] will blur the image whereas a value included in
17486 [-1.0,0.0] will sharpen the image. Default value is 1.0.
17487
17488 @item luma_threshold, lt
17489 Set the luma threshold used as a coefficient to determine
17490 whether a pixel should be blurred or not. The option value must be an
17491 integer in the range [-30,30]. A value of 0 will filter all the image,
17492 a value included in [0,30] will filter flat areas and a value included
17493 in [-30,0] will filter edges. Default value is 0.
17494
17495 @item chroma_radius, cr
17496 Set the chroma radius. The option value must be a float number in
17497 the range [0.1,5.0] that specifies the variance of the gaussian filter
17498 used to blur the image (slower if larger). Default value is @option{luma_radius}.
17499
17500 @item chroma_strength, cs
17501 Set the chroma strength. The option value must be a float number
17502 in the range [-1.0,1.0] that configures the blurring. A value included
17503 in [0.0,1.0] will blur the image whereas a value included in
17504 [-1.0,0.0] will sharpen the image. Default value is @option{luma_strength}.
17505
17506 @item chroma_threshold, ct
17507 Set the chroma threshold used as a coefficient to determine
17508 whether a pixel should be blurred or not. The option value must be an
17509 integer in the range [-30,30]. A value of 0 will filter all the image,
17510 a value included in [0,30] will filter flat areas and a value included
17511 in [-30,0] will filter edges. Default value is @option{luma_threshold}.
17512 @end table
17513
17514 If a chroma option is not explicitly set, the corresponding luma value
17515 is set.
17516
17517 @section sobel
17518 Apply sobel operator to input video stream.
17519
17520 The filter accepts the following option:
17521
17522 @table @option
17523 @item planes
17524 Set which planes will be processed, unprocessed planes will be copied.
17525 By default value 0xf, all planes will be processed.
17526
17527 @item scale
17528 Set value which will be multiplied with filtered result.
17529
17530 @item delta
17531 Set value which will be added to filtered result.
17532 @end table
17533
17534 @anchor{spp}
17535 @section spp
17536
17537 Apply a simple postprocessing filter that compresses and decompresses the image
17538 at several (or - in the case of @option{quality} level @code{6} - all) shifts
17539 and average the results.
17540
17541 The filter accepts the following options:
17542
17543 @table @option
17544 @item quality
17545 Set quality. This option defines the number of levels for averaging. It accepts
17546 an integer in the range 0-6. If set to @code{0}, the filter will have no
17547 effect. A value of @code{6} means the higher quality. For each increment of
17548 that value the speed drops by a factor of approximately 2.  Default value is
17549 @code{3}.
17550
17551 @item qp
17552 Force a constant quantization parameter. If not set, the filter will use the QP
17553 from the video stream (if available).
17554
17555 @item mode
17556 Set thresholding mode. Available modes are:
17557
17558 @table @samp
17559 @item hard
17560 Set hard thresholding (default).
17561 @item soft
17562 Set soft thresholding (better de-ringing effect, but likely blurrier).
17563 @end table
17564
17565 @item use_bframe_qp
17566 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
17567 option may cause flicker since the B-Frames have often larger QP. Default is
17568 @code{0} (not enabled).
17569 @end table
17570
17571 @subsection Commands
17572
17573 This filter supports the following commands:
17574 @table @option
17575 @item quality, level
17576 Set quality level. The value @code{max} can be used to set the maximum level,
17577 currently @code{6}.
17578 @end table
17579
17580 @anchor{sr}
17581 @section sr
17582
17583 Scale the input by applying one of the super-resolution methods based on
17584 convolutional neural networks. Supported models:
17585
17586 @itemize
17587 @item
17588 Super-Resolution Convolutional Neural Network model (SRCNN).
17589 See @url{https://arxiv.org/abs/1501.00092}.
17590
17591 @item
17592 Efficient Sub-Pixel Convolutional Neural Network model (ESPCN).
17593 See @url{https://arxiv.org/abs/1609.05158}.
17594 @end itemize
17595
17596 Training scripts as well as scripts for model file (.pb) saving can be found at
17597 @url{https://github.com/XueweiMeng/sr/tree/sr_dnn_native}. Original repository
17598 is at @url{https://github.com/HighVoltageRocknRoll/sr.git}.
17599
17600 Native model files (.model) can be generated from TensorFlow model
17601 files (.pb) by using tools/python/convert.py
17602
17603 The filter accepts the following options:
17604
17605 @table @option
17606 @item dnn_backend
17607 Specify which DNN backend to use for model loading and execution. This option accepts
17608 the following values:
17609
17610 @table @samp
17611 @item native
17612 Native implementation of DNN loading and execution.
17613
17614 @item tensorflow
17615 TensorFlow backend. To enable this backend you
17616 need to install the TensorFlow for C library (see
17617 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
17618 @code{--enable-libtensorflow}
17619 @end table
17620
17621 Default value is @samp{native}.
17622
17623 @item model
17624 Set path to model file specifying network architecture and its parameters.
17625 Note that different backends use different file formats. TensorFlow backend
17626 can load files for both formats, while native backend can load files for only
17627 its format.
17628
17629 @item scale_factor
17630 Set scale factor for SRCNN model. Allowed values are @code{2}, @code{3} and @code{4}.
17631 Default value is @code{2}. Scale factor is necessary for SRCNN model, because it accepts
17632 input upscaled using bicubic upscaling with proper scale factor.
17633 @end table
17634
17635 This feature can also be finished with @ref{dnn_processing} filter.
17636
17637 @section ssim
17638
17639 Obtain the SSIM (Structural SImilarity Metric) between two input videos.
17640
17641 This filter takes in input two input videos, the first input is
17642 considered the "main" source and is passed unchanged to the
17643 output. The second input is used as a "reference" video for computing
17644 the SSIM.
17645
17646 Both video inputs must have the same resolution and pixel format for
17647 this filter to work correctly. Also it assumes that both inputs
17648 have the same number of frames, which are compared one by one.
17649
17650 The filter stores the calculated SSIM of each frame.
17651
17652 The description of the accepted parameters follows.
17653
17654 @table @option
17655 @item stats_file, f
17656 If specified the filter will use the named file to save the SSIM of
17657 each individual frame. When filename equals "-" the data is sent to
17658 standard output.
17659 @end table
17660
17661 The file printed if @var{stats_file} is selected, contains a sequence of
17662 key/value pairs of the form @var{key}:@var{value} for each compared
17663 couple of frames.
17664
17665 A description of each shown parameter follows:
17666
17667 @table @option
17668 @item n
17669 sequential number of the input frame, starting from 1
17670
17671 @item Y, U, V, R, G, B
17672 SSIM of the compared frames for the component specified by the suffix.
17673
17674 @item All
17675 SSIM of the compared frames for the whole frame.
17676
17677 @item dB
17678 Same as above but in dB representation.
17679 @end table
17680
17681 This filter also supports the @ref{framesync} options.
17682
17683 @subsection Examples
17684 @itemize
17685 @item
17686 For example:
17687 @example
17688 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
17689 [main][ref] ssim="stats_file=stats.log" [out]
17690 @end example
17691
17692 On this example the input file being processed is compared with the
17693 reference file @file{ref_movie.mpg}. The SSIM of each individual frame
17694 is stored in @file{stats.log}.
17695
17696 @item
17697 Another example with both psnr and ssim at same time:
17698 @example
17699 ffmpeg -i main.mpg -i ref.mpg -lavfi  "ssim;[0:v][1:v]psnr" -f null -
17700 @end example
17701
17702 @item
17703 Another example with different containers:
17704 @example
17705 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 -
17706 @end example
17707 @end itemize
17708
17709 @section stereo3d
17710
17711 Convert between different stereoscopic image formats.
17712
17713 The filters accept the following options:
17714
17715 @table @option
17716 @item in
17717 Set stereoscopic image format of input.
17718
17719 Available values for input image formats are:
17720 @table @samp
17721 @item sbsl
17722 side by side parallel (left eye left, right eye right)
17723
17724 @item sbsr
17725 side by side crosseye (right eye left, left eye right)
17726
17727 @item sbs2l
17728 side by side parallel with half width resolution
17729 (left eye left, right eye right)
17730
17731 @item sbs2r
17732 side by side crosseye with half width resolution
17733 (right eye left, left eye right)
17734
17735 @item abl
17736 @item tbl
17737 above-below (left eye above, right eye below)
17738
17739 @item abr
17740 @item tbr
17741 above-below (right eye above, left eye below)
17742
17743 @item ab2l
17744 @item tb2l
17745 above-below with half height resolution
17746 (left eye above, right eye below)
17747
17748 @item ab2r
17749 @item tb2r
17750 above-below with half height resolution
17751 (right eye above, left eye below)
17752
17753 @item al
17754 alternating frames (left eye first, right eye second)
17755
17756 @item ar
17757 alternating frames (right eye first, left eye second)
17758
17759 @item irl
17760 interleaved rows (left eye has top row, right eye starts on next row)
17761
17762 @item irr
17763 interleaved rows (right eye has top row, left eye starts on next row)
17764
17765 @item icl
17766 interleaved columns, left eye first
17767
17768 @item icr
17769 interleaved columns, right eye first
17770
17771 Default value is @samp{sbsl}.
17772 @end table
17773
17774 @item out
17775 Set stereoscopic image format of output.
17776
17777 @table @samp
17778 @item sbsl
17779 side by side parallel (left eye left, right eye right)
17780
17781 @item sbsr
17782 side by side crosseye (right eye left, left eye right)
17783
17784 @item sbs2l
17785 side by side parallel with half width resolution
17786 (left eye left, right eye right)
17787
17788 @item sbs2r
17789 side by side crosseye with half width resolution
17790 (right eye left, left eye right)
17791
17792 @item abl
17793 @item tbl
17794 above-below (left eye above, right eye below)
17795
17796 @item abr
17797 @item tbr
17798 above-below (right eye above, left eye below)
17799
17800 @item ab2l
17801 @item tb2l
17802 above-below with half height resolution
17803 (left eye above, right eye below)
17804
17805 @item ab2r
17806 @item tb2r
17807 above-below with half height resolution
17808 (right eye above, left eye below)
17809
17810 @item al
17811 alternating frames (left eye first, right eye second)
17812
17813 @item ar
17814 alternating frames (right eye first, left eye second)
17815
17816 @item irl
17817 interleaved rows (left eye has top row, right eye starts on next row)
17818
17819 @item irr
17820 interleaved rows (right eye has top row, left eye starts on next row)
17821
17822 @item arbg
17823 anaglyph red/blue gray
17824 (red filter on left eye, blue filter on right eye)
17825
17826 @item argg
17827 anaglyph red/green gray
17828 (red filter on left eye, green filter on right eye)
17829
17830 @item arcg
17831 anaglyph red/cyan gray
17832 (red filter on left eye, cyan filter on right eye)
17833
17834 @item arch
17835 anaglyph red/cyan half colored
17836 (red filter on left eye, cyan filter on right eye)
17837
17838 @item arcc
17839 anaglyph red/cyan color
17840 (red filter on left eye, cyan filter on right eye)
17841
17842 @item arcd
17843 anaglyph red/cyan color optimized with the least squares projection of dubois
17844 (red filter on left eye, cyan filter on right eye)
17845
17846 @item agmg
17847 anaglyph green/magenta gray
17848 (green filter on left eye, magenta filter on right eye)
17849
17850 @item agmh
17851 anaglyph green/magenta half colored
17852 (green filter on left eye, magenta filter on right eye)
17853
17854 @item agmc
17855 anaglyph green/magenta colored
17856 (green filter on left eye, magenta filter on right eye)
17857
17858 @item agmd
17859 anaglyph green/magenta color optimized with the least squares projection of dubois
17860 (green filter on left eye, magenta filter on right eye)
17861
17862 @item aybg
17863 anaglyph yellow/blue gray
17864 (yellow filter on left eye, blue filter on right eye)
17865
17866 @item aybh
17867 anaglyph yellow/blue half colored
17868 (yellow filter on left eye, blue filter on right eye)
17869
17870 @item aybc
17871 anaglyph yellow/blue colored
17872 (yellow filter on left eye, blue filter on right eye)
17873
17874 @item aybd
17875 anaglyph yellow/blue color optimized with the least squares projection of dubois
17876 (yellow filter on left eye, blue filter on right eye)
17877
17878 @item ml
17879 mono output (left eye only)
17880
17881 @item mr
17882 mono output (right eye only)
17883
17884 @item chl
17885 checkerboard, left eye first
17886
17887 @item chr
17888 checkerboard, right eye first
17889
17890 @item icl
17891 interleaved columns, left eye first
17892
17893 @item icr
17894 interleaved columns, right eye first
17895
17896 @item hdmi
17897 HDMI frame pack
17898 @end table
17899
17900 Default value is @samp{arcd}.
17901 @end table
17902
17903 @subsection Examples
17904
17905 @itemize
17906 @item
17907 Convert input video from side by side parallel to anaglyph yellow/blue dubois:
17908 @example
17909 stereo3d=sbsl:aybd
17910 @end example
17911
17912 @item
17913 Convert input video from above below (left eye above, right eye below) to side by side crosseye.
17914 @example
17915 stereo3d=abl:sbsr
17916 @end example
17917 @end itemize
17918
17919 @section streamselect, astreamselect
17920 Select video or audio streams.
17921
17922 The filter accepts the following options:
17923
17924 @table @option
17925 @item inputs
17926 Set number of inputs. Default is 2.
17927
17928 @item map
17929 Set input indexes to remap to outputs.
17930 @end table
17931
17932 @subsection Commands
17933
17934 The @code{streamselect} and @code{astreamselect} filter supports the following
17935 commands:
17936
17937 @table @option
17938 @item map
17939 Set input indexes to remap to outputs.
17940 @end table
17941
17942 @subsection Examples
17943
17944 @itemize
17945 @item
17946 Select first 5 seconds 1st stream and rest of time 2nd stream:
17947 @example
17948 sendcmd='5.0 streamselect map 1',streamselect=inputs=2:map=0
17949 @end example
17950
17951 @item
17952 Same as above, but for audio:
17953 @example
17954 asendcmd='5.0 astreamselect map 1',astreamselect=inputs=2:map=0
17955 @end example
17956 @end itemize
17957
17958 @anchor{subtitles}
17959 @section subtitles
17960
17961 Draw subtitles on top of input video using the libass library.
17962
17963 To enable compilation of this filter you need to configure FFmpeg with
17964 @code{--enable-libass}. This filter also requires a build with libavcodec and
17965 libavformat to convert the passed subtitles file to ASS (Advanced Substation
17966 Alpha) subtitles format.
17967
17968 The filter accepts the following options:
17969
17970 @table @option
17971 @item filename, f
17972 Set the filename of the subtitle file to read. It must be specified.
17973
17974 @item original_size
17975 Specify the size of the original video, the video for which the ASS file
17976 was composed. For the syntax of this option, check the
17977 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
17978 Due to a misdesign in ASS aspect ratio arithmetic, this is necessary to
17979 correctly scale the fonts if the aspect ratio has been changed.
17980
17981 @item fontsdir
17982 Set a directory path containing fonts that can be used by the filter.
17983 These fonts will be used in addition to whatever the font provider uses.
17984
17985 @item alpha
17986 Process alpha channel, by default alpha channel is untouched.
17987
17988 @item charenc
17989 Set subtitles input character encoding. @code{subtitles} filter only. Only
17990 useful if not UTF-8.
17991
17992 @item stream_index, si
17993 Set subtitles stream index. @code{subtitles} filter only.
17994
17995 @item force_style
17996 Override default style or script info parameters of the subtitles. It accepts a
17997 string containing ASS style format @code{KEY=VALUE} couples separated by ",".
17998 @end table
17999
18000 If the first key is not specified, it is assumed that the first value
18001 specifies the @option{filename}.
18002
18003 For example, to render the file @file{sub.srt} on top of the input
18004 video, use the command:
18005 @example
18006 subtitles=sub.srt
18007 @end example
18008
18009 which is equivalent to:
18010 @example
18011 subtitles=filename=sub.srt
18012 @end example
18013
18014 To render the default subtitles stream from file @file{video.mkv}, use:
18015 @example
18016 subtitles=video.mkv
18017 @end example
18018
18019 To render the second subtitles stream from that file, use:
18020 @example
18021 subtitles=video.mkv:si=1
18022 @end example
18023
18024 To make the subtitles stream from @file{sub.srt} appear in 80% transparent blue
18025 @code{DejaVu Serif}, use:
18026 @example
18027 subtitles=sub.srt:force_style='Fontname=DejaVu Serif,PrimaryColour=&HCCFF0000'
18028 @end example
18029
18030 @section super2xsai
18031
18032 Scale the input by 2x and smooth using the Super2xSaI (Scale and
18033 Interpolate) pixel art scaling algorithm.
18034
18035 Useful for enlarging pixel art images without reducing sharpness.
18036
18037 @section swaprect
18038
18039 Swap two rectangular objects in video.
18040
18041 This filter accepts the following options:
18042
18043 @table @option
18044 @item w
18045 Set object width.
18046
18047 @item h
18048 Set object height.
18049
18050 @item x1
18051 Set 1st rect x coordinate.
18052
18053 @item y1
18054 Set 1st rect y coordinate.
18055
18056 @item x2
18057 Set 2nd rect x coordinate.
18058
18059 @item y2
18060 Set 2nd rect y coordinate.
18061
18062 All expressions are evaluated once for each frame.
18063 @end table
18064
18065 The all options are expressions containing the following constants:
18066
18067 @table @option
18068 @item w
18069 @item h
18070 The input width and height.
18071
18072 @item a
18073 same as @var{w} / @var{h}
18074
18075 @item sar
18076 input sample aspect ratio
18077
18078 @item dar
18079 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
18080
18081 @item n
18082 The number of the input frame, starting from 0.
18083
18084 @item t
18085 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
18086
18087 @item pos
18088 the position in the file of the input frame, NAN if unknown
18089 @end table
18090
18091 @section swapuv
18092 Swap U & V plane.
18093
18094 @section tblend
18095 Blend successive video frames.
18096
18097 See @ref{blend}
18098
18099 @section telecine
18100
18101 Apply telecine process to the video.
18102
18103 This filter accepts the following options:
18104
18105 @table @option
18106 @item first_field
18107 @table @samp
18108 @item top, t
18109 top field first
18110 @item bottom, b
18111 bottom field first
18112 The default value is @code{top}.
18113 @end table
18114
18115 @item pattern
18116 A string of numbers representing the pulldown pattern you wish to apply.
18117 The default value is @code{23}.
18118 @end table
18119
18120 @example
18121 Some typical patterns:
18122
18123 NTSC output (30i):
18124 27.5p: 32222
18125 24p: 23 (classic)
18126 24p: 2332 (preferred)
18127 20p: 33
18128 18p: 334
18129 16p: 3444
18130
18131 PAL output (25i):
18132 27.5p: 12222
18133 24p: 222222222223 ("Euro pulldown")
18134 16.67p: 33
18135 16p: 33333334
18136 @end example
18137
18138 @section thistogram
18139
18140 Compute and draw a color distribution histogram for the input video across time.
18141
18142 Unlike @ref{histogram} video filter which only shows histogram of single input frame
18143 at certain time, this filter shows also past histograms of number of frames defined
18144 by @code{width} option.
18145
18146 The computed histogram is a representation of the color component
18147 distribution in an image.
18148
18149 The filter accepts the following options:
18150
18151 @table @option
18152 @item width, w
18153 Set width of single color component output. Default value is @code{0}.
18154 Value of @code{0} means width will be picked from input video.
18155 This also set number of passed histograms to keep.
18156 Allowed range is [0, 8192].
18157
18158 @item display_mode, d
18159 Set display mode.
18160 It accepts the following values:
18161 @table @samp
18162 @item stack
18163 Per color component graphs are placed below each other.
18164
18165 @item parade
18166 Per color component graphs are placed side by side.
18167
18168 @item overlay
18169 Presents information identical to that in the @code{parade}, except
18170 that the graphs representing color components are superimposed directly
18171 over one another.
18172 @end table
18173 Default is @code{stack}.
18174
18175 @item levels_mode, m
18176 Set mode. Can be either @code{linear}, or @code{logarithmic}.
18177 Default is @code{linear}.
18178
18179 @item components, c
18180 Set what color components to display.
18181 Default is @code{7}.
18182
18183 @item bgopacity, b
18184 Set background opacity. Default is @code{0.9}.
18185
18186 @item envelope, e
18187 Show envelope. Default is disabled.
18188
18189 @item ecolor, ec
18190 Set envelope color. Default is @code{gold}.
18191 @end table
18192
18193 @section threshold
18194
18195 Apply threshold effect to video stream.
18196
18197 This filter needs four video streams to perform thresholding.
18198 First stream is stream we are filtering.
18199 Second stream is holding threshold values, third stream is holding min values,
18200 and last, fourth stream is holding max values.
18201
18202 The filter accepts the following option:
18203
18204 @table @option
18205 @item planes
18206 Set which planes will be processed, unprocessed planes will be copied.
18207 By default value 0xf, all planes will be processed.
18208 @end table
18209
18210 For example if first stream pixel's component value is less then threshold value
18211 of pixel component from 2nd threshold stream, third stream value will picked,
18212 otherwise fourth stream pixel component value will be picked.
18213
18214 Using color source filter one can perform various types of thresholding:
18215
18216 @subsection Examples
18217
18218 @itemize
18219 @item
18220 Binary threshold, using gray color as threshold:
18221 @example
18222 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=black -f lavfi -i color=white -lavfi threshold output.avi
18223 @end example
18224
18225 @item
18226 Inverted binary threshold, using gray color as threshold:
18227 @example
18228 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -f lavfi -i color=black -lavfi threshold output.avi
18229 @end example
18230
18231 @item
18232 Truncate binary threshold, using gray color as threshold:
18233 @example
18234 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=gray -lavfi threshold output.avi
18235 @end example
18236
18237 @item
18238 Threshold to zero, using gray color as threshold:
18239 @example
18240 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -i 320x240.avi -lavfi threshold output.avi
18241 @end example
18242
18243 @item
18244 Inverted threshold to zero, using gray color as threshold:
18245 @example
18246 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=white -lavfi threshold output.avi
18247 @end example
18248 @end itemize
18249
18250 @section thumbnail
18251 Select the most representative frame in a given sequence of consecutive frames.
18252
18253 The filter accepts the following options:
18254
18255 @table @option
18256 @item n
18257 Set the frames batch size to analyze; in a set of @var{n} frames, the filter
18258 will pick one of them, and then handle the next batch of @var{n} frames until
18259 the end. Default is @code{100}.
18260 @end table
18261
18262 Since the filter keeps track of the whole frames sequence, a bigger @var{n}
18263 value will result in a higher memory usage, so a high value is not recommended.
18264
18265 @subsection Examples
18266
18267 @itemize
18268 @item
18269 Extract one picture each 50 frames:
18270 @example
18271 thumbnail=50
18272 @end example
18273
18274 @item
18275 Complete example of a thumbnail creation with @command{ffmpeg}:
18276 @example
18277 ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
18278 @end example
18279 @end itemize
18280
18281 @anchor{tile}
18282 @section tile
18283
18284 Tile several successive frames together.
18285
18286 The @ref{untile} filter can do the reverse.
18287
18288 The filter accepts the following options:
18289
18290 @table @option
18291
18292 @item layout
18293 Set the grid size (i.e. the number of lines and columns). For the syntax of
18294 this option, check the
18295 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18296
18297 @item nb_frames
18298 Set the maximum number of frames to render in the given area. It must be less
18299 than or equal to @var{w}x@var{h}. The default value is @code{0}, meaning all
18300 the area will be used.
18301
18302 @item margin
18303 Set the outer border margin in pixels.
18304
18305 @item padding
18306 Set the inner border thickness (i.e. the number of pixels between frames). For
18307 more advanced padding options (such as having different values for the edges),
18308 refer to the pad video filter.
18309
18310 @item color
18311 Specify the color of the unused area. For the syntax of this option, check the
18312 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
18313 The default value of @var{color} is "black".
18314
18315 @item overlap
18316 Set the number of frames to overlap when tiling several successive frames together.
18317 The value must be between @code{0} and @var{nb_frames - 1}.
18318
18319 @item init_padding
18320 Set the number of frames to initially be empty before displaying first output frame.
18321 This controls how soon will one get first output frame.
18322 The value must be between @code{0} and @var{nb_frames - 1}.
18323 @end table
18324
18325 @subsection Examples
18326
18327 @itemize
18328 @item
18329 Produce 8x8 PNG tiles of all keyframes (@option{-skip_frame nokey}) in a movie:
18330 @example
18331 ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
18332 @end example
18333 The @option{-vsync 0} is necessary to prevent @command{ffmpeg} from
18334 duplicating each output frame to accommodate the originally detected frame
18335 rate.
18336
18337 @item
18338 Display @code{5} pictures in an area of @code{3x2} frames,
18339 with @code{7} pixels between them, and @code{2} pixels of initial margin, using
18340 mixed flat and named options:
18341 @example
18342 tile=3x2:nb_frames=5:padding=7:margin=2
18343 @end example
18344 @end itemize
18345
18346 @section tinterlace
18347
18348 Perform various types of temporal field interlacing.
18349
18350 Frames are counted starting from 1, so the first input frame is
18351 considered odd.
18352
18353 The filter accepts the following options:
18354
18355 @table @option
18356
18357 @item mode
18358 Specify the mode of the interlacing. This option can also be specified
18359 as a value alone. See below for a list of values for this option.
18360
18361 Available values are:
18362
18363 @table @samp
18364 @item merge, 0
18365 Move odd frames into the upper field, even into the lower field,
18366 generating a double height frame at half frame rate.
18367 @example
18368  ------> time
18369 Input:
18370 Frame 1         Frame 2         Frame 3         Frame 4
18371
18372 11111           22222           33333           44444
18373 11111           22222           33333           44444
18374 11111           22222           33333           44444
18375 11111           22222           33333           44444
18376
18377 Output:
18378 11111                           33333
18379 22222                           44444
18380 11111                           33333
18381 22222                           44444
18382 11111                           33333
18383 22222                           44444
18384 11111                           33333
18385 22222                           44444
18386 @end example
18387
18388 @item drop_even, 1
18389 Only output odd frames, even frames are dropped, generating a frame with
18390 unchanged height at half frame rate.
18391
18392 @example
18393  ------> time
18394 Input:
18395 Frame 1         Frame 2         Frame 3         Frame 4
18396
18397 11111           22222           33333           44444
18398 11111           22222           33333           44444
18399 11111           22222           33333           44444
18400 11111           22222           33333           44444
18401
18402 Output:
18403 11111                           33333
18404 11111                           33333
18405 11111                           33333
18406 11111                           33333
18407 @end example
18408
18409 @item drop_odd, 2
18410 Only output even frames, odd frames are dropped, generating a frame with
18411 unchanged height at half frame rate.
18412
18413 @example
18414  ------> time
18415 Input:
18416 Frame 1         Frame 2         Frame 3         Frame 4
18417
18418 11111           22222           33333           44444
18419 11111           22222           33333           44444
18420 11111           22222           33333           44444
18421 11111           22222           33333           44444
18422
18423 Output:
18424                 22222                           44444
18425                 22222                           44444
18426                 22222                           44444
18427                 22222                           44444
18428 @end example
18429
18430 @item pad, 3
18431 Expand each frame to full height, but pad alternate lines with black,
18432 generating a frame with double height at the same input frame rate.
18433
18434 @example
18435  ------> time
18436 Input:
18437 Frame 1         Frame 2         Frame 3         Frame 4
18438
18439 11111           22222           33333           44444
18440 11111           22222           33333           44444
18441 11111           22222           33333           44444
18442 11111           22222           33333           44444
18443
18444 Output:
18445 11111           .....           33333           .....
18446 .....           22222           .....           44444
18447 11111           .....           33333           .....
18448 .....           22222           .....           44444
18449 11111           .....           33333           .....
18450 .....           22222           .....           44444
18451 11111           .....           33333           .....
18452 .....           22222           .....           44444
18453 @end example
18454
18455
18456 @item interleave_top, 4
18457 Interleave the upper field from odd frames with the lower field from
18458 even frames, generating a frame with unchanged height at half frame rate.
18459
18460 @example
18461  ------> time
18462 Input:
18463 Frame 1         Frame 2         Frame 3         Frame 4
18464
18465 11111<-         22222           33333<-         44444
18466 11111           22222<-         33333           44444<-
18467 11111<-         22222           33333<-         44444
18468 11111           22222<-         33333           44444<-
18469
18470 Output:
18471 11111                           33333
18472 22222                           44444
18473 11111                           33333
18474 22222                           44444
18475 @end example
18476
18477
18478 @item interleave_bottom, 5
18479 Interleave the lower field from odd frames with the upper field from
18480 even frames, generating a frame with unchanged height at half frame rate.
18481
18482 @example
18483  ------> time
18484 Input:
18485 Frame 1         Frame 2         Frame 3         Frame 4
18486
18487 11111           22222<-         33333           44444<-
18488 11111<-         22222           33333<-         44444
18489 11111           22222<-         33333           44444<-
18490 11111<-         22222           33333<-         44444
18491
18492 Output:
18493 22222                           44444
18494 11111                           33333
18495 22222                           44444
18496 11111                           33333
18497 @end example
18498
18499
18500 @item interlacex2, 6
18501 Double frame rate with unchanged height. Frames are inserted each
18502 containing the second temporal field from the previous input frame and
18503 the first temporal field from the next input frame. This mode relies on
18504 the top_field_first flag. Useful for interlaced video displays with no
18505 field synchronisation.
18506
18507 @example
18508  ------> time
18509 Input:
18510 Frame 1         Frame 2         Frame 3         Frame 4
18511
18512 11111           22222           33333           44444
18513  11111           22222           33333           44444
18514 11111           22222           33333           44444
18515  11111           22222           33333           44444
18516
18517 Output:
18518 11111   22222   22222   33333   33333   44444   44444
18519  11111   11111   22222   22222   33333   33333   44444
18520 11111   22222   22222   33333   33333   44444   44444
18521  11111   11111   22222   22222   33333   33333   44444
18522 @end example
18523
18524
18525 @item mergex2, 7
18526 Move odd frames into the upper field, even into the lower field,
18527 generating a double height frame at same frame rate.
18528
18529 @example
18530  ------> time
18531 Input:
18532 Frame 1         Frame 2         Frame 3         Frame 4
18533
18534 11111           22222           33333           44444
18535 11111           22222           33333           44444
18536 11111           22222           33333           44444
18537 11111           22222           33333           44444
18538
18539 Output:
18540 11111           33333           33333           55555
18541 22222           22222           44444           44444
18542 11111           33333           33333           55555
18543 22222           22222           44444           44444
18544 11111           33333           33333           55555
18545 22222           22222           44444           44444
18546 11111           33333           33333           55555
18547 22222           22222           44444           44444
18548 @end example
18549
18550 @end table
18551
18552 Numeric values are deprecated but are accepted for backward
18553 compatibility reasons.
18554
18555 Default mode is @code{merge}.
18556
18557 @item flags
18558 Specify flags influencing the filter process.
18559
18560 Available value for @var{flags} is:
18561
18562 @table @option
18563 @item low_pass_filter, vlpf
18564 Enable linear vertical low-pass filtering in the filter.
18565 Vertical low-pass filtering is required when creating an interlaced
18566 destination from a progressive source which contains high-frequency
18567 vertical detail. Filtering will reduce interlace 'twitter' and Moire
18568 patterning.
18569
18570 @item complex_filter, cvlpf
18571 Enable complex vertical low-pass filtering.
18572 This will slightly less reduce interlace 'twitter' and Moire
18573 patterning but better retain detail and subjective sharpness impression.
18574
18575 @item bypass_il
18576 Bypass already interlaced frames, only adjust the frame rate.
18577 @end table
18578
18579 Vertical low-pass filtering and bypassing already interlaced frames can only be
18580 enabled for @option{mode} @var{interleave_top} and @var{interleave_bottom}.
18581
18582 @end table
18583
18584 @section tmedian
18585 Pick median pixels from several successive input video frames.
18586
18587 The filter accepts the following options:
18588
18589 @table @option
18590 @item radius
18591 Set radius of median filter.
18592 Default is 1. Allowed range is from 1 to 127.
18593
18594 @item planes
18595 Set which planes to filter. Default value is @code{15}, by which all planes are processed.
18596
18597 @item percentile
18598 Set median percentile. Default value is @code{0.5}.
18599 Default value of @code{0.5} will pick always median values, while @code{0} will pick
18600 minimum values, and @code{1} maximum values.
18601 @end table
18602
18603 @section tmix
18604
18605 Mix successive video frames.
18606
18607 A description of the accepted options follows.
18608
18609 @table @option
18610 @item frames
18611 The number of successive frames to mix. If unspecified, it defaults to 3.
18612
18613 @item weights
18614 Specify weight of each input video frame.
18615 Each weight is separated by space. If number of weights is smaller than
18616 number of @var{frames} last specified weight will be used for all remaining
18617 unset weights.
18618
18619 @item scale
18620 Specify scale, if it is set it will be multiplied with sum
18621 of each weight multiplied with pixel values to give final destination
18622 pixel value. By default @var{scale} is auto scaled to sum of weights.
18623 @end table
18624
18625 @subsection Examples
18626
18627 @itemize
18628 @item
18629 Average 7 successive frames:
18630 @example
18631 tmix=frames=7:weights="1 1 1 1 1 1 1"
18632 @end example
18633
18634 @item
18635 Apply simple temporal convolution:
18636 @example
18637 tmix=frames=3:weights="-1 3 -1"
18638 @end example
18639
18640 @item
18641 Similar as above but only showing temporal differences:
18642 @example
18643 tmix=frames=3:weights="-1 2 -1":scale=1
18644 @end example
18645 @end itemize
18646
18647 @anchor{tonemap}
18648 @section tonemap
18649 Tone map colors from different dynamic ranges.
18650
18651 This filter expects data in single precision floating point, as it needs to
18652 operate on (and can output) out-of-range values. Another filter, such as
18653 @ref{zscale}, is needed to convert the resulting frame to a usable format.
18654
18655 The tonemapping algorithms implemented only work on linear light, so input
18656 data should be linearized beforehand (and possibly correctly tagged).
18657
18658 @example
18659 ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT
18660 @end example
18661
18662 @subsection Options
18663 The filter accepts the following options.
18664
18665 @table @option
18666 @item tonemap
18667 Set the tone map algorithm to use.
18668
18669 Possible values are:
18670 @table @var
18671 @item none
18672 Do not apply any tone map, only desaturate overbright pixels.
18673
18674 @item clip
18675 Hard-clip any out-of-range values. Use it for perfect color accuracy for
18676 in-range values, while distorting out-of-range values.
18677
18678 @item linear
18679 Stretch the entire reference gamut to a linear multiple of the display.
18680
18681 @item gamma
18682 Fit a logarithmic transfer between the tone curves.
18683
18684 @item reinhard
18685 Preserve overall image brightness with a simple curve, using nonlinear
18686 contrast, which results in flattening details and degrading color accuracy.
18687
18688 @item hable
18689 Preserve both dark and bright details better than @var{reinhard}, at the cost
18690 of slightly darkening everything. Use it when detail preservation is more
18691 important than color and brightness accuracy.
18692
18693 @item mobius
18694 Smoothly map out-of-range values, while retaining contrast and colors for
18695 in-range material as much as possible. Use it when color accuracy is more
18696 important than detail preservation.
18697 @end table
18698
18699 Default is none.
18700
18701 @item param
18702 Tune the tone mapping algorithm.
18703
18704 This affects the following algorithms:
18705 @table @var
18706 @item none
18707 Ignored.
18708
18709 @item linear
18710 Specifies the scale factor to use while stretching.
18711 Default to 1.0.
18712
18713 @item gamma
18714 Specifies the exponent of the function.
18715 Default to 1.8.
18716
18717 @item clip
18718 Specify an extra linear coefficient to multiply into the signal before clipping.
18719 Default to 1.0.
18720
18721 @item reinhard
18722 Specify the local contrast coefficient at the display peak.
18723 Default to 0.5, which means that in-gamut values will be about half as bright
18724 as when clipping.
18725
18726 @item hable
18727 Ignored.
18728
18729 @item mobius
18730 Specify the transition point from linear to mobius transform. Every value
18731 below this point is guaranteed to be mapped 1:1. The higher the value, the
18732 more accurate the result will be, at the cost of losing bright details.
18733 Default to 0.3, which due to the steep initial slope still preserves in-range
18734 colors fairly accurately.
18735 @end table
18736
18737 @item desat
18738 Apply desaturation for highlights that exceed this level of brightness. The
18739 higher the parameter, the more color information will be preserved. This
18740 setting helps prevent unnaturally blown-out colors for super-highlights, by
18741 (smoothly) turning into white instead. This makes images feel more natural,
18742 at the cost of reducing information about out-of-range colors.
18743
18744 The default of 2.0 is somewhat conservative and will mostly just apply to
18745 skies or directly sunlit surfaces. A setting of 0.0 disables this option.
18746
18747 This option works only if the input frame has a supported color tag.
18748
18749 @item peak
18750 Override signal/nominal/reference peak with this value. Useful when the
18751 embedded peak information in display metadata is not reliable or when tone
18752 mapping from a lower range to a higher range.
18753 @end table
18754
18755 @section tpad
18756
18757 Temporarily pad video frames.
18758
18759 The filter accepts the following options:
18760
18761 @table @option
18762 @item start
18763 Specify number of delay frames before input video stream. Default is 0.
18764
18765 @item stop
18766 Specify number of padding frames after input video stream.
18767 Set to -1 to pad indefinitely. Default is 0.
18768
18769 @item start_mode
18770 Set kind of frames added to beginning of stream.
18771 Can be either @var{add} or @var{clone}.
18772 With @var{add} frames of solid-color are added.
18773 With @var{clone} frames are clones of first frame.
18774 Default is @var{add}.
18775
18776 @item stop_mode
18777 Set kind of frames added to end of stream.
18778 Can be either @var{add} or @var{clone}.
18779 With @var{add} frames of solid-color are added.
18780 With @var{clone} frames are clones of last frame.
18781 Default is @var{add}.
18782
18783 @item start_duration, stop_duration
18784 Specify the duration of the start/stop delay. See
18785 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
18786 for the accepted syntax.
18787 These options override @var{start} and @var{stop}. Default is 0.
18788
18789 @item color
18790 Specify the color of the padded area. For the syntax of this option,
18791 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
18792 manual,ffmpeg-utils}.
18793
18794 The default value of @var{color} is "black".
18795 @end table
18796
18797 @anchor{transpose}
18798 @section transpose
18799
18800 Transpose rows with columns in the input video and optionally flip it.
18801
18802 It accepts the following parameters:
18803
18804 @table @option
18805
18806 @item dir
18807 Specify the transposition direction.
18808
18809 Can assume the following values:
18810 @table @samp
18811 @item 0, 4, cclock_flip
18812 Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
18813 @example
18814 L.R     L.l
18815 . . ->  . .
18816 l.r     R.r
18817 @end example
18818
18819 @item 1, 5, clock
18820 Rotate by 90 degrees clockwise, that is:
18821 @example
18822 L.R     l.L
18823 . . ->  . .
18824 l.r     r.R
18825 @end example
18826
18827 @item 2, 6, cclock
18828 Rotate by 90 degrees counterclockwise, that is:
18829 @example
18830 L.R     R.r
18831 . . ->  . .
18832 l.r     L.l
18833 @end example
18834
18835 @item 3, 7, clock_flip
18836 Rotate by 90 degrees clockwise and vertically flip, that is:
18837 @example
18838 L.R     r.R
18839 . . ->  . .
18840 l.r     l.L
18841 @end example
18842 @end table
18843
18844 For values between 4-7, the transposition is only done if the input
18845 video geometry is portrait and not landscape. These values are
18846 deprecated, the @code{passthrough} option should be used instead.
18847
18848 Numerical values are deprecated, and should be dropped in favor of
18849 symbolic constants.
18850
18851 @item passthrough
18852 Do not apply the transposition if the input geometry matches the one
18853 specified by the specified value. It accepts the following values:
18854 @table @samp
18855 @item none
18856 Always apply transposition.
18857 @item portrait
18858 Preserve portrait geometry (when @var{height} >= @var{width}).
18859 @item landscape
18860 Preserve landscape geometry (when @var{width} >= @var{height}).
18861 @end table
18862
18863 Default value is @code{none}.
18864 @end table
18865
18866 For example to rotate by 90 degrees clockwise and preserve portrait
18867 layout:
18868 @example
18869 transpose=dir=1:passthrough=portrait
18870 @end example
18871
18872 The command above can also be specified as:
18873 @example
18874 transpose=1:portrait
18875 @end example
18876
18877 @section transpose_npp
18878
18879 Transpose rows with columns in the input video and optionally flip it.
18880 For more in depth examples see the @ref{transpose} video filter, which shares mostly the same options.
18881
18882 It accepts the following parameters:
18883
18884 @table @option
18885
18886 @item dir
18887 Specify the transposition direction.
18888
18889 Can assume the following values:
18890 @table @samp
18891 @item cclock_flip
18892 Rotate by 90 degrees counterclockwise and vertically flip. (default)
18893
18894 @item clock
18895 Rotate by 90 degrees clockwise.
18896
18897 @item cclock
18898 Rotate by 90 degrees counterclockwise.
18899
18900 @item clock_flip
18901 Rotate by 90 degrees clockwise and vertically flip.
18902 @end table
18903
18904 @item passthrough
18905 Do not apply the transposition if the input geometry matches the one
18906 specified by the specified value. It accepts the following values:
18907 @table @samp
18908 @item none
18909 Always apply transposition. (default)
18910 @item portrait
18911 Preserve portrait geometry (when @var{height} >= @var{width}).
18912 @item landscape
18913 Preserve landscape geometry (when @var{width} >= @var{height}).
18914 @end table
18915
18916 @end table
18917
18918 @section trim
18919 Trim the input so that the output contains one continuous subpart of the input.
18920
18921 It accepts the following parameters:
18922 @table @option
18923 @item start
18924 Specify the time of the start of the kept section, i.e. the frame with the
18925 timestamp @var{start} will be the first frame in the output.
18926
18927 @item end
18928 Specify the time of the first frame that will be dropped, i.e. the frame
18929 immediately preceding the one with the timestamp @var{end} will be the last
18930 frame in the output.
18931
18932 @item start_pts
18933 This is the same as @var{start}, except this option sets the start timestamp
18934 in timebase units instead of seconds.
18935
18936 @item end_pts
18937 This is the same as @var{end}, except this option sets the end timestamp
18938 in timebase units instead of seconds.
18939
18940 @item duration
18941 The maximum duration of the output in seconds.
18942
18943 @item start_frame
18944 The number of the first frame that should be passed to the output.
18945
18946 @item end_frame
18947 The number of the first frame that should be dropped.
18948 @end table
18949
18950 @option{start}, @option{end}, and @option{duration} are expressed as time
18951 duration specifications; see
18952 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
18953 for the accepted syntax.
18954
18955 Note that the first two sets of the start/end options and the @option{duration}
18956 option look at the frame timestamp, while the _frame variants simply count the
18957 frames that pass through the filter. Also note that this filter does not modify
18958 the timestamps. If you wish for the output timestamps to start at zero, insert a
18959 setpts filter after the trim filter.
18960
18961 If multiple start or end options are set, this filter tries to be greedy and
18962 keep all the frames that match at least one of the specified constraints. To keep
18963 only the part that matches all the constraints at once, chain multiple trim
18964 filters.
18965
18966 The defaults are such that all the input is kept. So it is possible to set e.g.
18967 just the end values to keep everything before the specified time.
18968
18969 Examples:
18970 @itemize
18971 @item
18972 Drop everything except the second minute of input:
18973 @example
18974 ffmpeg -i INPUT -vf trim=60:120
18975 @end example
18976
18977 @item
18978 Keep only the first second:
18979 @example
18980 ffmpeg -i INPUT -vf trim=duration=1
18981 @end example
18982
18983 @end itemize
18984
18985 @section unpremultiply
18986 Apply alpha unpremultiply effect to input video stream using first plane
18987 of second stream as alpha.
18988
18989 Both streams must have same dimensions and same pixel format.
18990
18991 The filter accepts the following option:
18992
18993 @table @option
18994 @item planes
18995 Set which planes will be processed, unprocessed planes will be copied.
18996 By default value 0xf, all planes will be processed.
18997
18998 If the format has 1 or 2 components, then luma is bit 0.
18999 If the format has 3 or 4 components:
19000 for RGB formats bit 0 is green, bit 1 is blue and bit 2 is red;
19001 for YUV formats bit 0 is luma, bit 1 is chroma-U and bit 2 is chroma-V.
19002 If present, the alpha channel is always the last bit.
19003
19004 @item inplace
19005 Do not require 2nd input for processing, instead use alpha plane from input stream.
19006 @end table
19007
19008 @anchor{unsharp}
19009 @section unsharp
19010
19011 Sharpen or blur the input video.
19012
19013 It accepts the following parameters:
19014
19015 @table @option
19016 @item luma_msize_x, lx
19017 Set the luma matrix horizontal size. It must be an odd integer between
19018 3 and 23. The default value is 5.
19019
19020 @item luma_msize_y, ly
19021 Set the luma matrix vertical size. It must be an odd integer between 3
19022 and 23. The default value is 5.
19023
19024 @item luma_amount, la
19025 Set the luma effect strength. It must be a floating point number, reasonable
19026 values lay between -1.5 and 1.5.
19027
19028 Negative values will blur the input video, while positive values will
19029 sharpen it, a value of zero will disable the effect.
19030
19031 Default value is 1.0.
19032
19033 @item chroma_msize_x, cx
19034 Set the chroma matrix horizontal size. It must be an odd integer
19035 between 3 and 23. The default value is 5.
19036
19037 @item chroma_msize_y, cy
19038 Set the chroma matrix vertical size. It must be an odd integer
19039 between 3 and 23. The default value is 5.
19040
19041 @item chroma_amount, ca
19042 Set the chroma effect strength. It must be a floating point number, reasonable
19043 values lay between -1.5 and 1.5.
19044
19045 Negative values will blur the input video, while positive values will
19046 sharpen it, a value of zero will disable the effect.
19047
19048 Default value is 0.0.
19049
19050 @end table
19051
19052 All parameters are optional and default to the equivalent of the
19053 string '5:5:1.0:5:5:0.0'.
19054
19055 @subsection Examples
19056
19057 @itemize
19058 @item
19059 Apply strong luma sharpen effect:
19060 @example
19061 unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
19062 @end example
19063
19064 @item
19065 Apply a strong blur of both luma and chroma parameters:
19066 @example
19067 unsharp=7:7:-2:7:7:-2
19068 @end example
19069 @end itemize
19070
19071 @anchor{untile}
19072 @section untile
19073
19074 Decompose a video made of tiled images into the individual images.
19075
19076 The frame rate of the output video is the frame rate of the input video
19077 multiplied by the number of tiles.
19078
19079 This filter does the reverse of @ref{tile}.
19080
19081 The filter accepts the following options:
19082
19083 @table @option
19084
19085 @item layout
19086 Set the grid size (i.e. the number of lines and columns). For the syntax of
19087 this option, check the
19088 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19089 @end table
19090
19091 @subsection Examples
19092
19093 @itemize
19094 @item
19095 Produce a 1-second video from a still image file made of 25 frames stacked
19096 vertically, like an analogic film reel:
19097 @example
19098 ffmpeg -r 1 -i image.jpg -vf untile=1x25 movie.mkv
19099 @end example
19100 @end itemize
19101
19102 @section uspp
19103
19104 Apply ultra slow/simple postprocessing filter that compresses and decompresses
19105 the image at several (or - in the case of @option{quality} level @code{8} - all)
19106 shifts and average the results.
19107
19108 The way this differs from the behavior of spp is that uspp actually encodes &
19109 decodes each case with libavcodec Snow, whereas spp uses a simplified intra only 8x8
19110 DCT similar to MJPEG.
19111
19112 The filter accepts the following options:
19113
19114 @table @option
19115 @item quality
19116 Set quality. This option defines the number of levels for averaging. It accepts
19117 an integer in the range 0-8. If set to @code{0}, the filter will have no
19118 effect. A value of @code{8} means the higher quality. For each increment of
19119 that value the speed drops by a factor of approximately 2.  Default value is
19120 @code{3}.
19121
19122 @item qp
19123 Force a constant quantization parameter. If not set, the filter will use the QP
19124 from the video stream (if available).
19125 @end table
19126
19127 @section v360
19128
19129 Convert 360 videos between various formats.
19130
19131 The filter accepts the following options:
19132
19133 @table @option
19134
19135 @item input
19136 @item output
19137 Set format of the input/output video.
19138
19139 Available formats:
19140
19141 @table @samp
19142
19143 @item e
19144 @item equirect
19145 Equirectangular projection.
19146
19147 @item c3x2
19148 @item c6x1
19149 @item c1x6
19150 Cubemap with 3x2/6x1/1x6 layout.
19151
19152 Format specific options:
19153
19154 @table @option
19155 @item in_pad
19156 @item out_pad
19157 Set padding proportion for the input/output cubemap. Values in decimals.
19158
19159 Example values:
19160 @table @samp
19161 @item 0
19162 No padding.
19163 @item 0.01
19164 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)
19165 @end table
19166
19167 Default value is @b{@samp{0}}.
19168 Maximum value is @b{@samp{0.1}}.
19169
19170 @item fin_pad
19171 @item fout_pad
19172 Set fixed padding for the input/output cubemap. Values in pixels.
19173
19174 Default value is @b{@samp{0}}. If greater than zero it overrides other padding options.
19175
19176 @item in_forder
19177 @item out_forder
19178 Set order of faces for the input/output cubemap. Choose one direction for each position.
19179
19180 Designation of directions:
19181 @table @samp
19182 @item r
19183 right
19184 @item l
19185 left
19186 @item u
19187 up
19188 @item d
19189 down
19190 @item f
19191 forward
19192 @item b
19193 back
19194 @end table
19195
19196 Default value is @b{@samp{rludfb}}.
19197
19198 @item in_frot
19199 @item out_frot
19200 Set rotation of faces for the input/output cubemap. Choose one angle for each position.
19201
19202 Designation of angles:
19203 @table @samp
19204 @item 0
19205 0 degrees clockwise
19206 @item 1
19207 90 degrees clockwise
19208 @item 2
19209 180 degrees clockwise
19210 @item 3
19211 270 degrees clockwise
19212 @end table
19213
19214 Default value is @b{@samp{000000}}.
19215 @end table
19216
19217 @item eac
19218 Equi-Angular Cubemap.
19219
19220 @item flat
19221 @item gnomonic
19222 @item rectilinear
19223 Regular video.
19224
19225 Format specific options:
19226 @table @option
19227 @item h_fov
19228 @item v_fov
19229 @item d_fov
19230 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19231
19232 If diagonal field of view is set it overrides horizontal and vertical field of view.
19233
19234 @item ih_fov
19235 @item iv_fov
19236 @item id_fov
19237 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19238
19239 If diagonal field of view is set it overrides horizontal and vertical field of view.
19240 @end table
19241
19242 @item dfisheye
19243 Dual fisheye.
19244
19245 Format specific options:
19246 @table @option
19247 @item h_fov
19248 @item v_fov
19249 @item d_fov
19250 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19251
19252 If diagonal field of view is set it overrides horizontal and vertical field of view.
19253
19254 @item ih_fov
19255 @item iv_fov
19256 @item id_fov
19257 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19258
19259 If diagonal field of view is set it overrides horizontal and vertical field of view.
19260 @end table
19261
19262 @item barrel
19263 @item fb
19264 @item barrelsplit
19265 Facebook's 360 formats.
19266
19267 @item sg
19268 Stereographic format.
19269
19270 Format specific options:
19271 @table @option
19272 @item h_fov
19273 @item v_fov
19274 @item d_fov
19275 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19276
19277 If diagonal field of view is set it overrides horizontal and vertical field of view.
19278
19279 @item ih_fov
19280 @item iv_fov
19281 @item id_fov
19282 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19283
19284 If diagonal field of view is set it overrides horizontal and vertical field of view.
19285 @end table
19286
19287 @item mercator
19288 Mercator format.
19289
19290 @item ball
19291 Ball format, gives significant distortion toward the back.
19292
19293 @item hammer
19294 Hammer-Aitoff map projection format.
19295
19296 @item sinusoidal
19297 Sinusoidal map projection format.
19298
19299 @item fisheye
19300 Fisheye projection.
19301
19302 Format specific options:
19303 @table @option
19304 @item h_fov
19305 @item v_fov
19306 @item d_fov
19307 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19308
19309 If diagonal field of view is set it overrides horizontal and vertical field of view.
19310
19311 @item ih_fov
19312 @item iv_fov
19313 @item id_fov
19314 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19315
19316 If diagonal field of view is set it overrides horizontal and vertical field of view.
19317 @end table
19318
19319 @item pannini
19320 Pannini projection.
19321
19322 Format specific options:
19323 @table @option
19324 @item h_fov
19325 Set output pannini parameter.
19326
19327 @item ih_fov
19328 Set input pannini parameter.
19329 @end table
19330
19331 @item cylindrical
19332 Cylindrical projection.
19333
19334 Format specific options:
19335 @table @option
19336 @item h_fov
19337 @item v_fov
19338 @item d_fov
19339 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19340
19341 If diagonal field of view is set it overrides horizontal and vertical field of view.
19342
19343 @item ih_fov
19344 @item iv_fov
19345 @item id_fov
19346 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19347
19348 If diagonal field of view is set it overrides horizontal and vertical field of view.
19349 @end table
19350
19351 @item perspective
19352 Perspective projection. @i{(output only)}
19353
19354 Format specific options:
19355 @table @option
19356 @item v_fov
19357 Set perspective parameter.
19358 @end table
19359
19360 @item tetrahedron
19361 Tetrahedron projection.
19362
19363 @item tsp
19364 Truncated square pyramid projection.
19365
19366 @item he
19367 @item hequirect
19368 Half equirectangular projection.
19369
19370 @item equisolid
19371 Equisolid format.
19372
19373 Format specific options:
19374 @table @option
19375 @item h_fov
19376 @item v_fov
19377 @item d_fov
19378 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19379
19380 If diagonal field of view is set it overrides horizontal and vertical field of view.
19381
19382 @item ih_fov
19383 @item iv_fov
19384 @item id_fov
19385 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19386
19387 If diagonal field of view is set it overrides horizontal and vertical field of view.
19388 @end table
19389
19390 @item og
19391 Orthographic format.
19392
19393 Format specific options:
19394 @table @option
19395 @item h_fov
19396 @item v_fov
19397 @item d_fov
19398 Set output horizontal/vertical/diagonal field of view. Values in degrees.
19399
19400 If diagonal field of view is set it overrides horizontal and vertical field of view.
19401
19402 @item ih_fov
19403 @item iv_fov
19404 @item id_fov
19405 Set input horizontal/vertical/diagonal field of view. Values in degrees.
19406
19407 If diagonal field of view is set it overrides horizontal and vertical field of view.
19408 @end table
19409 @end table
19410
19411 @item interp
19412 Set interpolation method.@*
19413 @i{Note: more complex interpolation methods require much more memory to run.}
19414
19415 Available methods:
19416
19417 @table @samp
19418 @item near
19419 @item nearest
19420 Nearest neighbour.
19421 @item line
19422 @item linear
19423 Bilinear interpolation.
19424 @item lagrange9
19425 Lagrange9 interpolation.
19426 @item cube
19427 @item cubic
19428 Bicubic interpolation.
19429 @item lanc
19430 @item lanczos
19431 Lanczos interpolation.
19432 @item sp16
19433 @item spline16
19434 Spline16 interpolation.
19435 @item gauss
19436 @item gaussian
19437 Gaussian interpolation.
19438 @end table
19439
19440 Default value is @b{@samp{line}}.
19441
19442 @item w
19443 @item h
19444 Set the output video resolution.
19445
19446 Default resolution depends on formats.
19447
19448 @item in_stereo
19449 @item out_stereo
19450 Set the input/output stereo format.
19451
19452 @table @samp
19453 @item 2d
19454 2D mono
19455 @item sbs
19456 Side by side
19457 @item tb
19458 Top bottom
19459 @end table
19460
19461 Default value is @b{@samp{2d}} for input and output format.
19462
19463 @item yaw
19464 @item pitch
19465 @item roll
19466 Set rotation for the output video. Values in degrees.
19467
19468 @item rorder
19469 Set rotation order for the output video. Choose one item for each position.
19470
19471 @table @samp
19472 @item y, Y
19473 yaw
19474 @item p, P
19475 pitch
19476 @item r, R
19477 roll
19478 @end table
19479
19480 Default value is @b{@samp{ypr}}.
19481
19482 @item h_flip
19483 @item v_flip
19484 @item d_flip
19485 Flip the output video horizontally(swaps left-right)/vertically(swaps up-down)/in-depth(swaps back-forward). Boolean values.
19486
19487 @item ih_flip
19488 @item iv_flip
19489 Set if input video is flipped horizontally/vertically. Boolean values.
19490
19491 @item in_trans
19492 Set if input video is transposed. Boolean value, by default disabled.
19493
19494 @item out_trans
19495 Set if output video needs to be transposed. Boolean value, by default disabled.
19496
19497 @item alpha_mask
19498 Build mask in alpha plane for all unmapped pixels by marking them fully transparent. Boolean value, by default disabled.
19499 @end table
19500
19501 @subsection Examples
19502
19503 @itemize
19504 @item
19505 Convert equirectangular video to cubemap with 3x2 layout and 1% padding using bicubic interpolation:
19506 @example
19507 ffmpeg -i input.mkv -vf v360=e:c3x2:cubic:out_pad=0.01 output.mkv
19508 @end example
19509 @item
19510 Extract back view of Equi-Angular Cubemap:
19511 @example
19512 ffmpeg -i input.mkv -vf v360=eac:flat:yaw=180 output.mkv
19513 @end example
19514 @item
19515 Convert transposed and horizontally flipped Equi-Angular Cubemap in side-by-side stereo format to equirectangular top-bottom stereo format:
19516 @example
19517 v360=eac:equirect:in_stereo=sbs:in_trans=1:ih_flip=1:out_stereo=tb
19518 @end example
19519 @end itemize
19520
19521 @subsection Commands
19522
19523 This filter supports subset of above options as @ref{commands}.
19524
19525 @section vaguedenoiser
19526
19527 Apply a wavelet based denoiser.
19528
19529 It transforms each frame from the video input into the wavelet domain,
19530 using Cohen-Daubechies-Feauveau 9/7. Then it applies some filtering to
19531 the obtained coefficients. It does an inverse wavelet transform after.
19532 Due to wavelet properties, it should give a nice smoothed result, and
19533 reduced noise, without blurring picture features.
19534
19535 This filter accepts the following options:
19536
19537 @table @option
19538 @item threshold
19539 The filtering strength. The higher, the more filtered the video will be.
19540 Hard thresholding can use a higher threshold than soft thresholding
19541 before the video looks overfiltered. Default value is 2.
19542
19543 @item method
19544 The filtering method the filter will use.
19545
19546 It accepts the following values:
19547 @table @samp
19548 @item hard
19549 All values under the threshold will be zeroed.
19550
19551 @item soft
19552 All values under the threshold will be zeroed. All values above will be
19553 reduced by the threshold.
19554
19555 @item garrote
19556 Scales or nullifies coefficients - intermediary between (more) soft and
19557 (less) hard thresholding.
19558 @end table
19559
19560 Default is garrote.
19561
19562 @item nsteps
19563 Number of times, the wavelet will decompose the picture. Picture can't
19564 be decomposed beyond a particular point (typically, 8 for a 640x480
19565 frame - as 2^9 = 512 > 480). Valid values are integers between 1 and 32. Default value is 6.
19566
19567 @item percent
19568 Partial of full denoising (limited coefficients shrinking), from 0 to 100. Default value is 85.
19569
19570 @item planes
19571 A list of the planes to process. By default all planes are processed.
19572
19573 @item type
19574 The threshold type the filter will use.
19575
19576 It accepts the following values:
19577 @table @samp
19578 @item universal
19579 Threshold used is same for all decompositions.
19580
19581 @item bayes
19582 Threshold used depends also on each decomposition coefficients.
19583 @end table
19584
19585 Default is universal.
19586 @end table
19587
19588 @section vectorscope
19589
19590 Display 2 color component values in the two dimensional graph (which is called
19591 a vectorscope).
19592
19593 This filter accepts the following options:
19594
19595 @table @option
19596 @item mode, m
19597 Set vectorscope mode.
19598
19599 It accepts the following values:
19600 @table @samp
19601 @item gray
19602 @item tint
19603 Gray values are displayed on graph, higher brightness means more pixels have
19604 same component color value on location in graph. This is the default mode.
19605
19606 @item color
19607 Gray values are displayed on graph. Surrounding pixels values which are not
19608 present in video frame are drawn in gradient of 2 color components which are
19609 set by option @code{x} and @code{y}. The 3rd color component is static.
19610
19611 @item color2
19612 Actual color components values present in video frame are displayed on graph.
19613
19614 @item color3
19615 Similar as color2 but higher frequency of same values @code{x} and @code{y}
19616 on graph increases value of another color component, which is luminance by
19617 default values of @code{x} and @code{y}.
19618
19619 @item color4
19620 Actual colors present in video frame are displayed on graph. If two different
19621 colors map to same position on graph then color with higher value of component
19622 not present in graph is picked.
19623
19624 @item color5
19625 Gray values are displayed on graph. Similar to @code{color} but with 3rd color
19626 component picked from radial gradient.
19627 @end table
19628
19629 @item x
19630 Set which color component will be represented on X-axis. Default is @code{1}.
19631
19632 @item y
19633 Set which color component will be represented on Y-axis. Default is @code{2}.
19634
19635 @item intensity, i
19636 Set intensity, used by modes: gray, color, color3 and color5 for increasing brightness
19637 of color component which represents frequency of (X, Y) location in graph.
19638
19639 @item envelope, e
19640 @table @samp
19641 @item none
19642 No envelope, this is default.
19643
19644 @item instant
19645 Instant envelope, even darkest single pixel will be clearly highlighted.
19646
19647 @item peak
19648 Hold maximum and minimum values presented in graph over time. This way you
19649 can still spot out of range values without constantly looking at vectorscope.
19650
19651 @item peak+instant
19652 Peak and instant envelope combined together.
19653 @end table
19654
19655 @item graticule, g
19656 Set what kind of graticule to draw.
19657 @table @samp
19658 @item none
19659 @item green
19660 @item color
19661 @item invert
19662 @end table
19663
19664 @item opacity, o
19665 Set graticule opacity.
19666
19667 @item flags, f
19668 Set graticule flags.
19669
19670 @table @samp
19671 @item white
19672 Draw graticule for white point.
19673
19674 @item black
19675 Draw graticule for black point.
19676
19677 @item name
19678 Draw color points short names.
19679 @end table
19680
19681 @item bgopacity, b
19682 Set background opacity.
19683
19684 @item lthreshold, l
19685 Set low threshold for color component not represented on X or Y axis.
19686 Values lower than this value will be ignored. Default is 0.
19687 Note this value is multiplied with actual max possible value one pixel component
19688 can have. So for 8-bit input and low threshold value of 0.1 actual threshold
19689 is 0.1 * 255 = 25.
19690
19691 @item hthreshold, h
19692 Set high threshold for color component not represented on X or Y axis.
19693 Values higher than this value will be ignored. Default is 1.
19694 Note this value is multiplied with actual max possible value one pixel component
19695 can have. So for 8-bit input and high threshold value of 0.9 actual threshold
19696 is 0.9 * 255 = 230.
19697
19698 @item colorspace, c
19699 Set what kind of colorspace to use when drawing graticule.
19700 @table @samp
19701 @item auto
19702 @item 601
19703 @item 709
19704 @end table
19705 Default is auto.
19706
19707 @item tint0, t0
19708 @item tint1, t1
19709 Set color tint for gray/tint vectorscope mode. By default both options are zero.
19710 This means no tint, and output will remain gray.
19711 @end table
19712
19713 @anchor{vidstabdetect}
19714 @section vidstabdetect
19715
19716 Analyze video stabilization/deshaking. Perform pass 1 of 2, see
19717 @ref{vidstabtransform} for pass 2.
19718
19719 This filter generates a file with relative translation and rotation
19720 transform information about subsequent frames, which is then used by
19721 the @ref{vidstabtransform} filter.
19722
19723 To enable compilation of this filter you need to configure FFmpeg with
19724 @code{--enable-libvidstab}.
19725
19726 This filter accepts the following options:
19727
19728 @table @option
19729 @item result
19730 Set the path to the file used to write the transforms information.
19731 Default value is @file{transforms.trf}.
19732
19733 @item shakiness
19734 Set how shaky the video is and how quick the camera is. It accepts an
19735 integer in the range 1-10, a value of 1 means little shakiness, a
19736 value of 10 means strong shakiness. Default value is 5.
19737
19738 @item accuracy
19739 Set the accuracy of the detection process. It must be a value in the
19740 range 1-15. A value of 1 means low accuracy, a value of 15 means high
19741 accuracy. Default value is 15.
19742
19743 @item stepsize
19744 Set stepsize of the search process. The region around minimum is
19745 scanned with 1 pixel resolution. Default value is 6.
19746
19747 @item mincontrast
19748 Set minimum contrast. Below this value a local measurement field is
19749 discarded. Must be a floating point value in the range 0-1. Default
19750 value is 0.3.
19751
19752 @item tripod
19753 Set reference frame number for tripod mode.
19754
19755 If enabled, the motion of the frames is compared to a reference frame
19756 in the filtered stream, identified by the specified number. The idea
19757 is to compensate all movements in a more-or-less static scene and keep
19758 the camera view absolutely still.
19759
19760 If set to 0, it is disabled. The frames are counted starting from 1.
19761
19762 @item show
19763 Show fields and transforms in the resulting frames. It accepts an
19764 integer in the range 0-2. Default value is 0, which disables any
19765 visualization.
19766 @end table
19767
19768 @subsection Examples
19769
19770 @itemize
19771 @item
19772 Use default values:
19773 @example
19774 vidstabdetect
19775 @end example
19776
19777 @item
19778 Analyze strongly shaky movie and put the results in file
19779 @file{mytransforms.trf}:
19780 @example
19781 vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
19782 @end example
19783
19784 @item
19785 Visualize the result of internal transformations in the resulting
19786 video:
19787 @example
19788 vidstabdetect=show=1
19789 @end example
19790
19791 @item
19792 Analyze a video with medium shakiness using @command{ffmpeg}:
19793 @example
19794 ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
19795 @end example
19796 @end itemize
19797
19798 @anchor{vidstabtransform}
19799 @section vidstabtransform
19800
19801 Video stabilization/deshaking: pass 2 of 2,
19802 see @ref{vidstabdetect} for pass 1.
19803
19804 Read a file with transform information for each frame and
19805 apply/compensate them. Together with the @ref{vidstabdetect}
19806 filter this can be used to deshake videos. See also
19807 @url{http://public.hronopik.de/vid.stab}. It is important to also use
19808 the @ref{unsharp} filter, see below.
19809
19810 To enable compilation of this filter you need to configure FFmpeg with
19811 @code{--enable-libvidstab}.
19812
19813 @subsection Options
19814
19815 @table @option
19816 @item input
19817 Set path to the file used to read the transforms. Default value is
19818 @file{transforms.trf}.
19819
19820 @item smoothing
19821 Set the number of frames (value*2 + 1) used for lowpass filtering the
19822 camera movements. Default value is 10.
19823
19824 For example a number of 10 means that 21 frames are used (10 in the
19825 past and 10 in the future) to smoothen the motion in the video. A
19826 larger value leads to a smoother video, but limits the acceleration of
19827 the camera (pan/tilt movements). 0 is a special case where a static
19828 camera is simulated.
19829
19830 @item optalgo
19831 Set the camera path optimization algorithm.
19832
19833 Accepted values are:
19834 @table @samp
19835 @item gauss
19836 gaussian kernel low-pass filter on camera motion (default)
19837 @item avg
19838 averaging on transformations
19839 @end table
19840
19841 @item maxshift
19842 Set maximal number of pixels to translate frames. Default value is -1,
19843 meaning no limit.
19844
19845 @item maxangle
19846 Set maximal angle in radians (degree*PI/180) to rotate frames. Default
19847 value is -1, meaning no limit.
19848
19849 @item crop
19850 Specify how to deal with borders that may be visible due to movement
19851 compensation.
19852
19853 Available values are:
19854 @table @samp
19855 @item keep
19856 keep image information from previous frame (default)
19857 @item black
19858 fill the border black
19859 @end table
19860
19861 @item invert
19862 Invert transforms if set to 1. Default value is 0.
19863
19864 @item relative
19865 Consider transforms as relative to previous frame if set to 1,
19866 absolute if set to 0. Default value is 0.
19867
19868 @item zoom
19869 Set percentage to zoom. A positive value will result in a zoom-in
19870 effect, a negative value in a zoom-out effect. Default value is 0 (no
19871 zoom).
19872
19873 @item optzoom
19874 Set optimal zooming to avoid borders.
19875
19876 Accepted values are:
19877 @table @samp
19878 @item 0
19879 disabled
19880 @item 1
19881 optimal static zoom value is determined (only very strong movements
19882 will lead to visible borders) (default)
19883 @item 2
19884 optimal adaptive zoom value is determined (no borders will be
19885 visible), see @option{zoomspeed}
19886 @end table
19887
19888 Note that the value given at zoom is added to the one calculated here.
19889
19890 @item zoomspeed
19891 Set percent to zoom maximally each frame (enabled when
19892 @option{optzoom} is set to 2). Range is from 0 to 5, default value is
19893 0.25.
19894
19895 @item interpol
19896 Specify type of interpolation.
19897
19898 Available values are:
19899 @table @samp
19900 @item no
19901 no interpolation
19902 @item linear
19903 linear only horizontal
19904 @item bilinear
19905 linear in both directions (default)
19906 @item bicubic
19907 cubic in both directions (slow)
19908 @end table
19909
19910 @item tripod
19911 Enable virtual tripod mode if set to 1, which is equivalent to
19912 @code{relative=0:smoothing=0}. Default value is 0.
19913
19914 Use also @code{tripod} option of @ref{vidstabdetect}.
19915
19916 @item debug
19917 Increase log verbosity if set to 1. Also the detected global motions
19918 are written to the temporary file @file{global_motions.trf}. Default
19919 value is 0.
19920 @end table
19921
19922 @subsection Examples
19923
19924 @itemize
19925 @item
19926 Use @command{ffmpeg} for a typical stabilization with default values:
19927 @example
19928 ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
19929 @end example
19930
19931 Note the use of the @ref{unsharp} filter which is always recommended.
19932
19933 @item
19934 Zoom in a bit more and load transform data from a given file:
19935 @example
19936 vidstabtransform=zoom=5:input="mytransforms.trf"
19937 @end example
19938
19939 @item
19940 Smoothen the video even more:
19941 @example
19942 vidstabtransform=smoothing=30
19943 @end example
19944 @end itemize
19945
19946 @section vflip
19947
19948 Flip the input video vertically.
19949
19950 For example, to vertically flip a video with @command{ffmpeg}:
19951 @example
19952 ffmpeg -i in.avi -vf "vflip" out.avi
19953 @end example
19954
19955 @section vfrdet
19956
19957 Detect variable frame rate video.
19958
19959 This filter tries to detect if the input is variable or constant frame rate.
19960
19961 At end it will output number of frames detected as having variable delta pts,
19962 and ones with constant delta pts.
19963 If there was frames with variable delta, than it will also show min, max and
19964 average delta encountered.
19965
19966 @section vibrance
19967
19968 Boost or alter saturation.
19969
19970 The filter accepts the following options:
19971 @table @option
19972 @item intensity
19973 Set strength of boost if positive value or strength of alter if negative value.
19974 Default is 0. Allowed range is from -2 to 2.
19975
19976 @item rbal
19977 Set the red balance. Default is 1. Allowed range is from -10 to 10.
19978
19979 @item gbal
19980 Set the green balance. Default is 1. Allowed range is from -10 to 10.
19981
19982 @item bbal
19983 Set the blue balance. Default is 1. Allowed range is from -10 to 10.
19984
19985 @item rlum
19986 Set the red luma coefficient.
19987
19988 @item glum
19989 Set the green luma coefficient.
19990
19991 @item blum
19992 Set the blue luma coefficient.
19993
19994 @item alternate
19995 If @code{intensity} is negative and this is set to 1, colors will change,
19996 otherwise colors will be less saturated, more towards gray.
19997 @end table
19998
19999 @subsection Commands
20000
20001 This filter supports the all above options as @ref{commands}.
20002
20003 @anchor{vignette}
20004 @section vignette
20005
20006 Make or reverse a natural vignetting effect.
20007
20008 The filter accepts the following options:
20009
20010 @table @option
20011 @item angle, a
20012 Set lens angle expression as a number of radians.
20013
20014 The value is clipped in the @code{[0,PI/2]} range.
20015
20016 Default value: @code{"PI/5"}
20017
20018 @item x0
20019 @item y0
20020 Set center coordinates expressions. Respectively @code{"w/2"} and @code{"h/2"}
20021 by default.
20022
20023 @item mode
20024 Set forward/backward mode.
20025
20026 Available modes are:
20027 @table @samp
20028 @item forward
20029 The larger the distance from the central point, the darker the image becomes.
20030
20031 @item backward
20032 The larger the distance from the central point, the brighter the image becomes.
20033 This can be used to reverse a vignette effect, though there is no automatic
20034 detection to extract the lens @option{angle} and other settings (yet). It can
20035 also be used to create a burning effect.
20036 @end table
20037
20038 Default value is @samp{forward}.
20039
20040 @item eval
20041 Set evaluation mode for the expressions (@option{angle}, @option{x0}, @option{y0}).
20042
20043 It accepts the following values:
20044 @table @samp
20045 @item init
20046 Evaluate expressions only once during the filter initialization.
20047
20048 @item frame
20049 Evaluate expressions for each incoming frame. This is way slower than the
20050 @samp{init} mode since it requires all the scalers to be re-computed, but it
20051 allows advanced dynamic expressions.
20052 @end table
20053
20054 Default value is @samp{init}.
20055
20056 @item dither
20057 Set dithering to reduce the circular banding effects. Default is @code{1}
20058 (enabled).
20059
20060 @item aspect
20061 Set vignette aspect. This setting allows one to adjust the shape of the vignette.
20062 Setting this value to the SAR of the input will make a rectangular vignetting
20063 following the dimensions of the video.
20064
20065 Default is @code{1/1}.
20066 @end table
20067
20068 @subsection Expressions
20069
20070 The @option{alpha}, @option{x0} and @option{y0} expressions can contain the
20071 following parameters.
20072
20073 @table @option
20074 @item w
20075 @item h
20076 input width and height
20077
20078 @item n
20079 the number of input frame, starting from 0
20080
20081 @item pts
20082 the PTS (Presentation TimeStamp) time of the filtered video frame, expressed in
20083 @var{TB} units, NAN if undefined
20084
20085 @item r
20086 frame rate of the input video, NAN if the input frame rate is unknown
20087
20088 @item t
20089 the PTS (Presentation TimeStamp) of the filtered video frame,
20090 expressed in seconds, NAN if undefined
20091
20092 @item tb
20093 time base of the input video
20094 @end table
20095
20096
20097 @subsection Examples
20098
20099 @itemize
20100 @item
20101 Apply simple strong vignetting effect:
20102 @example
20103 vignette=PI/4
20104 @end example
20105
20106 @item
20107 Make a flickering vignetting:
20108 @example
20109 vignette='PI/4+random(1)*PI/50':eval=frame
20110 @end example
20111
20112 @end itemize
20113
20114 @section vmafmotion
20115
20116 Obtain the average VMAF motion score of a video.
20117 It is one of the component metrics of VMAF.
20118
20119 The obtained average motion score is printed through the logging system.
20120
20121 The filter accepts the following options:
20122
20123 @table @option
20124 @item stats_file
20125 If specified, the filter will use the named file to save the motion score of
20126 each frame with respect to the previous frame.
20127 When filename equals "-" the data is sent to standard output.
20128 @end table
20129
20130 Example:
20131 @example
20132 ffmpeg -i ref.mpg -vf vmafmotion -f null -
20133 @end example
20134
20135 @section vstack
20136 Stack input videos vertically.
20137
20138 All streams must be of same pixel format and of same width.
20139
20140 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
20141 to create same output.
20142
20143 The filter accepts the following options:
20144
20145 @table @option
20146 @item inputs
20147 Set number of input streams. Default is 2.
20148
20149 @item shortest
20150 If set to 1, force the output to terminate when the shortest input
20151 terminates. Default value is 0.
20152 @end table
20153
20154 @section w3fdif
20155
20156 Deinterlace the input video ("w3fdif" stands for "Weston 3 Field
20157 Deinterlacing Filter").
20158
20159 Based on the process described by Martin Weston for BBC R&D, and
20160 implemented based on the de-interlace algorithm written by Jim
20161 Easterbrook for BBC R&D, the Weston 3 field deinterlacing filter
20162 uses filter coefficients calculated by BBC R&D.
20163
20164 This filter uses field-dominance information in frame to decide which
20165 of each pair of fields to place first in the output.
20166 If it gets it wrong use @ref{setfield} filter before @code{w3fdif} filter.
20167
20168 There are two sets of filter coefficients, so called "simple"
20169 and "complex". Which set of filter coefficients is used can
20170 be set by passing an optional parameter:
20171
20172 @table @option
20173 @item filter
20174 Set the interlacing filter coefficients. Accepts one of the following values:
20175
20176 @table @samp
20177 @item simple
20178 Simple filter coefficient set.
20179 @item complex
20180 More-complex filter coefficient set.
20181 @end table
20182 Default value is @samp{complex}.
20183
20184 @item deint
20185 Specify which frames to deinterlace. Accepts one of the following values:
20186
20187 @table @samp
20188 @item all
20189 Deinterlace all frames,
20190 @item interlaced
20191 Only deinterlace frames marked as interlaced.
20192 @end table
20193
20194 Default value is @samp{all}.
20195 @end table
20196
20197 @section waveform
20198 Video waveform monitor.
20199
20200 The waveform monitor plots color component intensity. By default luminance
20201 only. Each column of the waveform corresponds to a column of pixels in the
20202 source video.
20203
20204 It accepts the following options:
20205
20206 @table @option
20207 @item mode, m
20208 Can be either @code{row}, or @code{column}. Default is @code{column}.
20209 In row mode, the graph on the left side represents color component value 0 and
20210 the right side represents value = 255. In column mode, the top side represents
20211 color component value = 0 and bottom side represents value = 255.
20212
20213 @item intensity, i
20214 Set intensity. Smaller values are useful to find out how many values of the same
20215 luminance are distributed across input rows/columns.
20216 Default value is @code{0.04}. Allowed range is [0, 1].
20217
20218 @item mirror, r
20219 Set mirroring mode. @code{0} means unmirrored, @code{1} means mirrored.
20220 In mirrored mode, higher values will be represented on the left
20221 side for @code{row} mode and at the top for @code{column} mode. Default is
20222 @code{1} (mirrored).
20223
20224 @item display, d
20225 Set display mode.
20226 It accepts the following values:
20227 @table @samp
20228 @item overlay
20229 Presents information identical to that in the @code{parade}, except
20230 that the graphs representing color components are superimposed directly
20231 over one another.
20232
20233 This display mode makes it easier to spot relative differences or similarities
20234 in overlapping areas of the color components that are supposed to be identical,
20235 such as neutral whites, grays, or blacks.
20236
20237 @item stack
20238 Display separate graph for the color components side by side in
20239 @code{row} mode or one below the other in @code{column} mode.
20240
20241 @item parade
20242 Display separate graph for the color components side by side in
20243 @code{column} mode or one below the other in @code{row} mode.
20244
20245 Using this display mode makes it easy to spot color casts in the highlights
20246 and shadows of an image, by comparing the contours of the top and the bottom
20247 graphs of each waveform. Since whites, grays, and blacks are characterized
20248 by exactly equal amounts of red, green, and blue, neutral areas of the picture
20249 should display three waveforms of roughly equal width/height. If not, the
20250 correction is easy to perform by making level adjustments the three waveforms.
20251 @end table
20252 Default is @code{stack}.
20253
20254 @item components, c
20255 Set which color components to display. Default is 1, which means only luminance
20256 or red color component if input is in RGB colorspace. If is set for example to
20257 7 it will display all 3 (if) available color components.
20258
20259 @item envelope, e
20260 @table @samp
20261 @item none
20262 No envelope, this is default.
20263
20264 @item instant
20265 Instant envelope, minimum and maximum values presented in graph will be easily
20266 visible even with small @code{step} value.
20267
20268 @item peak
20269 Hold minimum and maximum values presented in graph across time. This way you
20270 can still spot out of range values without constantly looking at waveforms.
20271
20272 @item peak+instant
20273 Peak and instant envelope combined together.
20274 @end table
20275
20276 @item filter, f
20277 @table @samp
20278 @item lowpass
20279 No filtering, this is default.
20280
20281 @item flat
20282 Luma and chroma combined together.
20283
20284 @item aflat
20285 Similar as above, but shows difference between blue and red chroma.
20286
20287 @item xflat
20288 Similar as above, but use different colors.
20289
20290 @item yflat
20291 Similar as above, but again with different colors.
20292
20293 @item chroma
20294 Displays only chroma.
20295
20296 @item color
20297 Displays actual color value on waveform.
20298
20299 @item acolor
20300 Similar as above, but with luma showing frequency of chroma values.
20301 @end table
20302
20303 @item graticule, g
20304 Set which graticule to display.
20305
20306 @table @samp
20307 @item none
20308 Do not display graticule.
20309
20310 @item green
20311 Display green graticule showing legal broadcast ranges.
20312
20313 @item orange
20314 Display orange graticule showing legal broadcast ranges.
20315
20316 @item invert
20317 Display invert graticule showing legal broadcast ranges.
20318 @end table
20319
20320 @item opacity, o
20321 Set graticule opacity.
20322
20323 @item flags, fl
20324 Set graticule flags.
20325
20326 @table @samp
20327 @item numbers
20328 Draw numbers above lines. By default enabled.
20329
20330 @item dots
20331 Draw dots instead of lines.
20332 @end table
20333
20334 @item scale, s
20335 Set scale used for displaying graticule.
20336
20337 @table @samp
20338 @item digital
20339 @item millivolts
20340 @item ire
20341 @end table
20342 Default is digital.
20343
20344 @item bgopacity, b
20345 Set background opacity.
20346
20347 @item tint0, t0
20348 @item tint1, t1
20349 Set tint for output.
20350 Only used with lowpass filter and when display is not overlay and input
20351 pixel formats are not RGB.
20352 @end table
20353
20354 @section weave, doubleweave
20355
20356 The @code{weave} takes a field-based video input and join
20357 each two sequential fields into single frame, producing a new double
20358 height clip with half the frame rate and half the frame count.
20359
20360 The @code{doubleweave} works same as @code{weave} but without
20361 halving frame rate and frame count.
20362
20363 It accepts the following option:
20364
20365 @table @option
20366 @item first_field
20367 Set first field. Available values are:
20368
20369 @table @samp
20370 @item top, t
20371 Set the frame as top-field-first.
20372
20373 @item bottom, b
20374 Set the frame as bottom-field-first.
20375 @end table
20376 @end table
20377
20378 @subsection Examples
20379
20380 @itemize
20381 @item
20382 Interlace video using @ref{select} and @ref{separatefields} filter:
20383 @example
20384 separatefields,select=eq(mod(n,4),0)+eq(mod(n,4),3),weave
20385 @end example
20386 @end itemize
20387
20388 @section xbr
20389 Apply the xBR high-quality magnification filter which is designed for pixel
20390 art. It follows a set of edge-detection rules, see
20391 @url{https://forums.libretro.com/t/xbr-algorithm-tutorial/123}.
20392
20393 It accepts the following option:
20394
20395 @table @option
20396 @item n
20397 Set the scaling dimension: @code{2} for @code{2xBR}, @code{3} for
20398 @code{3xBR} and @code{4} for @code{4xBR}.
20399 Default is @code{3}.
20400 @end table
20401
20402 @section xfade
20403
20404 Apply cross fade from one input video stream to another input video stream.
20405 The cross fade is applied for specified duration.
20406
20407 The filter accepts the following options:
20408
20409 @table @option
20410 @item transition
20411 Set one of available transition effects:
20412
20413 @table @samp
20414 @item custom
20415 @item fade
20416 @item wipeleft
20417 @item wiperight
20418 @item wipeup
20419 @item wipedown
20420 @item slideleft
20421 @item slideright
20422 @item slideup
20423 @item slidedown
20424 @item circlecrop
20425 @item rectcrop
20426 @item distance
20427 @item fadeblack
20428 @item fadewhite
20429 @item radial
20430 @item smoothleft
20431 @item smoothright
20432 @item smoothup
20433 @item smoothdown
20434 @item circleopen
20435 @item circleclose
20436 @item vertopen
20437 @item vertclose
20438 @item horzopen
20439 @item horzclose
20440 @item dissolve
20441 @item pixelize
20442 @item diagtl
20443 @item diagtr
20444 @item diagbl
20445 @item diagbr
20446 @item hlslice
20447 @item hrslice
20448 @item vuslice
20449 @item vdslice
20450 @end table
20451 Default transition effect is fade.
20452
20453 @item duration
20454 Set cross fade duration in seconds.
20455 Default duration is 1 second.
20456
20457 @item offset
20458 Set cross fade start relative to first input stream in seconds.
20459 Default offset is 0.
20460
20461 @item expr
20462 Set expression for custom transition effect.
20463
20464 The expressions can use the following variables and functions:
20465
20466 @table @option
20467 @item X
20468 @item Y
20469 The coordinates of the current sample.
20470
20471 @item W
20472 @item H
20473 The width and height of the image.
20474
20475 @item P
20476 Progress of transition effect.
20477
20478 @item PLANE
20479 Currently processed plane.
20480
20481 @item A
20482 Return value of first input at current location and plane.
20483
20484 @item B
20485 Return value of second input at current location and plane.
20486
20487 @item a0(x, y)
20488 @item a1(x, y)
20489 @item a2(x, y)
20490 @item a3(x, y)
20491 Return the value of the pixel at location (@var{x},@var{y}) of the
20492 first/second/third/fourth component of first input.
20493
20494 @item b0(x, y)
20495 @item b1(x, y)
20496 @item b2(x, y)
20497 @item b3(x, y)
20498 Return the value of the pixel at location (@var{x},@var{y}) of the
20499 first/second/third/fourth component of second input.
20500 @end table
20501 @end table
20502
20503 @subsection Examples
20504
20505 @itemize
20506 @item
20507 Cross fade from one input video to another input video, with fade transition and duration of transition
20508 of 2 seconds starting at offset of 5 seconds:
20509 @example
20510 ffmpeg -i first.mp4 -i second.mp4 -filter_complex xfade=transition=fade:duration=2:offset=5 output.mp4
20511 @end example
20512 @end itemize
20513
20514 @section xmedian
20515 Pick median pixels from several input videos.
20516
20517 The filter accepts the following options:
20518
20519 @table @option
20520 @item inputs
20521 Set number of inputs.
20522 Default is 3. Allowed range is from 3 to 255.
20523 If number of inputs is even number, than result will be mean value between two median values.
20524
20525 @item planes
20526 Set which planes to filter. Default value is @code{15}, by which all planes are processed.
20527
20528 @item percentile
20529 Set median percentile. Default value is @code{0.5}.
20530 Default value of @code{0.5} will pick always median values, while @code{0} will pick
20531 minimum values, and @code{1} maximum values.
20532 @end table
20533
20534 @section xstack
20535 Stack video inputs into custom layout.
20536
20537 All streams must be of same pixel format.
20538
20539 The filter accepts the following options:
20540
20541 @table @option
20542 @item inputs
20543 Set number of input streams. Default is 2.
20544
20545 @item layout
20546 Specify layout of inputs.
20547 This option requires the desired layout configuration to be explicitly set by the user.
20548 This sets position of each video input in output. Each input
20549 is separated by '|'.
20550 The first number represents the column, and the second number represents the row.
20551 Numbers start at 0 and are separated by '_'. Optionally one can use wX and hX,
20552 where X is video input from which to take width or height.
20553 Multiple values can be used when separated by '+'. In such
20554 case values are summed together.
20555
20556 Note that if inputs are of different sizes gaps may appear, as not all of
20557 the output video frame will be filled. Similarly, videos can overlap each
20558 other if their position doesn't leave enough space for the full frame of
20559 adjoining videos.
20560
20561 For 2 inputs, a default layout of @code{0_0|w0_0} is set. In all other cases,
20562 a layout must be set by the user.
20563
20564 @item shortest
20565 If set to 1, force the output to terminate when the shortest input
20566 terminates. Default value is 0.
20567
20568 @item fill
20569 If set to valid color, all unused pixels will be filled with that color.
20570 By default fill is set to none, so it is disabled.
20571 @end table
20572
20573 @subsection Examples
20574
20575 @itemize
20576 @item
20577 Display 4 inputs into 2x2 grid.
20578
20579 Layout:
20580 @example
20581 input1(0, 0)  | input3(w0, 0)
20582 input2(0, h0) | input4(w0, h0)
20583 @end example
20584
20585 @example
20586 xstack=inputs=4:layout=0_0|0_h0|w0_0|w0_h0
20587 @end example
20588
20589 Note that if inputs are of different sizes, gaps or overlaps may occur.
20590
20591 @item
20592 Display 4 inputs into 1x4 grid.
20593
20594 Layout:
20595 @example
20596 input1(0, 0)
20597 input2(0, h0)
20598 input3(0, h0+h1)
20599 input4(0, h0+h1+h2)
20600 @end example
20601
20602 @example
20603 xstack=inputs=4:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2
20604 @end example
20605
20606 Note that if inputs are of different widths, unused space will appear.
20607
20608 @item
20609 Display 9 inputs into 3x3 grid.
20610
20611 Layout:
20612 @example
20613 input1(0, 0)       | input4(w0, 0)      | input7(w0+w3, 0)
20614 input2(0, h0)      | input5(w0, h0)     | input8(w0+w3, h0)
20615 input3(0, h0+h1)   | input6(w0, h0+h1)  | input9(w0+w3, h0+h1)
20616 @end example
20617
20618 @example
20619 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
20620 @end example
20621
20622 Note that if inputs are of different sizes, gaps or overlaps may occur.
20623
20624 @item
20625 Display 16 inputs into 4x4 grid.
20626
20627 Layout:
20628 @example
20629 input1(0, 0)       | input5(w0, 0)       | input9 (w0+w4, 0)       | input13(w0+w4+w8, 0)
20630 input2(0, h0)      | input6(w0, h0)      | input10(w0+w4, h0)      | input14(w0+w4+w8, h0)
20631 input3(0, h0+h1)   | input7(w0, h0+h1)   | input11(w0+w4, h0+h1)   | input15(w0+w4+w8, h0+h1)
20632 input4(0, h0+h1+h2)| input8(w0, h0+h1+h2)| input12(w0+w4, h0+h1+h2)| input16(w0+w4+w8, h0+h1+h2)
20633 @end example
20634
20635 @example
20636 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|
20637 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
20638 @end example
20639
20640 Note that if inputs are of different sizes, gaps or overlaps may occur.
20641
20642 @end itemize
20643
20644 @anchor{yadif}
20645 @section yadif
20646
20647 Deinterlace the input video ("yadif" means "yet another deinterlacing
20648 filter").
20649
20650 It accepts the following parameters:
20651
20652
20653 @table @option
20654
20655 @item mode
20656 The interlacing mode to adopt. It accepts one of the following values:
20657
20658 @table @option
20659 @item 0, send_frame
20660 Output one frame for each frame.
20661 @item 1, send_field
20662 Output one frame for each field.
20663 @item 2, send_frame_nospatial
20664 Like @code{send_frame}, but it skips the spatial interlacing check.
20665 @item 3, send_field_nospatial
20666 Like @code{send_field}, but it skips the spatial interlacing check.
20667 @end table
20668
20669 The default value is @code{send_frame}.
20670
20671 @item parity
20672 The picture field parity assumed for the input interlaced video. It accepts one
20673 of the following values:
20674
20675 @table @option
20676 @item 0, tff
20677 Assume the top field is first.
20678 @item 1, bff
20679 Assume the bottom field is first.
20680 @item -1, auto
20681 Enable automatic detection of field parity.
20682 @end table
20683
20684 The default value is @code{auto}.
20685 If the interlacing is unknown or the decoder does not export this information,
20686 top field first will be assumed.
20687
20688 @item deint
20689 Specify which frames to deinterlace. Accepts one of the following
20690 values:
20691
20692 @table @option
20693 @item 0, all
20694 Deinterlace all frames.
20695 @item 1, interlaced
20696 Only deinterlace frames marked as interlaced.
20697 @end table
20698
20699 The default value is @code{all}.
20700 @end table
20701
20702 @section yadif_cuda
20703
20704 Deinterlace the input video using the @ref{yadif} algorithm, but implemented
20705 in CUDA so that it can work as part of a GPU accelerated pipeline with nvdec
20706 and/or nvenc.
20707
20708 It accepts the following parameters:
20709
20710
20711 @table @option
20712
20713 @item mode
20714 The interlacing mode to adopt. It accepts one of the following values:
20715
20716 @table @option
20717 @item 0, send_frame
20718 Output one frame for each frame.
20719 @item 1, send_field
20720 Output one frame for each field.
20721 @item 2, send_frame_nospatial
20722 Like @code{send_frame}, but it skips the spatial interlacing check.
20723 @item 3, send_field_nospatial
20724 Like @code{send_field}, but it skips the spatial interlacing check.
20725 @end table
20726
20727 The default value is @code{send_frame}.
20728
20729 @item parity
20730 The picture field parity assumed for the input interlaced video. It accepts one
20731 of the following values:
20732
20733 @table @option
20734 @item 0, tff
20735 Assume the top field is first.
20736 @item 1, bff
20737 Assume the bottom field is first.
20738 @item -1, auto
20739 Enable automatic detection of field parity.
20740 @end table
20741
20742 The default value is @code{auto}.
20743 If the interlacing is unknown or the decoder does not export this information,
20744 top field first will be assumed.
20745
20746 @item deint
20747 Specify which frames to deinterlace. Accepts one of the following
20748 values:
20749
20750 @table @option
20751 @item 0, all
20752 Deinterlace all frames.
20753 @item 1, interlaced
20754 Only deinterlace frames marked as interlaced.
20755 @end table
20756
20757 The default value is @code{all}.
20758 @end table
20759
20760 @section yaepblur
20761
20762 Apply blur filter while preserving edges ("yaepblur" means "yet another edge preserving blur filter").
20763 The algorithm is described in
20764 "J. S. Lee, Digital image enhancement and noise filtering by use of local statistics, IEEE Trans. Pattern Anal. Mach. Intell. PAMI-2, 1980."
20765
20766 It accepts the following parameters:
20767
20768 @table @option
20769 @item radius, r
20770 Set the window radius. Default value is 3.
20771
20772 @item planes, p
20773 Set which planes to filter. Default is only the first plane.
20774
20775 @item sigma, s
20776 Set blur strength. Default value is 128.
20777 @end table
20778
20779 @subsection Commands
20780 This filter supports same @ref{commands} as options.
20781
20782 @section zoompan
20783
20784 Apply Zoom & Pan effect.
20785
20786 This filter accepts the following options:
20787
20788 @table @option
20789 @item zoom, z
20790 Set the zoom expression. Range is 1-10. Default is 1.
20791
20792 @item x
20793 @item y
20794 Set the x and y expression. Default is 0.
20795
20796 @item d
20797 Set the duration expression in number of frames.
20798 This sets for how many number of frames effect will last for
20799 single input image.
20800
20801 @item s
20802 Set the output image size, default is 'hd720'.
20803
20804 @item fps
20805 Set the output frame rate, default is '25'.
20806 @end table
20807
20808 Each expression can contain the following constants:
20809
20810 @table @option
20811 @item in_w, iw
20812 Input width.
20813
20814 @item in_h, ih
20815 Input height.
20816
20817 @item out_w, ow
20818 Output width.
20819
20820 @item out_h, oh
20821 Output height.
20822
20823 @item in
20824 Input frame count.
20825
20826 @item on
20827 Output frame count.
20828
20829 @item in_time, it
20830 The input timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
20831
20832 @item out_time, time, ot
20833 The output timestamp expressed in seconds.
20834
20835 @item x
20836 @item y
20837 Last calculated 'x' and 'y' position from 'x' and 'y' expression
20838 for current input frame.
20839
20840 @item px
20841 @item py
20842 'x' and 'y' of last output frame of previous input frame or 0 when there was
20843 not yet such frame (first input frame).
20844
20845 @item zoom
20846 Last calculated zoom from 'z' expression for current input frame.
20847
20848 @item pzoom
20849 Last calculated zoom of last output frame of previous input frame.
20850
20851 @item duration
20852 Number of output frames for current input frame. Calculated from 'd' expression
20853 for each input frame.
20854
20855 @item pduration
20856 number of output frames created for previous input frame
20857
20858 @item a
20859 Rational number: input width / input height
20860
20861 @item sar
20862 sample aspect ratio
20863
20864 @item dar
20865 display aspect ratio
20866
20867 @end table
20868
20869 @subsection Examples
20870
20871 @itemize
20872 @item
20873 Zoom in up to 1.5x and pan at same time to some spot near center of picture:
20874 @example
20875 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
20876 @end example
20877
20878 @item
20879 Zoom in up to 1.5x and pan always at center of picture:
20880 @example
20881 zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
20882 @end example
20883
20884 @item
20885 Same as above but without pausing:
20886 @example
20887 zoompan=z='min(max(zoom,pzoom)+0.0015,1.5)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
20888 @end example
20889
20890 @item
20891 Zoom in 2x into center of picture only for the first second of the input video:
20892 @example
20893 zoompan=z='if(between(in_time,0,1),2,1)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
20894 @end example
20895
20896 @end itemize
20897
20898 @anchor{zscale}
20899 @section zscale
20900 Scale (resize) the input video, using the z.lib library:
20901 @url{https://github.com/sekrit-twc/zimg}. To enable compilation of this
20902 filter, you need to configure FFmpeg with @code{--enable-libzimg}.
20903
20904 The zscale filter forces the output display aspect ratio to be the same
20905 as the input, by changing the output sample aspect ratio.
20906
20907 If the input image format is different from the format requested by
20908 the next filter, the zscale filter will convert the input to the
20909 requested format.
20910
20911 @subsection Options
20912 The filter accepts the following options.
20913
20914 @table @option
20915 @item width, w
20916 @item height, h
20917 Set the output video dimension expression. Default value is the input
20918 dimension.
20919
20920 If the @var{width} or @var{w} value is 0, the input width is used for
20921 the output. If the @var{height} or @var{h} value is 0, the input height
20922 is used for the output.
20923
20924 If one and only one of the values is -n with n >= 1, the zscale filter
20925 will use a value that maintains the aspect ratio of the input image,
20926 calculated from the other specified dimension. After that it will,
20927 however, make sure that the calculated dimension is divisible by n and
20928 adjust the value if necessary.
20929
20930 If both values are -n with n >= 1, the behavior will be identical to
20931 both values being set to 0 as previously detailed.
20932
20933 See below for the list of accepted constants for use in the dimension
20934 expression.
20935
20936 @item size, s
20937 Set the video size. For the syntax of this option, check the
20938 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20939
20940 @item dither, d
20941 Set the dither type.
20942
20943 Possible values are:
20944 @table @var
20945 @item none
20946 @item ordered
20947 @item random
20948 @item error_diffusion
20949 @end table
20950
20951 Default is none.
20952
20953 @item filter, f
20954 Set the resize filter type.
20955
20956 Possible values are:
20957 @table @var
20958 @item point
20959 @item bilinear
20960 @item bicubic
20961 @item spline16
20962 @item spline36
20963 @item lanczos
20964 @end table
20965
20966 Default is bilinear.
20967
20968 @item range, r
20969 Set the color range.
20970
20971 Possible values are:
20972 @table @var
20973 @item input
20974 @item limited
20975 @item full
20976 @end table
20977
20978 Default is same as input.
20979
20980 @item primaries, p
20981 Set the color primaries.
20982
20983 Possible values are:
20984 @table @var
20985 @item input
20986 @item 709
20987 @item unspecified
20988 @item 170m
20989 @item 240m
20990 @item 2020
20991 @end table
20992
20993 Default is same as input.
20994
20995 @item transfer, t
20996 Set the transfer characteristics.
20997
20998 Possible values are:
20999 @table @var
21000 @item input
21001 @item 709
21002 @item unspecified
21003 @item 601
21004 @item linear
21005 @item 2020_10
21006 @item 2020_12
21007 @item smpte2084
21008 @item iec61966-2-1
21009 @item arib-std-b67
21010 @end table
21011
21012 Default is same as input.
21013
21014 @item matrix, m
21015 Set the colorspace matrix.
21016
21017 Possible value are:
21018 @table @var
21019 @item input
21020 @item 709
21021 @item unspecified
21022 @item 470bg
21023 @item 170m
21024 @item 2020_ncl
21025 @item 2020_cl
21026 @end table
21027
21028 Default is same as input.
21029
21030 @item rangein, rin
21031 Set the input color range.
21032
21033 Possible values are:
21034 @table @var
21035 @item input
21036 @item limited
21037 @item full
21038 @end table
21039
21040 Default is same as input.
21041
21042 @item primariesin, pin
21043 Set the input color primaries.
21044
21045 Possible values are:
21046 @table @var
21047 @item input
21048 @item 709
21049 @item unspecified
21050 @item 170m
21051 @item 240m
21052 @item 2020
21053 @end table
21054
21055 Default is same as input.
21056
21057 @item transferin, tin
21058 Set the input transfer characteristics.
21059
21060 Possible values are:
21061 @table @var
21062 @item input
21063 @item 709
21064 @item unspecified
21065 @item 601
21066 @item linear
21067 @item 2020_10
21068 @item 2020_12
21069 @end table
21070
21071 Default is same as input.
21072
21073 @item matrixin, min
21074 Set the input colorspace matrix.
21075
21076 Possible value are:
21077 @table @var
21078 @item input
21079 @item 709
21080 @item unspecified
21081 @item 470bg
21082 @item 170m
21083 @item 2020_ncl
21084 @item 2020_cl
21085 @end table
21086
21087 @item chromal, c
21088 Set the output chroma location.
21089
21090 Possible values are:
21091 @table @var
21092 @item input
21093 @item left
21094 @item center
21095 @item topleft
21096 @item top
21097 @item bottomleft
21098 @item bottom
21099 @end table
21100
21101 @item chromalin, cin
21102 Set the input chroma location.
21103
21104 Possible values are:
21105 @table @var
21106 @item input
21107 @item left
21108 @item center
21109 @item topleft
21110 @item top
21111 @item bottomleft
21112 @item bottom
21113 @end table
21114
21115 @item npl
21116 Set the nominal peak luminance.
21117 @end table
21118
21119 The values of the @option{w} and @option{h} options are expressions
21120 containing the following constants:
21121
21122 @table @var
21123 @item in_w
21124 @item in_h
21125 The input width and height
21126
21127 @item iw
21128 @item ih
21129 These are the same as @var{in_w} and @var{in_h}.
21130
21131 @item out_w
21132 @item out_h
21133 The output (scaled) width and height
21134
21135 @item ow
21136 @item oh
21137 These are the same as @var{out_w} and @var{out_h}
21138
21139 @item a
21140 The same as @var{iw} / @var{ih}
21141
21142 @item sar
21143 input sample aspect ratio
21144
21145 @item dar
21146 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
21147
21148 @item hsub
21149 @item vsub
21150 horizontal and vertical input chroma subsample values. For example for the
21151 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
21152
21153 @item ohsub
21154 @item ovsub
21155 horizontal and vertical output chroma subsample values. For example for the
21156 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
21157 @end table
21158
21159 @subsection Commands
21160
21161 This filter supports the following commands:
21162 @table @option
21163 @item width, w
21164 @item height, h
21165 Set the output video dimension expression.
21166 The command accepts the same syntax of the corresponding option.
21167
21168 If the specified expression is not valid, it is kept at its current
21169 value.
21170 @end table
21171
21172 @c man end VIDEO FILTERS
21173
21174 @chapter OpenCL Video Filters
21175 @c man begin OPENCL VIDEO FILTERS
21176
21177 Below is a description of the currently available OpenCL video filters.
21178
21179 To enable compilation of these filters you need to configure FFmpeg with
21180 @code{--enable-opencl}.
21181
21182 Running OpenCL filters requires you to initialize a hardware device and to pass that device to all filters in any filter graph.
21183 @table @option
21184
21185 @item -init_hw_device opencl[=@var{name}][:@var{device}[,@var{key=value}...]]
21186 Initialise a new hardware device of type @var{opencl} called @var{name}, using the
21187 given device parameters.
21188
21189 @item -filter_hw_device @var{name}
21190 Pass the hardware device called @var{name} to all filters in any filter graph.
21191
21192 @end table
21193
21194 For more detailed information see @url{https://www.ffmpeg.org/ffmpeg.html#Advanced-Video-options}
21195
21196 @itemize
21197 @item
21198 Example of choosing the first device on the second platform and running avgblur_opencl filter with default parameters on it.
21199 @example
21200 -init_hw_device opencl=gpu:1.0 -filter_hw_device gpu -i INPUT -vf "hwupload, avgblur_opencl, hwdownload" OUTPUT
21201 @end example
21202 @end itemize
21203
21204 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.
21205
21206 @section avgblur_opencl
21207
21208 Apply average blur filter.
21209
21210 The filter accepts the following options:
21211
21212 @table @option
21213 @item sizeX
21214 Set horizontal radius size.
21215 Range is @code{[1, 1024]} and default value is @code{1}.
21216
21217 @item planes
21218 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
21219
21220 @item sizeY
21221 Set vertical radius size. Range is @code{[1, 1024]} and default value is @code{0}. If zero, @code{sizeX} value will be used.
21222 @end table
21223
21224 @subsection Example
21225
21226 @itemize
21227 @item
21228 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.
21229 @example
21230 -i INPUT -vf "hwupload, avgblur_opencl=3, hwdownload" OUTPUT
21231 @end example
21232 @end itemize
21233
21234 @section boxblur_opencl
21235
21236 Apply a boxblur algorithm to the input video.
21237
21238 It accepts the following parameters:
21239
21240 @table @option
21241
21242 @item luma_radius, lr
21243 @item luma_power, lp
21244 @item chroma_radius, cr
21245 @item chroma_power, cp
21246 @item alpha_radius, ar
21247 @item alpha_power, ap
21248
21249 @end table
21250
21251 A description of the accepted options follows.
21252
21253 @table @option
21254 @item luma_radius, lr
21255 @item chroma_radius, cr
21256 @item alpha_radius, ar
21257 Set an expression for the box radius in pixels used for blurring the
21258 corresponding input plane.
21259
21260 The radius value must be a non-negative number, and must not be
21261 greater than the value of the expression @code{min(w,h)/2} for the
21262 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
21263 planes.
21264
21265 Default value for @option{luma_radius} is "2". If not specified,
21266 @option{chroma_radius} and @option{alpha_radius} default to the
21267 corresponding value set for @option{luma_radius}.
21268
21269 The expressions can contain the following constants:
21270 @table @option
21271 @item w
21272 @item h
21273 The input width and height in pixels.
21274
21275 @item cw
21276 @item ch
21277 The input chroma image width and height in pixels.
21278
21279 @item hsub
21280 @item vsub
21281 The horizontal and vertical chroma subsample values. For example, for the
21282 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
21283 @end table
21284
21285 @item luma_power, lp
21286 @item chroma_power, cp
21287 @item alpha_power, ap
21288 Specify how many times the boxblur filter is applied to the
21289 corresponding plane.
21290
21291 Default value for @option{luma_power} is 2. If not specified,
21292 @option{chroma_power} and @option{alpha_power} default to the
21293 corresponding value set for @option{luma_power}.
21294
21295 A value of 0 will disable the effect.
21296 @end table
21297
21298 @subsection Examples
21299
21300 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.
21301
21302 @itemize
21303 @item
21304 Apply a boxblur filter with the luma, chroma, and alpha radius
21305 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.
21306 @example
21307 -i INPUT -vf "hwupload, boxblur_opencl=luma_radius=2:luma_power=3, hwdownload" OUTPUT
21308 -i INPUT -vf "hwupload, boxblur_opencl=2:3, hwdownload" OUTPUT
21309 @end example
21310
21311 @item
21312 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.
21313
21314 For the luma plane, a 2x2 box radius will be run once.
21315
21316 For the chroma plane, a 4x4 box radius will be run 5 times.
21317
21318 For the alpha plane, a 3x3 box radius will be run 7 times.
21319 @example
21320 -i INPUT -vf "hwupload, boxblur_opencl=2:1:4:5:3:7, hwdownload" OUTPUT
21321 @end example
21322 @end itemize
21323
21324 @section colorkey_opencl
21325 RGB colorspace color keying.
21326
21327 The filter accepts the following options:
21328
21329 @table @option
21330 @item color
21331 The color which will be replaced with transparency.
21332
21333 @item similarity
21334 Similarity percentage with the key color.
21335
21336 0.01 matches only the exact key color, while 1.0 matches everything.
21337
21338 @item blend
21339 Blend percentage.
21340
21341 0.0 makes pixels either fully transparent, or not transparent at all.
21342
21343 Higher values result in semi-transparent pixels, with a higher transparency
21344 the more similar the pixels color is to the key color.
21345 @end table
21346
21347 @subsection Examples
21348
21349 @itemize
21350 @item
21351 Make every semi-green pixel in the input transparent with some slight blending:
21352 @example
21353 -i INPUT -vf "hwupload, colorkey_opencl=green:0.3:0.1, hwdownload" OUTPUT
21354 @end example
21355 @end itemize
21356
21357 @section convolution_opencl
21358
21359 Apply convolution of 3x3, 5x5, 7x7 matrix.
21360
21361 The filter accepts the following options:
21362
21363 @table @option
21364 @item 0m
21365 @item 1m
21366 @item 2m
21367 @item 3m
21368 Set matrix for each plane.
21369 Matrix is sequence of 9, 25 or 49 signed numbers.
21370 Default value for each plane is @code{0 0 0 0 1 0 0 0 0}.
21371
21372 @item 0rdiv
21373 @item 1rdiv
21374 @item 2rdiv
21375 @item 3rdiv
21376 Set multiplier for calculated value for each plane.
21377 If unset or 0, it will be sum of all matrix elements.
21378 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{1.0}.
21379
21380 @item 0bias
21381 @item 1bias
21382 @item 2bias
21383 @item 3bias
21384 Set bias for each plane. This value is added to the result of the multiplication.
21385 Useful for making the overall image brighter or darker.
21386 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{0.0}.
21387
21388 @end table
21389
21390 @subsection Examples
21391
21392 @itemize
21393 @item
21394 Apply sharpen:
21395 @example
21396 -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
21397 @end example
21398
21399 @item
21400 Apply blur:
21401 @example
21402 -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
21403 @end example
21404
21405 @item
21406 Apply edge enhance:
21407 @example
21408 -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
21409 @end example
21410
21411 @item
21412 Apply edge detect:
21413 @example
21414 -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
21415 @end example
21416
21417 @item
21418 Apply laplacian edge detector which includes diagonals:
21419 @example
21420 -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
21421 @end example
21422
21423 @item
21424 Apply emboss:
21425 @example
21426 -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
21427 @end example
21428 @end itemize
21429
21430 @section erosion_opencl
21431
21432 Apply erosion effect to the video.
21433
21434 This filter replaces the pixel by the local(3x3) minimum.
21435
21436 It accepts the following options:
21437
21438 @table @option
21439 @item threshold0
21440 @item threshold1
21441 @item threshold2
21442 @item threshold3
21443 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
21444 If @code{0}, plane will remain unchanged.
21445
21446 @item coordinates
21447 Flag which specifies the pixel to refer to.
21448 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
21449
21450 Flags to local 3x3 coordinates region centered on @code{x}:
21451
21452     1 2 3
21453
21454     4 x 5
21455
21456     6 7 8
21457 @end table
21458
21459 @subsection Example
21460
21461 @itemize
21462 @item
21463 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.
21464 @example
21465 -i INPUT -vf "hwupload, erosion_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
21466 @end example
21467 @end itemize
21468
21469 @section deshake_opencl
21470 Feature-point based video stabilization filter.
21471
21472 The filter accepts the following options:
21473
21474 @table @option
21475 @item tripod
21476 Simulates a tripod by preventing any camera movement whatsoever from the original frame. Defaults to @code{0}.
21477
21478 @item debug
21479 Whether or not additional debug info should be displayed, both in the processed output and in the console.
21480
21481 Note that in order to see console debug output you will also need to pass @code{-v verbose} to ffmpeg.
21482
21483 Viewing point matches in the output video is only supported for RGB input.
21484
21485 Defaults to @code{0}.
21486
21487 @item adaptive_crop
21488 Whether or not to do a tiny bit of cropping at the borders to cut down on the amount of mirrored pixels.
21489
21490 Defaults to @code{1}.
21491
21492 @item refine_features
21493 Whether or not feature points should be refined at a sub-pixel level.
21494
21495 This can be turned off for a slight performance gain at the cost of precision.
21496
21497 Defaults to @code{1}.
21498
21499 @item smooth_strength
21500 The strength of the smoothing applied to the camera path from @code{0.0} to @code{1.0}.
21501
21502 @code{1.0} is the maximum smoothing strength while values less than that result in less smoothing.
21503
21504 @code{0.0} causes the filter to adaptively choose a smoothing strength on a per-frame basis.
21505
21506 Defaults to @code{0.0}.
21507
21508 @item smooth_window_multiplier
21509 Controls the size of the smoothing window (the number of frames buffered to determine motion information from).
21510
21511 The size of the smoothing window is determined by multiplying the framerate of the video by this number.
21512
21513 Acceptable values range from @code{0.1} to @code{10.0}.
21514
21515 Larger values increase the amount of motion data available for determining how to smooth the camera path,
21516 potentially improving smoothness, but also increase latency and memory usage.
21517
21518 Defaults to @code{2.0}.
21519
21520 @end table
21521
21522 @subsection Examples
21523
21524 @itemize
21525 @item
21526 Stabilize a video with a fixed, medium smoothing strength:
21527 @example
21528 -i INPUT -vf "hwupload, deshake_opencl=smooth_strength=0.5, hwdownload" OUTPUT
21529 @end example
21530
21531 @item
21532 Stabilize a video with debugging (both in console and in rendered video):
21533 @example
21534 -i INPUT -filter_complex "[0:v]format=rgba, hwupload, deshake_opencl=debug=1, hwdownload, format=rgba, format=yuv420p" -v verbose OUTPUT
21535 @end example
21536 @end itemize
21537
21538 @section dilation_opencl
21539
21540 Apply dilation effect to the video.
21541
21542 This filter replaces the pixel by the local(3x3) maximum.
21543
21544 It accepts the following options:
21545
21546 @table @option
21547 @item threshold0
21548 @item threshold1
21549 @item threshold2
21550 @item threshold3
21551 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
21552 If @code{0}, plane will remain unchanged.
21553
21554 @item coordinates
21555 Flag which specifies the pixel to refer to.
21556 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
21557
21558 Flags to local 3x3 coordinates region centered on @code{x}:
21559
21560     1 2 3
21561
21562     4 x 5
21563
21564     6 7 8
21565 @end table
21566
21567 @subsection Example
21568
21569 @itemize
21570 @item
21571 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.
21572 @example
21573 -i INPUT -vf "hwupload, dilation_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
21574 @end example
21575 @end itemize
21576
21577 @section nlmeans_opencl
21578
21579 Non-local Means denoise filter through OpenCL, this filter accepts same options as @ref{nlmeans}.
21580
21581 @section overlay_opencl
21582
21583 Overlay one video on top of another.
21584
21585 It takes two inputs and has one output. The first input is the "main" video on which the second input is overlaid.
21586 This filter requires same memory layout for all the inputs. So, format conversion may be needed.
21587
21588 The filter accepts the following options:
21589
21590 @table @option
21591
21592 @item x
21593 Set the x coordinate of the overlaid video on the main video.
21594 Default value is @code{0}.
21595
21596 @item y
21597 Set the y coordinate of the overlaid video on the main video.
21598 Default value is @code{0}.
21599
21600 @end table
21601
21602 @subsection Examples
21603
21604 @itemize
21605 @item
21606 Overlay an image LOGO at the top-left corner of the INPUT video. Both inputs are yuv420p format.
21607 @example
21608 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuv420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
21609 @end example
21610 @item
21611 The inputs have same memory layout for color channels , the overlay has additional alpha plane, like INPUT is yuv420p, and the LOGO is yuva420p.
21612 @example
21613 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuva420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
21614 @end example
21615
21616 @end itemize
21617
21618 @section pad_opencl
21619
21620 Add paddings to the input image, and place the original input at the
21621 provided @var{x}, @var{y} coordinates.
21622
21623 It accepts the following options:
21624
21625 @table @option
21626 @item width, w
21627 @item height, h
21628 Specify an expression for the size of the output image with the
21629 paddings added. If the value for @var{width} or @var{height} is 0, the
21630 corresponding input size is used for the output.
21631
21632 The @var{width} expression can reference the value set by the
21633 @var{height} expression, and vice versa.
21634
21635 The default value of @var{width} and @var{height} is 0.
21636
21637 @item x
21638 @item y
21639 Specify the offsets to place the input image at within the padded area,
21640 with respect to the top/left border of the output image.
21641
21642 The @var{x} expression can reference the value set by the @var{y}
21643 expression, and vice versa.
21644
21645 The default value of @var{x} and @var{y} is 0.
21646
21647 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
21648 so the input image is centered on the padded area.
21649
21650 @item color
21651 Specify the color of the padded area. For the syntax of this option,
21652 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
21653 manual,ffmpeg-utils}.
21654
21655 @item aspect
21656 Pad to an aspect instead to a resolution.
21657 @end table
21658
21659 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
21660 options are expressions containing the following constants:
21661
21662 @table @option
21663 @item in_w
21664 @item in_h
21665 The input video width and height.
21666
21667 @item iw
21668 @item ih
21669 These are the same as @var{in_w} and @var{in_h}.
21670
21671 @item out_w
21672 @item out_h
21673 The output width and height (the size of the padded area), as
21674 specified by the @var{width} and @var{height} expressions.
21675
21676 @item ow
21677 @item oh
21678 These are the same as @var{out_w} and @var{out_h}.
21679
21680 @item x
21681 @item y
21682 The x and y offsets as specified by the @var{x} and @var{y}
21683 expressions, or NAN if not yet specified.
21684
21685 @item a
21686 same as @var{iw} / @var{ih}
21687
21688 @item sar
21689 input sample aspect ratio
21690
21691 @item dar
21692 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
21693 @end table
21694
21695 @section prewitt_opencl
21696
21697 Apply the Prewitt operator (@url{https://en.wikipedia.org/wiki/Prewitt_operator}) to input video stream.
21698
21699 The filter accepts the following option:
21700
21701 @table @option
21702 @item planes
21703 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
21704
21705 @item scale
21706 Set value which will be multiplied with filtered result.
21707 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
21708
21709 @item delta
21710 Set value which will be added to filtered result.
21711 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
21712 @end table
21713
21714 @subsection Example
21715
21716 @itemize
21717 @item
21718 Apply the Prewitt operator with scale set to 2 and delta set to 10.
21719 @example
21720 -i INPUT -vf "hwupload, prewitt_opencl=scale=2:delta=10, hwdownload" OUTPUT
21721 @end example
21722 @end itemize
21723
21724 @anchor{program_opencl}
21725 @section program_opencl
21726
21727 Filter video using an OpenCL program.
21728
21729 @table @option
21730
21731 @item source
21732 OpenCL program source file.
21733
21734 @item kernel
21735 Kernel name in program.
21736
21737 @item inputs
21738 Number of inputs to the filter.  Defaults to 1.
21739
21740 @item size, s
21741 Size of output frames.  Defaults to the same as the first input.
21742
21743 @end table
21744
21745 The @code{program_opencl} filter also supports the @ref{framesync} options.
21746
21747 The program source file must contain a kernel function with the given name,
21748 which will be run once for each plane of the output.  Each run on a plane
21749 gets enqueued as a separate 2D global NDRange with one work-item for each
21750 pixel to be generated.  The global ID offset for each work-item is therefore
21751 the coordinates of a pixel in the destination image.
21752
21753 The kernel function needs to take the following arguments:
21754 @itemize
21755 @item
21756 Destination image, @var{__write_only image2d_t}.
21757
21758 This image will become the output; the kernel should write all of it.
21759 @item
21760 Frame index, @var{unsigned int}.
21761
21762 This is a counter starting from zero and increasing by one for each frame.
21763 @item
21764 Source images, @var{__read_only image2d_t}.
21765
21766 These are the most recent images on each input.  The kernel may read from
21767 them to generate the output, but they can't be written to.
21768 @end itemize
21769
21770 Example programs:
21771
21772 @itemize
21773 @item
21774 Copy the input to the output (output must be the same size as the input).
21775 @verbatim
21776 __kernel void copy(__write_only image2d_t destination,
21777                    unsigned int index,
21778                    __read_only  image2d_t source)
21779 {
21780     const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE;
21781
21782     int2 location = (int2)(get_global_id(0), get_global_id(1));
21783
21784     float4 value = read_imagef(source, sampler, location);
21785
21786     write_imagef(destination, location, value);
21787 }
21788 @end verbatim
21789
21790 @item
21791 Apply a simple transformation, rotating the input by an amount increasing
21792 with the index counter.  Pixel values are linearly interpolated by the
21793 sampler, and the output need not have the same dimensions as the input.
21794 @verbatim
21795 __kernel void rotate_image(__write_only image2d_t dst,
21796                            unsigned int index,
21797                            __read_only  image2d_t src)
21798 {
21799     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
21800                                CLK_FILTER_LINEAR);
21801
21802     float angle = (float)index / 100.0f;
21803
21804     float2 dst_dim = convert_float2(get_image_dim(dst));
21805     float2 src_dim = convert_float2(get_image_dim(src));
21806
21807     float2 dst_cen = dst_dim / 2.0f;
21808     float2 src_cen = src_dim / 2.0f;
21809
21810     int2   dst_loc = (int2)(get_global_id(0), get_global_id(1));
21811
21812     float2 dst_pos = convert_float2(dst_loc) - dst_cen;
21813     float2 src_pos = {
21814         cos(angle) * dst_pos.x - sin(angle) * dst_pos.y,
21815         sin(angle) * dst_pos.x + cos(angle) * dst_pos.y
21816     };
21817     src_pos = src_pos * src_dim / dst_dim;
21818
21819     float2 src_loc = src_pos + src_cen;
21820
21821     if (src_loc.x < 0.0f      || src_loc.y < 0.0f ||
21822         src_loc.x > src_dim.x || src_loc.y > src_dim.y)
21823         write_imagef(dst, dst_loc, 0.5f);
21824     else
21825         write_imagef(dst, dst_loc, read_imagef(src, sampler, src_loc));
21826 }
21827 @end verbatim
21828
21829 @item
21830 Blend two inputs together, with the amount of each input used varying
21831 with the index counter.
21832 @verbatim
21833 __kernel void blend_images(__write_only image2d_t dst,
21834                            unsigned int index,
21835                            __read_only  image2d_t src1,
21836                            __read_only  image2d_t src2)
21837 {
21838     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
21839                                CLK_FILTER_LINEAR);
21840
21841     float blend = (cos((float)index / 50.0f) + 1.0f) / 2.0f;
21842
21843     int2  dst_loc = (int2)(get_global_id(0), get_global_id(1));
21844     int2 src1_loc = dst_loc * get_image_dim(src1) / get_image_dim(dst);
21845     int2 src2_loc = dst_loc * get_image_dim(src2) / get_image_dim(dst);
21846
21847     float4 val1 = read_imagef(src1, sampler, src1_loc);
21848     float4 val2 = read_imagef(src2, sampler, src2_loc);
21849
21850     write_imagef(dst, dst_loc, val1 * blend + val2 * (1.0f - blend));
21851 }
21852 @end verbatim
21853
21854 @end itemize
21855
21856 @section roberts_opencl
21857 Apply the Roberts cross operator (@url{https://en.wikipedia.org/wiki/Roberts_cross}) to input video stream.
21858
21859 The filter accepts the following option:
21860
21861 @table @option
21862 @item planes
21863 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
21864
21865 @item scale
21866 Set value which will be multiplied with filtered result.
21867 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
21868
21869 @item delta
21870 Set value which will be added to filtered result.
21871 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
21872 @end table
21873
21874 @subsection Example
21875
21876 @itemize
21877 @item
21878 Apply the Roberts cross operator with scale set to 2 and delta set to 10
21879 @example
21880 -i INPUT -vf "hwupload, roberts_opencl=scale=2:delta=10, hwdownload" OUTPUT
21881 @end example
21882 @end itemize
21883
21884 @section sobel_opencl
21885
21886 Apply the Sobel operator (@url{https://en.wikipedia.org/wiki/Sobel_operator}) to input video stream.
21887
21888 The filter accepts the following option:
21889
21890 @table @option
21891 @item planes
21892 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
21893
21894 @item scale
21895 Set value which will be multiplied with filtered result.
21896 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
21897
21898 @item delta
21899 Set value which will be added to filtered result.
21900 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
21901 @end table
21902
21903 @subsection Example
21904
21905 @itemize
21906 @item
21907 Apply sobel operator with scale set to 2 and delta set to 10
21908 @example
21909 -i INPUT -vf "hwupload, sobel_opencl=scale=2:delta=10, hwdownload" OUTPUT
21910 @end example
21911 @end itemize
21912
21913 @section tonemap_opencl
21914
21915 Perform HDR(PQ/HLG) to SDR conversion with tone-mapping.
21916
21917 It accepts the following parameters:
21918
21919 @table @option
21920 @item tonemap
21921 Specify the tone-mapping operator to be used. Same as tonemap option in @ref{tonemap}.
21922
21923 @item param
21924 Tune the tone mapping algorithm. same as param option in @ref{tonemap}.
21925
21926 @item desat
21927 Apply desaturation for highlights that exceed this level of brightness. The
21928 higher the parameter, the more color information will be preserved. This
21929 setting helps prevent unnaturally blown-out colors for super-highlights, by
21930 (smoothly) turning into white instead. This makes images feel more natural,
21931 at the cost of reducing information about out-of-range colors.
21932
21933 The default value is 0.5, and the algorithm here is a little different from
21934 the cpu version tonemap currently. A setting of 0.0 disables this option.
21935
21936 @item threshold
21937 The tonemapping algorithm parameters is fine-tuned per each scene. And a threshold
21938 is used to detect whether the scene has changed or not. If the distance between
21939 the current frame average brightness and the current running average exceeds
21940 a threshold value, we would re-calculate scene average and peak brightness.
21941 The default value is 0.2.
21942
21943 @item format
21944 Specify the output pixel format.
21945
21946 Currently supported formats are:
21947 @table @var
21948 @item p010
21949 @item nv12
21950 @end table
21951
21952 @item range, r
21953 Set the output color range.
21954
21955 Possible values are:
21956 @table @var
21957 @item tv/mpeg
21958 @item pc/jpeg
21959 @end table
21960
21961 Default is same as input.
21962
21963 @item primaries, p
21964 Set the output color primaries.
21965
21966 Possible values are:
21967 @table @var
21968 @item bt709
21969 @item bt2020
21970 @end table
21971
21972 Default is same as input.
21973
21974 @item transfer, t
21975 Set the output transfer characteristics.
21976
21977 Possible values are:
21978 @table @var
21979 @item bt709
21980 @item bt2020
21981 @end table
21982
21983 Default is bt709.
21984
21985 @item matrix, m
21986 Set the output colorspace matrix.
21987
21988 Possible value are:
21989 @table @var
21990 @item bt709
21991 @item bt2020
21992 @end table
21993
21994 Default is same as input.
21995
21996 @end table
21997
21998 @subsection Example
21999
22000 @itemize
22001 @item
22002 Convert HDR(PQ/HLG) video to bt2020-transfer-characteristic p010 format using linear operator.
22003 @example
22004 -i INPUT -vf "format=p010,hwupload,tonemap_opencl=t=bt2020:tonemap=linear:format=p010,hwdownload,format=p010" OUTPUT
22005 @end example
22006 @end itemize
22007
22008 @section unsharp_opencl
22009
22010 Sharpen or blur the input video.
22011
22012 It accepts the following parameters:
22013
22014 @table @option
22015 @item luma_msize_x, lx
22016 Set the luma matrix horizontal size.
22017 Range is @code{[1, 23]} and default value is @code{5}.
22018
22019 @item luma_msize_y, ly
22020 Set the luma matrix vertical size.
22021 Range is @code{[1, 23]} and default value is @code{5}.
22022
22023 @item luma_amount, la
22024 Set the luma effect strength.
22025 Range is @code{[-10, 10]} and default value is @code{1.0}.
22026
22027 Negative values will blur the input video, while positive values will
22028 sharpen it, a value of zero will disable the effect.
22029
22030 @item chroma_msize_x, cx
22031 Set the chroma matrix horizontal size.
22032 Range is @code{[1, 23]} and default value is @code{5}.
22033
22034 @item chroma_msize_y, cy
22035 Set the chroma matrix vertical size.
22036 Range is @code{[1, 23]} and default value is @code{5}.
22037
22038 @item chroma_amount, ca
22039 Set the chroma effect strength.
22040 Range is @code{[-10, 10]} and default value is @code{0.0}.
22041
22042 Negative values will blur the input video, while positive values will
22043 sharpen it, a value of zero will disable the effect.
22044
22045 @end table
22046
22047 All parameters are optional and default to the equivalent of the
22048 string '5:5:1.0:5:5:0.0'.
22049
22050 @subsection Examples
22051
22052 @itemize
22053 @item
22054 Apply strong luma sharpen effect:
22055 @example
22056 -i INPUT -vf "hwupload, unsharp_opencl=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5, hwdownload" OUTPUT
22057 @end example
22058
22059 @item
22060 Apply a strong blur of both luma and chroma parameters:
22061 @example
22062 -i INPUT -vf "hwupload, unsharp_opencl=7:7:-2:7:7:-2, hwdownload" OUTPUT
22063 @end example
22064 @end itemize
22065
22066 @section xfade_opencl
22067
22068 Cross fade two videos with custom transition effect by using OpenCL.
22069
22070 It accepts the following options:
22071
22072 @table @option
22073 @item transition
22074 Set one of possible transition effects.
22075
22076 @table @option
22077 @item custom
22078 Select custom transition effect, the actual transition description
22079 will be picked from source and kernel options.
22080
22081 @item fade
22082 @item wipeleft
22083 @item wiperight
22084 @item wipeup
22085 @item wipedown
22086 @item slideleft
22087 @item slideright
22088 @item slideup
22089 @item slidedown
22090
22091 Default transition is fade.
22092 @end table
22093
22094 @item source
22095 OpenCL program source file for custom transition.
22096
22097 @item kernel
22098 Set name of kernel to use for custom transition from program source file.
22099
22100 @item duration
22101 Set duration of video transition.
22102
22103 @item offset
22104 Set time of start of transition relative to first video.
22105 @end table
22106
22107 The program source file must contain a kernel function with the given name,
22108 which will be run once for each plane of the output.  Each run on a plane
22109 gets enqueued as a separate 2D global NDRange with one work-item for each
22110 pixel to be generated.  The global ID offset for each work-item is therefore
22111 the coordinates of a pixel in the destination image.
22112
22113 The kernel function needs to take the following arguments:
22114 @itemize
22115 @item
22116 Destination image, @var{__write_only image2d_t}.
22117
22118 This image will become the output; the kernel should write all of it.
22119
22120 @item
22121 First Source image, @var{__read_only image2d_t}.
22122 Second Source image, @var{__read_only image2d_t}.
22123
22124 These are the most recent images on each input.  The kernel may read from
22125 them to generate the output, but they can't be written to.
22126
22127 @item
22128 Transition progress, @var{float}. This value is always between 0 and 1 inclusive.
22129 @end itemize
22130
22131 Example programs:
22132
22133 @itemize
22134 @item
22135 Apply dots curtain transition effect:
22136 @verbatim
22137 __kernel void blend_images(__write_only image2d_t dst,
22138                            __read_only  image2d_t src1,
22139                            __read_only  image2d_t src2,
22140                            float progress)
22141 {
22142     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
22143                                CLK_FILTER_LINEAR);
22144     int2  p = (int2)(get_global_id(0), get_global_id(1));
22145     float2 rp = (float2)(get_global_id(0), get_global_id(1));
22146     float2 dim = (float2)(get_image_dim(src1).x, get_image_dim(src1).y);
22147     rp = rp / dim;
22148
22149     float2 dots = (float2)(20.0, 20.0);
22150     float2 center = (float2)(0,0);
22151     float2 unused;
22152
22153     float4 val1 = read_imagef(src1, sampler, p);
22154     float4 val2 = read_imagef(src2, sampler, p);
22155     bool next = distance(fract(rp * dots, &unused), (float2)(0.5, 0.5)) < (progress / distance(rp, center));
22156
22157     write_imagef(dst, p, next ? val1 : val2);
22158 }
22159 @end verbatim
22160
22161 @end itemize
22162
22163 @c man end OPENCL VIDEO FILTERS
22164
22165 @chapter VAAPI Video Filters
22166 @c man begin VAAPI VIDEO FILTERS
22167
22168 VAAPI Video filters are usually used with VAAPI decoder and VAAPI encoder. Below is a description of VAAPI video filters.
22169
22170 To enable compilation of these filters you need to configure FFmpeg with
22171 @code{--enable-vaapi}.
22172
22173 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}
22174
22175 @section tonemap_vaapi
22176
22177 Perform HDR(High Dynamic Range) to SDR(Standard Dynamic Range) conversion with tone-mapping.
22178 It maps the dynamic range of HDR10 content to the SDR content.
22179 It currently only accepts HDR10 as input.
22180
22181 It accepts the following parameters:
22182
22183 @table @option
22184 @item format
22185 Specify the output pixel format.
22186
22187 Currently supported formats are:
22188 @table @var
22189 @item p010
22190 @item nv12
22191 @end table
22192
22193 Default is nv12.
22194
22195 @item primaries, p
22196 Set the output color primaries.
22197
22198 Default is same as input.
22199
22200 @item transfer, t
22201 Set the output transfer characteristics.
22202
22203 Default is bt709.
22204
22205 @item matrix, m
22206 Set the output colorspace matrix.
22207
22208 Default is same as input.
22209
22210 @end table
22211
22212 @subsection Example
22213
22214 @itemize
22215 @item
22216 Convert HDR(HDR10) video to bt2020-transfer-characteristic p010 format
22217 @example
22218 tonemap_vaapi=format=p010:t=bt2020-10
22219 @end example
22220 @end itemize
22221
22222 @c man end VAAPI VIDEO FILTERS
22223
22224 @chapter Video Sources
22225 @c man begin VIDEO SOURCES
22226
22227 Below is a description of the currently available video sources.
22228
22229 @section buffer
22230
22231 Buffer video frames, and make them available to the filter chain.
22232
22233 This source is mainly intended for a programmatic use, in particular
22234 through the interface defined in @file{libavfilter/vsrc_buffer.h}.
22235
22236 It accepts the following parameters:
22237
22238 @table @option
22239
22240 @item video_size
22241 Specify the size (width and height) of the buffered video frames. For the
22242 syntax of this option, check the
22243 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22244
22245 @item width
22246 The input video width.
22247
22248 @item height
22249 The input video height.
22250
22251 @item pix_fmt
22252 A string representing the pixel format of the buffered video frames.
22253 It may be a number corresponding to a pixel format, or a pixel format
22254 name.
22255
22256 @item time_base
22257 Specify the timebase assumed by the timestamps of the buffered frames.
22258
22259 @item frame_rate
22260 Specify the frame rate expected for the video stream.
22261
22262 @item pixel_aspect, sar
22263 The sample (pixel) aspect ratio of the input video.
22264
22265 @item sws_param
22266 This option is deprecated and ignored. Prepend @code{sws_flags=@var{flags};}
22267 to the filtergraph description to specify swscale flags for automatically
22268 inserted scalers. See @ref{Filtergraph syntax}.
22269
22270 @item hw_frames_ctx
22271 When using a hardware pixel format, this should be a reference to an
22272 AVHWFramesContext describing input frames.
22273 @end table
22274
22275 For example:
22276 @example
22277 buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
22278 @end example
22279
22280 will instruct the source to accept video frames with size 320x240 and
22281 with format "yuv410p", assuming 1/24 as the timestamps timebase and
22282 square pixels (1:1 sample aspect ratio).
22283 Since the pixel format with name "yuv410p" corresponds to the number 6
22284 (check the enum AVPixelFormat definition in @file{libavutil/pixfmt.h}),
22285 this example corresponds to:
22286 @example
22287 buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
22288 @end example
22289
22290 Alternatively, the options can be specified as a flat string, but this
22291 syntax is deprecated:
22292
22293 @var{width}:@var{height}:@var{pix_fmt}:@var{time_base.num}:@var{time_base.den}:@var{pixel_aspect.num}:@var{pixel_aspect.den}
22294
22295 @section cellauto
22296
22297 Create a pattern generated by an elementary cellular automaton.
22298
22299 The initial state of the cellular automaton can be defined through the
22300 @option{filename} and @option{pattern} options. If such options are
22301 not specified an initial state is created randomly.
22302
22303 At each new frame a new row in the video is filled with the result of
22304 the cellular automaton next generation. The behavior when the whole
22305 frame is filled is defined by the @option{scroll} option.
22306
22307 This source accepts the following options:
22308
22309 @table @option
22310 @item filename, f
22311 Read the initial cellular automaton state, i.e. the starting row, from
22312 the specified file.
22313 In the file, each non-whitespace character is considered an alive
22314 cell, a newline will terminate the row, and further characters in the
22315 file will be ignored.
22316
22317 @item pattern, p
22318 Read the initial cellular automaton state, i.e. the starting row, from
22319 the specified string.
22320
22321 Each non-whitespace character in the string is considered an alive
22322 cell, a newline will terminate the row, and further characters in the
22323 string will be ignored.
22324
22325 @item rate, r
22326 Set the video rate, that is the number of frames generated per second.
22327 Default is 25.
22328
22329 @item random_fill_ratio, ratio
22330 Set the random fill ratio for the initial cellular automaton row. It
22331 is a floating point number value ranging from 0 to 1, defaults to
22332 1/PHI.
22333
22334 This option is ignored when a file or a pattern is specified.
22335
22336 @item random_seed, seed
22337 Set the seed for filling randomly the initial row, must be an integer
22338 included between 0 and UINT32_MAX. If not specified, or if explicitly
22339 set to -1, the filter will try to use a good random seed on a best
22340 effort basis.
22341
22342 @item rule
22343 Set the cellular automaton rule, it is a number ranging from 0 to 255.
22344 Default value is 110.
22345
22346 @item size, s
22347 Set the size of the output video. For the syntax of this option, check the
22348 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22349
22350 If @option{filename} or @option{pattern} is specified, the size is set
22351 by default to the width of the specified initial state row, and the
22352 height is set to @var{width} * PHI.
22353
22354 If @option{size} is set, it must contain the width of the specified
22355 pattern string, and the specified pattern will be centered in the
22356 larger row.
22357
22358 If a filename or a pattern string is not specified, the size value
22359 defaults to "320x518" (used for a randomly generated initial state).
22360
22361 @item scroll
22362 If set to 1, scroll the output upward when all the rows in the output
22363 have been already filled. If set to 0, the new generated row will be
22364 written over the top row just after the bottom row is filled.
22365 Defaults to 1.
22366
22367 @item start_full, full
22368 If set to 1, completely fill the output with generated rows before
22369 outputting the first frame.
22370 This is the default behavior, for disabling set the value to 0.
22371
22372 @item stitch
22373 If set to 1, stitch the left and right row edges together.
22374 This is the default behavior, for disabling set the value to 0.
22375 @end table
22376
22377 @subsection Examples
22378
22379 @itemize
22380 @item
22381 Read the initial state from @file{pattern}, and specify an output of
22382 size 200x400.
22383 @example
22384 cellauto=f=pattern:s=200x400
22385 @end example
22386
22387 @item
22388 Generate a random initial row with a width of 200 cells, with a fill
22389 ratio of 2/3:
22390 @example
22391 cellauto=ratio=2/3:s=200x200
22392 @end example
22393
22394 @item
22395 Create a pattern generated by rule 18 starting by a single alive cell
22396 centered on an initial row with width 100:
22397 @example
22398 cellauto=p=@@:s=100x400:full=0:rule=18
22399 @end example
22400
22401 @item
22402 Specify a more elaborated initial pattern:
22403 @example
22404 cellauto=p='@@@@ @@ @@@@':s=100x400:full=0:rule=18
22405 @end example
22406
22407 @end itemize
22408
22409 @anchor{coreimagesrc}
22410 @section coreimagesrc
22411 Video source generated on GPU using Apple's CoreImage API on OSX.
22412
22413 This video source is a specialized version of the @ref{coreimage} video filter.
22414 Use a core image generator at the beginning of the applied filterchain to
22415 generate the content.
22416
22417 The coreimagesrc video source accepts the following options:
22418 @table @option
22419 @item list_generators
22420 List all available generators along with all their respective options as well as
22421 possible minimum and maximum values along with the default values.
22422 @example
22423 list_generators=true
22424 @end example
22425
22426 @item size, s
22427 Specify the size of the sourced video. For the syntax of this option, check the
22428 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22429 The default value is @code{320x240}.
22430
22431 @item rate, r
22432 Specify the frame rate of the sourced video, as the number of frames
22433 generated per second. It has to be a string in the format
22434 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
22435 number or a valid video frame rate abbreviation. The default value is
22436 "25".
22437
22438 @item sar
22439 Set the sample aspect ratio of the sourced video.
22440
22441 @item duration, d
22442 Set the duration of the sourced video. See
22443 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
22444 for the accepted syntax.
22445
22446 If not specified, or the expressed duration is negative, the video is
22447 supposed to be generated forever.
22448 @end table
22449
22450 Additionally, all options of the @ref{coreimage} video filter are accepted.
22451 A complete filterchain can be used for further processing of the
22452 generated input without CPU-HOST transfer. See @ref{coreimage} documentation
22453 and examples for details.
22454
22455 @subsection Examples
22456
22457 @itemize
22458
22459 @item
22460 Use CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
22461 given as complete and escaped command-line for Apple's standard bash shell:
22462 @example
22463 ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
22464 @end example
22465 This example is equivalent to the QRCode example of @ref{coreimage} without the
22466 need for a nullsrc video source.
22467 @end itemize
22468
22469
22470 @section gradients
22471 Generate several gradients.
22472
22473 @table @option
22474 @item size, s
22475 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
22476 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
22477
22478 @item rate, r
22479 Set frame rate, expressed as number of frames per second. Default
22480 value is "25".
22481
22482 @item c0, c1, c2, c3, c4, c5, c6, c7
22483 Set 8 colors. Default values for colors is to pick random one.
22484
22485 @item x0, y0, y0, y1
22486 Set gradient line source and destination points. If negative or out of range, random ones
22487 are picked.
22488
22489 @item nb_colors, n
22490 Set number of colors to use at once. Allowed range is from 2 to 8. Default value is 2.
22491
22492 @item seed
22493 Set seed for picking gradient line points.
22494 @end table
22495
22496
22497 @section mandelbrot
22498
22499 Generate a Mandelbrot set fractal, and progressively zoom towards the
22500 point specified with @var{start_x} and @var{start_y}.
22501
22502 This source accepts the following options:
22503
22504 @table @option
22505
22506 @item end_pts
22507 Set the terminal pts value. Default value is 400.
22508
22509 @item end_scale
22510 Set the terminal scale value.
22511 Must be a floating point value. Default value is 0.3.
22512
22513 @item inner
22514 Set the inner coloring mode, that is the algorithm used to draw the
22515 Mandelbrot fractal internal region.
22516
22517 It shall assume one of the following values:
22518 @table @option
22519 @item black
22520 Set black mode.
22521 @item convergence
22522 Show time until convergence.
22523 @item mincol
22524 Set color based on point closest to the origin of the iterations.
22525 @item period
22526 Set period mode.
22527 @end table
22528
22529 Default value is @var{mincol}.
22530
22531 @item bailout
22532 Set the bailout value. Default value is 10.0.
22533
22534 @item maxiter
22535 Set the maximum of iterations performed by the rendering
22536 algorithm. Default value is 7189.
22537
22538 @item outer
22539 Set outer coloring mode.
22540 It shall assume one of following values:
22541 @table @option
22542 @item iteration_count
22543 Set iteration count mode.
22544 @item normalized_iteration_count
22545 set normalized iteration count mode.
22546 @end table
22547 Default value is @var{normalized_iteration_count}.
22548
22549 @item rate, r
22550 Set frame rate, expressed as number of frames per second. Default
22551 value is "25".
22552
22553 @item size, s
22554 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
22555 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
22556
22557 @item start_scale
22558 Set the initial scale value. Default value is 3.0.
22559
22560 @item start_x
22561 Set the initial x position. Must be a floating point value between
22562 -100 and 100. Default value is -0.743643887037158704752191506114774.
22563
22564 @item start_y
22565 Set the initial y position. Must be a floating point value between
22566 -100 and 100. Default value is -0.131825904205311970493132056385139.
22567 @end table
22568
22569 @section mptestsrc
22570
22571 Generate various test patterns, as generated by the MPlayer test filter.
22572
22573 The size of the generated video is fixed, and is 256x256.
22574 This source is useful in particular for testing encoding features.
22575
22576 This source accepts the following options:
22577
22578 @table @option
22579
22580 @item rate, r
22581 Specify the frame rate of the sourced video, as the number of frames
22582 generated per second. It has to be a string in the format
22583 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
22584 number or a valid video frame rate abbreviation. The default value is
22585 "25".
22586
22587 @item duration, d
22588 Set the duration of the sourced video. See
22589 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
22590 for the accepted syntax.
22591
22592 If not specified, or the expressed duration is negative, the video is
22593 supposed to be generated forever.
22594
22595 @item test, t
22596
22597 Set the number or the name of the test to perform. Supported tests are:
22598 @table @option
22599 @item dc_luma
22600 @item dc_chroma
22601 @item freq_luma
22602 @item freq_chroma
22603 @item amp_luma
22604 @item amp_chroma
22605 @item cbp
22606 @item mv
22607 @item ring1
22608 @item ring2
22609 @item all
22610
22611 @item max_frames, m
22612 Set the maximum number of frames generated for each test, default value is 30.
22613
22614 @end table
22615
22616 Default value is "all", which will cycle through the list of all tests.
22617 @end table
22618
22619 Some examples:
22620 @example
22621 mptestsrc=t=dc_luma
22622 @end example
22623
22624 will generate a "dc_luma" test pattern.
22625
22626 @section frei0r_src
22627
22628 Provide a frei0r source.
22629
22630 To enable compilation of this filter you need to install the frei0r
22631 header and configure FFmpeg with @code{--enable-frei0r}.
22632
22633 This source accepts the following parameters:
22634
22635 @table @option
22636
22637 @item size
22638 The size of the video to generate. For the syntax of this option, check the
22639 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22640
22641 @item framerate
22642 The framerate of the generated video. It may be a string of the form
22643 @var{num}/@var{den} or a frame rate abbreviation.
22644
22645 @item filter_name
22646 The name to the frei0r source to load. For more information regarding frei0r and
22647 how to set the parameters, read the @ref{frei0r} section in the video filters
22648 documentation.
22649
22650 @item filter_params
22651 A '|'-separated list of parameters to pass to the frei0r source.
22652
22653 @end table
22654
22655 For example, to generate a frei0r partik0l source with size 200x200
22656 and frame rate 10 which is overlaid on the overlay filter main input:
22657 @example
22658 frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
22659 @end example
22660
22661 @section life
22662
22663 Generate a life pattern.
22664
22665 This source is based on a generalization of John Conway's life game.
22666
22667 The sourced input represents a life grid, each pixel represents a cell
22668 which can be in one of two possible states, alive or dead. Every cell
22669 interacts with its eight neighbours, which are the cells that are
22670 horizontally, vertically, or diagonally adjacent.
22671
22672 At each interaction the grid evolves according to the adopted rule,
22673 which specifies the number of neighbor alive cells which will make a
22674 cell stay alive or born. The @option{rule} option allows one to specify
22675 the rule to adopt.
22676
22677 This source accepts the following options:
22678
22679 @table @option
22680 @item filename, f
22681 Set the file from which to read the initial grid state. In the file,
22682 each non-whitespace character is considered an alive cell, and newline
22683 is used to delimit the end of each row.
22684
22685 If this option is not specified, the initial grid is generated
22686 randomly.
22687
22688 @item rate, r
22689 Set the video rate, that is the number of frames generated per second.
22690 Default is 25.
22691
22692 @item random_fill_ratio, ratio
22693 Set the random fill ratio for the initial random grid. It is a
22694 floating point number value ranging from 0 to 1, defaults to 1/PHI.
22695 It is ignored when a file is specified.
22696
22697 @item random_seed, seed
22698 Set the seed for filling the initial random grid, must be an integer
22699 included between 0 and UINT32_MAX. If not specified, or if explicitly
22700 set to -1, the filter will try to use a good random seed on a best
22701 effort basis.
22702
22703 @item rule
22704 Set the life rule.
22705
22706 A rule can be specified with a code of the kind "S@var{NS}/B@var{NB}",
22707 where @var{NS} and @var{NB} are sequences of numbers in the range 0-8,
22708 @var{NS} specifies the number of alive neighbor cells which make a
22709 live cell stay alive, and @var{NB} the number of alive neighbor cells
22710 which make a dead cell to become alive (i.e. to "born").
22711 "s" and "b" can be used in place of "S" and "B", respectively.
22712
22713 Alternatively a rule can be specified by an 18-bits integer. The 9
22714 high order bits are used to encode the next cell state if it is alive
22715 for each number of neighbor alive cells, the low order bits specify
22716 the rule for "borning" new cells. Higher order bits encode for an
22717 higher number of neighbor cells.
22718 For example the number 6153 = @code{(12<<9)+9} specifies a stay alive
22719 rule of 12 and a born rule of 9, which corresponds to "S23/B03".
22720
22721 Default value is "S23/B3", which is the original Conway's game of life
22722 rule, and will keep a cell alive if it has 2 or 3 neighbor alive
22723 cells, and will born a new cell if there are three alive cells around
22724 a dead cell.
22725
22726 @item size, s
22727 Set the size of the output video. For the syntax of this option, check the
22728 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22729
22730 If @option{filename} is specified, the size is set by default to the
22731 same size of the input file. If @option{size} is set, it must contain
22732 the size specified in the input file, and the initial grid defined in
22733 that file is centered in the larger resulting area.
22734
22735 If a filename is not specified, the size value defaults to "320x240"
22736 (used for a randomly generated initial grid).
22737
22738 @item stitch
22739 If set to 1, stitch the left and right grid edges together, and the
22740 top and bottom edges also. Defaults to 1.
22741
22742 @item mold
22743 Set cell mold speed. If set, a dead cell will go from @option{death_color} to
22744 @option{mold_color} with a step of @option{mold}. @option{mold} can have a
22745 value from 0 to 255.
22746
22747 @item life_color
22748 Set the color of living (or new born) cells.
22749
22750 @item death_color
22751 Set the color of dead cells. If @option{mold} is set, this is the first color
22752 used to represent a dead cell.
22753
22754 @item mold_color
22755 Set mold color, for definitely dead and moldy cells.
22756
22757 For the syntax of these 3 color options, check the @ref{color syntax,,"Color" section in the
22758 ffmpeg-utils manual,ffmpeg-utils}.
22759 @end table
22760
22761 @subsection Examples
22762
22763 @itemize
22764 @item
22765 Read a grid from @file{pattern}, and center it on a grid of size
22766 300x300 pixels:
22767 @example
22768 life=f=pattern:s=300x300
22769 @end example
22770
22771 @item
22772 Generate a random grid of size 200x200, with a fill ratio of 2/3:
22773 @example
22774 life=ratio=2/3:s=200x200
22775 @end example
22776
22777 @item
22778 Specify a custom rule for evolving a randomly generated grid:
22779 @example
22780 life=rule=S14/B34
22781 @end example
22782
22783 @item
22784 Full example with slow death effect (mold) using @command{ffplay}:
22785 @example
22786 ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
22787 @end example
22788 @end itemize
22789
22790 @anchor{allrgb}
22791 @anchor{allyuv}
22792 @anchor{color}
22793 @anchor{haldclutsrc}
22794 @anchor{nullsrc}
22795 @anchor{pal75bars}
22796 @anchor{pal100bars}
22797 @anchor{rgbtestsrc}
22798 @anchor{smptebars}
22799 @anchor{smptehdbars}
22800 @anchor{testsrc}
22801 @anchor{testsrc2}
22802 @anchor{yuvtestsrc}
22803 @section allrgb, allyuv, color, haldclutsrc, nullsrc, pal75bars, pal100bars, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc
22804
22805 The @code{allrgb} source returns frames of size 4096x4096 of all rgb colors.
22806
22807 The @code{allyuv} source returns frames of size 4096x4096 of all yuv colors.
22808
22809 The @code{color} source provides an uniformly colored input.
22810
22811 The @code{haldclutsrc} source provides an identity Hald CLUT. See also
22812 @ref{haldclut} filter.
22813
22814 The @code{nullsrc} source returns unprocessed video frames. It is
22815 mainly useful to be employed in analysis / debugging tools, or as the
22816 source for filters which ignore the input data.
22817
22818 The @code{pal75bars} source generates a color bars pattern, based on
22819 EBU PAL recommendations with 75% color levels.
22820
22821 The @code{pal100bars} source generates a color bars pattern, based on
22822 EBU PAL recommendations with 100% color levels.
22823
22824 The @code{rgbtestsrc} source generates an RGB test pattern useful for
22825 detecting RGB vs BGR issues. You should see a red, green and blue
22826 stripe from top to bottom.
22827
22828 The @code{smptebars} source generates a color bars pattern, based on
22829 the SMPTE Engineering Guideline EG 1-1990.
22830
22831 The @code{smptehdbars} source generates a color bars pattern, based on
22832 the SMPTE RP 219-2002.
22833
22834 The @code{testsrc} source generates a test video pattern, showing a
22835 color pattern, a scrolling gradient and a timestamp. This is mainly
22836 intended for testing purposes.
22837
22838 The @code{testsrc2} source is similar to testsrc, but supports more
22839 pixel formats instead of just @code{rgb24}. This allows using it as an
22840 input for other tests without requiring a format conversion.
22841
22842 The @code{yuvtestsrc} source generates an YUV test pattern. You should
22843 see a y, cb and cr stripe from top to bottom.
22844
22845 The sources accept the following parameters:
22846
22847 @table @option
22848
22849 @item level
22850 Specify the level of the Hald CLUT, only available in the @code{haldclutsrc}
22851 source. A level of @code{N} generates a picture of @code{N*N*N} by @code{N*N*N}
22852 pixels to be used as identity matrix for 3D lookup tables. Each component is
22853 coded on a @code{1/(N*N)} scale.
22854
22855 @item color, c
22856 Specify the color of the source, only available in the @code{color}
22857 source. For the syntax of this option, check the
22858 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
22859
22860 @item size, s
22861 Specify the size of the sourced video. For the syntax of this option, check the
22862 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22863 The default value is @code{320x240}.
22864
22865 This option is not available with the @code{allrgb}, @code{allyuv}, and
22866 @code{haldclutsrc} filters.
22867
22868 @item rate, r
22869 Specify the frame rate of the sourced video, as the number of frames
22870 generated per second. It has to be a string in the format
22871 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
22872 number or a valid video frame rate abbreviation. The default value is
22873 "25".
22874
22875 @item duration, d
22876 Set the duration of the sourced video. See
22877 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
22878 for the accepted syntax.
22879
22880 If not specified, or the expressed duration is negative, the video is
22881 supposed to be generated forever.
22882
22883 @item sar
22884 Set the sample aspect ratio of the sourced video.
22885
22886 @item alpha
22887 Specify the alpha (opacity) of the background, only available in the
22888 @code{testsrc2} source. The value must be between 0 (fully transparent) and
22889 255 (fully opaque, the default).
22890
22891 @item decimals, n
22892 Set the number of decimals to show in the timestamp, only available in the
22893 @code{testsrc} source.
22894
22895 The displayed timestamp value will correspond to the original
22896 timestamp value multiplied by the power of 10 of the specified
22897 value. Default value is 0.
22898 @end table
22899
22900 @subsection Examples
22901
22902 @itemize
22903 @item
22904 Generate a video with a duration of 5.3 seconds, with size
22905 176x144 and a frame rate of 10 frames per second:
22906 @example
22907 testsrc=duration=5.3:size=qcif:rate=10
22908 @end example
22909
22910 @item
22911 The following graph description will generate a red source
22912 with an opacity of 0.2, with size "qcif" and a frame rate of 10
22913 frames per second:
22914 @example
22915 color=c=red@@0.2:s=qcif:r=10
22916 @end example
22917
22918 @item
22919 If the input content is to be ignored, @code{nullsrc} can be used. The
22920 following command generates noise in the luminance plane by employing
22921 the @code{geq} filter:
22922 @example
22923 nullsrc=s=256x256, geq=random(1)*255:128:128
22924 @end example
22925 @end itemize
22926
22927 @subsection Commands
22928
22929 The @code{color} source supports the following commands:
22930
22931 @table @option
22932 @item c, color
22933 Set the color of the created image. Accepts the same syntax of the
22934 corresponding @option{color} option.
22935 @end table
22936
22937 @section openclsrc
22938
22939 Generate video using an OpenCL program.
22940
22941 @table @option
22942
22943 @item source
22944 OpenCL program source file.
22945
22946 @item kernel
22947 Kernel name in program.
22948
22949 @item size, s
22950 Size of frames to generate.  This must be set.
22951
22952 @item format
22953 Pixel format to use for the generated frames.  This must be set.
22954
22955 @item rate, r
22956 Number of frames generated every second.  Default value is '25'.
22957
22958 @end table
22959
22960 For details of how the program loading works, see the @ref{program_opencl}
22961 filter.
22962
22963 Example programs:
22964
22965 @itemize
22966 @item
22967 Generate a colour ramp by setting pixel values from the position of the pixel
22968 in the output image.  (Note that this will work with all pixel formats, but
22969 the generated output will not be the same.)
22970 @verbatim
22971 __kernel void ramp(__write_only image2d_t dst,
22972                    unsigned int index)
22973 {
22974     int2 loc = (int2)(get_global_id(0), get_global_id(1));
22975
22976     float4 val;
22977     val.xy = val.zw = convert_float2(loc) / convert_float2(get_image_dim(dst));
22978
22979     write_imagef(dst, loc, val);
22980 }
22981 @end verbatim
22982
22983 @item
22984 Generate a Sierpinski carpet pattern, panning by a single pixel each frame.
22985 @verbatim
22986 __kernel void sierpinski_carpet(__write_only image2d_t dst,
22987                                 unsigned int index)
22988 {
22989     int2 loc = (int2)(get_global_id(0), get_global_id(1));
22990
22991     float4 value = 0.0f;
22992     int x = loc.x + index;
22993     int y = loc.y + index;
22994     while (x > 0 || y > 0) {
22995         if (x % 3 == 1 && y % 3 == 1) {
22996             value = 1.0f;
22997             break;
22998         }
22999         x /= 3;
23000         y /= 3;
23001     }
23002
23003     write_imagef(dst, loc, value);
23004 }
23005 @end verbatim
23006
23007 @end itemize
23008
23009 @section sierpinski
23010
23011 Generate a Sierpinski carpet/triangle fractal, and randomly pan around.
23012
23013 This source accepts the following options:
23014
23015 @table @option
23016 @item size, s
23017 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
23018 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
23019
23020 @item rate, r
23021 Set frame rate, expressed as number of frames per second. Default
23022 value is "25".
23023
23024 @item seed
23025 Set seed which is used for random panning.
23026
23027 @item jump
23028 Set max jump for single pan destination. Allowed range is from 1 to 10000.
23029
23030 @item type
23031 Set fractal type, can be default @code{carpet} or @code{triangle}.
23032 @end table
23033
23034 @c man end VIDEO SOURCES
23035
23036 @chapter Video Sinks
23037 @c man begin VIDEO SINKS
23038
23039 Below is a description of the currently available video sinks.
23040
23041 @section buffersink
23042
23043 Buffer video frames, and make them available to the end of the filter
23044 graph.
23045
23046 This sink is mainly intended for programmatic use, in particular
23047 through the interface defined in @file{libavfilter/buffersink.h}
23048 or the options system.
23049
23050 It accepts a pointer to an AVBufferSinkContext structure, which
23051 defines the incoming buffers' formats, to be passed as the opaque
23052 parameter to @code{avfilter_init_filter} for initialization.
23053
23054 @section nullsink
23055
23056 Null video sink: do absolutely nothing with the input video. It is
23057 mainly useful as a template and for use in analysis / debugging
23058 tools.
23059
23060 @c man end VIDEO SINKS
23061
23062 @chapter Multimedia Filters
23063 @c man begin MULTIMEDIA FILTERS
23064
23065 Below is a description of the currently available multimedia filters.
23066
23067 @section abitscope
23068
23069 Convert input audio to a video output, displaying the audio bit scope.
23070
23071 The filter accepts the following options:
23072
23073 @table @option
23074 @item rate, r
23075 Set frame rate, expressed as number of frames per second. Default
23076 value is "25".
23077
23078 @item size, s
23079 Specify the video size for the output. For the syntax of this option, check the
23080 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23081 Default value is @code{1024x256}.
23082
23083 @item colors
23084 Specify list of colors separated by space or by '|' which will be used to
23085 draw channels. Unrecognized or missing colors will be replaced
23086 by white color.
23087 @end table
23088
23089 @section adrawgraph
23090 Draw a graph using input audio metadata.
23091
23092 See @ref{drawgraph}
23093
23094 @section agraphmonitor
23095
23096 See @ref{graphmonitor}.
23097
23098 @section ahistogram
23099
23100 Convert input audio to a video output, displaying the volume histogram.
23101
23102 The filter accepts the following options:
23103
23104 @table @option
23105 @item dmode
23106 Specify how histogram is calculated.
23107
23108 It accepts the following values:
23109 @table @samp
23110 @item single
23111 Use single histogram for all channels.
23112 @item separate
23113 Use separate histogram for each channel.
23114 @end table
23115 Default is @code{single}.
23116
23117 @item rate, r
23118 Set frame rate, expressed as number of frames per second. Default
23119 value is "25".
23120
23121 @item size, s
23122 Specify the video size for the output. For the syntax of this option, check the
23123 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23124 Default value is @code{hd720}.
23125
23126 @item scale
23127 Set display scale.
23128
23129 It accepts the following values:
23130 @table @samp
23131 @item log
23132 logarithmic
23133 @item sqrt
23134 square root
23135 @item cbrt
23136 cubic root
23137 @item lin
23138 linear
23139 @item rlog
23140 reverse logarithmic
23141 @end table
23142 Default is @code{log}.
23143
23144 @item ascale
23145 Set amplitude scale.
23146
23147 It accepts the following values:
23148 @table @samp
23149 @item log
23150 logarithmic
23151 @item lin
23152 linear
23153 @end table
23154 Default is @code{log}.
23155
23156 @item acount
23157 Set how much frames to accumulate in histogram.
23158 Default is 1. Setting this to -1 accumulates all frames.
23159
23160 @item rheight
23161 Set histogram ratio of window height.
23162
23163 @item slide
23164 Set sonogram sliding.
23165
23166 It accepts the following values:
23167 @table @samp
23168 @item replace
23169 replace old rows with new ones.
23170 @item scroll
23171 scroll from top to bottom.
23172 @end table
23173 Default is @code{replace}.
23174 @end table
23175
23176 @section aphasemeter
23177
23178 Measures phase of input audio, which is exported as metadata @code{lavfi.aphasemeter.phase},
23179 representing mean phase of current audio frame. A video output can also be produced and is
23180 enabled by default. The audio is passed through as first output.
23181
23182 Audio will be rematrixed to stereo if it has a different channel layout. Phase value is in
23183 range @code{[-1, 1]} where @code{-1} means left and right channels are completely out of phase
23184 and @code{1} means channels are in phase.
23185
23186 The filter accepts the following options, all related to its video output:
23187
23188 @table @option
23189 @item rate, r
23190 Set the output frame rate. Default value is @code{25}.
23191
23192 @item size, s
23193 Set the video size for the output. For the syntax of this option, check the
23194 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23195 Default value is @code{800x400}.
23196
23197 @item rc
23198 @item gc
23199 @item bc
23200 Specify the red, green, blue contrast. Default values are @code{2},
23201 @code{7} and @code{1}.
23202 Allowed range is @code{[0, 255]}.
23203
23204 @item mpc
23205 Set color which will be used for drawing median phase. If color is
23206 @code{none} which is default, no median phase value will be drawn.
23207
23208 @item video
23209 Enable video output. Default is enabled.
23210 @end table
23211
23212 @section avectorscope
23213
23214 Convert input audio to a video output, representing the audio vector
23215 scope.
23216
23217 The filter is used to measure the difference between channels of stereo
23218 audio stream. A monaural signal, consisting of identical left and right
23219 signal, results in straight vertical line. Any stereo separation is visible
23220 as a deviation from this line, creating a Lissajous figure.
23221 If the straight (or deviation from it) but horizontal line appears this
23222 indicates that the left and right channels are out of phase.
23223
23224 The filter accepts the following options:
23225
23226 @table @option
23227 @item mode, m
23228 Set the vectorscope mode.
23229
23230 Available values are:
23231 @table @samp
23232 @item lissajous
23233 Lissajous rotated by 45 degrees.
23234
23235 @item lissajous_xy
23236 Same as above but not rotated.
23237
23238 @item polar
23239 Shape resembling half of circle.
23240 @end table
23241
23242 Default value is @samp{lissajous}.
23243
23244 @item size, s
23245 Set the video size for the output. For the syntax of this option, check the
23246 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23247 Default value is @code{400x400}.
23248
23249 @item rate, r
23250 Set the output frame rate. Default value is @code{25}.
23251
23252 @item rc
23253 @item gc
23254 @item bc
23255 @item ac
23256 Specify the red, green, blue and alpha contrast. Default values are @code{40},
23257 @code{160}, @code{80} and @code{255}.
23258 Allowed range is @code{[0, 255]}.
23259
23260 @item rf
23261 @item gf
23262 @item bf
23263 @item af
23264 Specify the red, green, blue and alpha fade. Default values are @code{15},
23265 @code{10}, @code{5} and @code{5}.
23266 Allowed range is @code{[0, 255]}.
23267
23268 @item zoom
23269 Set the zoom factor. Default value is @code{1}. Allowed range is @code{[0, 10]}.
23270 Values lower than @var{1} will auto adjust zoom factor to maximal possible value.
23271
23272 @item draw
23273 Set the vectorscope drawing mode.
23274
23275 Available values are:
23276 @table @samp
23277 @item dot
23278 Draw dot for each sample.
23279
23280 @item line
23281 Draw line between previous and current sample.
23282 @end table
23283
23284 Default value is @samp{dot}.
23285
23286 @item scale
23287 Specify amplitude scale of audio samples.
23288
23289 Available values are:
23290 @table @samp
23291 @item lin
23292 Linear.
23293
23294 @item sqrt
23295 Square root.
23296
23297 @item cbrt
23298 Cubic root.
23299
23300 @item log
23301 Logarithmic.
23302 @end table
23303
23304 @item swap
23305 Swap left channel axis with right channel axis.
23306
23307 @item mirror
23308 Mirror axis.
23309
23310 @table @samp
23311 @item none
23312 No mirror.
23313
23314 @item x
23315 Mirror only x axis.
23316
23317 @item y
23318 Mirror only y axis.
23319
23320 @item xy
23321 Mirror both axis.
23322 @end table
23323
23324 @end table
23325
23326 @subsection Examples
23327
23328 @itemize
23329 @item
23330 Complete example using @command{ffplay}:
23331 @example
23332 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
23333              [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
23334 @end example
23335 @end itemize
23336
23337 @section bench, abench
23338
23339 Benchmark part of a filtergraph.
23340
23341 The filter accepts the following options:
23342
23343 @table @option
23344 @item action
23345 Start or stop a timer.
23346
23347 Available values are:
23348 @table @samp
23349 @item start
23350 Get the current time, set it as frame metadata (using the key
23351 @code{lavfi.bench.start_time}), and forward the frame to the next filter.
23352
23353 @item stop
23354 Get the current time and fetch the @code{lavfi.bench.start_time} metadata from
23355 the input frame metadata to get the time difference. Time difference, average,
23356 maximum and minimum time (respectively @code{t}, @code{avg}, @code{max} and
23357 @code{min}) are then printed. The timestamps are expressed in seconds.
23358 @end table
23359 @end table
23360
23361 @subsection Examples
23362
23363 @itemize
23364 @item
23365 Benchmark @ref{selectivecolor} filter:
23366 @example
23367 bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
23368 @end example
23369 @end itemize
23370
23371 @section concat
23372
23373 Concatenate audio and video streams, joining them together one after the
23374 other.
23375
23376 The filter works on segments of synchronized video and audio streams. All
23377 segments must have the same number of streams of each type, and that will
23378 also be the number of streams at output.
23379
23380 The filter accepts the following options:
23381
23382 @table @option
23383
23384 @item n
23385 Set the number of segments. Default is 2.
23386
23387 @item v
23388 Set the number of output video streams, that is also the number of video
23389 streams in each segment. Default is 1.
23390
23391 @item a
23392 Set the number of output audio streams, that is also the number of audio
23393 streams in each segment. Default is 0.
23394
23395 @item unsafe
23396 Activate unsafe mode: do not fail if segments have a different format.
23397
23398 @end table
23399
23400 The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then
23401 @var{a} audio outputs.
23402
23403 There are @var{n}x(@var{v}+@var{a}) inputs: first the inputs for the first
23404 segment, in the same order as the outputs, then the inputs for the second
23405 segment, etc.
23406
23407 Related streams do not always have exactly the same duration, for various
23408 reasons including codec frame size or sloppy authoring. For that reason,
23409 related synchronized streams (e.g. a video and its audio track) should be
23410 concatenated at once. The concat filter will use the duration of the longest
23411 stream in each segment (except the last one), and if necessary pad shorter
23412 audio streams with silence.
23413
23414 For this filter to work correctly, all segments must start at timestamp 0.
23415
23416 All corresponding streams must have the same parameters in all segments; the
23417 filtering system will automatically select a common pixel format for video
23418 streams, and a common sample format, sample rate and channel layout for
23419 audio streams, but other settings, such as resolution, must be converted
23420 explicitly by the user.
23421
23422 Different frame rates are acceptable but will result in variable frame rate
23423 at output; be sure to configure the output file to handle it.
23424
23425 @subsection Examples
23426
23427 @itemize
23428 @item
23429 Concatenate an opening, an episode and an ending, all in bilingual version
23430 (video in stream 0, audio in streams 1 and 2):
23431 @example
23432 ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
23433   '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
23434    concat=n=3:v=1:a=2 [v] [a1] [a2]' \
23435   -map '[v]' -map '[a1]' -map '[a2]' output.mkv
23436 @end example
23437
23438 @item
23439 Concatenate two parts, handling audio and video separately, using the
23440 (a)movie sources, and adjusting the resolution:
23441 @example
23442 movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
23443 movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
23444 [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
23445 @end example
23446 Note that a desync will happen at the stitch if the audio and video streams
23447 do not have exactly the same duration in the first file.
23448
23449 @end itemize
23450
23451 @subsection Commands
23452
23453 This filter supports the following commands:
23454 @table @option
23455 @item next
23456 Close the current segment and step to the next one
23457 @end table
23458
23459 @anchor{ebur128}
23460 @section ebur128
23461
23462 EBU R128 scanner filter. This filter takes an audio stream and analyzes its loudness
23463 level. By default, it logs a message at a frequency of 10Hz with the
23464 Momentary loudness (identified by @code{M}), Short-term loudness (@code{S}),
23465 Integrated loudness (@code{I}) and Loudness Range (@code{LRA}).
23466
23467 The filter can only analyze streams which have a sampling rate of 48000 Hz and whose
23468 sample format is double-precision floating point. The input stream will be converted to
23469 this specification, if needed. Users may need to insert aformat and/or aresample filters
23470 after this filter to obtain the original parameters.
23471
23472 The filter also has a video output (see the @var{video} option) with a real
23473 time graph to observe the loudness evolution. The graphic contains the logged
23474 message mentioned above, so it is not printed anymore when this option is set,
23475 unless the verbose logging is set. The main graphing area contains the
23476 short-term loudness (3 seconds of analysis), and the gauge on the right is for
23477 the momentary loudness (400 milliseconds), but can optionally be configured
23478 to instead display short-term loudness (see @var{gauge}).
23479
23480 The green area marks a  +/- 1LU target range around the target loudness
23481 (-23LUFS by default, unless modified through @var{target}).
23482
23483 More information about the Loudness Recommendation EBU R128 on
23484 @url{http://tech.ebu.ch/loudness}.
23485
23486 The filter accepts the following options:
23487
23488 @table @option
23489
23490 @item video
23491 Activate the video output. The audio stream is passed unchanged whether this
23492 option is set or no. The video stream will be the first output stream if
23493 activated. Default is @code{0}.
23494
23495 @item size
23496 Set the video size. This option is for video only. For the syntax of this
23497 option, check the
23498 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
23499 Default and minimum resolution is @code{640x480}.
23500
23501 @item meter
23502 Set the EBU scale meter. Default is @code{9}. Common values are @code{9} and
23503 @code{18}, respectively for EBU scale meter +9 and EBU scale meter +18. Any
23504 other integer value between this range is allowed.
23505
23506 @item metadata
23507 Set metadata injection. If set to @code{1}, the audio input will be segmented
23508 into 100ms output frames, each of them containing various loudness information
23509 in metadata.  All the metadata keys are prefixed with @code{lavfi.r128.}.
23510
23511 Default is @code{0}.
23512
23513 @item framelog
23514 Force the frame logging level.
23515
23516 Available values are:
23517 @table @samp
23518 @item info
23519 information logging level
23520 @item verbose
23521 verbose logging level
23522 @end table
23523
23524 By default, the logging level is set to @var{info}. If the @option{video} or
23525 the @option{metadata} options are set, it switches to @var{verbose}.
23526
23527 @item peak
23528 Set peak mode(s).
23529
23530 Available modes can be cumulated (the option is a @code{flag} type). Possible
23531 values are:
23532 @table @samp
23533 @item none
23534 Disable any peak mode (default).
23535 @item sample
23536 Enable sample-peak mode.
23537
23538 Simple peak mode looking for the higher sample value. It logs a message
23539 for sample-peak (identified by @code{SPK}).
23540 @item true
23541 Enable true-peak mode.
23542
23543 If enabled, the peak lookup is done on an over-sampled version of the input
23544 stream for better peak accuracy. It logs a message for true-peak.
23545 (identified by @code{TPK}) and true-peak per frame (identified by @code{FTPK}).
23546 This mode requires a build with @code{libswresample}.
23547 @end table
23548
23549 @item dualmono
23550 Treat mono input files as "dual mono". If a mono file is intended for playback
23551 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
23552 If set to @code{true}, this option will compensate for this effect.
23553 Multi-channel input files are not affected by this option.
23554
23555 @item panlaw
23556 Set a specific pan law to be used for the measurement of dual mono files.
23557 This parameter is optional, and has a default value of -3.01dB.
23558
23559 @item target
23560 Set a specific target level (in LUFS) used as relative zero in the visualization.
23561 This parameter is optional and has a default value of -23LUFS as specified
23562 by EBU R128. However, material published online may prefer a level of -16LUFS
23563 (e.g. for use with podcasts or video platforms).
23564
23565 @item gauge
23566 Set the value displayed by the gauge. Valid values are @code{momentary} and s
23567 @code{shortterm}. By default the momentary value will be used, but in certain
23568 scenarios it may be more useful to observe the short term value instead (e.g.
23569 live mixing).
23570
23571 @item scale
23572 Sets the display scale for the loudness. Valid parameters are @code{absolute}
23573 (in LUFS) or @code{relative} (LU) relative to the target. This only affects the
23574 video output, not the summary or continuous log output.
23575 @end table
23576
23577 @subsection Examples
23578
23579 @itemize
23580 @item
23581 Real-time graph using @command{ffplay}, with a EBU scale meter +18:
23582 @example
23583 ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
23584 @end example
23585
23586 @item
23587 Run an analysis with @command{ffmpeg}:
23588 @example
23589 ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
23590 @end example
23591 @end itemize
23592
23593 @section interleave, ainterleave
23594
23595 Temporally interleave frames from several inputs.
23596
23597 @code{interleave} works with video inputs, @code{ainterleave} with audio.
23598
23599 These filters read frames from several inputs and send the oldest
23600 queued frame to the output.
23601
23602 Input streams must have well defined, monotonically increasing frame
23603 timestamp values.
23604
23605 In order to submit one frame to output, these filters need to enqueue
23606 at least one frame for each input, so they cannot work in case one
23607 input is not yet terminated and will not receive incoming frames.
23608
23609 For example consider the case when one input is a @code{select} filter
23610 which always drops input frames. The @code{interleave} filter will keep
23611 reading from that input, but it will never be able to send new frames
23612 to output until the input sends an end-of-stream signal.
23613
23614 Also, depending on inputs synchronization, the filters will drop
23615 frames in case one input receives more frames than the other ones, and
23616 the queue is already filled.
23617
23618 These filters accept the following options:
23619
23620 @table @option
23621 @item nb_inputs, n
23622 Set the number of different inputs, it is 2 by default.
23623
23624 @item duration
23625 How to determine the end-of-stream.
23626
23627 @table @option
23628 @item longest
23629 The duration of the longest input. (default)
23630
23631 @item shortest
23632 The duration of the shortest input.
23633
23634 @item first
23635 The duration of the first input.
23636 @end table
23637
23638 @end table
23639
23640 @subsection Examples
23641
23642 @itemize
23643 @item
23644 Interleave frames belonging to different streams using @command{ffmpeg}:
23645 @example
23646 ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
23647 @end example
23648
23649 @item
23650 Add flickering blur effect:
23651 @example
23652 select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
23653 @end example
23654 @end itemize
23655
23656 @section metadata, ametadata
23657
23658 Manipulate frame metadata.
23659
23660 This filter accepts the following options:
23661
23662 @table @option
23663 @item mode
23664 Set mode of operation of the filter.
23665
23666 Can be one of the following:
23667
23668 @table @samp
23669 @item select
23670 If both @code{value} and @code{key} is set, select frames
23671 which have such metadata. If only @code{key} is set, select
23672 every frame that has such key in metadata.
23673
23674 @item add
23675 Add new metadata @code{key} and @code{value}. If key is already available
23676 do nothing.
23677
23678 @item modify
23679 Modify value of already present key.
23680
23681 @item delete
23682 If @code{value} is set, delete only keys that have such value.
23683 Otherwise, delete key. If @code{key} is not set, delete all metadata values in
23684 the frame.
23685
23686 @item print
23687 Print key and its value if metadata was found. If @code{key} is not set print all
23688 metadata values available in frame.
23689 @end table
23690
23691 @item key
23692 Set key used with all modes. Must be set for all modes except @code{print} and @code{delete}.
23693
23694 @item value
23695 Set metadata value which will be used. This option is mandatory for
23696 @code{modify} and @code{add} mode.
23697
23698 @item function
23699 Which function to use when comparing metadata value and @code{value}.
23700
23701 Can be one of following:
23702
23703 @table @samp
23704 @item same_str
23705 Values are interpreted as strings, returns true if metadata value is same as @code{value}.
23706
23707 @item starts_with
23708 Values are interpreted as strings, returns true if metadata value starts with
23709 the @code{value} option string.
23710
23711 @item less
23712 Values are interpreted as floats, returns true if metadata value is less than @code{value}.
23713
23714 @item equal
23715 Values are interpreted as floats, returns true if @code{value} is equal with metadata value.
23716
23717 @item greater
23718 Values are interpreted as floats, returns true if metadata value is greater than @code{value}.
23719
23720 @item expr
23721 Values are interpreted as floats, returns true if expression from option @code{expr}
23722 evaluates to true.
23723
23724 @item ends_with
23725 Values are interpreted as strings, returns true if metadata value ends with
23726 the @code{value} option string.
23727 @end table
23728
23729 @item expr
23730 Set expression which is used when @code{function} is set to @code{expr}.
23731 The expression is evaluated through the eval API and can contain the following
23732 constants:
23733
23734 @table @option
23735 @item VALUE1
23736 Float representation of @code{value} from metadata key.
23737
23738 @item VALUE2
23739 Float representation of @code{value} as supplied by user in @code{value} option.
23740 @end table
23741
23742 @item file
23743 If specified in @code{print} mode, output is written to the named file. Instead of
23744 plain filename any writable url can be specified. Filename ``-'' is a shorthand
23745 for standard output. If @code{file} option is not set, output is written to the log
23746 with AV_LOG_INFO loglevel.
23747
23748 @item direct
23749 Reduces buffering in print mode when output is written to a URL set using @var{file}.
23750
23751 @end table
23752
23753 @subsection Examples
23754
23755 @itemize
23756 @item
23757 Print all metadata values for frames with key @code{lavfi.signalstats.YDIF} with values
23758 between 0 and 1.
23759 @example
23760 signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
23761 @end example
23762 @item
23763 Print silencedetect output to file @file{metadata.txt}.
23764 @example
23765 silencedetect,ametadata=mode=print:file=metadata.txt
23766 @end example
23767 @item
23768 Direct all metadata to a pipe with file descriptor 4.
23769 @example
23770 metadata=mode=print:file='pipe\:4'
23771 @end example
23772 @end itemize
23773
23774 @section perms, aperms
23775
23776 Set read/write permissions for the output frames.
23777
23778 These filters are mainly aimed at developers to test direct path in the
23779 following filter in the filtergraph.
23780
23781 The filters accept the following options:
23782
23783 @table @option
23784 @item mode
23785 Select the permissions mode.
23786
23787 It accepts the following values:
23788 @table @samp
23789 @item none
23790 Do nothing. This is the default.
23791 @item ro
23792 Set all the output frames read-only.
23793 @item rw
23794 Set all the output frames directly writable.
23795 @item toggle
23796 Make the frame read-only if writable, and writable if read-only.
23797 @item random
23798 Set each output frame read-only or writable randomly.
23799 @end table
23800
23801 @item seed
23802 Set the seed for the @var{random} mode, must be an integer included between
23803 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
23804 @code{-1}, the filter will try to use a good random seed on a best effort
23805 basis.
23806 @end table
23807
23808 Note: in case of auto-inserted filter between the permission filter and the
23809 following one, the permission might not be received as expected in that
23810 following filter. Inserting a @ref{format} or @ref{aformat} filter before the
23811 perms/aperms filter can avoid this problem.
23812
23813 @section realtime, arealtime
23814
23815 Slow down filtering to match real time approximately.
23816
23817 These filters will pause the filtering for a variable amount of time to
23818 match the output rate with the input timestamps.
23819 They are similar to the @option{re} option to @code{ffmpeg}.
23820
23821 They accept the following options:
23822
23823 @table @option
23824 @item limit
23825 Time limit for the pauses. Any pause longer than that will be considered
23826 a timestamp discontinuity and reset the timer. Default is 2 seconds.
23827 @item speed
23828 Speed factor for processing. The value must be a float larger than zero.
23829 Values larger than 1.0 will result in faster than realtime processing,
23830 smaller will slow processing down. The @var{limit} is automatically adapted
23831 accordingly. Default is 1.0.
23832
23833 A processing speed faster than what is possible without these filters cannot
23834 be achieved.
23835 @end table
23836
23837 @anchor{select}
23838 @section select, aselect
23839
23840 Select frames to pass in output.
23841
23842 This filter accepts the following options:
23843
23844 @table @option
23845
23846 @item expr, e
23847 Set expression, which is evaluated for each input frame.
23848
23849 If the expression is evaluated to zero, the frame is discarded.
23850
23851 If the evaluation result is negative or NaN, the frame is sent to the
23852 first output; otherwise it is sent to the output with index
23853 @code{ceil(val)-1}, assuming that the input index starts from 0.
23854
23855 For example a value of @code{1.2} corresponds to the output with index
23856 @code{ceil(1.2)-1 = 2-1 = 1}, that is the second output.
23857
23858 @item outputs, n
23859 Set the number of outputs. The output to which to send the selected
23860 frame is based on the result of the evaluation. Default value is 1.
23861 @end table
23862
23863 The expression can contain the following constants:
23864
23865 @table @option
23866 @item n
23867 The (sequential) number of the filtered frame, starting from 0.
23868
23869 @item selected_n
23870 The (sequential) number of the selected frame, starting from 0.
23871
23872 @item prev_selected_n
23873 The sequential number of the last selected frame. It's NAN if undefined.
23874
23875 @item TB
23876 The timebase of the input timestamps.
23877
23878 @item pts
23879 The PTS (Presentation TimeStamp) of the filtered video frame,
23880 expressed in @var{TB} units. It's NAN if undefined.
23881
23882 @item t
23883 The PTS of the filtered video frame,
23884 expressed in seconds. It's NAN if undefined.
23885
23886 @item prev_pts
23887 The PTS of the previously filtered video frame. It's NAN if undefined.
23888
23889 @item prev_selected_pts
23890 The PTS of the last previously filtered video frame. It's NAN if undefined.
23891
23892 @item prev_selected_t
23893 The PTS of the last previously selected video frame, expressed in seconds. It's NAN if undefined.
23894
23895 @item start_pts
23896 The PTS of the first video frame in the video. It's NAN if undefined.
23897
23898 @item start_t
23899 The time of the first video frame in the video. It's NAN if undefined.
23900
23901 @item pict_type @emph{(video only)}
23902 The type of the filtered frame. It can assume one of the following
23903 values:
23904 @table @option
23905 @item I
23906 @item P
23907 @item B
23908 @item S
23909 @item SI
23910 @item SP
23911 @item BI
23912 @end table
23913
23914 @item interlace_type @emph{(video only)}
23915 The frame interlace type. It can assume one of the following values:
23916 @table @option
23917 @item PROGRESSIVE
23918 The frame is progressive (not interlaced).
23919 @item TOPFIRST
23920 The frame is top-field-first.
23921 @item BOTTOMFIRST
23922 The frame is bottom-field-first.
23923 @end table
23924
23925 @item consumed_sample_n @emph{(audio only)}
23926 the number of selected samples before the current frame
23927
23928 @item samples_n @emph{(audio only)}
23929 the number of samples in the current frame
23930
23931 @item sample_rate @emph{(audio only)}
23932 the input sample rate
23933
23934 @item key
23935 This is 1 if the filtered frame is a key-frame, 0 otherwise.
23936
23937 @item pos
23938 the position in the file of the filtered frame, -1 if the information
23939 is not available (e.g. for synthetic video)
23940
23941 @item scene @emph{(video only)}
23942 value between 0 and 1 to indicate a new scene; a low value reflects a low
23943 probability for the current frame to introduce a new scene, while a higher
23944 value means the current frame is more likely to be one (see the example below)
23945
23946 @item concatdec_select
23947 The concat demuxer can select only part of a concat input file by setting an
23948 inpoint and an outpoint, but the output packets may not be entirely contained
23949 in the selected interval. By using this variable, it is possible to skip frames
23950 generated by the concat demuxer which are not exactly contained in the selected
23951 interval.
23952
23953 This works by comparing the frame pts against the @var{lavf.concat.start_time}
23954 and the @var{lavf.concat.duration} packet metadata values which are also
23955 present in the decoded frames.
23956
23957 The @var{concatdec_select} variable is -1 if the frame pts is at least
23958 start_time and either the duration metadata is missing or the frame pts is less
23959 than start_time + duration, 0 otherwise, and NaN if the start_time metadata is
23960 missing.
23961
23962 That basically means that an input frame is selected if its pts is within the
23963 interval set by the concat demuxer.
23964
23965 @end table
23966
23967 The default value of the select expression is "1".
23968
23969 @subsection Examples
23970
23971 @itemize
23972 @item
23973 Select all frames in input:
23974 @example
23975 select
23976 @end example
23977
23978 The example above is the same as:
23979 @example
23980 select=1
23981 @end example
23982
23983 @item
23984 Skip all frames:
23985 @example
23986 select=0
23987 @end example
23988
23989 @item
23990 Select only I-frames:
23991 @example
23992 select='eq(pict_type\,I)'
23993 @end example
23994
23995 @item
23996 Select one frame every 100:
23997 @example
23998 select='not(mod(n\,100))'
23999 @end example
24000
24001 @item
24002 Select only frames contained in the 10-20 time interval:
24003 @example
24004 select=between(t\,10\,20)
24005 @end example
24006
24007 @item
24008 Select only I-frames contained in the 10-20 time interval:
24009 @example
24010 select=between(t\,10\,20)*eq(pict_type\,I)
24011 @end example
24012
24013 @item
24014 Select frames with a minimum distance of 10 seconds:
24015 @example
24016 select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
24017 @end example
24018
24019 @item
24020 Use aselect to select only audio frames with samples number > 100:
24021 @example
24022 aselect='gt(samples_n\,100)'
24023 @end example
24024
24025 @item
24026 Create a mosaic of the first scenes:
24027 @example
24028 ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
24029 @end example
24030
24031 Comparing @var{scene} against a value between 0.3 and 0.5 is generally a sane
24032 choice.
24033
24034 @item
24035 Send even and odd frames to separate outputs, and compose them:
24036 @example
24037 select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
24038 @end example
24039
24040 @item
24041 Select useful frames from an ffconcat file which is using inpoints and
24042 outpoints but where the source files are not intra frame only.
24043 @example
24044 ffmpeg -copyts -vsync 0 -segment_time_metadata 1 -i input.ffconcat -vf select=concatdec_select -af aselect=concatdec_select output.avi
24045 @end example
24046 @end itemize
24047
24048 @section sendcmd, asendcmd
24049
24050 Send commands to filters in the filtergraph.
24051
24052 These filters read commands to be sent to other filters in the
24053 filtergraph.
24054
24055 @code{sendcmd} must be inserted between two video filters,
24056 @code{asendcmd} must be inserted between two audio filters, but apart
24057 from that they act the same way.
24058
24059 The specification of commands can be provided in the filter arguments
24060 with the @var{commands} option, or in a file specified by the
24061 @var{filename} option.
24062
24063 These filters accept the following options:
24064 @table @option
24065 @item commands, c
24066 Set the commands to be read and sent to the other filters.
24067 @item filename, f
24068 Set the filename of the commands to be read and sent to the other
24069 filters.
24070 @end table
24071
24072 @subsection Commands syntax
24073
24074 A commands description consists of a sequence of interval
24075 specifications, comprising a list of commands to be executed when a
24076 particular event related to that interval occurs. The occurring event
24077 is typically the current frame time entering or leaving a given time
24078 interval.
24079
24080 An interval is specified by the following syntax:
24081 @example
24082 @var{START}[-@var{END}] @var{COMMANDS};
24083 @end example
24084
24085 The time interval is specified by the @var{START} and @var{END} times.
24086 @var{END} is optional and defaults to the maximum time.
24087
24088 The current frame time is considered within the specified interval if
24089 it is included in the interval [@var{START}, @var{END}), that is when
24090 the time is greater or equal to @var{START} and is lesser than
24091 @var{END}.
24092
24093 @var{COMMANDS} consists of a sequence of one or more command
24094 specifications, separated by ",", relating to that interval.  The
24095 syntax of a command specification is given by:
24096 @example
24097 [@var{FLAGS}] @var{TARGET} @var{COMMAND} @var{ARG}
24098 @end example
24099
24100 @var{FLAGS} is optional and specifies the type of events relating to
24101 the time interval which enable sending the specified command, and must
24102 be a non-null sequence of identifier flags separated by "+" or "|" and
24103 enclosed between "[" and "]".
24104
24105 The following flags are recognized:
24106 @table @option
24107 @item enter
24108 The command is sent when the current frame timestamp enters the
24109 specified interval. In other words, the command is sent when the
24110 previous frame timestamp was not in the given interval, and the
24111 current is.
24112
24113 @item leave
24114 The command is sent when the current frame timestamp leaves the
24115 specified interval. In other words, the command is sent when the
24116 previous frame timestamp was in the given interval, and the
24117 current is not.
24118
24119 @item expr
24120 The command @var{ARG} is interpreted as expression and result of
24121 expression is passed as @var{ARG}.
24122
24123 The expression is evaluated through the eval API and can contain the following
24124 constants:
24125
24126 @table @option
24127 @item POS
24128 Original position in the file of the frame, or undefined if undefined
24129 for the current frame.
24130
24131 @item PTS
24132 The presentation timestamp in input.
24133
24134 @item N
24135 The count of the input frame for video or audio, starting from 0.
24136
24137 @item T
24138 The time in seconds of the current frame.
24139
24140 @item TS
24141 The start time in seconds of the current command interval.
24142
24143 @item TE
24144 The end time in seconds of the current command interval.
24145
24146 @item TI
24147 The interpolated time of the current command interval, TI = (T - TS) / (TE - TS).
24148 @end table
24149
24150 @end table
24151
24152 If @var{FLAGS} is not specified, a default value of @code{[enter]} is
24153 assumed.
24154
24155 @var{TARGET} specifies the target of the command, usually the name of
24156 the filter class or a specific filter instance name.
24157
24158 @var{COMMAND} specifies the name of the command for the target filter.
24159
24160 @var{ARG} is optional and specifies the optional list of argument for
24161 the given @var{COMMAND}.
24162
24163 Between one interval specification and another, whitespaces, or
24164 sequences of characters starting with @code{#} until the end of line,
24165 are ignored and can be used to annotate comments.
24166
24167 A simplified BNF description of the commands specification syntax
24168 follows:
24169 @example
24170 @var{COMMAND_FLAG}  ::= "enter" | "leave"
24171 @var{COMMAND_FLAGS} ::= @var{COMMAND_FLAG} [(+|"|")@var{COMMAND_FLAG}]
24172 @var{COMMAND}       ::= ["[" @var{COMMAND_FLAGS} "]"] @var{TARGET} @var{COMMAND} [@var{ARG}]
24173 @var{COMMANDS}      ::= @var{COMMAND} [,@var{COMMANDS}]
24174 @var{INTERVAL}      ::= @var{START}[-@var{END}] @var{COMMANDS}
24175 @var{INTERVALS}     ::= @var{INTERVAL}[;@var{INTERVALS}]
24176 @end example
24177
24178 @subsection Examples
24179
24180 @itemize
24181 @item
24182 Specify audio tempo change at second 4:
24183 @example
24184 asendcmd=c='4.0 atempo tempo 1.5',atempo
24185 @end example
24186
24187 @item
24188 Target a specific filter instance:
24189 @example
24190 asendcmd=c='4.0 atempo@@my tempo 1.5',atempo@@my
24191 @end example
24192
24193 @item
24194 Specify a list of drawtext and hue commands in a file.
24195 @example
24196 # show text in the interval 5-10
24197 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
24198          [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
24199
24200 # desaturate the image in the interval 15-20
24201 15.0-20.0 [enter] hue s 0,
24202           [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
24203           [leave] hue s 1,
24204           [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
24205
24206 # apply an exponential saturation fade-out effect, starting from time 25
24207 25 [enter] hue s exp(25-t)
24208 @end example
24209
24210 A filtergraph allowing to read and process the above command list
24211 stored in a file @file{test.cmd}, can be specified with:
24212 @example
24213 sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
24214 @end example
24215 @end itemize
24216
24217 @anchor{setpts}
24218 @section setpts, asetpts
24219
24220 Change the PTS (presentation timestamp) of the input frames.
24221
24222 @code{setpts} works on video frames, @code{asetpts} on audio frames.
24223
24224 This filter accepts the following options:
24225
24226 @table @option
24227
24228 @item expr
24229 The expression which is evaluated for each frame to construct its timestamp.
24230
24231 @end table
24232
24233 The expression is evaluated through the eval API and can contain the following
24234 constants:
24235
24236 @table @option
24237 @item FRAME_RATE, FR
24238 frame rate, only defined for constant frame-rate video
24239
24240 @item PTS
24241 The presentation timestamp in input
24242
24243 @item N
24244 The count of the input frame for video or the number of consumed samples,
24245 not including the current frame for audio, starting from 0.
24246
24247 @item NB_CONSUMED_SAMPLES
24248 The number of consumed samples, not including the current frame (only
24249 audio)
24250
24251 @item NB_SAMPLES, S
24252 The number of samples in the current frame (only audio)
24253
24254 @item SAMPLE_RATE, SR
24255 The audio sample rate.
24256
24257 @item STARTPTS
24258 The PTS of the first frame.
24259
24260 @item STARTT
24261 the time in seconds of the first frame
24262
24263 @item INTERLACED
24264 State whether the current frame is interlaced.
24265
24266 @item T
24267 the time in seconds of the current frame
24268
24269 @item POS
24270 original position in the file of the frame, or undefined if undefined
24271 for the current frame
24272
24273 @item PREV_INPTS
24274 The previous input PTS.
24275
24276 @item PREV_INT
24277 previous input time in seconds
24278
24279 @item PREV_OUTPTS
24280 The previous output PTS.
24281
24282 @item PREV_OUTT
24283 previous output time in seconds
24284
24285 @item RTCTIME
24286 The wallclock (RTC) time in microseconds. This is deprecated, use time(0)
24287 instead.
24288
24289 @item RTCSTART
24290 The wallclock (RTC) time at the start of the movie in microseconds.
24291
24292 @item TB
24293 The timebase of the input timestamps.
24294
24295 @end table
24296
24297 @subsection Examples
24298
24299 @itemize
24300 @item
24301 Start counting PTS from zero
24302 @example
24303 setpts=PTS-STARTPTS
24304 @end example
24305
24306 @item
24307 Apply fast motion effect:
24308 @example
24309 setpts=0.5*PTS
24310 @end example
24311
24312 @item
24313 Apply slow motion effect:
24314 @example
24315 setpts=2.0*PTS
24316 @end example
24317
24318 @item
24319 Set fixed rate of 25 frames per second:
24320 @example
24321 setpts=N/(25*TB)
24322 @end example
24323
24324 @item
24325 Set fixed rate 25 fps with some jitter:
24326 @example
24327 setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
24328 @end example
24329
24330 @item
24331 Apply an offset of 10 seconds to the input PTS:
24332 @example
24333 setpts=PTS+10/TB
24334 @end example
24335
24336 @item
24337 Generate timestamps from a "live source" and rebase onto the current timebase:
24338 @example
24339 setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
24340 @end example
24341
24342 @item
24343 Generate timestamps by counting samples:
24344 @example
24345 asetpts=N/SR/TB
24346 @end example
24347
24348 @end itemize
24349
24350 @section setrange
24351
24352 Force color range for the output video frame.
24353
24354 The @code{setrange} filter marks the color range property for the
24355 output frames. It does not change the input frame, but only sets the
24356 corresponding property, which affects how the frame is treated by
24357 following filters.
24358
24359 The filter accepts the following options:
24360
24361 @table @option
24362
24363 @item range
24364 Available values are:
24365
24366 @table @samp
24367 @item auto
24368 Keep the same color range property.
24369
24370 @item unspecified, unknown
24371 Set the color range as unspecified.
24372
24373 @item limited, tv, mpeg
24374 Set the color range as limited.
24375
24376 @item full, pc, jpeg
24377 Set the color range as full.
24378 @end table
24379 @end table
24380
24381 @section settb, asettb
24382
24383 Set the timebase to use for the output frames timestamps.
24384 It is mainly useful for testing timebase configuration.
24385
24386 It accepts the following parameters:
24387
24388 @table @option
24389
24390 @item expr, tb
24391 The expression which is evaluated into the output timebase.
24392
24393 @end table
24394
24395 The value for @option{tb} is an arithmetic expression representing a
24396 rational. The expression can contain the constants "AVTB" (the default
24397 timebase), "intb" (the input timebase) and "sr" (the sample rate,
24398 audio only). Default value is "intb".
24399
24400 @subsection Examples
24401
24402 @itemize
24403 @item
24404 Set the timebase to 1/25:
24405 @example
24406 settb=expr=1/25
24407 @end example
24408
24409 @item
24410 Set the timebase to 1/10:
24411 @example
24412 settb=expr=0.1
24413 @end example
24414
24415 @item
24416 Set the timebase to 1001/1000:
24417 @example
24418 settb=1+0.001
24419 @end example
24420
24421 @item
24422 Set the timebase to 2*intb:
24423 @example
24424 settb=2*intb
24425 @end example
24426
24427 @item
24428 Set the default timebase value:
24429 @example
24430 settb=AVTB
24431 @end example
24432 @end itemize
24433
24434 @section showcqt
24435 Convert input audio to a video output representing frequency spectrum
24436 logarithmically using Brown-Puckette constant Q transform algorithm with
24437 direct frequency domain coefficient calculation (but the transform itself
24438 is not really constant Q, instead the Q factor is actually variable/clamped),
24439 with musical tone scale, from E0 to D#10.
24440
24441 The filter accepts the following options:
24442
24443 @table @option
24444 @item size, s
24445 Specify the video size for the output. It must be even. For the syntax of this option,
24446 check the @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24447 Default value is @code{1920x1080}.
24448
24449 @item fps, rate, r
24450 Set the output frame rate. Default value is @code{25}.
24451
24452 @item bar_h
24453 Set the bargraph height. It must be even. Default value is @code{-1} which
24454 computes the bargraph height automatically.
24455
24456 @item axis_h
24457 Set the axis height. It must be even. Default value is @code{-1} which computes
24458 the axis height automatically.
24459
24460 @item sono_h
24461 Set the sonogram height. It must be even. Default value is @code{-1} which
24462 computes the sonogram height automatically.
24463
24464 @item fullhd
24465 Set the fullhd resolution. This option is deprecated, use @var{size}, @var{s}
24466 instead. Default value is @code{1}.
24467
24468 @item sono_v, volume
24469 Specify the sonogram volume expression. It can contain variables:
24470 @table @option
24471 @item bar_v
24472 the @var{bar_v} evaluated expression
24473 @item frequency, freq, f
24474 the frequency where it is evaluated
24475 @item timeclamp, tc
24476 the value of @var{timeclamp} option
24477 @end table
24478 and functions:
24479 @table @option
24480 @item a_weighting(f)
24481 A-weighting of equal loudness
24482 @item b_weighting(f)
24483 B-weighting of equal loudness
24484 @item c_weighting(f)
24485 C-weighting of equal loudness.
24486 @end table
24487 Default value is @code{16}.
24488
24489 @item bar_v, volume2
24490 Specify the bargraph volume expression. It can contain variables:
24491 @table @option
24492 @item sono_v
24493 the @var{sono_v} evaluated expression
24494 @item frequency, freq, f
24495 the frequency where it is evaluated
24496 @item timeclamp, tc
24497 the value of @var{timeclamp} option
24498 @end table
24499 and functions:
24500 @table @option
24501 @item a_weighting(f)
24502 A-weighting of equal loudness
24503 @item b_weighting(f)
24504 B-weighting of equal loudness
24505 @item c_weighting(f)
24506 C-weighting of equal loudness.
24507 @end table
24508 Default value is @code{sono_v}.
24509
24510 @item sono_g, gamma
24511 Specify the sonogram gamma. Lower gamma makes the spectrum more contrast,
24512 higher gamma makes the spectrum having more range. Default value is @code{3}.
24513 Acceptable range is @code{[1, 7]}.
24514
24515 @item bar_g, gamma2
24516 Specify the bargraph gamma. Default value is @code{1}. Acceptable range is
24517 @code{[1, 7]}.
24518
24519 @item bar_t
24520 Specify the bargraph transparency level. Lower value makes the bargraph sharper.
24521 Default value is @code{1}. Acceptable range is @code{[0, 1]}.
24522
24523 @item timeclamp, tc
24524 Specify the transform timeclamp. At low frequency, there is trade-off between
24525 accuracy in time domain and frequency domain. If timeclamp is lower,
24526 event in time domain is represented more accurately (such as fast bass drum),
24527 otherwise event in frequency domain is represented more accurately
24528 (such as bass guitar). Acceptable range is @code{[0.002, 1]}. Default value is @code{0.17}.
24529
24530 @item attack
24531 Set attack time in seconds. The default is @code{0} (disabled). Otherwise, it
24532 limits future samples by applying asymmetric windowing in time domain, useful
24533 when low latency is required. Accepted range is @code{[0, 1]}.
24534
24535 @item basefreq
24536 Specify the transform base frequency. Default value is @code{20.01523126408007475},
24537 which is frequency 50 cents below E0. Acceptable range is @code{[10, 100000]}.
24538
24539 @item endfreq
24540 Specify the transform end frequency. Default value is @code{20495.59681441799654},
24541 which is frequency 50 cents above D#10. Acceptable range is @code{[10, 100000]}.
24542
24543 @item coeffclamp
24544 This option is deprecated and ignored.
24545
24546 @item tlength
24547 Specify the transform length in time domain. Use this option to control accuracy
24548 trade-off between time domain and frequency domain at every frequency sample.
24549 It can contain variables:
24550 @table @option
24551 @item frequency, freq, f
24552 the frequency where it is evaluated
24553 @item timeclamp, tc
24554 the value of @var{timeclamp} option.
24555 @end table
24556 Default value is @code{384*tc/(384+tc*f)}.
24557
24558 @item count
24559 Specify the transform count for every video frame. Default value is @code{6}.
24560 Acceptable range is @code{[1, 30]}.
24561
24562 @item fcount
24563 Specify the transform count for every single pixel. Default value is @code{0},
24564 which makes it computed automatically. Acceptable range is @code{[0, 10]}.
24565
24566 @item fontfile
24567 Specify font file for use with freetype to draw the axis. If not specified,
24568 use embedded font. Note that drawing with font file or embedded font is not
24569 implemented with custom @var{basefreq} and @var{endfreq}, use @var{axisfile}
24570 option instead.
24571
24572 @item font
24573 Specify fontconfig pattern. This has lower priority than @var{fontfile}. The
24574 @code{:} in the pattern may be replaced by @code{|} to avoid unnecessary
24575 escaping.
24576
24577 @item fontcolor
24578 Specify font color expression. This is arithmetic expression that should return
24579 integer value 0xRRGGBB. It can contain variables:
24580 @table @option
24581 @item frequency, freq, f
24582 the frequency where it is evaluated
24583 @item timeclamp, tc
24584 the value of @var{timeclamp} option
24585 @end table
24586 and functions:
24587 @table @option
24588 @item midi(f)
24589 midi number of frequency f, some midi numbers: E0(16), C1(24), C2(36), A4(69)
24590 @item r(x), g(x), b(x)
24591 red, green, and blue value of intensity x.
24592 @end table
24593 Default value is @code{st(0, (midi(f)-59.5)/12);
24594 st(1, if(between(ld(0),0,1), 0.5-0.5*cos(2*PI*ld(0)), 0));
24595 r(1-ld(1)) + b(ld(1))}.
24596
24597 @item axisfile
24598 Specify image file to draw the axis. This option override @var{fontfile} and
24599 @var{fontcolor} option.
24600
24601 @item axis, text
24602 Enable/disable drawing text to the axis. If it is set to @code{0}, drawing to
24603 the axis is disabled, ignoring @var{fontfile} and @var{axisfile} option.
24604 Default value is @code{1}.
24605
24606 @item csp
24607 Set colorspace. The accepted values are:
24608 @table @samp
24609 @item unspecified
24610 Unspecified (default)
24611
24612 @item bt709
24613 BT.709
24614
24615 @item fcc
24616 FCC
24617
24618 @item bt470bg
24619 BT.470BG or BT.601-6 625
24620
24621 @item smpte170m
24622 SMPTE-170M or BT.601-6 525
24623
24624 @item smpte240m
24625 SMPTE-240M
24626
24627 @item bt2020ncl
24628 BT.2020 with non-constant luminance
24629
24630 @end table
24631
24632 @item cscheme
24633 Set spectrogram color scheme. This is list of floating point values with format
24634 @code{left_r|left_g|left_b|right_r|right_g|right_b}.
24635 The default is @code{1|0.5|0|0|0.5|1}.
24636
24637 @end table
24638
24639 @subsection Examples
24640
24641 @itemize
24642 @item
24643 Playing audio while showing the spectrum:
24644 @example
24645 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
24646 @end example
24647
24648 @item
24649 Same as above, but with frame rate 30 fps:
24650 @example
24651 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
24652 @end example
24653
24654 @item
24655 Playing at 1280x720:
24656 @example
24657 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
24658 @end example
24659
24660 @item
24661 Disable sonogram display:
24662 @example
24663 sono_h=0
24664 @end example
24665
24666 @item
24667 A1 and its harmonics: A1, A2, (near)E3, A3:
24668 @example
24669 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),
24670                  asplit[a][out1]; [a] showcqt [out0]'
24671 @end example
24672
24673 @item
24674 Same as above, but with more accuracy in frequency domain:
24675 @example
24676 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),
24677                  asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]'
24678 @end example
24679
24680 @item
24681 Custom volume:
24682 @example
24683 bar_v=10:sono_v=bar_v*a_weighting(f)
24684 @end example
24685
24686 @item
24687 Custom gamma, now spectrum is linear to the amplitude.
24688 @example
24689 bar_g=2:sono_g=2
24690 @end example
24691
24692 @item
24693 Custom tlength equation:
24694 @example
24695 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)))'
24696 @end example
24697
24698 @item
24699 Custom fontcolor and fontfile, C-note is colored green, others are colored blue:
24700 @example
24701 fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
24702 @end example
24703
24704 @item
24705 Custom font using fontconfig:
24706 @example
24707 font='Courier New,Monospace,mono|bold'
24708 @end example
24709
24710 @item
24711 Custom frequency range with custom axis using image file:
24712 @example
24713 axisfile=myaxis.png:basefreq=40:endfreq=10000
24714 @end example
24715 @end itemize
24716
24717 @section showfreqs
24718
24719 Convert input audio to video output representing the audio power spectrum.
24720 Audio amplitude is on Y-axis while frequency is on X-axis.
24721
24722 The filter accepts the following options:
24723
24724 @table @option
24725 @item size, s
24726 Specify size of video. For the syntax of this option, check the
24727 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24728 Default is @code{1024x512}.
24729
24730 @item mode
24731 Set display mode.
24732 This set how each frequency bin will be represented.
24733
24734 It accepts the following values:
24735 @table @samp
24736 @item line
24737 @item bar
24738 @item dot
24739 @end table
24740 Default is @code{bar}.
24741
24742 @item ascale
24743 Set amplitude scale.
24744
24745 It accepts the following values:
24746 @table @samp
24747 @item lin
24748 Linear scale.
24749
24750 @item sqrt
24751 Square root scale.
24752
24753 @item cbrt
24754 Cubic root scale.
24755
24756 @item log
24757 Logarithmic scale.
24758 @end table
24759 Default is @code{log}.
24760
24761 @item fscale
24762 Set frequency scale.
24763
24764 It accepts the following values:
24765 @table @samp
24766 @item lin
24767 Linear scale.
24768
24769 @item log
24770 Logarithmic scale.
24771
24772 @item rlog
24773 Reverse logarithmic scale.
24774 @end table
24775 Default is @code{lin}.
24776
24777 @item win_size
24778 Set window size. Allowed range is from 16 to 65536.
24779
24780 Default is @code{2048}
24781
24782 @item win_func
24783 Set windowing function.
24784
24785 It accepts the following values:
24786 @table @samp
24787 @item rect
24788 @item bartlett
24789 @item hanning
24790 @item hamming
24791 @item blackman
24792 @item welch
24793 @item flattop
24794 @item bharris
24795 @item bnuttall
24796 @item bhann
24797 @item sine
24798 @item nuttall
24799 @item lanczos
24800 @item gauss
24801 @item tukey
24802 @item dolph
24803 @item cauchy
24804 @item parzen
24805 @item poisson
24806 @item bohman
24807 @end table
24808 Default is @code{hanning}.
24809
24810 @item overlap
24811 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
24812 which means optimal overlap for selected window function will be picked.
24813
24814 @item averaging
24815 Set time averaging. Setting this to 0 will display current maximal peaks.
24816 Default is @code{1}, which means time averaging is disabled.
24817
24818 @item colors
24819 Specify list of colors separated by space or by '|' which will be used to
24820 draw channel frequencies. Unrecognized or missing colors will be replaced
24821 by white color.
24822
24823 @item cmode
24824 Set channel display mode.
24825
24826 It accepts the following values:
24827 @table @samp
24828 @item combined
24829 @item separate
24830 @end table
24831 Default is @code{combined}.
24832
24833 @item minamp
24834 Set minimum amplitude used in @code{log} amplitude scaler.
24835
24836 @end table
24837
24838 @section showspatial
24839
24840 Convert stereo input audio to a video output, representing the spatial relationship
24841 between two channels.
24842
24843 The filter accepts the following options:
24844
24845 @table @option
24846 @item size, s
24847 Specify the video size for the output. For the syntax of this option, check the
24848 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24849 Default value is @code{512x512}.
24850
24851 @item win_size
24852 Set window size. Allowed range is from @var{1024} to @var{65536}. Default size is @var{4096}.
24853
24854 @item win_func
24855 Set window function.
24856
24857 It accepts the following values:
24858 @table @samp
24859 @item rect
24860 @item bartlett
24861 @item hann
24862 @item hanning
24863 @item hamming
24864 @item blackman
24865 @item welch
24866 @item flattop
24867 @item bharris
24868 @item bnuttall
24869 @item bhann
24870 @item sine
24871 @item nuttall
24872 @item lanczos
24873 @item gauss
24874 @item tukey
24875 @item dolph
24876 @item cauchy
24877 @item parzen
24878 @item poisson
24879 @item bohman
24880 @end table
24881
24882 Default value is @code{hann}.
24883
24884 @item overlap
24885 Set ratio of overlap window. Default value is @code{0.5}.
24886 When value is @code{1} overlap is set to recommended size for specific
24887 window function currently used.
24888 @end table
24889
24890 @anchor{showspectrum}
24891 @section showspectrum
24892
24893 Convert input audio to a video output, representing the audio frequency
24894 spectrum.
24895
24896 The filter accepts the following options:
24897
24898 @table @option
24899 @item size, s
24900 Specify the video size for the output. For the syntax of this option, check the
24901 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
24902 Default value is @code{640x512}.
24903
24904 @item slide
24905 Specify how the spectrum should slide along the window.
24906
24907 It accepts the following values:
24908 @table @samp
24909 @item replace
24910 the samples start again on the left when they reach the right
24911 @item scroll
24912 the samples scroll from right to left
24913 @item fullframe
24914 frames are only produced when the samples reach the right
24915 @item rscroll
24916 the samples scroll from left to right
24917 @end table
24918
24919 Default value is @code{replace}.
24920
24921 @item mode
24922 Specify display mode.
24923
24924 It accepts the following values:
24925 @table @samp
24926 @item combined
24927 all channels are displayed in the same row
24928 @item separate
24929 all channels are displayed in separate rows
24930 @end table
24931
24932 Default value is @samp{combined}.
24933
24934 @item color
24935 Specify display color mode.
24936
24937 It accepts the following values:
24938 @table @samp
24939 @item channel
24940 each channel is displayed in a separate color
24941 @item intensity
24942 each channel is displayed using the same color scheme
24943 @item rainbow
24944 each channel is displayed using the rainbow color scheme
24945 @item moreland
24946 each channel is displayed using the moreland color scheme
24947 @item nebulae
24948 each channel is displayed using the nebulae color scheme
24949 @item fire
24950 each channel is displayed using the fire color scheme
24951 @item fiery
24952 each channel is displayed using the fiery color scheme
24953 @item fruit
24954 each channel is displayed using the fruit color scheme
24955 @item cool
24956 each channel is displayed using the cool color scheme
24957 @item magma
24958 each channel is displayed using the magma color scheme
24959 @item green
24960 each channel is displayed using the green color scheme
24961 @item viridis
24962 each channel is displayed using the viridis color scheme
24963 @item plasma
24964 each channel is displayed using the plasma color scheme
24965 @item cividis
24966 each channel is displayed using the cividis color scheme
24967 @item terrain
24968 each channel is displayed using the terrain color scheme
24969 @end table
24970
24971 Default value is @samp{channel}.
24972
24973 @item scale
24974 Specify scale used for calculating intensity color values.
24975
24976 It accepts the following values:
24977 @table @samp
24978 @item lin
24979 linear
24980 @item sqrt
24981 square root, default
24982 @item cbrt
24983 cubic root
24984 @item log
24985 logarithmic
24986 @item 4thrt
24987 4th root
24988 @item 5thrt
24989 5th root
24990 @end table
24991
24992 Default value is @samp{sqrt}.
24993
24994 @item fscale
24995 Specify frequency scale.
24996
24997 It accepts the following values:
24998 @table @samp
24999 @item lin
25000 linear
25001 @item log
25002 logarithmic
25003 @end table
25004
25005 Default value is @samp{lin}.
25006
25007 @item saturation
25008 Set saturation modifier for displayed colors. Negative values provide
25009 alternative color scheme. @code{0} is no saturation at all.
25010 Saturation must be in [-10.0, 10.0] range.
25011 Default value is @code{1}.
25012
25013 @item win_func
25014 Set window function.
25015
25016 It accepts the following values:
25017 @table @samp
25018 @item rect
25019 @item bartlett
25020 @item hann
25021 @item hanning
25022 @item hamming
25023 @item blackman
25024 @item welch
25025 @item flattop
25026 @item bharris
25027 @item bnuttall
25028 @item bhann
25029 @item sine
25030 @item nuttall
25031 @item lanczos
25032 @item gauss
25033 @item tukey
25034 @item dolph
25035 @item cauchy
25036 @item parzen
25037 @item poisson
25038 @item bohman
25039 @end table
25040
25041 Default value is @code{hann}.
25042
25043 @item orientation
25044 Set orientation of time vs frequency axis. Can be @code{vertical} or
25045 @code{horizontal}. Default is @code{vertical}.
25046
25047 @item overlap
25048 Set ratio of overlap window. Default value is @code{0}.
25049 When value is @code{1} overlap is set to recommended size for specific
25050 window function currently used.
25051
25052 @item gain
25053 Set scale gain for calculating intensity color values.
25054 Default value is @code{1}.
25055
25056 @item data
25057 Set which data to display. Can be @code{magnitude}, default or @code{phase}.
25058
25059 @item rotation
25060 Set color rotation, must be in [-1.0, 1.0] range.
25061 Default value is @code{0}.
25062
25063 @item start
25064 Set start frequency from which to display spectrogram. Default is @code{0}.
25065
25066 @item stop
25067 Set stop frequency to which to display spectrogram. Default is @code{0}.
25068
25069 @item fps
25070 Set upper frame rate limit. Default is @code{auto}, unlimited.
25071
25072 @item legend
25073 Draw time and frequency axes and legends. Default is disabled.
25074 @end table
25075
25076 The usage is very similar to the showwaves filter; see the examples in that
25077 section.
25078
25079 @subsection Examples
25080
25081 @itemize
25082 @item
25083 Large window with logarithmic color scaling:
25084 @example
25085 showspectrum=s=1280x480:scale=log
25086 @end example
25087
25088 @item
25089 Complete example for a colored and sliding spectrum per channel using @command{ffplay}:
25090 @example
25091 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
25092              [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
25093 @end example
25094 @end itemize
25095
25096 @section showspectrumpic
25097
25098 Convert input audio to a single video frame, representing the audio frequency
25099 spectrum.
25100
25101 The filter accepts the following options:
25102
25103 @table @option
25104 @item size, s
25105 Specify the video size for the output. For the syntax of this option, check the
25106 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25107 Default value is @code{4096x2048}.
25108
25109 @item mode
25110 Specify display mode.
25111
25112 It accepts the following values:
25113 @table @samp
25114 @item combined
25115 all channels are displayed in the same row
25116 @item separate
25117 all channels are displayed in separate rows
25118 @end table
25119 Default value is @samp{combined}.
25120
25121 @item color
25122 Specify display color mode.
25123
25124 It accepts the following values:
25125 @table @samp
25126 @item channel
25127 each channel is displayed in a separate color
25128 @item intensity
25129 each channel is displayed using the same color scheme
25130 @item rainbow
25131 each channel is displayed using the rainbow color scheme
25132 @item moreland
25133 each channel is displayed using the moreland color scheme
25134 @item nebulae
25135 each channel is displayed using the nebulae color scheme
25136 @item fire
25137 each channel is displayed using the fire color scheme
25138 @item fiery
25139 each channel is displayed using the fiery color scheme
25140 @item fruit
25141 each channel is displayed using the fruit color scheme
25142 @item cool
25143 each channel is displayed using the cool color scheme
25144 @item magma
25145 each channel is displayed using the magma color scheme
25146 @item green
25147 each channel is displayed using the green color scheme
25148 @item viridis
25149 each channel is displayed using the viridis color scheme
25150 @item plasma
25151 each channel is displayed using the plasma color scheme
25152 @item cividis
25153 each channel is displayed using the cividis color scheme
25154 @item terrain
25155 each channel is displayed using the terrain color scheme
25156 @end table
25157 Default value is @samp{intensity}.
25158
25159 @item scale
25160 Specify scale used for calculating intensity color values.
25161
25162 It accepts the following values:
25163 @table @samp
25164 @item lin
25165 linear
25166 @item sqrt
25167 square root, default
25168 @item cbrt
25169 cubic root
25170 @item log
25171 logarithmic
25172 @item 4thrt
25173 4th root
25174 @item 5thrt
25175 5th root
25176 @end table
25177 Default value is @samp{log}.
25178
25179 @item fscale
25180 Specify frequency scale.
25181
25182 It accepts the following values:
25183 @table @samp
25184 @item lin
25185 linear
25186 @item log
25187 logarithmic
25188 @end table
25189
25190 Default value is @samp{lin}.
25191
25192 @item saturation
25193 Set saturation modifier for displayed colors. Negative values provide
25194 alternative color scheme. @code{0} is no saturation at all.
25195 Saturation must be in [-10.0, 10.0] range.
25196 Default value is @code{1}.
25197
25198 @item win_func
25199 Set window function.
25200
25201 It accepts the following values:
25202 @table @samp
25203 @item rect
25204 @item bartlett
25205 @item hann
25206 @item hanning
25207 @item hamming
25208 @item blackman
25209 @item welch
25210 @item flattop
25211 @item bharris
25212 @item bnuttall
25213 @item bhann
25214 @item sine
25215 @item nuttall
25216 @item lanczos
25217 @item gauss
25218 @item tukey
25219 @item dolph
25220 @item cauchy
25221 @item parzen
25222 @item poisson
25223 @item bohman
25224 @end table
25225 Default value is @code{hann}.
25226
25227 @item orientation
25228 Set orientation of time vs frequency axis. Can be @code{vertical} or
25229 @code{horizontal}. Default is @code{vertical}.
25230
25231 @item gain
25232 Set scale gain for calculating intensity color values.
25233 Default value is @code{1}.
25234
25235 @item legend
25236 Draw time and frequency axes and legends. Default is enabled.
25237
25238 @item rotation
25239 Set color rotation, must be in [-1.0, 1.0] range.
25240 Default value is @code{0}.
25241
25242 @item start
25243 Set start frequency from which to display spectrogram. Default is @code{0}.
25244
25245 @item stop
25246 Set stop frequency to which to display spectrogram. Default is @code{0}.
25247 @end table
25248
25249 @subsection Examples
25250
25251 @itemize
25252 @item
25253 Extract an audio spectrogram of a whole audio track
25254 in a 1024x1024 picture using @command{ffmpeg}:
25255 @example
25256 ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
25257 @end example
25258 @end itemize
25259
25260 @section showvolume
25261
25262 Convert input audio volume to a video output.
25263
25264 The filter accepts the following options:
25265
25266 @table @option
25267 @item rate, r
25268 Set video rate.
25269
25270 @item b
25271 Set border width, allowed range is [0, 5]. Default is 1.
25272
25273 @item w
25274 Set channel width, allowed range is [80, 8192]. Default is 400.
25275
25276 @item h
25277 Set channel height, allowed range is [1, 900]. Default is 20.
25278
25279 @item f
25280 Set fade, allowed range is [0, 1]. Default is 0.95.
25281
25282 @item c
25283 Set volume color expression.
25284
25285 The expression can use the following variables:
25286
25287 @table @option
25288 @item VOLUME
25289 Current max volume of channel in dB.
25290
25291 @item PEAK
25292 Current peak.
25293
25294 @item CHANNEL
25295 Current channel number, starting from 0.
25296 @end table
25297
25298 @item t
25299 If set, displays channel names. Default is enabled.
25300
25301 @item v
25302 If set, displays volume values. Default is enabled.
25303
25304 @item o
25305 Set orientation, can be horizontal: @code{h} or vertical: @code{v},
25306 default is @code{h}.
25307
25308 @item s
25309 Set step size, allowed range is [0, 5]. Default is 0, which means
25310 step is disabled.
25311
25312 @item p
25313 Set background opacity, allowed range is [0, 1]. Default is 0.
25314
25315 @item m
25316 Set metering mode, can be peak: @code{p} or rms: @code{r},
25317 default is @code{p}.
25318
25319 @item ds
25320 Set display scale, can be linear: @code{lin} or log: @code{log},
25321 default is @code{lin}.
25322
25323 @item dm
25324 In second.
25325 If set to > 0., display a line for the max level
25326 in the previous seconds.
25327 default is disabled: @code{0.}
25328
25329 @item dmc
25330 The color of the max line. Use when @code{dm} option is set to > 0.
25331 default is: @code{orange}
25332 @end table
25333
25334 @section showwaves
25335
25336 Convert input audio to a video output, representing the samples waves.
25337
25338 The filter accepts the following options:
25339
25340 @table @option
25341 @item size, s
25342 Specify the video size for the output. For the syntax of this option, check the
25343 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25344 Default value is @code{600x240}.
25345
25346 @item mode
25347 Set display mode.
25348
25349 Available values are:
25350 @table @samp
25351 @item point
25352 Draw a point for each sample.
25353
25354 @item line
25355 Draw a vertical line for each sample.
25356
25357 @item p2p
25358 Draw a point for each sample and a line between them.
25359
25360 @item cline
25361 Draw a centered vertical line for each sample.
25362 @end table
25363
25364 Default value is @code{point}.
25365
25366 @item n
25367 Set the number of samples which are printed on the same column. A
25368 larger value will decrease the frame rate. Must be a positive
25369 integer. This option can be set only if the value for @var{rate}
25370 is not explicitly specified.
25371
25372 @item rate, r
25373 Set the (approximate) output frame rate. This is done by setting the
25374 option @var{n}. Default value is "25".
25375
25376 @item split_channels
25377 Set if channels should be drawn separately or overlap. Default value is 0.
25378
25379 @item colors
25380 Set colors separated by '|' which are going to be used for drawing of each channel.
25381
25382 @item scale
25383 Set amplitude scale.
25384
25385 Available values are:
25386 @table @samp
25387 @item lin
25388 Linear.
25389
25390 @item log
25391 Logarithmic.
25392
25393 @item sqrt
25394 Square root.
25395
25396 @item cbrt
25397 Cubic root.
25398 @end table
25399
25400 Default is linear.
25401
25402 @item draw
25403 Set the draw mode. This is mostly useful to set for high @var{n}.
25404
25405 Available values are:
25406 @table @samp
25407 @item scale
25408 Scale pixel values for each drawn sample.
25409
25410 @item full
25411 Draw every sample directly.
25412 @end table
25413
25414 Default value is @code{scale}.
25415 @end table
25416
25417 @subsection Examples
25418
25419 @itemize
25420 @item
25421 Output the input file audio and the corresponding video representation
25422 at the same time:
25423 @example
25424 amovie=a.mp3,asplit[out0],showwaves[out1]
25425 @end example
25426
25427 @item
25428 Create a synthetic signal and show it with showwaves, forcing a
25429 frame rate of 30 frames per second:
25430 @example
25431 aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
25432 @end example
25433 @end itemize
25434
25435 @section showwavespic
25436
25437 Convert input audio to a single video frame, representing the samples waves.
25438
25439 The filter accepts the following options:
25440
25441 @table @option
25442 @item size, s
25443 Specify the video size for the output. For the syntax of this option, check the
25444 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
25445 Default value is @code{600x240}.
25446
25447 @item split_channels
25448 Set if channels should be drawn separately or overlap. Default value is 0.
25449
25450 @item colors
25451 Set colors separated by '|' which are going to be used for drawing of each channel.
25452
25453 @item scale
25454 Set amplitude scale.
25455
25456 Available values are:
25457 @table @samp
25458 @item lin
25459 Linear.
25460
25461 @item log
25462 Logarithmic.
25463
25464 @item sqrt
25465 Square root.
25466
25467 @item cbrt
25468 Cubic root.
25469 @end table
25470
25471 Default is linear.
25472
25473 @item draw
25474 Set the draw mode.
25475
25476 Available values are:
25477 @table @samp
25478 @item scale
25479 Scale pixel values for each drawn sample.
25480
25481 @item full
25482 Draw every sample directly.
25483 @end table
25484
25485 Default value is @code{scale}.
25486
25487 @item filter
25488 Set the filter mode.
25489
25490 Available values are:
25491 @table @samp
25492 @item average
25493 Use average samples values for each drawn sample.
25494
25495 @item peak
25496 Use peak samples values for each drawn sample.
25497 @end table
25498
25499 Default value is @code{average}.
25500 @end table
25501
25502 @subsection Examples
25503
25504 @itemize
25505 @item
25506 Extract a channel split representation of the wave form of a whole audio track
25507 in a 1024x800 picture using @command{ffmpeg}:
25508 @example
25509 ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
25510 @end example
25511 @end itemize
25512
25513 @section sidedata, asidedata
25514
25515 Delete frame side data, or select frames based on it.
25516
25517 This filter accepts the following options:
25518
25519 @table @option
25520 @item mode
25521 Set mode of operation of the filter.
25522
25523 Can be one of the following:
25524
25525 @table @samp
25526 @item select
25527 Select every frame with side data of @code{type}.
25528
25529 @item delete
25530 Delete side data of @code{type}. If @code{type} is not set, delete all side
25531 data in the frame.
25532
25533 @end table
25534
25535 @item type
25536 Set side data type used with all modes. Must be set for @code{select} mode. For
25537 the list of frame side data types, refer to the @code{AVFrameSideDataType} enum
25538 in @file{libavutil/frame.h}. For example, to choose
25539 @code{AV_FRAME_DATA_PANSCAN} side data, you must specify @code{PANSCAN}.
25540
25541 @end table
25542
25543 @section spectrumsynth
25544
25545 Synthesize audio from 2 input video spectrums, first input stream represents
25546 magnitude across time and second represents phase across time.
25547 The filter will transform from frequency domain as displayed in videos back
25548 to time domain as presented in audio output.
25549
25550 This filter is primarily created for reversing processed @ref{showspectrum}
25551 filter outputs, but can synthesize sound from other spectrograms too.
25552 But in such case results are going to be poor if the phase data is not
25553 available, because in such cases phase data need to be recreated, usually
25554 it's just recreated from random noise.
25555 For best results use gray only output (@code{channel} color mode in
25556 @ref{showspectrum} filter) and @code{log} scale for magnitude video and
25557 @code{lin} scale for phase video. To produce phase, for 2nd video, use
25558 @code{data} option. Inputs videos should generally use @code{fullframe}
25559 slide mode as that saves resources needed for decoding video.
25560
25561 The filter accepts the following options:
25562
25563 @table @option
25564 @item sample_rate
25565 Specify sample rate of output audio, the sample rate of audio from which
25566 spectrum was generated may differ.
25567
25568 @item channels
25569 Set number of channels represented in input video spectrums.
25570
25571 @item scale
25572 Set scale which was used when generating magnitude input spectrum.
25573 Can be @code{lin} or @code{log}. Default is @code{log}.
25574
25575 @item slide
25576 Set slide which was used when generating inputs spectrums.
25577 Can be @code{replace}, @code{scroll}, @code{fullframe} or @code{rscroll}.
25578 Default is @code{fullframe}.
25579
25580 @item win_func
25581 Set window function used for resynthesis.
25582
25583 @item overlap
25584 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
25585 which means optimal overlap for selected window function will be picked.
25586
25587 @item orientation
25588 Set orientation of input videos. Can be @code{vertical} or @code{horizontal}.
25589 Default is @code{vertical}.
25590 @end table
25591
25592 @subsection Examples
25593
25594 @itemize
25595 @item
25596 First create magnitude and phase videos from audio, assuming audio is stereo with 44100 sample rate,
25597 then resynthesize videos back to audio with spectrumsynth:
25598 @example
25599 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
25600 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
25601 ffmpeg -i magnitude.nut -i phase.nut -lavfi spectrumsynth=channels=2:sample_rate=44100:win_func=hann:overlap=0.875:slide=fullframe output.flac
25602 @end example
25603 @end itemize
25604
25605 @section split, asplit
25606
25607 Split input into several identical outputs.
25608
25609 @code{asplit} works with audio input, @code{split} with video.
25610
25611 The filter accepts a single parameter which specifies the number of outputs. If
25612 unspecified, it defaults to 2.
25613
25614 @subsection Examples
25615
25616 @itemize
25617 @item
25618 Create two separate outputs from the same input:
25619 @example
25620 [in] split [out0][out1]
25621 @end example
25622
25623 @item
25624 To create 3 or more outputs, you need to specify the number of
25625 outputs, like in:
25626 @example
25627 [in] asplit=3 [out0][out1][out2]
25628 @end example
25629
25630 @item
25631 Create two separate outputs from the same input, one cropped and
25632 one padded:
25633 @example
25634 [in] split [splitout1][splitout2];
25635 [splitout1] crop=100:100:0:0    [cropout];
25636 [splitout2] pad=200:200:100:100 [padout];
25637 @end example
25638
25639 @item
25640 Create 5 copies of the input audio with @command{ffmpeg}:
25641 @example
25642 ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
25643 @end example
25644 @end itemize
25645
25646 @section zmq, azmq
25647
25648 Receive commands sent through a libzmq client, and forward them to
25649 filters in the filtergraph.
25650
25651 @code{zmq} and @code{azmq} work as a pass-through filters. @code{zmq}
25652 must be inserted between two video filters, @code{azmq} between two
25653 audio filters. Both are capable to send messages to any filter type.
25654
25655 To enable these filters you need to install the libzmq library and
25656 headers and configure FFmpeg with @code{--enable-libzmq}.
25657
25658 For more information about libzmq see:
25659 @url{http://www.zeromq.org/}
25660
25661 The @code{zmq} and @code{azmq} filters work as a libzmq server, which
25662 receives messages sent through a network interface defined by the
25663 @option{bind_address} (or the abbreviation "@option{b}") option.
25664 Default value of this option is @file{tcp://localhost:5555}. You may
25665 want to alter this value to your needs, but do not forget to escape any
25666 ':' signs (see @ref{filtergraph escaping}).
25667
25668 The received message must be in the form:
25669 @example
25670 @var{TARGET} @var{COMMAND} [@var{ARG}]
25671 @end example
25672
25673 @var{TARGET} specifies the target of the command, usually the name of
25674 the filter class or a specific filter instance name. The default
25675 filter instance name uses the pattern @samp{Parsed_<filter_name>_<index>},
25676 but you can override this by using the @samp{filter_name@@id} syntax
25677 (see @ref{Filtergraph syntax}).
25678
25679 @var{COMMAND} specifies the name of the command for the target filter.
25680
25681 @var{ARG} is optional and specifies the optional argument list for the
25682 given @var{COMMAND}.
25683
25684 Upon reception, the message is processed and the corresponding command
25685 is injected into the filtergraph. Depending on the result, the filter
25686 will send a reply to the client, adopting the format:
25687 @example
25688 @var{ERROR_CODE} @var{ERROR_REASON}
25689 @var{MESSAGE}
25690 @end example
25691
25692 @var{MESSAGE} is optional.
25693
25694 @subsection Examples
25695
25696 Look at @file{tools/zmqsend} for an example of a zmq client which can
25697 be used to send commands processed by these filters.
25698
25699 Consider the following filtergraph generated by @command{ffplay}.
25700 In this example the last overlay filter has an instance name. All other
25701 filters will have default instance names.
25702
25703 @example
25704 ffplay -dumpgraph 1 -f lavfi "
25705 color=s=100x100:c=red  [l];
25706 color=s=100x100:c=blue [r];
25707 nullsrc=s=200x100, zmq [bg];
25708 [bg][l]   overlay     [bg+l];
25709 [bg+l][r] overlay@@my=x=100 "
25710 @end example
25711
25712 To change the color of the left side of the video, the following
25713 command can be used:
25714 @example
25715 echo Parsed_color_0 c yellow | tools/zmqsend
25716 @end example
25717
25718 To change the right side:
25719 @example
25720 echo Parsed_color_1 c pink | tools/zmqsend
25721 @end example
25722
25723 To change the position of the right side:
25724 @example
25725 echo overlay@@my x 150 | tools/zmqsend
25726 @end example
25727
25728
25729 @c man end MULTIMEDIA FILTERS
25730
25731 @chapter Multimedia Sources
25732 @c man begin MULTIMEDIA SOURCES
25733
25734 Below is a description of the currently available multimedia sources.
25735
25736 @section amovie
25737
25738 This is the same as @ref{movie} source, except it selects an audio
25739 stream by default.
25740
25741 @anchor{movie}
25742 @section movie
25743
25744 Read audio and/or video stream(s) from a movie container.
25745
25746 It accepts the following parameters:
25747
25748 @table @option
25749 @item filename
25750 The name of the resource to read (not necessarily a file; it can also be a
25751 device or a stream accessed through some protocol).
25752
25753 @item format_name, f
25754 Specifies the format assumed for the movie to read, and can be either
25755 the name of a container or an input device. If not specified, the
25756 format is guessed from @var{movie_name} or by probing.
25757
25758 @item seek_point, sp
25759 Specifies the seek point in seconds. The frames will be output
25760 starting from this seek point. The parameter is evaluated with
25761 @code{av_strtod}, so the numerical value may be suffixed by an IS
25762 postfix. The default value is "0".
25763
25764 @item streams, s
25765 Specifies the streams to read. Several streams can be specified,
25766 separated by "+". The source will then have as many outputs, in the
25767 same order. The syntax is explained in the @ref{Stream specifiers,,"Stream specifiers"
25768 section in the ffmpeg manual,ffmpeg}. Two special names, "dv" and "da" specify
25769 respectively the default (best suited) video and audio stream. Default
25770 is "dv", or "da" if the filter is called as "amovie".
25771
25772 @item stream_index, si
25773 Specifies the index of the video stream to read. If the value is -1,
25774 the most suitable video stream will be automatically selected. The default
25775 value is "-1". Deprecated. If the filter is called "amovie", it will select
25776 audio instead of video.
25777
25778 @item loop
25779 Specifies how many times to read the stream in sequence.
25780 If the value is 0, the stream will be looped infinitely.
25781 Default value is "1".
25782
25783 Note that when the movie is looped the source timestamps are not
25784 changed, so it will generate non monotonically increasing timestamps.
25785
25786 @item discontinuity
25787 Specifies the time difference between frames above which the point is
25788 considered a timestamp discontinuity which is removed by adjusting the later
25789 timestamps.
25790 @end table
25791
25792 It allows overlaying a second video on top of the main input of
25793 a filtergraph, as shown in this graph:
25794 @example
25795 input -----------> deltapts0 --> overlay --> output
25796                                     ^
25797                                     |
25798 movie --> scale--> deltapts1 -------+
25799 @end example
25800 @subsection Examples
25801
25802 @itemize
25803 @item
25804 Skip 3.2 seconds from the start of the AVI file in.avi, and overlay it
25805 on top of the input labelled "in":
25806 @example
25807 movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
25808 [in] setpts=PTS-STARTPTS [main];
25809 [main][over] overlay=16:16 [out]
25810 @end example
25811
25812 @item
25813 Read from a video4linux2 device, and overlay it on top of the input
25814 labelled "in":
25815 @example
25816 movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
25817 [in] setpts=PTS-STARTPTS [main];
25818 [main][over] overlay=16:16 [out]
25819 @end example
25820
25821 @item
25822 Read the first video stream and the audio stream with id 0x81 from
25823 dvd.vob; the video is connected to the pad named "video" and the audio is
25824 connected to the pad named "audio":
25825 @example
25826 movie=dvd.vob:s=v:0+#0x81 [video] [audio]
25827 @end example
25828 @end itemize
25829
25830 @subsection Commands
25831
25832 Both movie and amovie support the following commands:
25833 @table @option
25834 @item seek
25835 Perform seek using "av_seek_frame".
25836 The syntax is: seek @var{stream_index}|@var{timestamp}|@var{flags}
25837 @itemize
25838 @item
25839 @var{stream_index}: If stream_index is -1, a default
25840 stream is selected, and @var{timestamp} is automatically converted
25841 from AV_TIME_BASE units to the stream specific time_base.
25842 @item
25843 @var{timestamp}: Timestamp in AVStream.time_base units
25844 or, if no stream is specified, in AV_TIME_BASE units.
25845 @item
25846 @var{flags}: Flags which select direction and seeking mode.
25847 @end itemize
25848
25849 @item get_duration
25850 Get movie duration in AV_TIME_BASE units.
25851
25852 @end table
25853
25854 @c man end MULTIMEDIA SOURCES