]> git.sesse.net Git - ffmpeg/blob - doc/filters.texi
4dd1a5de858d9980596ec082778dad86756aa44d
[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{framesync}
316 @chapter Options for filters with several inputs (framesync)
317 @c man begin OPTIONS FOR FILTERS WITH SEVERAL INPUTS
318
319 Some filters with several inputs support a common set of options.
320 These options can only be set by name, not with the short notation.
321
322 @table @option
323 @item eof_action
324 The action to take when EOF is encountered on the secondary input; it accepts
325 one of the following values:
326
327 @table @option
328 @item repeat
329 Repeat the last frame (the default).
330 @item endall
331 End both streams.
332 @item pass
333 Pass the main input through.
334 @end table
335
336 @item shortest
337 If set to 1, force the output to terminate when the shortest input
338 terminates. Default value is 0.
339
340 @item repeatlast
341 If set to 1, force the filter to extend the last frame of secondary streams
342 until the end of the primary stream. A value of 0 disables this behavior.
343 Default value is 1.
344 @end table
345
346 @c man end OPTIONS FOR FILTERS WITH SEVERAL INPUTS
347
348 @chapter Audio Filters
349 @c man begin AUDIO FILTERS
350
351 When you configure your FFmpeg build, you can disable any of the
352 existing filters using @code{--disable-filters}.
353 The configure output will show the audio filters included in your
354 build.
355
356 Below is a description of the currently available audio filters.
357
358 @section acompressor
359
360 A compressor is mainly used to reduce the dynamic range of a signal.
361 Especially modern music is mostly compressed at a high ratio to
362 improve the overall loudness. It's done to get the highest attention
363 of a listener, "fatten" the sound and bring more "power" to the track.
364 If a signal is compressed too much it may sound dull or "dead"
365 afterwards or it may start to "pump" (which could be a powerful effect
366 but can also destroy a track completely).
367 The right compression is the key to reach a professional sound and is
368 the high art of mixing and mastering. Because of its complex settings
369 it may take a long time to get the right feeling for this kind of effect.
370
371 Compression is done by detecting the volume above a chosen level
372 @code{threshold} and dividing it by the factor set with @code{ratio}.
373 So if you set the threshold to -12dB and your signal reaches -6dB a ratio
374 of 2:1 will result in a signal at -9dB. Because an exact manipulation of
375 the signal would cause distortion of the waveform the reduction can be
376 levelled over the time. This is done by setting "Attack" and "Release".
377 @code{attack} determines how long the signal has to rise above the threshold
378 before any reduction will occur and @code{release} sets the time the signal
379 has to fall below the threshold to reduce the reduction again. Shorter signals
380 than the chosen attack time will be left untouched.
381 The overall reduction of the signal can be made up afterwards with the
382 @code{makeup} setting. So compressing the peaks of a signal about 6dB and
383 raising the makeup to this level results in a signal twice as loud than the
384 source. To gain a softer entry in the compression the @code{knee} flattens the
385 hard edge at the threshold in the range of the chosen decibels.
386
387 The filter accepts the following options:
388
389 @table @option
390 @item level_in
391 Set input gain. Default is 1. Range is between 0.015625 and 64.
392
393 @item mode
394 Set mode of compressor operation. Can be @code{upward} or @code{downward}.
395 Default is @code{downward}.
396
397 @item threshold
398 If a signal of stream rises above this level it will affect the gain
399 reduction.
400 By default it is 0.125. Range is between 0.00097563 and 1.
401
402 @item ratio
403 Set a ratio by which the signal is reduced. 1:2 means that if the level
404 rose 4dB above the threshold, it will be only 2dB above after the reduction.
405 Default is 2. Range is between 1 and 20.
406
407 @item attack
408 Amount of milliseconds the signal has to rise above the threshold before gain
409 reduction starts. Default is 20. Range is between 0.01 and 2000.
410
411 @item release
412 Amount of milliseconds the signal has to fall below the threshold before
413 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
414
415 @item makeup
416 Set the amount by how much signal will be amplified after processing.
417 Default is 1. Range is from 1 to 64.
418
419 @item knee
420 Curve the sharp knee around the threshold to enter gain reduction more softly.
421 Default is 2.82843. Range is between 1 and 8.
422
423 @item link
424 Choose if the @code{average} level between all channels of input stream
425 or the louder(@code{maximum}) channel of input stream affects the
426 reduction. Default is @code{average}.
427
428 @item detection
429 Should the exact signal be taken in case of @code{peak} or an RMS one in case
430 of @code{rms}. Default is @code{rms} which is mostly smoother.
431
432 @item mix
433 How much to use compressed signal in output. Default is 1.
434 Range is between 0 and 1.
435 @end table
436
437 @section acontrast
438 Simple audio dynamic range compression/expansion filter.
439
440 The filter accepts the following options:
441
442 @table @option
443 @item contrast
444 Set contrast. Default is 33. Allowed range is between 0 and 100.
445 @end table
446
447 @section acopy
448
449 Copy the input audio source unchanged to the output. This is mainly useful for
450 testing purposes.
451
452 @section acrossfade
453
454 Apply cross fade from one input audio stream to another input audio stream.
455 The cross fade is applied for specified duration near the end of first stream.
456
457 The filter accepts the following options:
458
459 @table @option
460 @item nb_samples, ns
461 Specify the number of samples for which the cross fade effect has to last.
462 At the end of the cross fade effect the first input audio will be completely
463 silent. Default is 44100.
464
465 @item duration, d
466 Specify the duration of the cross fade effect. See
467 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
468 for the accepted syntax.
469 By default the duration is determined by @var{nb_samples}.
470 If set this option is used instead of @var{nb_samples}.
471
472 @item overlap, o
473 Should first stream end overlap with second stream start. Default is enabled.
474
475 @item curve1
476 Set curve for cross fade transition for first stream.
477
478 @item curve2
479 Set curve for cross fade transition for second stream.
480
481 For description of available curve types see @ref{afade} filter description.
482 @end table
483
484 @subsection Examples
485
486 @itemize
487 @item
488 Cross fade from one input to another:
489 @example
490 ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:c1=exp:c2=exp output.flac
491 @end example
492
493 @item
494 Cross fade from one input to another but without overlapping:
495 @example
496 ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:o=0:c1=exp:c2=exp output.flac
497 @end example
498 @end itemize
499
500 @section acrossover
501 Split audio stream into several bands.
502
503 This filter splits audio stream into two or more frequency ranges.
504 Summing all streams back will give flat output.
505
506 The filter accepts the following options:
507
508 @table @option
509 @item split
510 Set split frequencies. Those must be positive and increasing.
511
512 @item order
513 Set filter order, can be @var{2nd}, @var{4th} or @var{8th}.
514 Default is @var{4th}.
515 @end table
516
517 @section acrusher
518
519 Reduce audio bit resolution.
520
521 This filter is bit crusher with enhanced functionality. A bit crusher
522 is used to audibly reduce number of bits an audio signal is sampled
523 with. This doesn't change the bit depth at all, it just produces the
524 effect. Material reduced in bit depth sounds more harsh and "digital".
525 This filter is able to even round to continuous values instead of discrete
526 bit depths.
527 Additionally it has a D/C offset which results in different crushing of
528 the lower and the upper half of the signal.
529 An Anti-Aliasing setting is able to produce "softer" crushing sounds.
530
531 Another feature of this filter is the logarithmic mode.
532 This setting switches from linear distances between bits to logarithmic ones.
533 The result is a much more "natural" sounding crusher which doesn't gate low
534 signals for example. The human ear has a logarithmic perception,
535 so this kind of crushing is much more pleasant.
536 Logarithmic crushing is also able to get anti-aliased.
537
538 The filter accepts the following options:
539
540 @table @option
541 @item level_in
542 Set level in.
543
544 @item level_out
545 Set level out.
546
547 @item bits
548 Set bit reduction.
549
550 @item mix
551 Set mixing amount.
552
553 @item mode
554 Can be linear: @code{lin} or logarithmic: @code{log}.
555
556 @item dc
557 Set DC.
558
559 @item aa
560 Set anti-aliasing.
561
562 @item samples
563 Set sample reduction.
564
565 @item lfo
566 Enable LFO. By default disabled.
567
568 @item lforange
569 Set LFO range.
570
571 @item lforate
572 Set LFO rate.
573 @end table
574
575 @section acue
576
577 Delay audio filtering until a given wallclock timestamp. See the @ref{cue}
578 filter.
579
580 @section adeclick
581 Remove impulsive noise from input audio.
582
583 Samples detected as impulsive noise are replaced by interpolated samples using
584 autoregressive modelling.
585
586 @table @option
587 @item w
588 Set window size, in milliseconds. Allowed range is from @code{10} to
589 @code{100}. Default value is @code{55} milliseconds.
590 This sets size of window which will be processed at once.
591
592 @item o
593 Set window overlap, in percentage of window size. Allowed range is from
594 @code{50} to @code{95}. Default value is @code{75} percent.
595 Setting this to a very high value increases impulsive noise removal but makes
596 whole process much slower.
597
598 @item a
599 Set autoregression order, in percentage of window size. Allowed range is from
600 @code{0} to @code{25}. Default value is @code{2} percent. This option also
601 controls quality of interpolated samples using neighbour good samples.
602
603 @item t
604 Set threshold value. Allowed range is from @code{1} to @code{100}.
605 Default value is @code{2}.
606 This controls the strength of impulsive noise which is going to be removed.
607 The lower value, the more samples will be detected as impulsive noise.
608
609 @item b
610 Set burst fusion, in percentage of window size. Allowed range is @code{0} to
611 @code{10}. Default value is @code{2}.
612 If any two samples detected as noise are spaced less than this value then any
613 sample between those two samples will be also detected as noise.
614
615 @item m
616 Set overlap method.
617
618 It accepts the following values:
619 @table @option
620 @item a
621 Select overlap-add method. Even not interpolated samples are slightly
622 changed with this method.
623
624 @item s
625 Select overlap-save method. Not interpolated samples remain unchanged.
626 @end table
627
628 Default value is @code{a}.
629 @end table
630
631 @section adeclip
632 Remove clipped samples from input audio.
633
634 Samples detected as clipped are replaced by interpolated samples using
635 autoregressive modelling.
636
637 @table @option
638 @item w
639 Set window size, in milliseconds. Allowed range is from @code{10} to @code{100}.
640 Default value is @code{55} milliseconds.
641 This sets size of window which will be processed at once.
642
643 @item o
644 Set window overlap, in percentage of window size. Allowed range is from @code{50}
645 to @code{95}. Default value is @code{75} percent.
646
647 @item a
648 Set autoregression order, in percentage of window size. Allowed range is from
649 @code{0} to @code{25}. Default value is @code{8} percent. This option also controls
650 quality of interpolated samples using neighbour good samples.
651
652 @item t
653 Set threshold value. Allowed range is from @code{1} to @code{100}.
654 Default value is @code{10}. Higher values make clip detection less aggressive.
655
656 @item n
657 Set size of histogram used to detect clips. Allowed range is from @code{100} to @code{9999}.
658 Default value is @code{1000}. Higher values make clip detection less aggressive.
659
660 @item m
661 Set overlap method.
662
663 It accepts the following values:
664 @table @option
665 @item a
666 Select overlap-add method. Even not interpolated samples are slightly changed
667 with this method.
668
669 @item s
670 Select overlap-save method. Not interpolated samples remain unchanged.
671 @end table
672
673 Default value is @code{a}.
674 @end table
675
676 @section adelay
677
678 Delay one or more audio channels.
679
680 Samples in delayed channel are filled with silence.
681
682 The filter accepts the following option:
683
684 @table @option
685 @item delays
686 Set list of delays in milliseconds for each channel separated by '|'.
687 Unused delays will be silently ignored. If number of given delays is
688 smaller than number of channels all remaining channels will not be delayed.
689 If you want to delay exact number of samples, append 'S' to number.
690 If you want instead to delay in seconds, append 's' to number.
691 @end table
692
693 @subsection Examples
694
695 @itemize
696 @item
697 Delay first channel by 1.5 seconds, the third channel by 0.5 seconds and leave
698 the second channel (and any other channels that may be present) unchanged.
699 @example
700 adelay=1500|0|500
701 @end example
702
703 @item
704 Delay second channel by 500 samples, the third channel by 700 samples and leave
705 the first channel (and any other channels that may be present) unchanged.
706 @example
707 adelay=0|500S|700S
708 @end example
709 @end itemize
710
711 @section aderivative, aintegral
712
713 Compute derivative/integral of audio stream.
714
715 Applying both filters one after another produces original audio.
716
717 @section aecho
718
719 Apply echoing to the input audio.
720
721 Echoes are reflected sound and can occur naturally amongst mountains
722 (and sometimes large buildings) when talking or shouting; digital echo
723 effects emulate this behaviour and are often used to help fill out the
724 sound of a single instrument or vocal. The time difference between the
725 original signal and the reflection is the @code{delay}, and the
726 loudness of the reflected signal is the @code{decay}.
727 Multiple echoes can have different delays and decays.
728
729 A description of the accepted parameters follows.
730
731 @table @option
732 @item in_gain
733 Set input gain of reflected signal. Default is @code{0.6}.
734
735 @item out_gain
736 Set output gain of reflected signal. Default is @code{0.3}.
737
738 @item delays
739 Set list of time intervals in milliseconds between original signal and reflections
740 separated by '|'. Allowed range for each @code{delay} is @code{(0 - 90000.0]}.
741 Default is @code{1000}.
742
743 @item decays
744 Set list of loudness of reflected signals separated by '|'.
745 Allowed range for each @code{decay} is @code{(0 - 1.0]}.
746 Default is @code{0.5}.
747 @end table
748
749 @subsection Examples
750
751 @itemize
752 @item
753 Make it sound as if there are twice as many instruments as are actually playing:
754 @example
755 aecho=0.8:0.88:60:0.4
756 @end example
757
758 @item
759 If delay is very short, then it sound like a (metallic) robot playing music:
760 @example
761 aecho=0.8:0.88:6:0.4
762 @end example
763
764 @item
765 A longer delay will sound like an open air concert in the mountains:
766 @example
767 aecho=0.8:0.9:1000:0.3
768 @end example
769
770 @item
771 Same as above but with one more mountain:
772 @example
773 aecho=0.8:0.9:1000|1800:0.3|0.25
774 @end example
775 @end itemize
776
777 @section aemphasis
778 Audio emphasis filter creates or restores material directly taken from LPs or
779 emphased CDs with different filter curves. E.g. to store music on vinyl the
780 signal has to be altered by a filter first to even out the disadvantages of
781 this recording medium.
782 Once the material is played back the inverse filter has to be applied to
783 restore the distortion of the frequency response.
784
785 The filter accepts the following options:
786
787 @table @option
788 @item level_in
789 Set input gain.
790
791 @item level_out
792 Set output gain.
793
794 @item mode
795 Set filter mode. For restoring material use @code{reproduction} mode, otherwise
796 use @code{production} mode. Default is @code{reproduction} mode.
797
798 @item type
799 Set filter type. Selects medium. Can be one of the following:
800
801 @table @option
802 @item col
803 select Columbia.
804 @item emi
805 select EMI.
806 @item bsi
807 select BSI (78RPM).
808 @item riaa
809 select RIAA.
810 @item cd
811 select Compact Disc (CD).
812 @item 50fm
813 select 50µs (FM).
814 @item 75fm
815 select 75µs (FM).
816 @item 50kf
817 select 50µs (FM-KF).
818 @item 75kf
819 select 75µs (FM-KF).
820 @end table
821 @end table
822
823 @section aeval
824
825 Modify an audio signal according to the specified expressions.
826
827 This filter accepts one or more expressions (one for each channel),
828 which are evaluated and used to modify a corresponding audio signal.
829
830 It accepts the following parameters:
831
832 @table @option
833 @item exprs
834 Set the '|'-separated expressions list for each separate channel. If
835 the number of input channels is greater than the number of
836 expressions, the last specified expression is used for the remaining
837 output channels.
838
839 @item channel_layout, c
840 Set output channel layout. If not specified, the channel layout is
841 specified by the number of expressions. If set to @samp{same}, it will
842 use by default the same input channel layout.
843 @end table
844
845 Each expression in @var{exprs} can contain the following constants and functions:
846
847 @table @option
848 @item ch
849 channel number of the current expression
850
851 @item n
852 number of the evaluated sample, starting from 0
853
854 @item s
855 sample rate
856
857 @item t
858 time of the evaluated sample expressed in seconds
859
860 @item nb_in_channels
861 @item nb_out_channels
862 input and output number of channels
863
864 @item val(CH)
865 the value of input channel with number @var{CH}
866 @end table
867
868 Note: this filter is slow. For faster processing you should use a
869 dedicated filter.
870
871 @subsection Examples
872
873 @itemize
874 @item
875 Half volume:
876 @example
877 aeval=val(ch)/2:c=same
878 @end example
879
880 @item
881 Invert phase of the second channel:
882 @example
883 aeval=val(0)|-val(1)
884 @end example
885 @end itemize
886
887 @anchor{afade}
888 @section afade
889
890 Apply fade-in/out effect to input audio.
891
892 A description of the accepted parameters follows.
893
894 @table @option
895 @item type, t
896 Specify the effect type, can be either @code{in} for fade-in, or
897 @code{out} for a fade-out effect. Default is @code{in}.
898
899 @item start_sample, ss
900 Specify the number of the start sample for starting to apply the fade
901 effect. Default is 0.
902
903 @item nb_samples, ns
904 Specify the number of samples for which the fade effect has to last. At
905 the end of the fade-in effect the output audio will have the same
906 volume as the input audio, at the end of the fade-out transition
907 the output audio will be silence. Default is 44100.
908
909 @item start_time, st
910 Specify the start time of the fade effect. Default is 0.
911 The value must be specified as a time duration; see
912 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
913 for the accepted syntax.
914 If set this option is used instead of @var{start_sample}.
915
916 @item duration, d
917 Specify the duration of the fade effect. See
918 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
919 for the accepted syntax.
920 At the end of the fade-in effect the output audio will have the same
921 volume as the input audio, at the end of the fade-out transition
922 the output audio will be silence.
923 By default the duration is determined by @var{nb_samples}.
924 If set this option is used instead of @var{nb_samples}.
925
926 @item curve
927 Set curve for fade transition.
928
929 It accepts the following values:
930 @table @option
931 @item tri
932 select triangular, linear slope (default)
933 @item qsin
934 select quarter of sine wave
935 @item hsin
936 select half of sine wave
937 @item esin
938 select exponential sine wave
939 @item log
940 select logarithmic
941 @item ipar
942 select inverted parabola
943 @item qua
944 select quadratic
945 @item cub
946 select cubic
947 @item squ
948 select square root
949 @item cbr
950 select cubic root
951 @item par
952 select parabola
953 @item exp
954 select exponential
955 @item iqsin
956 select inverted quarter of sine wave
957 @item ihsin
958 select inverted half of sine wave
959 @item dese
960 select double-exponential seat
961 @item desi
962 select double-exponential sigmoid
963 @item losi
964 select logistic sigmoid
965 @item nofade
966 no fade applied
967 @end table
968 @end table
969
970 @subsection Examples
971
972 @itemize
973 @item
974 Fade in first 15 seconds of audio:
975 @example
976 afade=t=in:ss=0:d=15
977 @end example
978
979 @item
980 Fade out last 25 seconds of a 900 seconds audio:
981 @example
982 afade=t=out:st=875:d=25
983 @end example
984 @end itemize
985
986 @section afftdn
987 Denoise audio samples with FFT.
988
989 A description of the accepted parameters follows.
990
991 @table @option
992 @item nr
993 Set the noise reduction in dB, allowed range is 0.01 to 97.
994 Default value is 12 dB.
995
996 @item nf
997 Set the noise floor in dB, allowed range is -80 to -20.
998 Default value is -50 dB.
999
1000 @item nt
1001 Set the noise type.
1002
1003 It accepts the following values:
1004 @table @option
1005 @item w
1006 Select white noise.
1007
1008 @item v
1009 Select vinyl noise.
1010
1011 @item s
1012 Select shellac noise.
1013
1014 @item c
1015 Select custom noise, defined in @code{bn} option.
1016
1017 Default value is white noise.
1018 @end table
1019
1020 @item bn
1021 Set custom band noise for every one of 15 bands.
1022 Bands are separated by ' ' or '|'.
1023
1024 @item rf
1025 Set the residual floor in dB, allowed range is -80 to -20.
1026 Default value is -38 dB.
1027
1028 @item tn
1029 Enable noise tracking. By default is disabled.
1030 With this enabled, noise floor is automatically adjusted.
1031
1032 @item tr
1033 Enable residual tracking. By default is disabled.
1034
1035 @item om
1036 Set the output mode.
1037
1038 It accepts the following values:
1039 @table @option
1040 @item i
1041 Pass input unchanged.
1042
1043 @item o
1044 Pass noise filtered out.
1045
1046 @item n
1047 Pass only noise.
1048
1049 Default value is @var{o}.
1050 @end table
1051 @end table
1052
1053 @subsection Commands
1054
1055 This filter supports the following commands:
1056 @table @option
1057 @item sample_noise, sn
1058 Start or stop measuring noise profile.
1059 Syntax for the command is : "start" or "stop" string.
1060 After measuring noise profile is stopped it will be
1061 automatically applied in filtering.
1062
1063 @item noise_reduction, nr
1064 Change noise reduction. Argument is single float number.
1065 Syntax for the command is : "@var{noise_reduction}"
1066
1067 @item noise_floor, nf
1068 Change noise floor. Argument is single float number.
1069 Syntax for the command is : "@var{noise_floor}"
1070
1071 @item output_mode, om
1072 Change output mode operation.
1073 Syntax for the command is : "i", "o" or "n" string.
1074 @end table
1075
1076 @section afftfilt
1077 Apply arbitrary expressions to samples in frequency domain.
1078
1079 @table @option
1080 @item real
1081 Set frequency domain real expression for each separate channel separated
1082 by '|'. Default is "re".
1083 If the number of input channels is greater than the number of
1084 expressions, the last specified expression is used for the remaining
1085 output channels.
1086
1087 @item imag
1088 Set frequency domain imaginary expression for each separate channel
1089 separated by '|'. Default is "im".
1090
1091 Each expression in @var{real} and @var{imag} can contain the following
1092 constants and functions:
1093
1094 @table @option
1095 @item sr
1096 sample rate
1097
1098 @item b
1099 current frequency bin number
1100
1101 @item nb
1102 number of available bins
1103
1104 @item ch
1105 channel number of the current expression
1106
1107 @item chs
1108 number of channels
1109
1110 @item pts
1111 current frame pts
1112
1113 @item re
1114 current real part of frequency bin of current channel
1115
1116 @item im
1117 current imaginary part of frequency bin of current channel
1118
1119 @item real(b, ch)
1120 Return the value of real part of frequency bin at location (@var{bin},@var{channel})
1121
1122 @item imag(b, ch)
1123 Return the value of imaginary part of frequency bin at location (@var{bin},@var{channel})
1124 @end table
1125
1126 @item win_size
1127 Set window size.
1128
1129 It accepts the following values:
1130 @table @samp
1131 @item w16
1132 @item w32
1133 @item w64
1134 @item w128
1135 @item w256
1136 @item w512
1137 @item w1024
1138 @item w2048
1139 @item w4096
1140 @item w8192
1141 @item w16384
1142 @item w32768
1143 @item w65536
1144 @end table
1145 Default is @code{w4096}
1146
1147 @item win_func
1148 Set window function. Default is @code{hann}.
1149
1150 @item overlap
1151 Set window overlap. If set to 1, the recommended overlap for selected
1152 window function will be picked. Default is @code{0.75}.
1153 @end table
1154
1155 @subsection Examples
1156
1157 @itemize
1158 @item
1159 Leave almost only low frequencies in audio:
1160 @example
1161 afftfilt="'real=re * (1-clip((b/nb)*b,0,1))':imag='im * (1-clip((b/nb)*b,0,1))'"
1162 @end example
1163 @end itemize
1164
1165 @anchor{afir}
1166 @section afir
1167
1168 Apply an arbitrary Frequency Impulse Response filter.
1169
1170 This filter is designed for applying long FIR filters,
1171 up to 60 seconds long.
1172
1173 It can be used as component for digital crossover filters,
1174 room equalization, cross talk cancellation, wavefield synthesis,
1175 auralization, ambiophonics, ambisonics and spatialization.
1176
1177 This filter uses second stream as FIR coefficients.
1178 If second stream holds single channel, it will be used
1179 for all input channels in first stream, otherwise
1180 number of channels in second stream must be same as
1181 number of channels in first stream.
1182
1183 It accepts the following parameters:
1184
1185 @table @option
1186 @item dry
1187 Set dry gain. This sets input gain.
1188
1189 @item wet
1190 Set wet gain. This sets final output gain.
1191
1192 @item length
1193 Set Impulse Response filter length. Default is 1, which means whole IR is processed.
1194
1195 @item gtype
1196 Enable applying gain measured from power of IR.
1197
1198 Set which approach to use for auto gain measurement.
1199
1200 @table @option
1201 @item none
1202 Do not apply any gain.
1203
1204 @item peak
1205 select peak gain, very conservative approach. This is default value.
1206
1207 @item dc
1208 select DC gain, limited application.
1209
1210 @item gn
1211 select gain to noise approach, this is most popular one.
1212 @end table
1213
1214 @item irgain
1215 Set gain to be applied to IR coefficients before filtering.
1216 Allowed range is 0 to 1. This gain is applied after any gain applied with @var{gtype} option.
1217
1218 @item irfmt
1219 Set format of IR stream. Can be @code{mono} or @code{input}.
1220 Default is @code{input}.
1221
1222 @item maxir
1223 Set max allowed Impulse Response filter duration in seconds. Default is 30 seconds.
1224 Allowed range is 0.1 to 60 seconds.
1225
1226 @item response
1227 Show IR frequency response, magnitude(magenta), phase(green) and group delay(yellow) in additional video stream.
1228 By default it is disabled.
1229
1230 @item channel
1231 Set for which IR channel to display frequency response. By default is first channel
1232 displayed. This option is used only when @var{response} is enabled.
1233
1234 @item size
1235 Set video stream size. This option is used only when @var{response} is enabled.
1236
1237 @item rate
1238 Set video stream frame rate. This option is used only when @var{response} is enabled.
1239
1240 @item minp
1241 Set minimal partition size used for convolution. Default is @var{8192}.
1242 Allowed range is from @var{8} to @var{32768}.
1243 Lower values decreases latency at cost of higher CPU usage.
1244
1245 @item maxp
1246 Set maximal partition size used for convolution. Default is @var{8192}.
1247 Allowed range is from @var{8} to @var{32768}.
1248 Lower values may increase CPU usage.
1249 @end table
1250
1251 @subsection Examples
1252
1253 @itemize
1254 @item
1255 Apply reverb to stream using mono IR file as second input, complete command using ffmpeg:
1256 @example
1257 ffmpeg -i input.wav -i middle_tunnel_1way_mono.wav -lavfi afir output.wav
1258 @end example
1259 @end itemize
1260
1261 @anchor{aformat}
1262 @section aformat
1263
1264 Set output format constraints for the input audio. The framework will
1265 negotiate the most appropriate format to minimize conversions.
1266
1267 It accepts the following parameters:
1268 @table @option
1269
1270 @item sample_fmts
1271 A '|'-separated list of requested sample formats.
1272
1273 @item sample_rates
1274 A '|'-separated list of requested sample rates.
1275
1276 @item channel_layouts
1277 A '|'-separated list of requested channel layouts.
1278
1279 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1280 for the required syntax.
1281 @end table
1282
1283 If a parameter is omitted, all values are allowed.
1284
1285 Force the output to either unsigned 8-bit or signed 16-bit stereo
1286 @example
1287 aformat=sample_fmts=u8|s16:channel_layouts=stereo
1288 @end example
1289
1290 @section agate
1291
1292 A gate is mainly used to reduce lower parts of a signal. This kind of signal
1293 processing reduces disturbing noise between useful signals.
1294
1295 Gating is done by detecting the volume below a chosen level @var{threshold}
1296 and dividing it by the factor set with @var{ratio}. The bottom of the noise
1297 floor is set via @var{range}. Because an exact manipulation of the signal
1298 would cause distortion of the waveform the reduction can be levelled over
1299 time. This is done by setting @var{attack} and @var{release}.
1300
1301 @var{attack} determines how long the signal has to fall below the threshold
1302 before any reduction will occur and @var{release} sets the time the signal
1303 has to rise above the threshold to reduce the reduction again.
1304 Shorter signals than the chosen attack time will be left untouched.
1305
1306 @table @option
1307 @item level_in
1308 Set input level before filtering.
1309 Default is 1. Allowed range is from 0.015625 to 64.
1310
1311 @item mode
1312 Set the mode of operation. Can be @code{upward} or @code{downward}.
1313 Default is @code{downward}. If set to @code{upward} mode, higher parts of signal
1314 will be amplified, expanding dynamic range in upward direction.
1315 Otherwise, in case of @code{downward} lower parts of signal will be reduced.
1316
1317 @item range
1318 Set the level of gain reduction when the signal is below the threshold.
1319 Default is 0.06125. Allowed range is from 0 to 1.
1320 Setting this to 0 disables reduction and then filter behaves like expander.
1321
1322 @item threshold
1323 If a signal rises above this level the gain reduction is released.
1324 Default is 0.125. Allowed range is from 0 to 1.
1325
1326 @item ratio
1327 Set a ratio by which the signal is reduced.
1328 Default is 2. Allowed range is from 1 to 9000.
1329
1330 @item attack
1331 Amount of milliseconds the signal has to rise above the threshold before gain
1332 reduction stops.
1333 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
1334
1335 @item release
1336 Amount of milliseconds the signal has to fall below the threshold before the
1337 reduction is increased again. Default is 250 milliseconds.
1338 Allowed range is from 0.01 to 9000.
1339
1340 @item makeup
1341 Set amount of amplification of signal after processing.
1342 Default is 1. Allowed range is from 1 to 64.
1343
1344 @item knee
1345 Curve the sharp knee around the threshold to enter gain reduction more softly.
1346 Default is 2.828427125. Allowed range is from 1 to 8.
1347
1348 @item detection
1349 Choose if exact signal should be taken for detection or an RMS like one.
1350 Default is @code{rms}. Can be @code{peak} or @code{rms}.
1351
1352 @item link
1353 Choose if the average level between all channels or the louder channel affects
1354 the reduction.
1355 Default is @code{average}. Can be @code{average} or @code{maximum}.
1356 @end table
1357
1358 @section aiir
1359
1360 Apply an arbitrary Infinite Impulse Response filter.
1361
1362 It accepts the following parameters:
1363
1364 @table @option
1365 @item z
1366 Set numerator/zeros coefficients.
1367
1368 @item p
1369 Set denominator/poles coefficients.
1370
1371 @item k
1372 Set channels gains.
1373
1374 @item dry_gain
1375 Set input gain.
1376
1377 @item wet_gain
1378 Set output gain.
1379
1380 @item f
1381 Set coefficients format.
1382
1383 @table @samp
1384 @item tf
1385 transfer function
1386 @item zp
1387 Z-plane zeros/poles, cartesian (default)
1388 @item pr
1389 Z-plane zeros/poles, polar radians
1390 @item pd
1391 Z-plane zeros/poles, polar degrees
1392 @end table
1393
1394 @item r
1395 Set kind of processing.
1396 Can be @code{d} - direct or @code{s} - serial cascading. Default is @code{s}.
1397
1398 @item e
1399 Set filtering precision.
1400
1401 @table @samp
1402 @item dbl
1403 double-precision floating-point (default)
1404 @item flt
1405 single-precision floating-point
1406 @item i32
1407 32-bit integers
1408 @item i16
1409 16-bit integers
1410 @end table
1411
1412 @item response
1413 Show IR frequency response, magnitude and phase in additional video stream.
1414 By default it is disabled.
1415
1416 @item channel
1417 Set for which IR channel to display frequency response. By default is first channel
1418 displayed. This option is used only when @var{response} is enabled.
1419
1420 @item size
1421 Set video stream size. This option is used only when @var{response} is enabled.
1422 @end table
1423
1424 Coefficients in @code{tf} format are separated by spaces and are in ascending
1425 order.
1426
1427 Coefficients in @code{zp} format are separated by spaces and order of coefficients
1428 doesn't matter. Coefficients in @code{zp} format are complex numbers with @var{i}
1429 imaginary unit.
1430
1431 Different coefficients and gains can be provided for every channel, in such case
1432 use '|' to separate coefficients or gains. Last provided coefficients will be
1433 used for all remaining channels.
1434
1435 @subsection Examples
1436
1437 @itemize
1438 @item
1439 Apply 2 pole elliptic notch at around 5000Hz for 48000 Hz sample rate:
1440 @example
1441 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
1442 @end example
1443
1444 @item
1445 Same as above but in @code{zp} format:
1446 @example
1447 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
1448 @end example
1449 @end itemize
1450
1451 @section alimiter
1452
1453 The limiter prevents an input signal from rising over a desired threshold.
1454 This limiter uses lookahead technology to prevent your signal from distorting.
1455 It means that there is a small delay after the signal is processed. Keep in mind
1456 that the delay it produces is the attack time you set.
1457
1458 The filter accepts the following options:
1459
1460 @table @option
1461 @item level_in
1462 Set input gain. Default is 1.
1463
1464 @item level_out
1465 Set output gain. Default is 1.
1466
1467 @item limit
1468 Don't let signals above this level pass the limiter. Default is 1.
1469
1470 @item attack
1471 The limiter will reach its attenuation level in this amount of time in
1472 milliseconds. Default is 5 milliseconds.
1473
1474 @item release
1475 Come back from limiting to attenuation 1.0 in this amount of milliseconds.
1476 Default is 50 milliseconds.
1477
1478 @item asc
1479 When gain reduction is always needed ASC takes care of releasing to an
1480 average reduction level rather than reaching a reduction of 0 in the release
1481 time.
1482
1483 @item asc_level
1484 Select how much the release time is affected by ASC, 0 means nearly no changes
1485 in release time while 1 produces higher release times.
1486
1487 @item level
1488 Auto level output signal. Default is enabled.
1489 This normalizes audio back to 0dB if enabled.
1490 @end table
1491
1492 Depending on picked setting it is recommended to upsample input 2x or 4x times
1493 with @ref{aresample} before applying this filter.
1494
1495 @section allpass
1496
1497 Apply a two-pole all-pass filter with central frequency (in Hz)
1498 @var{frequency}, and filter-width @var{width}.
1499 An all-pass filter changes the audio's frequency to phase relationship
1500 without changing its frequency to amplitude relationship.
1501
1502 The filter accepts the following options:
1503
1504 @table @option
1505 @item frequency, f
1506 Set frequency in Hz.
1507
1508 @item width_type, t
1509 Set method to specify band-width of filter.
1510 @table @option
1511 @item h
1512 Hz
1513 @item q
1514 Q-Factor
1515 @item o
1516 octave
1517 @item s
1518 slope
1519 @item k
1520 kHz
1521 @end table
1522
1523 @item width, w
1524 Specify the band-width of a filter in width_type units.
1525
1526 @item channels, c
1527 Specify which channels to filter, by default all available are filtered.
1528 @end table
1529
1530 @subsection Commands
1531
1532 This filter supports the following commands:
1533 @table @option
1534 @item frequency, f
1535 Change allpass frequency.
1536 Syntax for the command is : "@var{frequency}"
1537
1538 @item width_type, t
1539 Change allpass width_type.
1540 Syntax for the command is : "@var{width_type}"
1541
1542 @item width, w
1543 Change allpass width.
1544 Syntax for the command is : "@var{width}"
1545 @end table
1546
1547 @section aloop
1548
1549 Loop audio samples.
1550
1551 The filter accepts the following options:
1552
1553 @table @option
1554 @item loop
1555 Set the number of loops. Setting this value to -1 will result in infinite loops.
1556 Default is 0.
1557
1558 @item size
1559 Set maximal number of samples. Default is 0.
1560
1561 @item start
1562 Set first sample of loop. Default is 0.
1563 @end table
1564
1565 @anchor{amerge}
1566 @section amerge
1567
1568 Merge two or more audio streams into a single multi-channel stream.
1569
1570 The filter accepts the following options:
1571
1572 @table @option
1573
1574 @item inputs
1575 Set the number of inputs. Default is 2.
1576
1577 @end table
1578
1579 If the channel layouts of the inputs are disjoint, and therefore compatible,
1580 the channel layout of the output will be set accordingly and the channels
1581 will be reordered as necessary. If the channel layouts of the inputs are not
1582 disjoint, the output will have all the channels of the first input then all
1583 the channels of the second input, in that order, and the channel layout of
1584 the output will be the default value corresponding to the total number of
1585 channels.
1586
1587 For example, if the first input is in 2.1 (FL+FR+LF) and the second input
1588 is FC+BL+BR, then the output will be in 5.1, with the channels in the
1589 following order: a1, a2, b1, a3, b2, b3 (a1 is the first channel of the
1590 first input, b1 is the first channel of the second input).
1591
1592 On the other hand, if both input are in stereo, the output channels will be
1593 in the default order: a1, a2, b1, b2, and the channel layout will be
1594 arbitrarily set to 4.0, which may or may not be the expected value.
1595
1596 All inputs must have the same sample rate, and format.
1597
1598 If inputs do not have the same duration, the output will stop with the
1599 shortest.
1600
1601 @subsection Examples
1602
1603 @itemize
1604 @item
1605 Merge two mono files into a stereo stream:
1606 @example
1607 amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
1608 @end example
1609
1610 @item
1611 Multiple merges assuming 1 video stream and 6 audio streams in @file{input.mkv}:
1612 @example
1613 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
1614 @end example
1615 @end itemize
1616
1617 @section amix
1618
1619 Mixes multiple audio inputs into a single output.
1620
1621 Note that this filter only supports float samples (the @var{amerge}
1622 and @var{pan} audio filters support many formats). If the @var{amix}
1623 input has integer samples then @ref{aresample} will be automatically
1624 inserted to perform the conversion to float samples.
1625
1626 For example
1627 @example
1628 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
1629 @end example
1630 will mix 3 input audio streams to a single output with the same duration as the
1631 first input and a dropout transition time of 3 seconds.
1632
1633 It accepts the following parameters:
1634 @table @option
1635
1636 @item inputs
1637 The number of inputs. If unspecified, it defaults to 2.
1638
1639 @item duration
1640 How to determine the end-of-stream.
1641 @table @option
1642
1643 @item longest
1644 The duration of the longest input. (default)
1645
1646 @item shortest
1647 The duration of the shortest input.
1648
1649 @item first
1650 The duration of the first input.
1651
1652 @end table
1653
1654 @item dropout_transition
1655 The transition time, in seconds, for volume renormalization when an input
1656 stream ends. The default value is 2 seconds.
1657
1658 @item weights
1659 Specify weight of each input audio stream as sequence.
1660 Each weight is separated by space. By default all inputs have same weight.
1661 @end table
1662
1663 @section amultiply
1664
1665 Multiply first audio stream with second audio stream and store result
1666 in output audio stream. Multiplication is done by multiplying each
1667 sample from first stream with sample at same position from second stream.
1668
1669 With this element-wise multiplication one can create amplitude fades and
1670 amplitude modulations.
1671
1672 @section anequalizer
1673
1674 High-order parametric multiband equalizer for each channel.
1675
1676 It accepts the following parameters:
1677 @table @option
1678 @item params
1679
1680 This option string is in format:
1681 "c@var{chn} f=@var{cf} w=@var{w} g=@var{g} t=@var{f} | ..."
1682 Each equalizer band is separated by '|'.
1683
1684 @table @option
1685 @item chn
1686 Set channel number to which equalization will be applied.
1687 If input doesn't have that channel the entry is ignored.
1688
1689 @item f
1690 Set central frequency for band.
1691 If input doesn't have that frequency the entry is ignored.
1692
1693 @item w
1694 Set band width in hertz.
1695
1696 @item g
1697 Set band gain in dB.
1698
1699 @item t
1700 Set filter type for band, optional, can be:
1701
1702 @table @samp
1703 @item 0
1704 Butterworth, this is default.
1705
1706 @item 1
1707 Chebyshev type 1.
1708
1709 @item 2
1710 Chebyshev type 2.
1711 @end table
1712 @end table
1713
1714 @item curves
1715 With this option activated frequency response of anequalizer is displayed
1716 in video stream.
1717
1718 @item size
1719 Set video stream size. Only useful if curves option is activated.
1720
1721 @item mgain
1722 Set max gain that will be displayed. Only useful if curves option is activated.
1723 Setting this to a reasonable value makes it possible to display gain which is derived from
1724 neighbour bands which are too close to each other and thus produce higher gain
1725 when both are activated.
1726
1727 @item fscale
1728 Set frequency scale used to draw frequency response in video output.
1729 Can be linear or logarithmic. Default is logarithmic.
1730
1731 @item colors
1732 Set color for each channel curve which is going to be displayed in video stream.
1733 This is list of color names separated by space or by '|'.
1734 Unrecognised or missing colors will be replaced by white color.
1735 @end table
1736
1737 @subsection Examples
1738
1739 @itemize
1740 @item
1741 Lower gain by 10 of central frequency 200Hz and width 100 Hz
1742 for first 2 channels using Chebyshev type 1 filter:
1743 @example
1744 anequalizer=c0 f=200 w=100 g=-10 t=1|c1 f=200 w=100 g=-10 t=1
1745 @end example
1746 @end itemize
1747
1748 @subsection Commands
1749
1750 This filter supports the following commands:
1751 @table @option
1752 @item change
1753 Alter existing filter parameters.
1754 Syntax for the commands is : "@var{fN}|f=@var{freq}|w=@var{width}|g=@var{gain}"
1755
1756 @var{fN} is existing filter number, starting from 0, if no such filter is available
1757 error is returned.
1758 @var{freq} set new frequency parameter.
1759 @var{width} set new width parameter in herz.
1760 @var{gain} set new gain parameter in dB.
1761
1762 Full filter invocation with asendcmd may look like this:
1763 asendcmd=c='4.0 anequalizer change 0|f=200|w=50|g=1',anequalizer=...
1764 @end table
1765
1766 @section anlmdn
1767
1768 Reduce broadband noise in audio samples using Non-Local Means algorithm.
1769
1770 Each sample is adjusted by looking for other samples with similar contexts. This
1771 context similarity is defined by comparing their surrounding patches of size
1772 @option{p}. Patches are searched in an area of @option{r} around the sample.
1773
1774 The filter accepts the following options.
1775
1776 @table @option
1777 @item s
1778 Set denoising strength. Allowed range is from 0.00001 to 10. Default value is 0.00001.
1779
1780 @item p
1781 Set patch radius duration. Allowed range is from 1 to 100 milliseconds.
1782 Default value is 2 milliseconds.
1783
1784 @item r
1785 Set research radius duration. Allowed range is from 2 to 300 milliseconds.
1786 Default value is 6 milliseconds.
1787
1788 @item o
1789 Set the output mode.
1790
1791 It accepts the following values:
1792 @table @option
1793 @item i
1794 Pass input unchanged.
1795
1796 @item o
1797 Pass noise filtered out.
1798
1799 @item n
1800 Pass only noise.
1801
1802 Default value is @var{o}.
1803 @end table
1804 @end table
1805
1806 @section anull
1807
1808 Pass the audio source unchanged to the output.
1809
1810 @section apad
1811
1812 Pad the end of an audio stream with silence.
1813
1814 This can be used together with @command{ffmpeg} @option{-shortest} to
1815 extend audio streams to the same length as the video stream.
1816
1817 A description of the accepted options follows.
1818
1819 @table @option
1820 @item packet_size
1821 Set silence packet size. Default value is 4096.
1822
1823 @item pad_len
1824 Set the number of samples of silence to add to the end. After the
1825 value is reached, the stream is terminated. This option is mutually
1826 exclusive with @option{whole_len}.
1827
1828 @item whole_len
1829 Set the minimum total number of samples in the output audio stream. If
1830 the value is longer than the input audio length, silence is added to
1831 the end, until the value is reached. This option is mutually exclusive
1832 with @option{pad_len}.
1833
1834 @item pad_dur
1835 Specify the duration of samples of silence to add. See
1836 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1837 for the accepted syntax. Used only if set to non-zero value.
1838
1839 @item whole_dur
1840 Specify the minimum total duration in the output audio stream. See
1841 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1842 for the accepted syntax. Used only if set to non-zero value. If the value is longer than
1843 the input audio length, silence is added to the end, until the value is reached.
1844 This option is mutually exclusive with @option{pad_dur}
1845 @end table
1846
1847 If neither the @option{pad_len} nor the @option{whole_len} nor @option{pad_dur}
1848 nor @option{whole_dur} option is set, the filter will add silence to the end of
1849 the input stream indefinitely.
1850
1851 @subsection Examples
1852
1853 @itemize
1854 @item
1855 Add 1024 samples of silence to the end of the input:
1856 @example
1857 apad=pad_len=1024
1858 @end example
1859
1860 @item
1861 Make sure the audio output will contain at least 10000 samples, pad
1862 the input with silence if required:
1863 @example
1864 apad=whole_len=10000
1865 @end example
1866
1867 @item
1868 Use @command{ffmpeg} to pad the audio input with silence, so that the
1869 video stream will always result the shortest and will be converted
1870 until the end in the output file when using the @option{shortest}
1871 option:
1872 @example
1873 ffmpeg -i VIDEO -i AUDIO -filter_complex "[1:0]apad" -shortest OUTPUT
1874 @end example
1875 @end itemize
1876
1877 @section aphaser
1878 Add a phasing effect to the input audio.
1879
1880 A phaser filter creates series of peaks and troughs in the frequency spectrum.
1881 The position of the peaks and troughs are modulated so that they vary over time, creating a sweeping effect.
1882
1883 A description of the accepted parameters follows.
1884
1885 @table @option
1886 @item in_gain
1887 Set input gain. Default is 0.4.
1888
1889 @item out_gain
1890 Set output gain. Default is 0.74
1891
1892 @item delay
1893 Set delay in milliseconds. Default is 3.0.
1894
1895 @item decay
1896 Set decay. Default is 0.4.
1897
1898 @item speed
1899 Set modulation speed in Hz. Default is 0.5.
1900
1901 @item type
1902 Set modulation type. Default is triangular.
1903
1904 It accepts the following values:
1905 @table @samp
1906 @item triangular, t
1907 @item sinusoidal, s
1908 @end table
1909 @end table
1910
1911 @section apulsator
1912
1913 Audio pulsator is something between an autopanner and a tremolo.
1914 But it can produce funny stereo effects as well. Pulsator changes the volume
1915 of the left and right channel based on a LFO (low frequency oscillator) with
1916 different waveforms and shifted phases.
1917 This filter have the ability to define an offset between left and right
1918 channel. An offset of 0 means that both LFO shapes match each other.
1919 The left and right channel are altered equally - a conventional tremolo.
1920 An offset of 50% means that the shape of the right channel is exactly shifted
1921 in phase (or moved backwards about half of the frequency) - pulsator acts as
1922 an autopanner. At 1 both curves match again. Every setting in between moves the
1923 phase shift gapless between all stages and produces some "bypassing" sounds with
1924 sine and triangle waveforms. The more you set the offset near 1 (starting from
1925 the 0.5) the faster the signal passes from the left to the right speaker.
1926
1927 The filter accepts the following options:
1928
1929 @table @option
1930 @item level_in
1931 Set input gain. By default it is 1. Range is [0.015625 - 64].
1932
1933 @item level_out
1934 Set output gain. By default it is 1. Range is [0.015625 - 64].
1935
1936 @item mode
1937 Set waveform shape the LFO will use. Can be one of: sine, triangle, square,
1938 sawup or sawdown. Default is sine.
1939
1940 @item amount
1941 Set modulation. Define how much of original signal is affected by the LFO.
1942
1943 @item offset_l
1944 Set left channel offset. Default is 0. Allowed range is [0 - 1].
1945
1946 @item offset_r
1947 Set right channel offset. Default is 0.5. Allowed range is [0 - 1].
1948
1949 @item width
1950 Set pulse width. Default is 1. Allowed range is [0 - 2].
1951
1952 @item timing
1953 Set possible timing mode. Can be one of: bpm, ms or hz. Default is hz.
1954
1955 @item bpm
1956 Set bpm. Default is 120. Allowed range is [30 - 300]. Only used if timing
1957 is set to bpm.
1958
1959 @item ms
1960 Set ms. Default is 500. Allowed range is [10 - 2000]. Only used if timing
1961 is set to ms.
1962
1963 @item hz
1964 Set frequency in Hz. Default is 2. Allowed range is [0.01 - 100]. Only used
1965 if timing is set to hz.
1966 @end table
1967
1968 @anchor{aresample}
1969 @section aresample
1970
1971 Resample the input audio to the specified parameters, using the
1972 libswresample library. If none are specified then the filter will
1973 automatically convert between its input and output.
1974
1975 This filter is also able to stretch/squeeze the audio data to make it match
1976 the timestamps or to inject silence / cut out audio to make it match the
1977 timestamps, do a combination of both or do neither.
1978
1979 The filter accepts the syntax
1980 [@var{sample_rate}:]@var{resampler_options}, where @var{sample_rate}
1981 expresses a sample rate and @var{resampler_options} is a list of
1982 @var{key}=@var{value} pairs, separated by ":". See the
1983 @ref{Resampler Options,,"Resampler Options" section in the
1984 ffmpeg-resampler(1) manual,ffmpeg-resampler}
1985 for the complete list of supported options.
1986
1987 @subsection Examples
1988
1989 @itemize
1990 @item
1991 Resample the input audio to 44100Hz:
1992 @example
1993 aresample=44100
1994 @end example
1995
1996 @item
1997 Stretch/squeeze samples to the given timestamps, with a maximum of 1000
1998 samples per second compensation:
1999 @example
2000 aresample=async=1000
2001 @end example
2002 @end itemize
2003
2004 @section areverse
2005
2006 Reverse an audio clip.
2007
2008 Warning: This filter requires memory to buffer the entire clip, so trimming
2009 is suggested.
2010
2011 @subsection Examples
2012
2013 @itemize
2014 @item
2015 Take the first 5 seconds of a clip, and reverse it.
2016 @example
2017 atrim=end=5,areverse
2018 @end example
2019 @end itemize
2020
2021 @section asetnsamples
2022
2023 Set the number of samples per each output audio frame.
2024
2025 The last output packet may contain a different number of samples, as
2026 the filter will flush all the remaining samples when the input audio
2027 signals its end.
2028
2029 The filter accepts the following options:
2030
2031 @table @option
2032
2033 @item nb_out_samples, n
2034 Set the number of frames per each output audio frame. The number is
2035 intended as the number of samples @emph{per each channel}.
2036 Default value is 1024.
2037
2038 @item pad, p
2039 If set to 1, the filter will pad the last audio frame with zeroes, so
2040 that the last frame will contain the same number of samples as the
2041 previous ones. Default value is 1.
2042 @end table
2043
2044 For example, to set the number of per-frame samples to 1234 and
2045 disable padding for the last frame, use:
2046 @example
2047 asetnsamples=n=1234:p=0
2048 @end example
2049
2050 @section asetrate
2051
2052 Set the sample rate without altering the PCM data.
2053 This will result in a change of speed and pitch.
2054
2055 The filter accepts the following options:
2056
2057 @table @option
2058 @item sample_rate, r
2059 Set the output sample rate. Default is 44100 Hz.
2060 @end table
2061
2062 @section ashowinfo
2063
2064 Show a line containing various information for each input audio frame.
2065 The input audio is not modified.
2066
2067 The shown line contains a sequence of key/value pairs of the form
2068 @var{key}:@var{value}.
2069
2070 The following values are shown in the output:
2071
2072 @table @option
2073 @item n
2074 The (sequential) number of the input frame, starting from 0.
2075
2076 @item pts
2077 The presentation timestamp of the input frame, in time base units; the time base
2078 depends on the filter input pad, and is usually 1/@var{sample_rate}.
2079
2080 @item pts_time
2081 The presentation timestamp of the input frame in seconds.
2082
2083 @item pos
2084 position of the frame in the input stream, -1 if this information in
2085 unavailable and/or meaningless (for example in case of synthetic audio)
2086
2087 @item fmt
2088 The sample format.
2089
2090 @item chlayout
2091 The channel layout.
2092
2093 @item rate
2094 The sample rate for the audio frame.
2095
2096 @item nb_samples
2097 The number of samples (per channel) in the frame.
2098
2099 @item checksum
2100 The Adler-32 checksum (printed in hexadecimal) of the audio data. For planar
2101 audio, the data is treated as if all the planes were concatenated.
2102
2103 @item plane_checksums
2104 A list of Adler-32 checksums for each data plane.
2105 @end table
2106
2107 @anchor{astats}
2108 @section astats
2109
2110 Display time domain statistical information about the audio channels.
2111 Statistics are calculated and displayed for each audio channel and,
2112 where applicable, an overall figure is also given.
2113
2114 It accepts the following option:
2115 @table @option
2116 @item length
2117 Short window length in seconds, used for peak and trough RMS measurement.
2118 Default is @code{0.05} (50 milliseconds). Allowed range is @code{[0.01 - 10]}.
2119
2120 @item metadata
2121
2122 Set metadata injection. All the metadata keys are prefixed with @code{lavfi.astats.X},
2123 where @code{X} is channel number starting from 1 or string @code{Overall}. Default is
2124 disabled.
2125
2126 Available keys for each channel are:
2127 DC_offset
2128 Min_level
2129 Max_level
2130 Min_difference
2131 Max_difference
2132 Mean_difference
2133 RMS_difference
2134 Peak_level
2135 RMS_peak
2136 RMS_trough
2137 Crest_factor
2138 Flat_factor
2139 Peak_count
2140 Bit_depth
2141 Dynamic_range
2142 Zero_crossings
2143 Zero_crossings_rate
2144
2145 and for Overall:
2146 DC_offset
2147 Min_level
2148 Max_level
2149 Min_difference
2150 Max_difference
2151 Mean_difference
2152 RMS_difference
2153 Peak_level
2154 RMS_level
2155 RMS_peak
2156 RMS_trough
2157 Flat_factor
2158 Peak_count
2159 Bit_depth
2160 Number_of_samples
2161
2162 For example full key look like this @code{lavfi.astats.1.DC_offset} or
2163 this @code{lavfi.astats.Overall.Peak_count}.
2164
2165 For description what each key means read below.
2166
2167 @item reset
2168 Set number of frame after which stats are going to be recalculated.
2169 Default is disabled.
2170
2171 @item measure_perchannel
2172 Select the entries which need to be measured per channel. The metadata keys can
2173 be used as flags, default is @option{all} which measures everything.
2174 @option{none} disables all per channel measurement.
2175
2176 @item measure_overall
2177 Select the entries which need to be measured overall. The metadata keys can
2178 be used as flags, default is @option{all} which measures everything.
2179 @option{none} disables all overall measurement.
2180
2181 @end table
2182
2183 A description of each shown parameter follows:
2184
2185 @table @option
2186 @item DC offset
2187 Mean amplitude displacement from zero.
2188
2189 @item Min level
2190 Minimal sample level.
2191
2192 @item Max level
2193 Maximal sample level.
2194
2195 @item Min difference
2196 Minimal difference between two consecutive samples.
2197
2198 @item Max difference
2199 Maximal difference between two consecutive samples.
2200
2201 @item Mean difference
2202 Mean difference between two consecutive samples.
2203 The average of each difference between two consecutive samples.
2204
2205 @item RMS difference
2206 Root Mean Square difference between two consecutive samples.
2207
2208 @item Peak level dB
2209 @item RMS level dB
2210 Standard peak and RMS level measured in dBFS.
2211
2212 @item RMS peak dB
2213 @item RMS trough dB
2214 Peak and trough values for RMS level measured over a short window.
2215
2216 @item Crest factor
2217 Standard ratio of peak to RMS level (note: not in dB).
2218
2219 @item Flat factor
2220 Flatness (i.e. consecutive samples with the same value) of the signal at its peak levels
2221 (i.e. either @var{Min level} or @var{Max level}).
2222
2223 @item Peak count
2224 Number of occasions (not the number of samples) that the signal attained either
2225 @var{Min level} or @var{Max level}.
2226
2227 @item Bit depth
2228 Overall bit depth of audio. Number of bits used for each sample.
2229
2230 @item Dynamic range
2231 Measured dynamic range of audio in dB.
2232
2233 @item Zero crossings
2234 Number of points where the waveform crosses the zero level axis.
2235
2236 @item Zero crossings rate
2237 Rate of Zero crossings and number of audio samples.
2238 @end table
2239
2240 @section atempo
2241
2242 Adjust audio tempo.
2243
2244 The filter accepts exactly one parameter, the audio tempo. If not
2245 specified then the filter will assume nominal 1.0 tempo. Tempo must
2246 be in the [0.5, 100.0] range.
2247
2248 Note that tempo greater than 2 will skip some samples rather than
2249 blend them in.  If for any reason this is a concern it is always
2250 possible to daisy-chain several instances of atempo to achieve the
2251 desired product tempo.
2252
2253 @subsection Examples
2254
2255 @itemize
2256 @item
2257 Slow down audio to 80% tempo:
2258 @example
2259 atempo=0.8
2260 @end example
2261
2262 @item
2263 To speed up audio to 300% tempo:
2264 @example
2265 atempo=3
2266 @end example
2267
2268 @item
2269 To speed up audio to 300% tempo by daisy-chaining two atempo instances:
2270 @example
2271 atempo=sqrt(3),atempo=sqrt(3)
2272 @end example
2273 @end itemize
2274
2275 @section atrim
2276
2277 Trim the input so that the output contains one continuous subpart of the input.
2278
2279 It accepts the following parameters:
2280 @table @option
2281 @item start
2282 Timestamp (in seconds) of the start of the section to keep. I.e. the audio
2283 sample with the timestamp @var{start} will be the first sample in the output.
2284
2285 @item end
2286 Specify time of the first audio sample that will be dropped, i.e. the
2287 audio sample immediately preceding the one with the timestamp @var{end} will be
2288 the last sample in the output.
2289
2290 @item start_pts
2291 Same as @var{start}, except this option sets the start timestamp in samples
2292 instead of seconds.
2293
2294 @item end_pts
2295 Same as @var{end}, except this option sets the end timestamp in samples instead
2296 of seconds.
2297
2298 @item duration
2299 The maximum duration of the output in seconds.
2300
2301 @item start_sample
2302 The number of the first sample that should be output.
2303
2304 @item end_sample
2305 The number of the first sample that should be dropped.
2306 @end table
2307
2308 @option{start}, @option{end}, and @option{duration} are expressed as time
2309 duration specifications; see
2310 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}.
2311
2312 Note that the first two sets of the start/end options and the @option{duration}
2313 option look at the frame timestamp, while the _sample options simply count the
2314 samples that pass through the filter. So start/end_pts and start/end_sample will
2315 give different results when the timestamps are wrong, inexact or do not start at
2316 zero. Also note that this filter does not modify the timestamps. If you wish
2317 to have the output timestamps start at zero, insert the asetpts filter after the
2318 atrim filter.
2319
2320 If multiple start or end options are set, this filter tries to be greedy and
2321 keep all samples that match at least one of the specified constraints. To keep
2322 only the part that matches all the constraints at once, chain multiple atrim
2323 filters.
2324
2325 The defaults are such that all the input is kept. So it is possible to set e.g.
2326 just the end values to keep everything before the specified time.
2327
2328 Examples:
2329 @itemize
2330 @item
2331 Drop everything except the second minute of input:
2332 @example
2333 ffmpeg -i INPUT -af atrim=60:120
2334 @end example
2335
2336 @item
2337 Keep only the first 1000 samples:
2338 @example
2339 ffmpeg -i INPUT -af atrim=end_sample=1000
2340 @end example
2341
2342 @end itemize
2343
2344 @section bandpass
2345
2346 Apply a two-pole Butterworth band-pass filter with central
2347 frequency @var{frequency}, and (3dB-point) band-width width.
2348 The @var{csg} option selects a constant skirt gain (peak gain = Q)
2349 instead of the default: constant 0dB peak gain.
2350 The filter roll off at 6dB per octave (20dB per decade).
2351
2352 The filter accepts the following options:
2353
2354 @table @option
2355 @item frequency, f
2356 Set the filter's central frequency. Default is @code{3000}.
2357
2358 @item csg
2359 Constant skirt gain if set to 1. Defaults to 0.
2360
2361 @item width_type, t
2362 Set method to specify band-width of filter.
2363 @table @option
2364 @item h
2365 Hz
2366 @item q
2367 Q-Factor
2368 @item o
2369 octave
2370 @item s
2371 slope
2372 @item k
2373 kHz
2374 @end table
2375
2376 @item width, w
2377 Specify the band-width of a filter in width_type units.
2378
2379 @item channels, c
2380 Specify which channels to filter, by default all available are filtered.
2381 @end table
2382
2383 @subsection Commands
2384
2385 This filter supports the following commands:
2386 @table @option
2387 @item frequency, f
2388 Change bandpass frequency.
2389 Syntax for the command is : "@var{frequency}"
2390
2391 @item width_type, t
2392 Change bandpass width_type.
2393 Syntax for the command is : "@var{width_type}"
2394
2395 @item width, w
2396 Change bandpass width.
2397 Syntax for the command is : "@var{width}"
2398 @end table
2399
2400 @section bandreject
2401
2402 Apply a two-pole Butterworth band-reject filter with central
2403 frequency @var{frequency}, and (3dB-point) band-width @var{width}.
2404 The filter roll off at 6dB per octave (20dB per decade).
2405
2406 The filter accepts the following options:
2407
2408 @table @option
2409 @item frequency, f
2410 Set the filter's central frequency. Default is @code{3000}.
2411
2412 @item width_type, t
2413 Set method to specify band-width of filter.
2414 @table @option
2415 @item h
2416 Hz
2417 @item q
2418 Q-Factor
2419 @item o
2420 octave
2421 @item s
2422 slope
2423 @item k
2424 kHz
2425 @end table
2426
2427 @item width, w
2428 Specify the band-width of a filter in width_type units.
2429
2430 @item channels, c
2431 Specify which channels to filter, by default all available are filtered.
2432 @end table
2433
2434 @subsection Commands
2435
2436 This filter supports the following commands:
2437 @table @option
2438 @item frequency, f
2439 Change bandreject frequency.
2440 Syntax for the command is : "@var{frequency}"
2441
2442 @item width_type, t
2443 Change bandreject width_type.
2444 Syntax for the command is : "@var{width_type}"
2445
2446 @item width, w
2447 Change bandreject width.
2448 Syntax for the command is : "@var{width}"
2449 @end table
2450
2451 @section bass, lowshelf
2452
2453 Boost or cut the bass (lower) frequencies of the audio using a two-pole
2454 shelving filter with a response similar to that of a standard
2455 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
2456
2457 The filter accepts the following options:
2458
2459 @table @option
2460 @item gain, g
2461 Give the gain at 0 Hz. Its useful range is about -20
2462 (for a large cut) to +20 (for a large boost).
2463 Beware of clipping when using a positive gain.
2464
2465 @item frequency, f
2466 Set the filter's central frequency and so can be used
2467 to extend or reduce the frequency range to be boosted or cut.
2468 The default value is @code{100} Hz.
2469
2470 @item width_type, t
2471 Set method to specify band-width of filter.
2472 @table @option
2473 @item h
2474 Hz
2475 @item q
2476 Q-Factor
2477 @item o
2478 octave
2479 @item s
2480 slope
2481 @item k
2482 kHz
2483 @end table
2484
2485 @item width, w
2486 Determine how steep is the filter's shelf transition.
2487
2488 @item channels, c
2489 Specify which channels to filter, by default all available are filtered.
2490 @end table
2491
2492 @subsection Commands
2493
2494 This filter supports the following commands:
2495 @table @option
2496 @item frequency, f
2497 Change bass frequency.
2498 Syntax for the command is : "@var{frequency}"
2499
2500 @item width_type, t
2501 Change bass width_type.
2502 Syntax for the command is : "@var{width_type}"
2503
2504 @item width, w
2505 Change bass width.
2506 Syntax for the command is : "@var{width}"
2507
2508 @item gain, g
2509 Change bass gain.
2510 Syntax for the command is : "@var{gain}"
2511 @end table
2512
2513 @section biquad
2514
2515 Apply a biquad IIR filter with the given coefficients.
2516 Where @var{b0}, @var{b1}, @var{b2} and @var{a0}, @var{a1}, @var{a2}
2517 are the numerator and denominator coefficients respectively.
2518 and @var{channels}, @var{c} specify which channels to filter, by default all
2519 available are filtered.
2520
2521 @subsection Commands
2522
2523 This filter supports the following commands:
2524 @table @option
2525 @item a0
2526 @item a1
2527 @item a2
2528 @item b0
2529 @item b1
2530 @item b2
2531 Change biquad parameter.
2532 Syntax for the command is : "@var{value}"
2533 @end table
2534
2535 @section bs2b
2536 Bauer stereo to binaural transformation, which improves headphone listening of
2537 stereo audio records.
2538
2539 To enable compilation of this filter you need to configure FFmpeg with
2540 @code{--enable-libbs2b}.
2541
2542 It accepts the following parameters:
2543 @table @option
2544
2545 @item profile
2546 Pre-defined crossfeed level.
2547 @table @option
2548
2549 @item default
2550 Default level (fcut=700, feed=50).
2551
2552 @item cmoy
2553 Chu Moy circuit (fcut=700, feed=60).
2554
2555 @item jmeier
2556 Jan Meier circuit (fcut=650, feed=95).
2557
2558 @end table
2559
2560 @item fcut
2561 Cut frequency (in Hz).
2562
2563 @item feed
2564 Feed level (in Hz).
2565
2566 @end table
2567
2568 @section channelmap
2569
2570 Remap input channels to new locations.
2571
2572 It accepts the following parameters:
2573 @table @option
2574 @item map
2575 Map channels from input to output. The argument is a '|'-separated list of
2576 mappings, each in the @code{@var{in_channel}-@var{out_channel}} or
2577 @var{in_channel} form. @var{in_channel} can be either the name of the input
2578 channel (e.g. FL for front left) or its index in the input channel layout.
2579 @var{out_channel} is the name of the output channel or its index in the output
2580 channel layout. If @var{out_channel} is not given then it is implicitly an
2581 index, starting with zero and increasing by one for each mapping.
2582
2583 @item channel_layout
2584 The channel layout of the output stream.
2585 @end table
2586
2587 If no mapping is present, the filter will implicitly map input channels to
2588 output channels, preserving indices.
2589
2590 @subsection Examples
2591
2592 @itemize
2593 @item
2594 For example, assuming a 5.1+downmix input MOV file,
2595 @example
2596 ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
2597 @end example
2598 will create an output WAV file tagged as stereo from the downmix channels of
2599 the input.
2600
2601 @item
2602 To fix a 5.1 WAV improperly encoded in AAC's native channel order
2603 @example
2604 ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
2605 @end example
2606 @end itemize
2607
2608 @section channelsplit
2609
2610 Split each channel from an input audio stream into a separate output stream.
2611
2612 It accepts the following parameters:
2613 @table @option
2614 @item channel_layout
2615 The channel layout of the input stream. The default is "stereo".
2616 @item channels
2617 A channel layout describing the channels to be extracted as separate output streams
2618 or "all" to extract each input channel as a separate stream. The default is "all".
2619
2620 Choosing channels not present in channel layout in the input will result in an error.
2621 @end table
2622
2623 @subsection Examples
2624
2625 @itemize
2626 @item
2627 For example, assuming a stereo input MP3 file,
2628 @example
2629 ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
2630 @end example
2631 will create an output Matroska file with two audio streams, one containing only
2632 the left channel and the other the right channel.
2633
2634 @item
2635 Split a 5.1 WAV file into per-channel files:
2636 @example
2637 ffmpeg -i in.wav -filter_complex
2638 'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
2639 -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
2640 front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
2641 side_right.wav
2642 @end example
2643
2644 @item
2645 Extract only LFE from a 5.1 WAV file:
2646 @example
2647 ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1:channels=LFE[LFE]'
2648 -map '[LFE]' lfe.wav
2649 @end example
2650 @end itemize
2651
2652 @section chorus
2653 Add a chorus effect to the audio.
2654
2655 Can make a single vocal sound like a chorus, but can also be applied to instrumentation.
2656
2657 Chorus resembles an echo effect with a short delay, but whereas with echo the delay is
2658 constant, with chorus, it is varied using using sinusoidal or triangular modulation.
2659 The modulation depth defines the range the modulated delay is played before or after
2660 the delay. Hence the delayed sound will sound slower or faster, that is the delayed
2661 sound tuned around the original one, like in a chorus where some vocals are slightly
2662 off key.
2663
2664 It accepts the following parameters:
2665 @table @option
2666 @item in_gain
2667 Set input gain. Default is 0.4.
2668
2669 @item out_gain
2670 Set output gain. Default is 0.4.
2671
2672 @item delays
2673 Set delays. A typical delay is around 40ms to 60ms.
2674
2675 @item decays
2676 Set decays.
2677
2678 @item speeds
2679 Set speeds.
2680
2681 @item depths
2682 Set depths.
2683 @end table
2684
2685 @subsection Examples
2686
2687 @itemize
2688 @item
2689 A single delay:
2690 @example
2691 chorus=0.7:0.9:55:0.4:0.25:2
2692 @end example
2693
2694 @item
2695 Two delays:
2696 @example
2697 chorus=0.6:0.9:50|60:0.4|0.32:0.25|0.4:2|1.3
2698 @end example
2699
2700 @item
2701 Fuller sounding chorus with three delays:
2702 @example
2703 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
2704 @end example
2705 @end itemize
2706
2707 @section compand
2708 Compress or expand the audio's dynamic range.
2709
2710 It accepts the following parameters:
2711
2712 @table @option
2713
2714 @item attacks
2715 @item decays
2716 A list of times in seconds for each channel over which the instantaneous level
2717 of the input signal is averaged to determine its volume. @var{attacks} refers to
2718 increase of volume and @var{decays} refers to decrease of volume. For most
2719 situations, the attack time (response to the audio getting louder) should be
2720 shorter than the decay time, because the human ear is more sensitive to sudden
2721 loud audio than sudden soft audio. A typical value for attack is 0.3 seconds and
2722 a typical value for decay is 0.8 seconds.
2723 If specified number of attacks & decays is lower than number of channels, the last
2724 set attack/decay will be used for all remaining channels.
2725
2726 @item points
2727 A list of points for the transfer function, specified in dB relative to the
2728 maximum possible signal amplitude. Each key points list must be defined using
2729 the following syntax: @code{x0/y0|x1/y1|x2/y2|....} or
2730 @code{x0/y0 x1/y1 x2/y2 ....}
2731
2732 The input values must be in strictly increasing order but the transfer function
2733 does not have to be monotonically rising. The point @code{0/0} is assumed but
2734 may be overridden (by @code{0/out-dBn}). Typical values for the transfer
2735 function are @code{-70/-70|-60/-20|1/0}.
2736
2737 @item soft-knee
2738 Set the curve radius in dB for all joints. It defaults to 0.01.
2739
2740 @item gain
2741 Set the additional gain in dB to be applied at all points on the transfer
2742 function. This allows for easy adjustment of the overall gain.
2743 It defaults to 0.
2744
2745 @item volume
2746 Set an initial volume, in dB, to be assumed for each channel when filtering
2747 starts. This permits the user to supply a nominal level initially, so that, for
2748 example, a very large gain is not applied to initial signal levels before the
2749 companding has begun to operate. A typical value for audio which is initially
2750 quiet is -90 dB. It defaults to 0.
2751
2752 @item delay
2753 Set a delay, in seconds. The input audio is analyzed immediately, but audio is
2754 delayed before being fed to the volume adjuster. Specifying a delay
2755 approximately equal to the attack/decay times allows the filter to effectively
2756 operate in predictive rather than reactive mode. It defaults to 0.
2757
2758 @end table
2759
2760 @subsection Examples
2761
2762 @itemize
2763 @item
2764 Make music with both quiet and loud passages suitable for listening to in a
2765 noisy environment:
2766 @example
2767 compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
2768 @end example
2769
2770 Another example for audio with whisper and explosion parts:
2771 @example
2772 compand=0|0:1|1:-90/-900|-70/-70|-30/-9|0/-3:6:0:0:0
2773 @end example
2774
2775 @item
2776 A noise gate for when the noise is at a lower level than the signal:
2777 @example
2778 compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1
2779 @end example
2780
2781 @item
2782 Here is another noise gate, this time for when the noise is at a higher level
2783 than the signal (making it, in some ways, similar to squelch):
2784 @example
2785 compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1
2786 @end example
2787
2788 @item
2789 2:1 compression starting at -6dB:
2790 @example
2791 compand=points=-80/-80|-6/-6|0/-3.8|20/3.5
2792 @end example
2793
2794 @item
2795 2:1 compression starting at -9dB:
2796 @example
2797 compand=points=-80/-80|-9/-9|0/-5.3|20/2.9
2798 @end example
2799
2800 @item
2801 2:1 compression starting at -12dB:
2802 @example
2803 compand=points=-80/-80|-12/-12|0/-6.8|20/1.9
2804 @end example
2805
2806 @item
2807 2:1 compression starting at -18dB:
2808 @example
2809 compand=points=-80/-80|-18/-18|0/-9.8|20/0.7
2810 @end example
2811
2812 @item
2813 3:1 compression starting at -15dB:
2814 @example
2815 compand=points=-80/-80|-15/-15|0/-10.8|20/-5.2
2816 @end example
2817
2818 @item
2819 Compressor/Gate:
2820 @example
2821 compand=points=-80/-105|-62/-80|-15.4/-15.4|0/-12|20/-7.6
2822 @end example
2823
2824 @item
2825 Expander:
2826 @example
2827 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
2828 @end example
2829
2830 @item
2831 Hard limiter at -6dB:
2832 @example
2833 compand=attacks=0:points=-80/-80|-6/-6|20/-6
2834 @end example
2835
2836 @item
2837 Hard limiter at -12dB:
2838 @example
2839 compand=attacks=0:points=-80/-80|-12/-12|20/-12
2840 @end example
2841
2842 @item
2843 Hard noise gate at -35 dB:
2844 @example
2845 compand=attacks=0:points=-80/-115|-35.1/-80|-35/-35|20/20
2846 @end example
2847
2848 @item
2849 Soft limiter:
2850 @example
2851 compand=attacks=0:points=-80/-80|-12.4/-12.4|-6/-8|0/-6.8|20/-2.8
2852 @end example
2853 @end itemize
2854
2855 @section compensationdelay
2856
2857 Compensation Delay Line is a metric based delay to compensate differing
2858 positions of microphones or speakers.
2859
2860 For example, you have recorded guitar with two microphones placed in
2861 different location. Because the front of sound wave has fixed speed in
2862 normal conditions, the phasing of microphones can vary and depends on
2863 their location and interposition. The best sound mix can be achieved when
2864 these microphones are in phase (synchronized). Note that distance of
2865 ~30 cm between microphones makes one microphone to capture signal in
2866 antiphase to another microphone. That makes the final mix sounding moody.
2867 This filter helps to solve phasing problems by adding different delays
2868 to each microphone track and make them synchronized.
2869
2870 The best result can be reached when you take one track as base and
2871 synchronize other tracks one by one with it.
2872 Remember that synchronization/delay tolerance depends on sample rate, too.
2873 Higher sample rates will give more tolerance.
2874
2875 It accepts the following parameters:
2876
2877 @table @option
2878 @item mm
2879 Set millimeters distance. This is compensation distance for fine tuning.
2880 Default is 0.
2881
2882 @item cm
2883 Set cm distance. This is compensation distance for tightening distance setup.
2884 Default is 0.
2885
2886 @item m
2887 Set meters distance. This is compensation distance for hard distance setup.
2888 Default is 0.
2889
2890 @item dry
2891 Set dry amount. Amount of unprocessed (dry) signal.
2892 Default is 0.
2893
2894 @item wet
2895 Set wet amount. Amount of processed (wet) signal.
2896 Default is 1.
2897
2898 @item temp
2899 Set temperature degree in Celsius. This is the temperature of the environment.
2900 Default is 20.
2901 @end table
2902
2903 @section crossfeed
2904 Apply headphone crossfeed filter.
2905
2906 Crossfeed is the process of blending the left and right channels of stereo
2907 audio recording.
2908 It is mainly used to reduce extreme stereo separation of low frequencies.
2909
2910 The intent is to produce more speaker like sound to the listener.
2911
2912 The filter accepts the following options:
2913
2914 @table @option
2915 @item strength
2916 Set strength of crossfeed. Default is 0.2. Allowed range is from 0 to 1.
2917 This sets gain of low shelf filter for side part of stereo image.
2918 Default is -6dB. Max allowed is -30db when strength is set to 1.
2919
2920 @item range
2921 Set soundstage wideness. Default is 0.5. Allowed range is from 0 to 1.
2922 This sets cut off frequency of low shelf filter. Default is cut off near
2923 1550 Hz. With range set to 1 cut off frequency is set to 2100 Hz.
2924
2925 @item level_in
2926 Set input gain. Default is 0.9.
2927
2928 @item level_out
2929 Set output gain. Default is 1.
2930 @end table
2931
2932 @section crystalizer
2933 Simple algorithm to expand audio dynamic range.
2934
2935 The filter accepts the following options:
2936
2937 @table @option
2938 @item i
2939 Sets the intensity of effect (default: 2.0). Must be in range between 0.0
2940 (unchanged sound) to 10.0 (maximum effect).
2941
2942 @item c
2943 Enable clipping. By default is enabled.
2944 @end table
2945
2946 @section dcshift
2947 Apply a DC shift to the audio.
2948
2949 This can be useful to remove a DC offset (caused perhaps by a hardware problem
2950 in the recording chain) from the audio. The effect of a DC offset is reduced
2951 headroom and hence volume. The @ref{astats} filter can be used to determine if
2952 a signal has a DC offset.
2953
2954 @table @option
2955 @item shift
2956 Set the DC shift, allowed range is [-1, 1]. It indicates the amount to shift
2957 the audio.
2958
2959 @item limitergain
2960 Optional. It should have a value much less than 1 (e.g. 0.05 or 0.02) and is
2961 used to prevent clipping.
2962 @end table
2963
2964 @section drmeter
2965 Measure audio dynamic range.
2966
2967 DR values of 14 and higher is found in very dynamic material. DR of 8 to 13
2968 is found in transition material. And anything less that 8 have very poor dynamics
2969 and is very compressed.
2970
2971 The filter accepts the following options:
2972
2973 @table @option
2974 @item length
2975 Set window length in seconds used to split audio into segments of equal length.
2976 Default is 3 seconds.
2977 @end table
2978
2979 @section dynaudnorm
2980 Dynamic Audio Normalizer.
2981
2982 This filter applies a certain amount of gain to the input audio in order
2983 to bring its peak magnitude to a target level (e.g. 0 dBFS). However, in
2984 contrast to more "simple" normalization algorithms, the Dynamic Audio
2985 Normalizer *dynamically* re-adjusts the gain factor to the input audio.
2986 This allows for applying extra gain to the "quiet" sections of the audio
2987 while avoiding distortions or clipping the "loud" sections. In other words:
2988 The Dynamic Audio Normalizer will "even out" the volume of quiet and loud
2989 sections, in the sense that the volume of each section is brought to the
2990 same target level. Note, however, that the Dynamic Audio Normalizer achieves
2991 this goal *without* applying "dynamic range compressing". It will retain 100%
2992 of the dynamic range *within* each section of the audio file.
2993
2994 @table @option
2995 @item f
2996 Set the frame length in milliseconds. In range from 10 to 8000 milliseconds.
2997 Default is 500 milliseconds.
2998 The Dynamic Audio Normalizer processes the input audio in small chunks,
2999 referred to as frames. This is required, because a peak magnitude has no
3000 meaning for just a single sample value. Instead, we need to determine the
3001 peak magnitude for a contiguous sequence of sample values. While a "standard"
3002 normalizer would simply use the peak magnitude of the complete file, the
3003 Dynamic Audio Normalizer determines the peak magnitude individually for each
3004 frame. The length of a frame is specified in milliseconds. By default, the
3005 Dynamic Audio Normalizer uses a frame length of 500 milliseconds, which has
3006 been found to give good results with most files.
3007 Note that the exact frame length, in number of samples, will be determined
3008 automatically, based on the sampling rate of the individual input audio file.
3009
3010 @item g
3011 Set the Gaussian filter window size. In range from 3 to 301, must be odd
3012 number. Default is 31.
3013 Probably the most important parameter of the Dynamic Audio Normalizer is the
3014 @code{window size} of the Gaussian smoothing filter. The filter's window size
3015 is specified in frames, centered around the current frame. For the sake of
3016 simplicity, this must be an odd number. Consequently, the default value of 31
3017 takes into account the current frame, as well as the 15 preceding frames and
3018 the 15 subsequent frames. Using a larger window results in a stronger
3019 smoothing effect and thus in less gain variation, i.e. slower gain
3020 adaptation. Conversely, using a smaller window results in a weaker smoothing
3021 effect and thus in more gain variation, i.e. faster gain adaptation.
3022 In other words, the more you increase this value, the more the Dynamic Audio
3023 Normalizer will behave like a "traditional" normalization filter. On the
3024 contrary, the more you decrease this value, the more the Dynamic Audio
3025 Normalizer will behave like a dynamic range compressor.
3026
3027 @item p
3028 Set the target peak value. This specifies the highest permissible magnitude
3029 level for the normalized audio input. This filter will try to approach the
3030 target peak magnitude as closely as possible, but at the same time it also
3031 makes sure that the normalized signal will never exceed the peak magnitude.
3032 A frame's maximum local gain factor is imposed directly by the target peak
3033 magnitude. The default value is 0.95 and thus leaves a headroom of 5%*.
3034 It is not recommended to go above this value.
3035
3036 @item m
3037 Set the maximum gain factor. In range from 1.0 to 100.0. Default is 10.0.
3038 The Dynamic Audio Normalizer determines the maximum possible (local) gain
3039 factor for each input frame, i.e. the maximum gain factor that does not
3040 result in clipping or distortion. The maximum gain factor is determined by
3041 the frame's highest magnitude sample. However, the Dynamic Audio Normalizer
3042 additionally bounds the frame's maximum gain factor by a predetermined
3043 (global) maximum gain factor. This is done in order to avoid excessive gain
3044 factors in "silent" or almost silent frames. By default, the maximum gain
3045 factor is 10.0, For most inputs the default value should be sufficient and
3046 it usually is not recommended to increase this value. Though, for input
3047 with an extremely low overall volume level, it may be necessary to allow even
3048 higher gain factors. Note, however, that the Dynamic Audio Normalizer does
3049 not simply apply a "hard" threshold (i.e. cut off values above the threshold).
3050 Instead, a "sigmoid" threshold function will be applied. This way, the
3051 gain factors will smoothly approach the threshold value, but never exceed that
3052 value.
3053
3054 @item r
3055 Set the target RMS. In range from 0.0 to 1.0. Default is 0.0 - disabled.
3056 By default, the Dynamic Audio Normalizer performs "peak" normalization.
3057 This means that the maximum local gain factor for each frame is defined
3058 (only) by the frame's highest magnitude sample. This way, the samples can
3059 be amplified as much as possible without exceeding the maximum signal
3060 level, i.e. without clipping. Optionally, however, the Dynamic Audio
3061 Normalizer can also take into account the frame's root mean square,
3062 abbreviated RMS. In electrical engineering, the RMS is commonly used to
3063 determine the power of a time-varying signal. It is therefore considered
3064 that the RMS is a better approximation of the "perceived loudness" than
3065 just looking at the signal's peak magnitude. Consequently, by adjusting all
3066 frames to a constant RMS value, a uniform "perceived loudness" can be
3067 established. If a target RMS value has been specified, a frame's local gain
3068 factor is defined as the factor that would result in exactly that RMS value.
3069 Note, however, that the maximum local gain factor is still restricted by the
3070 frame's highest magnitude sample, in order to prevent clipping.
3071
3072 @item n
3073 Enable channels coupling. By default is enabled.
3074 By default, the Dynamic Audio Normalizer will amplify all channels by the same
3075 amount. This means the same gain factor will be applied to all channels, i.e.
3076 the maximum possible gain factor is determined by the "loudest" channel.
3077 However, in some recordings, it may happen that the volume of the different
3078 channels is uneven, e.g. one channel may be "quieter" than the other one(s).
3079 In this case, this option can be used to disable the channel coupling. This way,
3080 the gain factor will be determined independently for each channel, depending
3081 only on the individual channel's highest magnitude sample. This allows for
3082 harmonizing the volume of the different channels.
3083
3084 @item c
3085 Enable DC bias correction. By default is disabled.
3086 An audio signal (in the time domain) is a sequence of sample values.
3087 In the Dynamic Audio Normalizer these sample values are represented in the
3088 -1.0 to 1.0 range, regardless of the original input format. Normally, the
3089 audio signal, or "waveform", should be centered around the zero point.
3090 That means if we calculate the mean value of all samples in a file, or in a
3091 single frame, then the result should be 0.0 or at least very close to that
3092 value. If, however, there is a significant deviation of the mean value from
3093 0.0, in either positive or negative direction, this is referred to as a
3094 DC bias or DC offset. Since a DC bias is clearly undesirable, the Dynamic
3095 Audio Normalizer provides optional DC bias correction.
3096 With DC bias correction enabled, the Dynamic Audio Normalizer will determine
3097 the mean value, or "DC correction" offset, of each input frame and subtract
3098 that value from all of the frame's sample values which ensures those samples
3099 are centered around 0.0 again. Also, in order to avoid "gaps" at the frame
3100 boundaries, the DC correction offset values will be interpolated smoothly
3101 between neighbouring frames.
3102
3103 @item b
3104 Enable alternative boundary mode. By default is disabled.
3105 The Dynamic Audio Normalizer takes into account a certain neighbourhood
3106 around each frame. This includes the preceding frames as well as the
3107 subsequent frames. However, for the "boundary" frames, located at the very
3108 beginning and at the very end of the audio file, not all neighbouring
3109 frames are available. In particular, for the first few frames in the audio
3110 file, the preceding frames are not known. And, similarly, for the last few
3111 frames in the audio file, the subsequent frames are not known. Thus, the
3112 question arises which gain factors should be assumed for the missing frames
3113 in the "boundary" region. The Dynamic Audio Normalizer implements two modes
3114 to deal with this situation. The default boundary mode assumes a gain factor
3115 of exactly 1.0 for the missing frames, resulting in a smooth "fade in" and
3116 "fade out" at the beginning and at the end of the input, respectively.
3117
3118 @item s
3119 Set the compress factor. In range from 0.0 to 30.0. Default is 0.0.
3120 By default, the Dynamic Audio Normalizer does not apply "traditional"
3121 compression. This means that signal peaks will not be pruned and thus the
3122 full dynamic range will be retained within each local neighbourhood. However,
3123 in some cases it may be desirable to combine the Dynamic Audio Normalizer's
3124 normalization algorithm with a more "traditional" compression.
3125 For this purpose, the Dynamic Audio Normalizer provides an optional compression
3126 (thresholding) function. If (and only if) the compression feature is enabled,
3127 all input frames will be processed by a soft knee thresholding function prior
3128 to the actual normalization process. Put simply, the thresholding function is
3129 going to prune all samples whose magnitude exceeds a certain threshold value.
3130 However, the Dynamic Audio Normalizer does not simply apply a fixed threshold
3131 value. Instead, the threshold value will be adjusted for each individual
3132 frame.
3133 In general, smaller parameters result in stronger compression, and vice versa.
3134 Values below 3.0 are not recommended, because audible distortion may appear.
3135 @end table
3136
3137 @section earwax
3138
3139 Make audio easier to listen to on headphones.
3140
3141 This filter adds `cues' to 44.1kHz stereo (i.e. audio CD format) audio
3142 so that when listened to on headphones the stereo image is moved from
3143 inside your head (standard for headphones) to outside and in front of
3144 the listener (standard for speakers).
3145
3146 Ported from SoX.
3147
3148 @section equalizer
3149
3150 Apply a two-pole peaking equalisation (EQ) filter. With this
3151 filter, the signal-level at and around a selected frequency can
3152 be increased or decreased, whilst (unlike bandpass and bandreject
3153 filters) that at all other frequencies is unchanged.
3154
3155 In order to produce complex equalisation curves, this filter can
3156 be given several times, each with a different central frequency.
3157
3158 The filter accepts the following options:
3159
3160 @table @option
3161 @item frequency, f
3162 Set the filter's central frequency in Hz.
3163
3164 @item width_type, t
3165 Set method to specify band-width of filter.
3166 @table @option
3167 @item h
3168 Hz
3169 @item q
3170 Q-Factor
3171 @item o
3172 octave
3173 @item s
3174 slope
3175 @item k
3176 kHz
3177 @end table
3178
3179 @item width, w
3180 Specify the band-width of a filter in width_type units.
3181
3182 @item gain, g
3183 Set the required gain or attenuation in dB.
3184 Beware of clipping when using a positive gain.
3185
3186 @item channels, c
3187 Specify which channels to filter, by default all available are filtered.
3188 @end table
3189
3190 @subsection Examples
3191 @itemize
3192 @item
3193 Attenuate 10 dB at 1000 Hz, with a bandwidth of 200 Hz:
3194 @example
3195 equalizer=f=1000:t=h:width=200:g=-10
3196 @end example
3197
3198 @item
3199 Apply 2 dB gain at 1000 Hz with Q 1 and attenuate 5 dB at 100 Hz with Q 2:
3200 @example
3201 equalizer=f=1000:t=q:w=1:g=2,equalizer=f=100:t=q:w=2:g=-5
3202 @end example
3203 @end itemize
3204
3205 @subsection Commands
3206
3207 This filter supports the following commands:
3208 @table @option
3209 @item frequency, f
3210 Change equalizer frequency.
3211 Syntax for the command is : "@var{frequency}"
3212
3213 @item width_type, t
3214 Change equalizer width_type.
3215 Syntax for the command is : "@var{width_type}"
3216
3217 @item width, w
3218 Change equalizer width.
3219 Syntax for the command is : "@var{width}"
3220
3221 @item gain, g
3222 Change equalizer gain.
3223 Syntax for the command is : "@var{gain}"
3224 @end table
3225
3226 @section extrastereo
3227
3228 Linearly increases the difference between left and right channels which
3229 adds some sort of "live" effect to playback.
3230
3231 The filter accepts the following options:
3232
3233 @table @option
3234 @item m
3235 Sets the difference coefficient (default: 2.5). 0.0 means mono sound
3236 (average of both channels), with 1.0 sound will be unchanged, with
3237 -1.0 left and right channels will be swapped.
3238
3239 @item c
3240 Enable clipping. By default is enabled.
3241 @end table
3242
3243 @section firequalizer
3244 Apply FIR Equalization using arbitrary frequency response.
3245
3246 The filter accepts the following option:
3247
3248 @table @option
3249 @item gain
3250 Set gain curve equation (in dB). The expression can contain variables:
3251 @table @option
3252 @item f
3253 the evaluated frequency
3254 @item sr
3255 sample rate
3256 @item ch
3257 channel number, set to 0 when multichannels evaluation is disabled
3258 @item chid
3259 channel id, see libavutil/channel_layout.h, set to the first channel id when
3260 multichannels evaluation is disabled
3261 @item chs
3262 number of channels
3263 @item chlayout
3264 channel_layout, see libavutil/channel_layout.h
3265
3266 @end table
3267 and functions:
3268 @table @option
3269 @item gain_interpolate(f)
3270 interpolate gain on frequency f based on gain_entry
3271 @item cubic_interpolate(f)
3272 same as gain_interpolate, but smoother
3273 @end table
3274 This option is also available as command. Default is @code{gain_interpolate(f)}.
3275
3276 @item gain_entry
3277 Set gain entry for gain_interpolate function. The expression can
3278 contain functions:
3279 @table @option
3280 @item entry(f, g)
3281 store gain entry at frequency f with value g
3282 @end table
3283 This option is also available as command.
3284
3285 @item delay
3286 Set filter delay in seconds. Higher value means more accurate.
3287 Default is @code{0.01}.
3288
3289 @item accuracy
3290 Set filter accuracy in Hz. Lower value means more accurate.
3291 Default is @code{5}.
3292
3293 @item wfunc
3294 Set window function. Acceptable values are:
3295 @table @option
3296 @item rectangular
3297 rectangular window, useful when gain curve is already smooth
3298 @item hann
3299 hann window (default)
3300 @item hamming
3301 hamming window
3302 @item blackman
3303 blackman window
3304 @item nuttall3
3305 3-terms continuous 1st derivative nuttall window
3306 @item mnuttall3
3307 minimum 3-terms discontinuous nuttall window
3308 @item nuttall
3309 4-terms continuous 1st derivative nuttall window
3310 @item bnuttall
3311 minimum 4-terms discontinuous nuttall (blackman-nuttall) window
3312 @item bharris
3313 blackman-harris window
3314 @item tukey
3315 tukey window
3316 @end table
3317
3318 @item fixed
3319 If enabled, use fixed number of audio samples. This improves speed when
3320 filtering with large delay. Default is disabled.
3321
3322 @item multi
3323 Enable multichannels evaluation on gain. Default is disabled.
3324
3325 @item zero_phase
3326 Enable zero phase mode by subtracting timestamp to compensate delay.
3327 Default is disabled.
3328
3329 @item scale
3330 Set scale used by gain. Acceptable values are:
3331 @table @option
3332 @item linlin
3333 linear frequency, linear gain
3334 @item linlog
3335 linear frequency, logarithmic (in dB) gain (default)
3336 @item loglin
3337 logarithmic (in octave scale where 20 Hz is 0) frequency, linear gain
3338 @item loglog
3339 logarithmic frequency, logarithmic gain
3340 @end table
3341
3342 @item dumpfile
3343 Set file for dumping, suitable for gnuplot.
3344
3345 @item dumpscale
3346 Set scale for dumpfile. Acceptable values are same with scale option.
3347 Default is linlog.
3348
3349 @item fft2
3350 Enable 2-channel convolution using complex FFT. This improves speed significantly.
3351 Default is disabled.
3352
3353 @item min_phase
3354 Enable minimum phase impulse response. Default is disabled.
3355 @end table
3356
3357 @subsection Examples
3358 @itemize
3359 @item
3360 lowpass at 1000 Hz:
3361 @example
3362 firequalizer=gain='if(lt(f,1000), 0, -INF)'
3363 @end example
3364 @item
3365 lowpass at 1000 Hz with gain_entry:
3366 @example
3367 firequalizer=gain_entry='entry(1000,0); entry(1001, -INF)'
3368 @end example
3369 @item
3370 custom equalization:
3371 @example
3372 firequalizer=gain_entry='entry(100,0); entry(400, -4); entry(1000, -6); entry(2000, 0)'
3373 @end example
3374 @item
3375 higher delay with zero phase to compensate delay:
3376 @example
3377 firequalizer=delay=0.1:fixed=on:zero_phase=on
3378 @end example
3379 @item
3380 lowpass on left channel, highpass on right channel:
3381 @example
3382 firequalizer=gain='if(eq(chid,1), gain_interpolate(f), if(eq(chid,2), gain_interpolate(1e6+f), 0))'
3383 :gain_entry='entry(1000, 0); entry(1001,-INF); entry(1e6+1000,0)':multi=on
3384 @end example
3385 @end itemize
3386
3387 @section flanger
3388 Apply a flanging effect to the audio.
3389
3390 The filter accepts the following options:
3391
3392 @table @option
3393 @item delay
3394 Set base delay in milliseconds. Range from 0 to 30. Default value is 0.
3395
3396 @item depth
3397 Set added sweep delay in milliseconds. Range from 0 to 10. Default value is 2.
3398
3399 @item regen
3400 Set percentage regeneration (delayed signal feedback). Range from -95 to 95.
3401 Default value is 0.
3402
3403 @item width
3404 Set percentage of delayed signal mixed with original. Range from 0 to 100.
3405 Default value is 71.
3406
3407 @item speed
3408 Set sweeps per second (Hz). Range from 0.1 to 10. Default value is 0.5.
3409
3410 @item shape
3411 Set swept wave shape, can be @var{triangular} or @var{sinusoidal}.
3412 Default value is @var{sinusoidal}.
3413
3414 @item phase
3415 Set swept wave percentage-shift for multi channel. Range from 0 to 100.
3416 Default value is 25.
3417
3418 @item interp
3419 Set delay-line interpolation, @var{linear} or @var{quadratic}.
3420 Default is @var{linear}.
3421 @end table
3422
3423 @section haas
3424 Apply Haas effect to audio.
3425
3426 Note that this makes most sense to apply on mono signals.
3427 With this filter applied to mono signals it give some directionality and
3428 stretches its stereo image.
3429
3430 The filter accepts the following options:
3431
3432 @table @option
3433 @item level_in
3434 Set input level. By default is @var{1}, or 0dB
3435
3436 @item level_out
3437 Set output level. By default is @var{1}, or 0dB.
3438
3439 @item side_gain
3440 Set gain applied to side part of signal. By default is @var{1}.
3441
3442 @item middle_source
3443 Set kind of middle source. Can be one of the following:
3444
3445 @table @samp
3446 @item left
3447 Pick left channel.
3448
3449 @item right
3450 Pick right channel.
3451
3452 @item mid
3453 Pick middle part signal of stereo image.
3454
3455 @item side
3456 Pick side part signal of stereo image.
3457 @end table
3458
3459 @item middle_phase
3460 Change middle phase. By default is disabled.
3461
3462 @item left_delay
3463 Set left channel delay. By default is @var{2.05} milliseconds.
3464
3465 @item left_balance
3466 Set left channel balance. By default is @var{-1}.
3467
3468 @item left_gain
3469 Set left channel gain. By default is @var{1}.
3470
3471 @item left_phase
3472 Change left phase. By default is disabled.
3473
3474 @item right_delay
3475 Set right channel delay. By defaults is @var{2.12} milliseconds.
3476
3477 @item right_balance
3478 Set right channel balance. By default is @var{1}.
3479
3480 @item right_gain
3481 Set right channel gain. By default is @var{1}.
3482
3483 @item right_phase
3484 Change right phase. By default is enabled.
3485 @end table
3486
3487 @section hdcd
3488
3489 Decodes High Definition Compatible Digital (HDCD) data. A 16-bit PCM stream with
3490 embedded HDCD codes is expanded into a 20-bit PCM stream.
3491
3492 The filter supports the Peak Extend and Low-level Gain Adjustment features
3493 of HDCD, and detects the Transient Filter flag.
3494
3495 @example
3496 ffmpeg -i HDCD16.flac -af hdcd OUT24.flac
3497 @end example
3498
3499 When using the filter with wav, note the default encoding for wav is 16-bit,
3500 so the resulting 20-bit stream will be truncated back to 16-bit. Use something
3501 like @command{-acodec pcm_s24le} after the filter to get 24-bit PCM output.
3502 @example
3503 ffmpeg -i HDCD16.wav -af hdcd OUT16.wav
3504 ffmpeg -i HDCD16.wav -af hdcd -c:a pcm_s24le OUT24.wav
3505 @end example
3506
3507 The filter accepts the following options:
3508
3509 @table @option
3510 @item disable_autoconvert
3511 Disable any automatic format conversion or resampling in the filter graph.
3512
3513 @item process_stereo
3514 Process the stereo channels together. If target_gain does not match between
3515 channels, consider it invalid and use the last valid target_gain.
3516
3517 @item cdt_ms
3518 Set the code detect timer period in ms.
3519
3520 @item force_pe
3521 Always extend peaks above -3dBFS even if PE isn't signaled.
3522
3523 @item analyze_mode
3524 Replace audio with a solid tone and adjust the amplitude to signal some
3525 specific aspect of the decoding process. The output file can be loaded in
3526 an audio editor alongside the original to aid analysis.
3527
3528 @code{analyze_mode=pe:force_pe=true} can be used to see all samples above the PE level.
3529
3530 Modes are:
3531 @table @samp
3532 @item 0, off
3533 Disabled
3534 @item 1, lle
3535 Gain adjustment level at each sample
3536 @item 2, pe
3537 Samples where peak extend occurs
3538 @item 3, cdt
3539 Samples where the code detect timer is active
3540 @item 4, tgm
3541 Samples where the target gain does not match between channels
3542 @end table
3543 @end table
3544
3545 @section headphone
3546
3547 Apply head-related transfer functions (HRTFs) to create virtual
3548 loudspeakers around the user for binaural listening via headphones.
3549 The HRIRs are provided via additional streams, for each channel
3550 one stereo input stream is needed.
3551
3552 The filter accepts the following options:
3553
3554 @table @option
3555 @item map
3556 Set mapping of input streams for convolution.
3557 The argument is a '|'-separated list of channel names in order as they
3558 are given as additional stream inputs for filter.
3559 This also specify number of input streams. Number of input streams
3560 must be not less than number of channels in first stream plus one.
3561
3562 @item gain
3563 Set gain applied to audio. Value is in dB. Default is 0.
3564
3565 @item type
3566 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
3567 processing audio in time domain which is slow.
3568 @var{freq} is processing audio in frequency domain which is fast.
3569 Default is @var{freq}.
3570
3571 @item lfe
3572 Set custom gain for LFE channels. Value is in dB. Default is 0.
3573
3574 @item size
3575 Set size of frame in number of samples which will be processed at once.
3576 Default value is @var{1024}. Allowed range is from 1024 to 96000.
3577
3578 @item hrir
3579 Set format of hrir stream.
3580 Default value is @var{stereo}. Alternative value is @var{multich}.
3581 If value is set to @var{stereo}, number of additional streams should
3582 be greater or equal to number of input channels in first input stream.
3583 Also each additional stream should have stereo number of channels.
3584 If value is set to @var{multich}, number of additional streams should
3585 be exactly one. Also number of input channels of additional stream
3586 should be equal or greater than twice number of channels of first input
3587 stream.
3588 @end table
3589
3590 @subsection Examples
3591
3592 @itemize
3593 @item
3594 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
3595 each amovie filter use stereo file with IR coefficients as input.
3596 The files give coefficients for each position of virtual loudspeaker:
3597 @example
3598 ffmpeg -i input.wav
3599 -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"
3600 output.wav
3601 @end example
3602
3603 @item
3604 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
3605 but now in @var{multich} @var{hrir} format.
3606 @example
3607 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"
3608 output.wav
3609 @end example
3610 @end itemize
3611
3612 @section highpass
3613
3614 Apply a high-pass filter with 3dB point frequency.
3615 The filter can be either single-pole, or double-pole (the default).
3616 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
3617
3618 The filter accepts the following options:
3619
3620 @table @option
3621 @item frequency, f
3622 Set frequency in Hz. Default is 3000.
3623
3624 @item poles, p
3625 Set number of poles. Default is 2.
3626
3627 @item width_type, t
3628 Set method to specify band-width of filter.
3629 @table @option
3630 @item h
3631 Hz
3632 @item q
3633 Q-Factor
3634 @item o
3635 octave
3636 @item s
3637 slope
3638 @item k
3639 kHz
3640 @end table
3641
3642 @item width, w
3643 Specify the band-width of a filter in width_type units.
3644 Applies only to double-pole filter.
3645 The default is 0.707q and gives a Butterworth response.
3646
3647 @item channels, c
3648 Specify which channels to filter, by default all available are filtered.
3649 @end table
3650
3651 @subsection Commands
3652
3653 This filter supports the following commands:
3654 @table @option
3655 @item frequency, f
3656 Change highpass frequency.
3657 Syntax for the command is : "@var{frequency}"
3658
3659 @item width_type, t
3660 Change highpass width_type.
3661 Syntax for the command is : "@var{width_type}"
3662
3663 @item width, w
3664 Change highpass width.
3665 Syntax for the command is : "@var{width}"
3666 @end table
3667
3668 @section join
3669
3670 Join multiple input streams into one multi-channel stream.
3671
3672 It accepts the following parameters:
3673 @table @option
3674
3675 @item inputs
3676 The number of input streams. It defaults to 2.
3677
3678 @item channel_layout
3679 The desired output channel layout. It defaults to stereo.
3680
3681 @item map
3682 Map channels from inputs to output. The argument is a '|'-separated list of
3683 mappings, each in the @code{@var{input_idx}.@var{in_channel}-@var{out_channel}}
3684 form. @var{input_idx} is the 0-based index of the input stream. @var{in_channel}
3685 can be either the name of the input channel (e.g. FL for front left) or its
3686 index in the specified input stream. @var{out_channel} is the name of the output
3687 channel.
3688 @end table
3689
3690 The filter will attempt to guess the mappings when they are not specified
3691 explicitly. It does so by first trying to find an unused matching input channel
3692 and if that fails it picks the first unused input channel.
3693
3694 Join 3 inputs (with properly set channel layouts):
3695 @example
3696 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
3697 @end example
3698
3699 Build a 5.1 output from 6 single-channel streams:
3700 @example
3701 ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
3702 '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'
3703 out
3704 @end example
3705
3706 @section ladspa
3707
3708 Load a LADSPA (Linux Audio Developer's Simple Plugin API) plugin.
3709
3710 To enable compilation of this filter you need to configure FFmpeg with
3711 @code{--enable-ladspa}.
3712
3713 @table @option
3714 @item file, f
3715 Specifies the name of LADSPA plugin library to load. If the environment
3716 variable @env{LADSPA_PATH} is defined, the LADSPA plugin is searched in
3717 each one of the directories specified by the colon separated list in
3718 @env{LADSPA_PATH}, otherwise in the standard LADSPA paths, which are in
3719 this order: @file{HOME/.ladspa/lib/}, @file{/usr/local/lib/ladspa/},
3720 @file{/usr/lib/ladspa/}.
3721
3722 @item plugin, p
3723 Specifies the plugin within the library. Some libraries contain only
3724 one plugin, but others contain many of them. If this is not set filter
3725 will list all available plugins within the specified library.
3726
3727 @item controls, c
3728 Set the '|' separated list of controls which are zero or more floating point
3729 values that determine the behavior of the loaded plugin (for example delay,
3730 threshold or gain).
3731 Controls need to be defined using the following syntax:
3732 c0=@var{value0}|c1=@var{value1}|c2=@var{value2}|..., where
3733 @var{valuei} is the value set on the @var{i}-th control.
3734 Alternatively they can be also defined using the following syntax:
3735 @var{value0}|@var{value1}|@var{value2}|..., where
3736 @var{valuei} is the value set on the @var{i}-th control.
3737 If @option{controls} is set to @code{help}, all available controls and
3738 their valid ranges are printed.
3739
3740 @item sample_rate, s
3741 Specify the sample rate, default to 44100. Only used if plugin have
3742 zero inputs.
3743
3744 @item nb_samples, n
3745 Set the number of samples per channel per each output frame, default
3746 is 1024. Only used if plugin have zero inputs.
3747
3748 @item duration, d
3749 Set the minimum duration of the sourced audio. See
3750 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
3751 for the accepted syntax.
3752 Note that the resulting duration may be greater than the specified duration,
3753 as the generated audio is always cut at the end of a complete frame.
3754 If not specified, or the expressed duration is negative, the audio is
3755 supposed to be generated forever.
3756 Only used if plugin have zero inputs.
3757
3758 @end table
3759
3760 @subsection Examples
3761
3762 @itemize
3763 @item
3764 List all available plugins within amp (LADSPA example plugin) library:
3765 @example
3766 ladspa=file=amp
3767 @end example
3768
3769 @item
3770 List all available controls and their valid ranges for @code{vcf_notch}
3771 plugin from @code{VCF} library:
3772 @example
3773 ladspa=f=vcf:p=vcf_notch:c=help
3774 @end example
3775
3776 @item
3777 Simulate low quality audio equipment using @code{Computer Music Toolkit} (CMT)
3778 plugin library:
3779 @example
3780 ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
3781 @end example
3782
3783 @item
3784 Add reverberation to the audio using TAP-plugins
3785 (Tom's Audio Processing plugins):
3786 @example
3787 ladspa=file=tap_reverb:tap_reverb
3788 @end example
3789
3790 @item
3791 Generate white noise, with 0.2 amplitude:
3792 @example
3793 ladspa=file=cmt:noise_source_white:c=c0=.2
3794 @end example
3795
3796 @item
3797 Generate 20 bpm clicks using plugin @code{C* Click - Metronome} from the
3798 @code{C* Audio Plugin Suite} (CAPS) library:
3799 @example
3800 ladspa=file=caps:Click:c=c1=20'
3801 @end example
3802
3803 @item
3804 Apply @code{C* Eq10X2 - Stereo 10-band equaliser} effect:
3805 @example
3806 ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
3807 @end example
3808
3809 @item
3810 Increase volume by 20dB using fast lookahead limiter from Steve Harris
3811 @code{SWH Plugins} collection:
3812 @example
3813 ladspa=fast_lookahead_limiter_1913:fastLookaheadLimiter:20|0|2
3814 @end example
3815
3816 @item
3817 Attenuate low frequencies using Multiband EQ from Steve Harris
3818 @code{SWH Plugins} collection:
3819 @example
3820 ladspa=mbeq_1197:mbeq:-24|-24|-24|0|0|0|0|0|0|0|0|0|0|0|0
3821 @end example
3822
3823 @item
3824 Reduce stereo image using @code{Narrower} from the @code{C* Audio Plugin Suite}
3825 (CAPS) library:
3826 @example
3827 ladspa=caps:Narrower
3828 @end example
3829
3830 @item
3831 Another white noise, now using @code{C* Audio Plugin Suite} (CAPS) library:
3832 @example
3833 ladspa=caps:White:.2
3834 @end example
3835
3836 @item
3837 Some fractal noise, using @code{C* Audio Plugin Suite} (CAPS) library:
3838 @example
3839 ladspa=caps:Fractal:c=c1=1
3840 @end example
3841
3842 @item
3843 Dynamic volume normalization using @code{VLevel} plugin:
3844 @example
3845 ladspa=vlevel-ladspa:vlevel_mono
3846 @end example
3847 @end itemize
3848
3849 @subsection Commands
3850
3851 This filter supports the following commands:
3852 @table @option
3853 @item cN
3854 Modify the @var{N}-th control value.
3855
3856 If the specified value is not valid, it is ignored and prior one is kept.
3857 @end table
3858
3859 @section loudnorm
3860
3861 EBU R128 loudness normalization. Includes both dynamic and linear normalization modes.
3862 Support for both single pass (livestreams, files) and double pass (files) modes.
3863 This algorithm can target IL, LRA, and maximum true peak. To accurately detect true peaks,
3864 the audio stream will be upsampled to 192 kHz unless the normalization mode is linear.
3865 Use the @code{-ar} option or @code{aresample} filter to explicitly set an output sample rate.
3866
3867 The filter accepts the following options:
3868
3869 @table @option
3870 @item I, i
3871 Set integrated loudness target.
3872 Range is -70.0 - -5.0. Default value is -24.0.
3873
3874 @item LRA, lra
3875 Set loudness range target.
3876 Range is 1.0 - 20.0. Default value is 7.0.
3877
3878 @item TP, tp
3879 Set maximum true peak.
3880 Range is -9.0 - +0.0. Default value is -2.0.
3881
3882 @item measured_I, measured_i
3883 Measured IL of input file.
3884 Range is -99.0 - +0.0.
3885
3886 @item measured_LRA, measured_lra
3887 Measured LRA of input file.
3888 Range is  0.0 - 99.0.
3889
3890 @item measured_TP, measured_tp
3891 Measured true peak of input file.
3892 Range is  -99.0 - +99.0.
3893
3894 @item measured_thresh
3895 Measured threshold of input file.
3896 Range is -99.0 - +0.0.
3897
3898 @item offset
3899 Set offset gain. Gain is applied before the true-peak limiter.
3900 Range is  -99.0 - +99.0. Default is +0.0.
3901
3902 @item linear
3903 Normalize linearly if possible.
3904 measured_I, measured_LRA, measured_TP, and measured_thresh must also
3905 to be specified in order to use this mode.
3906 Options are true or false. Default is true.
3907
3908 @item dual_mono
3909 Treat mono input files as "dual-mono". If a mono file is intended for playback
3910 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
3911 If set to @code{true}, this option will compensate for this effect.
3912 Multi-channel input files are not affected by this option.
3913 Options are true or false. Default is false.
3914
3915 @item print_format
3916 Set print format for stats. Options are summary, json, or none.
3917 Default value is none.
3918 @end table
3919
3920 @section lowpass
3921
3922 Apply a low-pass filter with 3dB point frequency.
3923 The filter can be either single-pole or double-pole (the default).
3924 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
3925
3926 The filter accepts the following options:
3927
3928 @table @option
3929 @item frequency, f
3930 Set frequency in Hz. Default is 500.
3931
3932 @item poles, p
3933 Set number of poles. Default is 2.
3934
3935 @item width_type, t
3936 Set method to specify band-width of filter.
3937 @table @option
3938 @item h
3939 Hz
3940 @item q
3941 Q-Factor
3942 @item o
3943 octave
3944 @item s
3945 slope
3946 @item k
3947 kHz
3948 @end table
3949
3950 @item width, w
3951 Specify the band-width of a filter in width_type units.
3952 Applies only to double-pole filter.
3953 The default is 0.707q and gives a Butterworth response.
3954
3955 @item channels, c
3956 Specify which channels to filter, by default all available are filtered.
3957 @end table
3958
3959 @subsection Examples
3960 @itemize
3961 @item
3962 Lowpass only LFE channel, it LFE is not present it does nothing:
3963 @example
3964 lowpass=c=LFE
3965 @end example
3966 @end itemize
3967
3968 @subsection Commands
3969
3970 This filter supports the following commands:
3971 @table @option
3972 @item frequency, f
3973 Change lowpass frequency.
3974 Syntax for the command is : "@var{frequency}"
3975
3976 @item width_type, t
3977 Change lowpass width_type.
3978 Syntax for the command is : "@var{width_type}"
3979
3980 @item width, w
3981 Change lowpass width.
3982 Syntax for the command is : "@var{width}"
3983 @end table
3984
3985 @section lv2
3986
3987 Load a LV2 (LADSPA Version 2) plugin.
3988
3989 To enable compilation of this filter you need to configure FFmpeg with
3990 @code{--enable-lv2}.
3991
3992 @table @option
3993 @item plugin, p
3994 Specifies the plugin URI. You may need to escape ':'.
3995
3996 @item controls, c
3997 Set the '|' separated list of controls which are zero or more floating point
3998 values that determine the behavior of the loaded plugin (for example delay,
3999 threshold or gain).
4000 If @option{controls} is set to @code{help}, all available controls and
4001 their valid ranges are printed.
4002
4003 @item sample_rate, s
4004 Specify the sample rate, default to 44100. Only used if plugin have
4005 zero inputs.
4006
4007 @item nb_samples, n
4008 Set the number of samples per channel per each output frame, default
4009 is 1024. Only used if plugin have zero inputs.
4010
4011 @item duration, d
4012 Set the minimum duration of the sourced audio. See
4013 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4014 for the accepted syntax.
4015 Note that the resulting duration may be greater than the specified duration,
4016 as the generated audio is always cut at the end of a complete frame.
4017 If not specified, or the expressed duration is negative, the audio is
4018 supposed to be generated forever.
4019 Only used if plugin have zero inputs.
4020 @end table
4021
4022 @subsection Examples
4023
4024 @itemize
4025 @item
4026 Apply bass enhancer plugin from Calf:
4027 @example
4028 lv2=p=http\\\\://calf.sourceforge.net/plugins/BassEnhancer:c=amount=2
4029 @end example
4030
4031 @item
4032 Apply vinyl plugin from Calf:
4033 @example
4034 lv2=p=http\\\\://calf.sourceforge.net/plugins/Vinyl:c=drone=0.2|aging=0.5
4035 @end example
4036
4037 @item
4038 Apply bit crusher plugin from ArtyFX:
4039 @example
4040 lv2=p=http\\\\://www.openavproductions.com/artyfx#bitta:c=crush=0.3
4041 @end example
4042 @end itemize
4043
4044 @section mcompand
4045 Multiband Compress or expand the audio's dynamic range.
4046
4047 The input audio is divided into bands using 4th order Linkwitz-Riley IIRs.
4048 This is akin to the crossover of a loudspeaker, and results in flat frequency
4049 response when absent compander action.
4050
4051 It accepts the following parameters:
4052
4053 @table @option
4054 @item args
4055 This option syntax is:
4056 attack,decay,[attack,decay..] soft-knee points crossover_frequency [delay [initial_volume [gain]]] | attack,decay ...
4057 For explanation of each item refer to compand filter documentation.
4058 @end table
4059
4060 @anchor{pan}
4061 @section pan
4062
4063 Mix channels with specific gain levels. The filter accepts the output
4064 channel layout followed by a set of channels definitions.
4065
4066 This filter is also designed to efficiently remap the channels of an audio
4067 stream.
4068
4069 The filter accepts parameters of the form:
4070 "@var{l}|@var{outdef}|@var{outdef}|..."
4071
4072 @table @option
4073 @item l
4074 output channel layout or number of channels
4075
4076 @item outdef
4077 output channel specification, of the form:
4078 "@var{out_name}=[@var{gain}*]@var{in_name}[(+-)[@var{gain}*]@var{in_name}...]"
4079
4080 @item out_name
4081 output channel to define, either a channel name (FL, FR, etc.) or a channel
4082 number (c0, c1, etc.)
4083
4084 @item gain
4085 multiplicative coefficient for the channel, 1 leaving the volume unchanged
4086
4087 @item in_name
4088 input channel to use, see out_name for details; it is not possible to mix
4089 named and numbered input channels
4090 @end table
4091
4092 If the `=' in a channel specification is replaced by `<', then the gains for
4093 that specification will be renormalized so that the total is 1, thus
4094 avoiding clipping noise.
4095
4096 @subsection Mixing examples
4097
4098 For example, if you want to down-mix from stereo to mono, but with a bigger
4099 factor for the left channel:
4100 @example
4101 pan=1c|c0=0.9*c0+0.1*c1
4102 @end example
4103
4104 A customized down-mix to stereo that works automatically for 3-, 4-, 5- and
4105 7-channels surround:
4106 @example
4107 pan=stereo| FL < FL + 0.5*FC + 0.6*BL + 0.6*SL | FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
4108 @end example
4109
4110 Note that @command{ffmpeg} integrates a default down-mix (and up-mix) system
4111 that should be preferred (see "-ac" option) unless you have very specific
4112 needs.
4113
4114 @subsection Remapping examples
4115
4116 The channel remapping will be effective if, and only if:
4117
4118 @itemize
4119 @item gain coefficients are zeroes or ones,
4120 @item only one input per channel output,
4121 @end itemize
4122
4123 If all these conditions are satisfied, the filter will notify the user ("Pure
4124 channel mapping detected"), and use an optimized and lossless method to do the
4125 remapping.
4126
4127 For example, if you have a 5.1 source and want a stereo audio stream by
4128 dropping the extra channels:
4129 @example
4130 pan="stereo| c0=FL | c1=FR"
4131 @end example
4132
4133 Given the same source, you can also switch front left and front right channels
4134 and keep the input channel layout:
4135 @example
4136 pan="5.1| c0=c1 | c1=c0 | c2=c2 | c3=c3 | c4=c4 | c5=c5"
4137 @end example
4138
4139 If the input is a stereo audio stream, you can mute the front left channel (and
4140 still keep the stereo channel layout) with:
4141 @example
4142 pan="stereo|c1=c1"
4143 @end example
4144
4145 Still with a stereo audio stream input, you can copy the right channel in both
4146 front left and right:
4147 @example
4148 pan="stereo| c0=FR | c1=FR"
4149 @end example
4150
4151 @section replaygain
4152
4153 ReplayGain scanner filter. This filter takes an audio stream as an input and
4154 outputs it unchanged.
4155 At end of filtering it displays @code{track_gain} and @code{track_peak}.
4156
4157 @section resample
4158
4159 Convert the audio sample format, sample rate and channel layout. It is
4160 not meant to be used directly.
4161
4162 @section rubberband
4163 Apply time-stretching and pitch-shifting with librubberband.
4164
4165 To enable compilation of this filter, you need to configure FFmpeg with
4166 @code{--enable-librubberband}.
4167
4168 The filter accepts the following options:
4169
4170 @table @option
4171 @item tempo
4172 Set tempo scale factor.
4173
4174 @item pitch
4175 Set pitch scale factor.
4176
4177 @item transients
4178 Set transients detector.
4179 Possible values are:
4180 @table @var
4181 @item crisp
4182 @item mixed
4183 @item smooth
4184 @end table
4185
4186 @item detector
4187 Set detector.
4188 Possible values are:
4189 @table @var
4190 @item compound
4191 @item percussive
4192 @item soft
4193 @end table
4194
4195 @item phase
4196 Set phase.
4197 Possible values are:
4198 @table @var
4199 @item laminar
4200 @item independent
4201 @end table
4202
4203 @item window
4204 Set processing window size.
4205 Possible values are:
4206 @table @var
4207 @item standard
4208 @item short
4209 @item long
4210 @end table
4211
4212 @item smoothing
4213 Set smoothing.
4214 Possible values are:
4215 @table @var
4216 @item off
4217 @item on
4218 @end table
4219
4220 @item formant
4221 Enable formant preservation when shift pitching.
4222 Possible values are:
4223 @table @var
4224 @item shifted
4225 @item preserved
4226 @end table
4227
4228 @item pitchq
4229 Set pitch quality.
4230 Possible values are:
4231 @table @var
4232 @item quality
4233 @item speed
4234 @item consistency
4235 @end table
4236
4237 @item channels
4238 Set channels.
4239 Possible values are:
4240 @table @var
4241 @item apart
4242 @item together
4243 @end table
4244 @end table
4245
4246 @section sidechaincompress
4247
4248 This filter acts like normal compressor but has the ability to compress
4249 detected signal using second input signal.
4250 It needs two input streams and returns one output stream.
4251 First input stream will be processed depending on second stream signal.
4252 The filtered signal then can be filtered with other filters in later stages of
4253 processing. See @ref{pan} and @ref{amerge} filter.
4254
4255 The filter accepts the following options:
4256
4257 @table @option
4258 @item level_in
4259 Set input gain. Default is 1. Range is between 0.015625 and 64.
4260
4261 @item mode
4262 Set mode of compressor operation. Can be @code{upward} or @code{downward}.
4263 Default is @code{downward}.
4264
4265 @item threshold
4266 If a signal of second stream raises above this level it will affect the gain
4267 reduction of first stream.
4268 By default is 0.125. Range is between 0.00097563 and 1.
4269
4270 @item ratio
4271 Set a ratio about which the signal is reduced. 1:2 means that if the level
4272 raised 4dB above the threshold, it will be only 2dB above after the reduction.
4273 Default is 2. Range is between 1 and 20.
4274
4275 @item attack
4276 Amount of milliseconds the signal has to rise above the threshold before gain
4277 reduction starts. Default is 20. Range is between 0.01 and 2000.
4278
4279 @item release
4280 Amount of milliseconds the signal has to fall below the threshold before
4281 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
4282
4283 @item makeup
4284 Set the amount by how much signal will be amplified after processing.
4285 Default is 1. Range is from 1 to 64.
4286
4287 @item knee
4288 Curve the sharp knee around the threshold to enter gain reduction more softly.
4289 Default is 2.82843. Range is between 1 and 8.
4290
4291 @item link
4292 Choose if the @code{average} level between all channels of side-chain stream
4293 or the louder(@code{maximum}) channel of side-chain stream affects the
4294 reduction. Default is @code{average}.
4295
4296 @item detection
4297 Should the exact signal be taken in case of @code{peak} or an RMS one in case
4298 of @code{rms}. Default is @code{rms} which is mainly smoother.
4299
4300 @item level_sc
4301 Set sidechain gain. Default is 1. Range is between 0.015625 and 64.
4302
4303 @item mix
4304 How much to use compressed signal in output. Default is 1.
4305 Range is between 0 and 1.
4306 @end table
4307
4308 @subsection Examples
4309
4310 @itemize
4311 @item
4312 Full ffmpeg example taking 2 audio inputs, 1st input to be compressed
4313 depending on the signal of 2nd input and later compressed signal to be
4314 merged with 2nd input:
4315 @example
4316 ffmpeg -i main.flac -i sidechain.flac -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress[compr];[compr][mix]amerge"
4317 @end example
4318 @end itemize
4319
4320 @section sidechaingate
4321
4322 A sidechain gate acts like a normal (wideband) gate but has the ability to
4323 filter the detected signal before sending it to the gain reduction stage.
4324 Normally a gate uses the full range signal to detect a level above the
4325 threshold.
4326 For example: If you cut all lower frequencies from your sidechain signal
4327 the gate will decrease the volume of your track only if not enough highs
4328 appear. With this technique you are able to reduce the resonation of a
4329 natural drum or remove "rumbling" of muted strokes from a heavily distorted
4330 guitar.
4331 It needs two input streams and returns one output stream.
4332 First input stream will be processed depending on second stream signal.
4333
4334 The filter accepts the following options:
4335
4336 @table @option
4337 @item level_in
4338 Set input level before filtering.
4339 Default is 1. Allowed range is from 0.015625 to 64.
4340
4341 @item mode
4342 Set the mode of operation. Can be @code{upward} or @code{downward}.
4343 Default is @code{downward}. If set to @code{upward} mode, higher parts of signal
4344 will be amplified, expanding dynamic range in upward direction.
4345 Otherwise, in case of @code{downward} lower parts of signal will be reduced.
4346
4347 @item range
4348 Set the level of gain reduction when the signal is below the threshold.
4349 Default is 0.06125. Allowed range is from 0 to 1.
4350 Setting this to 0 disables reduction and then filter behaves like expander.
4351
4352 @item threshold
4353 If a signal rises above this level the gain reduction is released.
4354 Default is 0.125. Allowed range is from 0 to 1.
4355
4356 @item ratio
4357 Set a ratio about which the signal is reduced.
4358 Default is 2. Allowed range is from 1 to 9000.
4359
4360 @item attack
4361 Amount of milliseconds the signal has to rise above the threshold before gain
4362 reduction stops.
4363 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
4364
4365 @item release
4366 Amount of milliseconds the signal has to fall below the threshold before the
4367 reduction is increased again. Default is 250 milliseconds.
4368 Allowed range is from 0.01 to 9000.
4369
4370 @item makeup
4371 Set amount of amplification of signal after processing.
4372 Default is 1. Allowed range is from 1 to 64.
4373
4374 @item knee
4375 Curve the sharp knee around the threshold to enter gain reduction more softly.
4376 Default is 2.828427125. Allowed range is from 1 to 8.
4377
4378 @item detection
4379 Choose if exact signal should be taken for detection or an RMS like one.
4380 Default is rms. Can be peak or rms.
4381
4382 @item link
4383 Choose if the average level between all channels or the louder channel affects
4384 the reduction.
4385 Default is average. Can be average or maximum.
4386
4387 @item level_sc
4388 Set sidechain gain. Default is 1. Range is from 0.015625 to 64.
4389 @end table
4390
4391 @section silencedetect
4392
4393 Detect silence in an audio stream.
4394
4395 This filter logs a message when it detects that the input audio volume is less
4396 or equal to a noise tolerance value for a duration greater or equal to the
4397 minimum detected noise duration.
4398
4399 The printed times and duration are expressed in seconds.
4400
4401 The filter accepts the following options:
4402
4403 @table @option
4404 @item noise, n
4405 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
4406 specified value) or amplitude ratio. Default is -60dB, or 0.001.
4407
4408 @item duration, d
4409 Set silence duration until notification (default is 2 seconds).
4410
4411 @item mono, m
4412 Process each channel separately, instead of combined. By default is disabled.
4413 @end table
4414
4415 @subsection Examples
4416
4417 @itemize
4418 @item
4419 Detect 5 seconds of silence with -50dB noise tolerance:
4420 @example
4421 silencedetect=n=-50dB:d=5
4422 @end example
4423
4424 @item
4425 Complete example with @command{ffmpeg} to detect silence with 0.0001 noise
4426 tolerance in @file{silence.mp3}:
4427 @example
4428 ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
4429 @end example
4430 @end itemize
4431
4432 @section silenceremove
4433
4434 Remove silence from the beginning, middle or end of the audio.
4435
4436 The filter accepts the following options:
4437
4438 @table @option
4439 @item start_periods
4440 This value is used to indicate if audio should be trimmed at beginning of
4441 the audio. A value of zero indicates no silence should be trimmed from the
4442 beginning. When specifying a non-zero value, it trims audio up until it
4443 finds non-silence. Normally, when trimming silence from beginning of audio
4444 the @var{start_periods} will be @code{1} but it can be increased to higher
4445 values to trim all audio up to specific count of non-silence periods.
4446 Default value is @code{0}.
4447
4448 @item start_duration
4449 Specify the amount of time that non-silence must be detected before it stops
4450 trimming audio. By increasing the duration, bursts of noises can be treated
4451 as silence and trimmed off. Default value is @code{0}.
4452
4453 @item start_threshold
4454 This indicates what sample value should be treated as silence. For digital
4455 audio, a value of @code{0} may be fine but for audio recorded from analog,
4456 you may wish to increase the value to account for background noise.
4457 Can be specified in dB (in case "dB" is appended to the specified value)
4458 or amplitude ratio. Default value is @code{0}.
4459
4460 @item start_silence
4461 Specify max duration of silence at beginning that will be kept after
4462 trimming. Default is 0, which is equal to trimming all samples detected
4463 as silence.
4464
4465 @item start_mode
4466 Specify mode of detection of silence end in start of multi-channel audio.
4467 Can be @var{any} or @var{all}. Default is @var{any}.
4468 With @var{any}, any sample that is detected as non-silence will cause
4469 stopped trimming of silence.
4470 With @var{all}, only if all channels are detected as non-silence will cause
4471 stopped trimming of silence.
4472
4473 @item stop_periods
4474 Set the count for trimming silence from the end of audio.
4475 To remove silence from the middle of a file, specify a @var{stop_periods}
4476 that is negative. This value is then treated as a positive value and is
4477 used to indicate the effect should restart processing as specified by
4478 @var{start_periods}, making it suitable for removing periods of silence
4479 in the middle of the audio.
4480 Default value is @code{0}.
4481
4482 @item stop_duration
4483 Specify a duration of silence that must exist before audio is not copied any
4484 more. By specifying a higher duration, silence that is wanted can be left in
4485 the audio.
4486 Default value is @code{0}.
4487
4488 @item stop_threshold
4489 This is the same as @option{start_threshold} but for trimming silence from
4490 the end of audio.
4491 Can be specified in dB (in case "dB" is appended to the specified value)
4492 or amplitude ratio. Default value is @code{0}.
4493
4494 @item stop_silence
4495 Specify max duration of silence at end that will be kept after
4496 trimming. Default is 0, which is equal to trimming all samples detected
4497 as silence.
4498
4499 @item stop_mode
4500 Specify mode of detection of silence start in end of multi-channel audio.
4501 Can be @var{any} or @var{all}. Default is @var{any}.
4502 With @var{any}, any sample that is detected as non-silence will cause
4503 stopped trimming of silence.
4504 With @var{all}, only if all channels are detected as non-silence will cause
4505 stopped trimming of silence.
4506
4507 @item detection
4508 Set how is silence detected. Can be @code{rms} or @code{peak}. Second is faster
4509 and works better with digital silence which is exactly 0.
4510 Default value is @code{rms}.
4511
4512 @item window
4513 Set duration in number of seconds used to calculate size of window in number
4514 of samples for detecting silence.
4515 Default value is @code{0.02}. Allowed range is from @code{0} to @code{10}.
4516 @end table
4517
4518 @subsection Examples
4519
4520 @itemize
4521 @item
4522 The following example shows how this filter can be used to start a recording
4523 that does not contain the delay at the start which usually occurs between
4524 pressing the record button and the start of the performance:
4525 @example
4526 silenceremove=start_periods=1:start_duration=5:start_threshold=0.02
4527 @end example
4528
4529 @item
4530 Trim all silence encountered from beginning to end where there is more than 1
4531 second of silence in audio:
4532 @example
4533 silenceremove=stop_periods=-1:stop_duration=1:stop_threshold=-90dB
4534 @end example
4535 @end itemize
4536
4537 @section sofalizer
4538
4539 SOFAlizer uses head-related transfer functions (HRTFs) to create virtual
4540 loudspeakers around the user for binaural listening via headphones (audio
4541 formats up to 9 channels supported).
4542 The HRTFs are stored in SOFA files (see @url{http://www.sofacoustics.org/} for a database).
4543 SOFAlizer is developed at the Acoustics Research Institute (ARI) of the
4544 Austrian Academy of Sciences.
4545
4546 To enable compilation of this filter you need to configure FFmpeg with
4547 @code{--enable-libmysofa}.
4548
4549 The filter accepts the following options:
4550
4551 @table @option
4552 @item sofa
4553 Set the SOFA file used for rendering.
4554
4555 @item gain
4556 Set gain applied to audio. Value is in dB. Default is 0.
4557
4558 @item rotation
4559 Set rotation of virtual loudspeakers in deg. Default is 0.
4560
4561 @item elevation
4562 Set elevation of virtual speakers in deg. Default is 0.
4563
4564 @item radius
4565 Set distance in meters between loudspeakers and the listener with near-field
4566 HRTFs. Default is 1.
4567
4568 @item type
4569 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
4570 processing audio in time domain which is slow.
4571 @var{freq} is processing audio in frequency domain which is fast.
4572 Default is @var{freq}.
4573
4574 @item speakers
4575 Set custom positions of virtual loudspeakers. Syntax for this option is:
4576 <CH> <AZIM> <ELEV>[|<CH> <AZIM> <ELEV>|...].
4577 Each virtual loudspeaker is described with short channel name following with
4578 azimuth and elevation in degrees.
4579 Each virtual loudspeaker description is separated by '|'.
4580 For example to override front left and front right channel positions use:
4581 'speakers=FL 45 15|FR 345 15'.
4582 Descriptions with unrecognised channel names are ignored.
4583
4584 @item lfegain
4585 Set custom gain for LFE channels. Value is in dB. Default is 0.
4586
4587 @item framesize
4588 Set custom frame size in number of samples. Default is 1024.
4589 Allowed range is from 1024 to 96000. Only used if option @samp{type}
4590 is set to @var{freq}.
4591
4592 @item normalize
4593 Should all IRs be normalized upon importing SOFA file.
4594 By default is enabled.
4595
4596 @item interpolate
4597 Should nearest IRs be interpolated with neighbor IRs if exact position
4598 does not match. By default is disabled.
4599
4600 @item minphase
4601 Minphase all IRs upon loading of SOFA file. By default is disabled.
4602
4603 @item anglestep
4604 Set neighbor search angle step. Only used if option @var{interpolate} is enabled.
4605
4606 @item radstep
4607 Set neighbor search radius step. Only used if option @var{interpolate} is enabled.
4608 @end table
4609
4610 @subsection Examples
4611
4612 @itemize
4613 @item
4614 Using ClubFritz6 sofa file:
4615 @example
4616 sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=1
4617 @end example
4618
4619 @item
4620 Using ClubFritz12 sofa file and bigger radius with small rotation:
4621 @example
4622 sofalizer=sofa=/path/to/ClubFritz12.sofa:type=freq:radius=2:rotation=5
4623 @end example
4624
4625 @item
4626 Similar as above but with custom speaker positions for front left, front right, back left and back right
4627 and also with custom gain:
4628 @example
4629 "sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=2:speakers=FL 45|FR 315|BL 135|BR 225:gain=28"
4630 @end example
4631 @end itemize
4632
4633 @section stereotools
4634
4635 This filter has some handy utilities to manage stereo signals, for converting
4636 M/S stereo recordings to L/R signal while having control over the parameters
4637 or spreading the stereo image of master track.
4638
4639 The filter accepts the following options:
4640
4641 @table @option
4642 @item level_in
4643 Set input level before filtering for both channels. Defaults is 1.
4644 Allowed range is from 0.015625 to 64.
4645
4646 @item level_out
4647 Set output level after filtering for both channels. Defaults is 1.
4648 Allowed range is from 0.015625 to 64.
4649
4650 @item balance_in
4651 Set input balance between both channels. Default is 0.
4652 Allowed range is from -1 to 1.
4653
4654 @item balance_out
4655 Set output balance between both channels. Default is 0.
4656 Allowed range is from -1 to 1.
4657
4658 @item softclip
4659 Enable softclipping. Results in analog distortion instead of harsh digital 0dB
4660 clipping. Disabled by default.
4661
4662 @item mutel
4663 Mute the left channel. Disabled by default.
4664
4665 @item muter
4666 Mute the right channel. Disabled by default.
4667
4668 @item phasel
4669 Change the phase of the left channel. Disabled by default.
4670
4671 @item phaser
4672 Change the phase of the right channel. Disabled by default.
4673
4674 @item mode
4675 Set stereo mode. Available values are:
4676
4677 @table @samp
4678 @item lr>lr
4679 Left/Right to Left/Right, this is default.
4680
4681 @item lr>ms
4682 Left/Right to Mid/Side.
4683
4684 @item ms>lr
4685 Mid/Side to Left/Right.
4686
4687 @item lr>ll
4688 Left/Right to Left/Left.
4689
4690 @item lr>rr
4691 Left/Right to Right/Right.
4692
4693 @item lr>l+r
4694 Left/Right to Left + Right.
4695
4696 @item lr>rl
4697 Left/Right to Right/Left.
4698
4699 @item ms>ll
4700 Mid/Side to Left/Left.
4701
4702 @item ms>rr
4703 Mid/Side to Right/Right.
4704 @end table
4705
4706 @item slev
4707 Set level of side signal. Default is 1.
4708 Allowed range is from 0.015625 to 64.
4709
4710 @item sbal
4711 Set balance of side signal. Default is 0.
4712 Allowed range is from -1 to 1.
4713
4714 @item mlev
4715 Set level of the middle signal. Default is 1.
4716 Allowed range is from 0.015625 to 64.
4717
4718 @item mpan
4719 Set middle signal pan. Default is 0. Allowed range is from -1 to 1.
4720
4721 @item base
4722 Set stereo base between mono and inversed channels. Default is 0.
4723 Allowed range is from -1 to 1.
4724
4725 @item delay
4726 Set delay in milliseconds how much to delay left from right channel and
4727 vice versa. Default is 0. Allowed range is from -20 to 20.
4728
4729 @item sclevel
4730 Set S/C level. Default is 1. Allowed range is from 1 to 100.
4731
4732 @item phase
4733 Set the stereo phase in degrees. Default is 0. Allowed range is from 0 to 360.
4734
4735 @item bmode_in, bmode_out
4736 Set balance mode for balance_in/balance_out option.
4737
4738 Can be one of the following:
4739
4740 @table @samp
4741 @item balance
4742 Classic balance mode. Attenuate one channel at time.
4743 Gain is raised up to 1.
4744
4745 @item amplitude
4746 Similar as classic mode above but gain is raised up to 2.
4747
4748 @item power
4749 Equal power distribution, from -6dB to +6dB range.
4750 @end table
4751 @end table
4752
4753 @subsection Examples
4754
4755 @itemize
4756 @item
4757 Apply karaoke like effect:
4758 @example
4759 stereotools=mlev=0.015625
4760 @end example
4761
4762 @item
4763 Convert M/S signal to L/R:
4764 @example
4765 "stereotools=mode=ms>lr"
4766 @end example
4767 @end itemize
4768
4769 @section stereowiden
4770
4771 This filter enhance the stereo effect by suppressing signal common to both
4772 channels and by delaying the signal of left into right and vice versa,
4773 thereby widening the stereo effect.
4774
4775 The filter accepts the following options:
4776
4777 @table @option
4778 @item delay
4779 Time in milliseconds of the delay of left signal into right and vice versa.
4780 Default is 20 milliseconds.
4781
4782 @item feedback
4783 Amount of gain in delayed signal into right and vice versa. Gives a delay
4784 effect of left signal in right output and vice versa which gives widening
4785 effect. Default is 0.3.
4786
4787 @item crossfeed
4788 Cross feed of left into right with inverted phase. This helps in suppressing
4789 the mono. If the value is 1 it will cancel all the signal common to both
4790 channels. Default is 0.3.
4791
4792 @item drymix
4793 Set level of input signal of original channel. Default is 0.8.
4794 @end table
4795
4796 @section superequalizer
4797 Apply 18 band equalizer.
4798
4799 The filter accepts the following options:
4800 @table @option
4801 @item 1b
4802 Set 65Hz band gain.
4803 @item 2b
4804 Set 92Hz band gain.
4805 @item 3b
4806 Set 131Hz band gain.
4807 @item 4b
4808 Set 185Hz band gain.
4809 @item 5b
4810 Set 262Hz band gain.
4811 @item 6b
4812 Set 370Hz band gain.
4813 @item 7b
4814 Set 523Hz band gain.
4815 @item 8b
4816 Set 740Hz band gain.
4817 @item 9b
4818 Set 1047Hz band gain.
4819 @item 10b
4820 Set 1480Hz band gain.
4821 @item 11b
4822 Set 2093Hz band gain.
4823 @item 12b
4824 Set 2960Hz band gain.
4825 @item 13b
4826 Set 4186Hz band gain.
4827 @item 14b
4828 Set 5920Hz band gain.
4829 @item 15b
4830 Set 8372Hz band gain.
4831 @item 16b
4832 Set 11840Hz band gain.
4833 @item 17b
4834 Set 16744Hz band gain.
4835 @item 18b
4836 Set 20000Hz band gain.
4837 @end table
4838
4839 @section surround
4840 Apply audio surround upmix filter.
4841
4842 This filter allows to produce multichannel output from audio stream.
4843
4844 The filter accepts the following options:
4845
4846 @table @option
4847 @item chl_out
4848 Set output channel layout. By default, this is @var{5.1}.
4849
4850 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4851 for the required syntax.
4852
4853 @item chl_in
4854 Set input channel layout. By default, this is @var{stereo}.
4855
4856 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4857 for the required syntax.
4858
4859 @item level_in
4860 Set input volume level. By default, this is @var{1}.
4861
4862 @item level_out
4863 Set output volume level. By default, this is @var{1}.
4864
4865 @item lfe
4866 Enable LFE channel output if output channel layout has it. By default, this is enabled.
4867
4868 @item lfe_low
4869 Set LFE low cut off frequency. By default, this is @var{128} Hz.
4870
4871 @item lfe_high
4872 Set LFE high cut off frequency. By default, this is @var{256} Hz.
4873
4874 @item fc_in
4875 Set front center input volume. By default, this is @var{1}.
4876
4877 @item fc_out
4878 Set front center output volume. By default, this is @var{1}.
4879
4880 @item lfe_in
4881 Set LFE input volume. By default, this is @var{1}.
4882
4883 @item lfe_out
4884 Set LFE output volume. By default, this is @var{1}.
4885 @end table
4886
4887 @section treble, highshelf
4888
4889 Boost or cut treble (upper) frequencies of the audio using a two-pole
4890 shelving filter with a response similar to that of a standard
4891 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
4892
4893 The filter accepts the following options:
4894
4895 @table @option
4896 @item gain, g
4897 Give the gain at whichever is the lower of ~22 kHz and the
4898 Nyquist frequency. Its useful range is about -20 (for a large cut)
4899 to +20 (for a large boost). Beware of clipping when using a positive gain.
4900
4901 @item frequency, f
4902 Set the filter's central frequency and so can be used
4903 to extend or reduce the frequency range to be boosted or cut.
4904 The default value is @code{3000} Hz.
4905
4906 @item width_type, t
4907 Set method to specify band-width of filter.
4908 @table @option
4909 @item h
4910 Hz
4911 @item q
4912 Q-Factor
4913 @item o
4914 octave
4915 @item s
4916 slope
4917 @item k
4918 kHz
4919 @end table
4920
4921 @item width, w
4922 Determine how steep is the filter's shelf transition.
4923
4924 @item channels, c
4925 Specify which channels to filter, by default all available are filtered.
4926 @end table
4927
4928 @subsection Commands
4929
4930 This filter supports the following commands:
4931 @table @option
4932 @item frequency, f
4933 Change treble frequency.
4934 Syntax for the command is : "@var{frequency}"
4935
4936 @item width_type, t
4937 Change treble width_type.
4938 Syntax for the command is : "@var{width_type}"
4939
4940 @item width, w
4941 Change treble width.
4942 Syntax for the command is : "@var{width}"
4943
4944 @item gain, g
4945 Change treble gain.
4946 Syntax for the command is : "@var{gain}"
4947 @end table
4948
4949 @section tremolo
4950
4951 Sinusoidal amplitude modulation.
4952
4953 The filter accepts the following options:
4954
4955 @table @option
4956 @item f
4957 Modulation frequency in Hertz. Modulation frequencies in the subharmonic range
4958 (20 Hz or lower) will result in a tremolo effect.
4959 This filter may also be used as a ring modulator by specifying
4960 a modulation frequency higher than 20 Hz.
4961 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
4962
4963 @item d
4964 Depth of modulation as a percentage. Range is 0.0 - 1.0.
4965 Default value is 0.5.
4966 @end table
4967
4968 @section vibrato
4969
4970 Sinusoidal phase modulation.
4971
4972 The filter accepts the following options:
4973
4974 @table @option
4975 @item f
4976 Modulation frequency in Hertz.
4977 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
4978
4979 @item d
4980 Depth of modulation as a percentage. Range is 0.0 - 1.0.
4981 Default value is 0.5.
4982 @end table
4983
4984 @section volume
4985
4986 Adjust the input audio volume.
4987
4988 It accepts the following parameters:
4989 @table @option
4990
4991 @item volume
4992 Set audio volume expression.
4993
4994 Output values are clipped to the maximum value.
4995
4996 The output audio volume is given by the relation:
4997 @example
4998 @var{output_volume} = @var{volume} * @var{input_volume}
4999 @end example
5000
5001 The default value for @var{volume} is "1.0".
5002
5003 @item precision
5004 This parameter represents the mathematical precision.
5005
5006 It determines which input sample formats will be allowed, which affects the
5007 precision of the volume scaling.
5008
5009 @table @option
5010 @item fixed
5011 8-bit fixed-point; this limits input sample format to U8, S16, and S32.
5012 @item float
5013 32-bit floating-point; this limits input sample format to FLT. (default)
5014 @item double
5015 64-bit floating-point; this limits input sample format to DBL.
5016 @end table
5017
5018 @item replaygain
5019 Choose the behaviour on encountering ReplayGain side data in input frames.
5020
5021 @table @option
5022 @item drop
5023 Remove ReplayGain side data, ignoring its contents (the default).
5024
5025 @item ignore
5026 Ignore ReplayGain side data, but leave it in the frame.
5027
5028 @item track
5029 Prefer the track gain, if present.
5030
5031 @item album
5032 Prefer the album gain, if present.
5033 @end table
5034
5035 @item replaygain_preamp
5036 Pre-amplification gain in dB to apply to the selected replaygain gain.
5037
5038 Default value for @var{replaygain_preamp} is 0.0.
5039
5040 @item eval
5041 Set when the volume expression is evaluated.
5042
5043 It accepts the following values:
5044 @table @samp
5045 @item once
5046 only evaluate expression once during the filter initialization, or
5047 when the @samp{volume} command is sent
5048
5049 @item frame
5050 evaluate expression for each incoming frame
5051 @end table
5052
5053 Default value is @samp{once}.
5054 @end table
5055
5056 The volume expression can contain the following parameters.
5057
5058 @table @option
5059 @item n
5060 frame number (starting at zero)
5061 @item nb_channels
5062 number of channels
5063 @item nb_consumed_samples
5064 number of samples consumed by the filter
5065 @item nb_samples
5066 number of samples in the current frame
5067 @item pos
5068 original frame position in the file
5069 @item pts
5070 frame PTS
5071 @item sample_rate
5072 sample rate
5073 @item startpts
5074 PTS at start of stream
5075 @item startt
5076 time at start of stream
5077 @item t
5078 frame time
5079 @item tb
5080 timestamp timebase
5081 @item volume
5082 last set volume value
5083 @end table
5084
5085 Note that when @option{eval} is set to @samp{once} only the
5086 @var{sample_rate} and @var{tb} variables are available, all other
5087 variables will evaluate to NAN.
5088
5089 @subsection Commands
5090
5091 This filter supports the following commands:
5092 @table @option
5093 @item volume
5094 Modify the volume expression.
5095 The command accepts the same syntax of the corresponding option.
5096
5097 If the specified expression is not valid, it is kept at its current
5098 value.
5099 @item replaygain_noclip
5100 Prevent clipping by limiting the gain applied.
5101
5102 Default value for @var{replaygain_noclip} is 1.
5103
5104 @end table
5105
5106 @subsection Examples
5107
5108 @itemize
5109 @item
5110 Halve the input audio volume:
5111 @example
5112 volume=volume=0.5
5113 volume=volume=1/2
5114 volume=volume=-6.0206dB
5115 @end example
5116
5117 In all the above example the named key for @option{volume} can be
5118 omitted, for example like in:
5119 @example
5120 volume=0.5
5121 @end example
5122
5123 @item
5124 Increase input audio power by 6 decibels using fixed-point precision:
5125 @example
5126 volume=volume=6dB:precision=fixed
5127 @end example
5128
5129 @item
5130 Fade volume after time 10 with an annihilation period of 5 seconds:
5131 @example
5132 volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
5133 @end example
5134 @end itemize
5135
5136 @section volumedetect
5137
5138 Detect the volume of the input video.
5139
5140 The filter has no parameters. The input is not modified. Statistics about
5141 the volume will be printed in the log when the input stream end is reached.
5142
5143 In particular it will show the mean volume (root mean square), maximum
5144 volume (on a per-sample basis), and the beginning of a histogram of the
5145 registered volume values (from the maximum value to a cumulated 1/1000 of
5146 the samples).
5147
5148 All volumes are in decibels relative to the maximum PCM value.
5149
5150 @subsection Examples
5151
5152 Here is an excerpt of the output:
5153 @example
5154 [Parsed_volumedetect_0 @ 0xa23120] mean_volume: -27 dB
5155 [Parsed_volumedetect_0 @ 0xa23120] max_volume: -4 dB
5156 [Parsed_volumedetect_0 @ 0xa23120] histogram_4db: 6
5157 [Parsed_volumedetect_0 @ 0xa23120] histogram_5db: 62
5158 [Parsed_volumedetect_0 @ 0xa23120] histogram_6db: 286
5159 [Parsed_volumedetect_0 @ 0xa23120] histogram_7db: 1042
5160 [Parsed_volumedetect_0 @ 0xa23120] histogram_8db: 2551
5161 [Parsed_volumedetect_0 @ 0xa23120] histogram_9db: 4609
5162 [Parsed_volumedetect_0 @ 0xa23120] histogram_10db: 8409
5163 @end example
5164
5165 It means that:
5166 @itemize
5167 @item
5168 The mean square energy is approximately -27 dB, or 10^-2.7.
5169 @item
5170 The largest sample is at -4 dB, or more precisely between -4 dB and -5 dB.
5171 @item
5172 There are 6 samples at -4 dB, 62 at -5 dB, 286 at -6 dB, etc.
5173 @end itemize
5174
5175 In other words, raising the volume by +4 dB does not cause any clipping,
5176 raising it by +5 dB causes clipping for 6 samples, etc.
5177
5178 @c man end AUDIO FILTERS
5179
5180 @chapter Audio Sources
5181 @c man begin AUDIO SOURCES
5182
5183 Below is a description of the currently available audio sources.
5184
5185 @section abuffer
5186
5187 Buffer audio frames, and make them available to the filter chain.
5188
5189 This source is mainly intended for a programmatic use, in particular
5190 through the interface defined in @file{libavfilter/asrc_abuffer.h}.
5191
5192 It accepts the following parameters:
5193 @table @option
5194
5195 @item time_base
5196 The timebase which will be used for timestamps of submitted frames. It must be
5197 either a floating-point number or in @var{numerator}/@var{denominator} form.
5198
5199 @item sample_rate
5200 The sample rate of the incoming audio buffers.
5201
5202 @item sample_fmt
5203 The sample format of the incoming audio buffers.
5204 Either a sample format name or its corresponding integer representation from
5205 the enum AVSampleFormat in @file{libavutil/samplefmt.h}
5206
5207 @item channel_layout
5208 The channel layout of the incoming audio buffers.
5209 Either a channel layout name from channel_layout_map in
5210 @file{libavutil/channel_layout.c} or its corresponding integer representation
5211 from the AV_CH_LAYOUT_* macros in @file{libavutil/channel_layout.h}
5212
5213 @item channels
5214 The number of channels of the incoming audio buffers.
5215 If both @var{channels} and @var{channel_layout} are specified, then they
5216 must be consistent.
5217
5218 @end table
5219
5220 @subsection Examples
5221
5222 @example
5223 abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
5224 @end example
5225
5226 will instruct the source to accept planar 16bit signed stereo at 44100Hz.
5227 Since the sample format with name "s16p" corresponds to the number
5228 6 and the "stereo" channel layout corresponds to the value 0x3, this is
5229 equivalent to:
5230 @example
5231 abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
5232 @end example
5233
5234 @section aevalsrc
5235
5236 Generate an audio signal specified by an expression.
5237
5238 This source accepts in input one or more expressions (one for each
5239 channel), which are evaluated and used to generate a corresponding
5240 audio signal.
5241
5242 This source accepts the following options:
5243
5244 @table @option
5245 @item exprs
5246 Set the '|'-separated expressions list for each separate channel. In case the
5247 @option{channel_layout} option is not specified, the selected channel layout
5248 depends on the number of provided expressions. Otherwise the last
5249 specified expression is applied to the remaining output channels.
5250
5251 @item channel_layout, c
5252 Set the channel layout. The number of channels in the specified layout
5253 must be equal to the number of specified expressions.
5254
5255 @item duration, d
5256 Set the minimum duration of the sourced audio. See
5257 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5258 for the accepted syntax.
5259 Note that the resulting duration may be greater than the specified
5260 duration, as the generated audio is always cut at the end of a
5261 complete frame.
5262
5263 If not specified, or the expressed duration is negative, the audio is
5264 supposed to be generated forever.
5265
5266 @item nb_samples, n
5267 Set the number of samples per channel per each output frame,
5268 default to 1024.
5269
5270 @item sample_rate, s
5271 Specify the sample rate, default to 44100.
5272 @end table
5273
5274 Each expression in @var{exprs} can contain the following constants:
5275
5276 @table @option
5277 @item n
5278 number of the evaluated sample, starting from 0
5279
5280 @item t
5281 time of the evaluated sample expressed in seconds, starting from 0
5282
5283 @item s
5284 sample rate
5285
5286 @end table
5287
5288 @subsection Examples
5289
5290 @itemize
5291 @item
5292 Generate silence:
5293 @example
5294 aevalsrc=0
5295 @end example
5296
5297 @item
5298 Generate a sin signal with frequency of 440 Hz, set sample rate to
5299 8000 Hz:
5300 @example
5301 aevalsrc="sin(440*2*PI*t):s=8000"
5302 @end example
5303
5304 @item
5305 Generate a two channels signal, specify the channel layout (Front
5306 Center + Back Center) explicitly:
5307 @example
5308 aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
5309 @end example
5310
5311 @item
5312 Generate white noise:
5313 @example
5314 aevalsrc="-2+random(0)"
5315 @end example
5316
5317 @item
5318 Generate an amplitude modulated signal:
5319 @example
5320 aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
5321 @end example
5322
5323 @item
5324 Generate 2.5 Hz binaural beats on a 360 Hz carrier:
5325 @example
5326 aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
5327 @end example
5328
5329 @end itemize
5330
5331 @section anullsrc
5332
5333 The null audio source, return unprocessed audio frames. It is mainly useful
5334 as a template and to be employed in analysis / debugging tools, or as
5335 the source for filters which ignore the input data (for example the sox
5336 synth filter).
5337
5338 This source accepts the following options:
5339
5340 @table @option
5341
5342 @item channel_layout, cl
5343
5344 Specifies the channel layout, and can be either an integer or a string
5345 representing a channel layout. The default value of @var{channel_layout}
5346 is "stereo".
5347
5348 Check the channel_layout_map definition in
5349 @file{libavutil/channel_layout.c} for the mapping between strings and
5350 channel layout values.
5351
5352 @item sample_rate, r
5353 Specifies the sample rate, and defaults to 44100.
5354
5355 @item nb_samples, n
5356 Set the number of samples per requested frames.
5357
5358 @end table
5359
5360 @subsection Examples
5361
5362 @itemize
5363 @item
5364 Set the sample rate to 48000 Hz and the channel layout to AV_CH_LAYOUT_MONO.
5365 @example
5366 anullsrc=r=48000:cl=4
5367 @end example
5368
5369 @item
5370 Do the same operation with a more obvious syntax:
5371 @example
5372 anullsrc=r=48000:cl=mono
5373 @end example
5374 @end itemize
5375
5376 All the parameters need to be explicitly defined.
5377
5378 @section flite
5379
5380 Synthesize a voice utterance using the libflite library.
5381
5382 To enable compilation of this filter you need to configure FFmpeg with
5383 @code{--enable-libflite}.
5384
5385 Note that versions of the flite library prior to 2.0 are not thread-safe.
5386
5387 The filter accepts the following options:
5388
5389 @table @option
5390
5391 @item list_voices
5392 If set to 1, list the names of the available voices and exit
5393 immediately. Default value is 0.
5394
5395 @item nb_samples, n
5396 Set the maximum number of samples per frame. Default value is 512.
5397
5398 @item textfile
5399 Set the filename containing the text to speak.
5400
5401 @item text
5402 Set the text to speak.
5403
5404 @item voice, v
5405 Set the voice to use for the speech synthesis. Default value is
5406 @code{kal}. See also the @var{list_voices} option.
5407 @end table
5408
5409 @subsection Examples
5410
5411 @itemize
5412 @item
5413 Read from file @file{speech.txt}, and synthesize the text using the
5414 standard flite voice:
5415 @example
5416 flite=textfile=speech.txt
5417 @end example
5418
5419 @item
5420 Read the specified text selecting the @code{slt} voice:
5421 @example
5422 flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
5423 @end example
5424
5425 @item
5426 Input text to ffmpeg:
5427 @example
5428 ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
5429 @end example
5430
5431 @item
5432 Make @file{ffplay} speak the specified text, using @code{flite} and
5433 the @code{lavfi} device:
5434 @example
5435 ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
5436 @end example
5437 @end itemize
5438
5439 For more information about libflite, check:
5440 @url{http://www.festvox.org/flite/}
5441
5442 @section anoisesrc
5443
5444 Generate a noise audio signal.
5445
5446 The filter accepts the following options:
5447
5448 @table @option
5449 @item sample_rate, r
5450 Specify the sample rate. Default value is 48000 Hz.
5451
5452 @item amplitude, a
5453 Specify the amplitude (0.0 - 1.0) of the generated audio stream. Default value
5454 is 1.0.
5455
5456 @item duration, d
5457 Specify the duration of the generated audio stream. Not specifying this option
5458 results in noise with an infinite length.
5459
5460 @item color, colour, c
5461 Specify the color of noise. Available noise colors are white, pink, brown,
5462 blue and violet. Default color is white.
5463
5464 @item seed, s
5465 Specify a value used to seed the PRNG.
5466
5467 @item nb_samples, n
5468 Set the number of samples per each output frame, default is 1024.
5469 @end table
5470
5471 @subsection Examples
5472
5473 @itemize
5474
5475 @item
5476 Generate 60 seconds of pink noise, with a 44.1 kHz sampling rate and an amplitude of 0.5:
5477 @example
5478 anoisesrc=d=60:c=pink:r=44100:a=0.5
5479 @end example
5480 @end itemize
5481
5482 @section hilbert
5483
5484 Generate odd-tap Hilbert transform FIR coefficients.
5485
5486 The resulting stream can be used with @ref{afir} filter for phase-shifting
5487 the signal by 90 degrees.
5488
5489 This is used in many matrix coding schemes and for analytic signal generation.
5490 The process is often written as a multiplication by i (or j), the imaginary unit.
5491
5492 The filter accepts the following options:
5493
5494 @table @option
5495
5496 @item sample_rate, s
5497 Set sample rate, default is 44100.
5498
5499 @item taps, t
5500 Set length of FIR filter, default is 22051.
5501
5502 @item nb_samples, n
5503 Set number of samples per each frame.
5504
5505 @item win_func, w
5506 Set window function to be used when generating FIR coefficients.
5507 @end table
5508
5509 @section sinc
5510
5511 Generate a sinc kaiser-windowed low-pass, high-pass, band-pass, or band-reject FIR coefficients.
5512
5513 The resulting stream can be used with @ref{afir} filter for filtering the audio signal.
5514
5515 The filter accepts the following options:
5516
5517 @table @option
5518 @item sample_rate, r
5519 Set sample rate, default is 44100.
5520
5521 @item nb_samples, n
5522 Set number of samples per each frame. Default is 1024.
5523
5524 @item hp
5525 Set high-pass frequency. Default is 0.
5526
5527 @item lp
5528 Set low-pass frequency. Default is 0.
5529 If high-pass frequency is lower than low-pass frequency and low-pass frequency
5530 is higher than 0 then filter will create band-pass filter coefficients,
5531 otherwise band-reject filter coefficients.
5532
5533 @item phase
5534 Set filter phase response. Default is 50. Allowed range is from 0 to 100.
5535
5536 @item beta
5537 Set Kaiser window beta.
5538
5539 @item att
5540 Set stop-band attenuation. Default is 120dB, allowed range is from 40 to 180 dB.
5541
5542 @item round
5543 Enable rounding, by default is disabled.
5544
5545 @item hptaps
5546 Set number of taps for high-pass filter.
5547
5548 @item lptaps
5549 Set number of taps for low-pass filter.
5550 @end table
5551
5552 @section sine
5553
5554 Generate an audio signal made of a sine wave with amplitude 1/8.
5555
5556 The audio signal is bit-exact.
5557
5558 The filter accepts the following options:
5559
5560 @table @option
5561
5562 @item frequency, f
5563 Set the carrier frequency. Default is 440 Hz.
5564
5565 @item beep_factor, b
5566 Enable a periodic beep every second with frequency @var{beep_factor} times
5567 the carrier frequency. Default is 0, meaning the beep is disabled.
5568
5569 @item sample_rate, r
5570 Specify the sample rate, default is 44100.
5571
5572 @item duration, d
5573 Specify the duration of the generated audio stream.
5574
5575 @item samples_per_frame
5576 Set the number of samples per output frame.
5577
5578 The expression can contain the following constants:
5579
5580 @table @option
5581 @item n
5582 The (sequential) number of the output audio frame, starting from 0.
5583
5584 @item pts
5585 The PTS (Presentation TimeStamp) of the output audio frame,
5586 expressed in @var{TB} units.
5587
5588 @item t
5589 The PTS of the output audio frame, expressed in seconds.
5590
5591 @item TB
5592 The timebase of the output audio frames.
5593 @end table
5594
5595 Default is @code{1024}.
5596 @end table
5597
5598 @subsection Examples
5599
5600 @itemize
5601
5602 @item
5603 Generate a simple 440 Hz sine wave:
5604 @example
5605 sine
5606 @end example
5607
5608 @item
5609 Generate a 220 Hz sine wave with a 880 Hz beep each second, for 5 seconds:
5610 @example
5611 sine=220:4:d=5
5612 sine=f=220:b=4:d=5
5613 sine=frequency=220:beep_factor=4:duration=5
5614 @end example
5615
5616 @item
5617 Generate a 1 kHz sine wave following @code{1602,1601,1602,1601,1602} NTSC
5618 pattern:
5619 @example
5620 sine=1000:samples_per_frame='st(0,mod(n,5)); 1602-not(not(eq(ld(0),1)+eq(ld(0),3)))'
5621 @end example
5622 @end itemize
5623
5624 @c man end AUDIO SOURCES
5625
5626 @chapter Audio Sinks
5627 @c man begin AUDIO SINKS
5628
5629 Below is a description of the currently available audio sinks.
5630
5631 @section abuffersink
5632
5633 Buffer audio frames, and make them available to the end of filter chain.
5634
5635 This sink is mainly intended for programmatic use, in particular
5636 through the interface defined in @file{libavfilter/buffersink.h}
5637 or the options system.
5638
5639 It accepts a pointer to an AVABufferSinkContext structure, which
5640 defines the incoming buffers' formats, to be passed as the opaque
5641 parameter to @code{avfilter_init_filter} for initialization.
5642 @section anullsink
5643
5644 Null audio sink; do absolutely nothing with the input audio. It is
5645 mainly useful as a template and for use in analysis / debugging
5646 tools.
5647
5648 @c man end AUDIO SINKS
5649
5650 @chapter Video Filters
5651 @c man begin VIDEO FILTERS
5652
5653 When you configure your FFmpeg build, you can disable any of the
5654 existing filters using @code{--disable-filters}.
5655 The configure output will show the video filters included in your
5656 build.
5657
5658 Below is a description of the currently available video filters.
5659
5660 @section alphaextract
5661
5662 Extract the alpha component from the input as a grayscale video. This
5663 is especially useful with the @var{alphamerge} filter.
5664
5665 @section alphamerge
5666
5667 Add or replace the alpha component of the primary input with the
5668 grayscale value of a second input. This is intended for use with
5669 @var{alphaextract} to allow the transmission or storage of frame
5670 sequences that have alpha in a format that doesn't support an alpha
5671 channel.
5672
5673 For example, to reconstruct full frames from a normal YUV-encoded video
5674 and a separate video created with @var{alphaextract}, you might use:
5675 @example
5676 movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
5677 @end example
5678
5679 Since this filter is designed for reconstruction, it operates on frame
5680 sequences without considering timestamps, and terminates when either
5681 input reaches end of stream. This will cause problems if your encoding
5682 pipeline drops frames. If you're trying to apply an image as an
5683 overlay to a video stream, consider the @var{overlay} filter instead.
5684
5685 @section amplify
5686
5687 Amplify differences between current pixel and pixels of adjacent frames in
5688 same pixel location.
5689
5690 This filter accepts the following options:
5691
5692 @table @option
5693 @item radius
5694 Set frame radius. Default is 2. Allowed range is from 1 to 63.
5695 For example radius of 3 will instruct filter to calculate average of 7 frames.
5696
5697 @item factor
5698 Set factor to amplify difference. Default is 2. Allowed range is from 0 to 65535.
5699
5700 @item threshold
5701 Set threshold for difference amplification. Any difference greater or equal to
5702 this value will not alter source pixel. Default is 10.
5703 Allowed range is from 0 to 65535.
5704
5705 @item tolerance
5706 Set tolerance for difference amplification. Any difference lower to
5707 this value will not alter source pixel. Default is 0.
5708 Allowed range is from 0 to 65535.
5709
5710 @item low
5711 Set lower limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
5712 This option controls maximum possible value that will decrease source pixel value.
5713
5714 @item high
5715 Set high limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
5716 This option controls maximum possible value that will increase source pixel value.
5717
5718 @item planes
5719 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
5720 @end table
5721
5722 @section ass
5723
5724 Same as the @ref{subtitles} filter, except that it doesn't require libavcodec
5725 and libavformat to work. On the other hand, it is limited to ASS (Advanced
5726 Substation Alpha) subtitles files.
5727
5728 This filter accepts the following option in addition to the common options from
5729 the @ref{subtitles} filter:
5730
5731 @table @option
5732 @item shaping
5733 Set the shaping engine
5734
5735 Available values are:
5736 @table @samp
5737 @item auto
5738 The default libass shaping engine, which is the best available.
5739 @item simple
5740 Fast, font-agnostic shaper that can do only substitutions
5741 @item complex
5742 Slower shaper using OpenType for substitutions and positioning
5743 @end table
5744
5745 The default is @code{auto}.
5746 @end table
5747
5748 @section atadenoise
5749 Apply an Adaptive Temporal Averaging Denoiser to the video input.
5750
5751 The filter accepts the following options:
5752
5753 @table @option
5754 @item 0a
5755 Set threshold A for 1st plane. Default is 0.02.
5756 Valid range is 0 to 0.3.
5757
5758 @item 0b
5759 Set threshold B for 1st plane. Default is 0.04.
5760 Valid range is 0 to 5.
5761
5762 @item 1a
5763 Set threshold A for 2nd plane. Default is 0.02.
5764 Valid range is 0 to 0.3.
5765
5766 @item 1b
5767 Set threshold B for 2nd plane. Default is 0.04.
5768 Valid range is 0 to 5.
5769
5770 @item 2a
5771 Set threshold A for 3rd plane. Default is 0.02.
5772 Valid range is 0 to 0.3.
5773
5774 @item 2b
5775 Set threshold B for 3rd plane. Default is 0.04.
5776 Valid range is 0 to 5.
5777
5778 Threshold A is designed to react on abrupt changes in the input signal and
5779 threshold B is designed to react on continuous changes in the input signal.
5780
5781 @item s
5782 Set number of frames filter will use for averaging. Default is 9. Must be odd
5783 number in range [5, 129].
5784
5785 @item p
5786 Set what planes of frame filter will use for averaging. Default is all.
5787 @end table
5788
5789 @section avgblur
5790
5791 Apply average blur filter.
5792
5793 The filter accepts the following options:
5794
5795 @table @option
5796 @item sizeX
5797 Set horizontal radius size.
5798
5799 @item planes
5800 Set which planes to filter. By default all planes are filtered.
5801
5802 @item sizeY
5803 Set vertical radius size, if zero it will be same as @code{sizeX}.
5804 Default is @code{0}.
5805 @end table
5806
5807 @section bbox
5808
5809 Compute the bounding box for the non-black pixels in the input frame
5810 luminance plane.
5811
5812 This filter computes the bounding box containing all the pixels with a
5813 luminance value greater than the minimum allowed value.
5814 The parameters describing the bounding box are printed on the filter
5815 log.
5816
5817 The filter accepts the following option:
5818
5819 @table @option
5820 @item min_val
5821 Set the minimal luminance value. Default is @code{16}.
5822 @end table
5823
5824 @section bitplanenoise
5825
5826 Show and measure bit plane noise.
5827
5828 The filter accepts the following options:
5829
5830 @table @option
5831 @item bitplane
5832 Set which plane to analyze. Default is @code{1}.
5833
5834 @item filter
5835 Filter out noisy pixels from @code{bitplane} set above.
5836 Default is disabled.
5837 @end table
5838
5839 @section blackdetect
5840
5841 Detect video intervals that are (almost) completely black. Can be
5842 useful to detect chapter transitions, commercials, or invalid
5843 recordings. Output lines contains the time for the start, end and
5844 duration of the detected black interval expressed in seconds.
5845
5846 In order to display the output lines, you need to set the loglevel at
5847 least to the AV_LOG_INFO value.
5848
5849 The filter accepts the following options:
5850
5851 @table @option
5852 @item black_min_duration, d
5853 Set the minimum detected black duration expressed in seconds. It must
5854 be a non-negative floating point number.
5855
5856 Default value is 2.0.
5857
5858 @item picture_black_ratio_th, pic_th
5859 Set the threshold for considering a picture "black".
5860 Express the minimum value for the ratio:
5861 @example
5862 @var{nb_black_pixels} / @var{nb_pixels}
5863 @end example
5864
5865 for which a picture is considered black.
5866 Default value is 0.98.
5867
5868 @item pixel_black_th, pix_th
5869 Set the threshold for considering a pixel "black".
5870
5871 The threshold expresses the maximum pixel luminance value for which a
5872 pixel is considered "black". The provided value is scaled according to
5873 the following equation:
5874 @example
5875 @var{absolute_threshold} = @var{luminance_minimum_value} + @var{pixel_black_th} * @var{luminance_range_size}
5876 @end example
5877
5878 @var{luminance_range_size} and @var{luminance_minimum_value} depend on
5879 the input video format, the range is [0-255] for YUV full-range
5880 formats and [16-235] for YUV non full-range formats.
5881
5882 Default value is 0.10.
5883 @end table
5884
5885 The following example sets the maximum pixel threshold to the minimum
5886 value, and detects only black intervals of 2 or more seconds:
5887 @example
5888 blackdetect=d=2:pix_th=0.00
5889 @end example
5890
5891 @section blackframe
5892
5893 Detect frames that are (almost) completely black. Can be useful to
5894 detect chapter transitions or commercials. Output lines consist of
5895 the frame number of the detected frame, the percentage of blackness,
5896 the position in the file if known or -1 and the timestamp in seconds.
5897
5898 In order to display the output lines, you need to set the loglevel at
5899 least to the AV_LOG_INFO value.
5900
5901 This filter exports frame metadata @code{lavfi.blackframe.pblack}.
5902 The value represents the percentage of pixels in the picture that
5903 are below the threshold value.
5904
5905 It accepts the following parameters:
5906
5907 @table @option
5908
5909 @item amount
5910 The percentage of the pixels that have to be below the threshold; it defaults to
5911 @code{98}.
5912
5913 @item threshold, thresh
5914 The threshold below which a pixel value is considered black; it defaults to
5915 @code{32}.
5916
5917 @end table
5918
5919 @section blend, tblend
5920
5921 Blend two video frames into each other.
5922
5923 The @code{blend} filter takes two input streams and outputs one
5924 stream, the first input is the "top" layer and second input is
5925 "bottom" layer.  By default, the output terminates when the longest input terminates.
5926
5927 The @code{tblend} (time blend) filter takes two consecutive frames
5928 from one single stream, and outputs the result obtained by blending
5929 the new frame on top of the old frame.
5930
5931 A description of the accepted options follows.
5932
5933 @table @option
5934 @item c0_mode
5935 @item c1_mode
5936 @item c2_mode
5937 @item c3_mode
5938 @item all_mode
5939 Set blend mode for specific pixel component or all pixel components in case
5940 of @var{all_mode}. Default value is @code{normal}.
5941
5942 Available values for component modes are:
5943 @table @samp
5944 @item addition
5945 @item grainmerge
5946 @item and
5947 @item average
5948 @item burn
5949 @item darken
5950 @item difference
5951 @item grainextract
5952 @item divide
5953 @item dodge
5954 @item freeze
5955 @item exclusion
5956 @item extremity
5957 @item glow
5958 @item hardlight
5959 @item hardmix
5960 @item heat
5961 @item lighten
5962 @item linearlight
5963 @item multiply
5964 @item multiply128
5965 @item negation
5966 @item normal
5967 @item or
5968 @item overlay
5969 @item phoenix
5970 @item pinlight
5971 @item reflect
5972 @item screen
5973 @item softlight
5974 @item subtract
5975 @item vividlight
5976 @item xor
5977 @end table
5978
5979 @item c0_opacity
5980 @item c1_opacity
5981 @item c2_opacity
5982 @item c3_opacity
5983 @item all_opacity
5984 Set blend opacity for specific pixel component or all pixel components in case
5985 of @var{all_opacity}. Only used in combination with pixel component blend modes.
5986
5987 @item c0_expr
5988 @item c1_expr
5989 @item c2_expr
5990 @item c3_expr
5991 @item all_expr
5992 Set blend expression for specific pixel component or all pixel components in case
5993 of @var{all_expr}. Note that related mode options will be ignored if those are set.
5994
5995 The expressions can use the following variables:
5996
5997 @table @option
5998 @item N
5999 The sequential number of the filtered frame, starting from @code{0}.
6000
6001 @item X
6002 @item Y
6003 the coordinates of the current sample
6004
6005 @item W
6006 @item H
6007 the width and height of currently filtered plane
6008
6009 @item SW
6010 @item SH
6011 Width and height scale for the plane being filtered. It is the
6012 ratio between the dimensions of the current plane to the luma plane,
6013 e.g. for a @code{yuv420p} frame, the values are @code{1,1} for
6014 the luma plane and @code{0.5,0.5} for the chroma planes.
6015
6016 @item T
6017 Time of the current frame, expressed in seconds.
6018
6019 @item TOP, A
6020 Value of pixel component at current location for first video frame (top layer).
6021
6022 @item BOTTOM, B
6023 Value of pixel component at current location for second video frame (bottom layer).
6024 @end table
6025 @end table
6026
6027 The @code{blend} filter also supports the @ref{framesync} options.
6028
6029 @subsection Examples
6030
6031 @itemize
6032 @item
6033 Apply transition from bottom layer to top layer in first 10 seconds:
6034 @example
6035 blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
6036 @end example
6037
6038 @item
6039 Apply linear horizontal transition from top layer to bottom layer:
6040 @example
6041 blend=all_expr='A*(X/W)+B*(1-X/W)'
6042 @end example
6043
6044 @item
6045 Apply 1x1 checkerboard effect:
6046 @example
6047 blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
6048 @end example
6049
6050 @item
6051 Apply uncover left effect:
6052 @example
6053 blend=all_expr='if(gte(N*SW+X,W),A,B)'
6054 @end example
6055
6056 @item
6057 Apply uncover down effect:
6058 @example
6059 blend=all_expr='if(gte(Y-N*SH,0),A,B)'
6060 @end example
6061
6062 @item
6063 Apply uncover up-left effect:
6064 @example
6065 blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
6066 @end example
6067
6068 @item
6069 Split diagonally video and shows top and bottom layer on each side:
6070 @example
6071 blend=all_expr='if(gt(X,Y*(W/H)),A,B)'
6072 @end example
6073
6074 @item
6075 Display differences between the current and the previous frame:
6076 @example
6077 tblend=all_mode=grainextract
6078 @end example
6079 @end itemize
6080
6081 @section bm3d
6082
6083 Denoise frames using Block-Matching 3D algorithm.
6084
6085 The filter accepts the following options.
6086
6087 @table @option
6088 @item sigma
6089 Set denoising strength. Default value is 1.
6090 Allowed range is from 0 to 999.9.
6091 The denoising algorithm is very sensitive to sigma, so adjust it
6092 according to the source.
6093
6094 @item block
6095 Set local patch size. This sets dimensions in 2D.
6096
6097 @item bstep
6098 Set sliding step for processing blocks. Default value is 4.
6099 Allowed range is from 1 to 64.
6100 Smaller values allows processing more reference blocks and is slower.
6101
6102 @item group
6103 Set maximal number of similar blocks for 3rd dimension. Default value is 1.
6104 When set to 1, no block matching is done. Larger values allows more blocks
6105 in single group.
6106 Allowed range is from 1 to 256.
6107
6108 @item range
6109 Set radius for search block matching. Default is 9.
6110 Allowed range is from 1 to INT32_MAX.
6111
6112 @item mstep
6113 Set step between two search locations for block matching. Default is 1.
6114 Allowed range is from 1 to 64. Smaller is slower.
6115
6116 @item thmse
6117 Set threshold of mean square error for block matching. Valid range is 0 to
6118 INT32_MAX.
6119
6120 @item hdthr
6121 Set thresholding parameter for hard thresholding in 3D transformed domain.
6122 Larger values results in stronger hard-thresholding filtering in frequency
6123 domain.
6124
6125 @item estim
6126 Set filtering estimation mode. Can be @code{basic} or @code{final}.
6127 Default is @code{basic}.
6128
6129 @item ref
6130 If enabled, filter will use 2nd stream for block matching.
6131 Default is disabled for @code{basic} value of @var{estim} option,
6132 and always enabled if value of @var{estim} is @code{final}.
6133
6134 @item planes
6135 Set planes to filter. Default is all available except alpha.
6136 @end table
6137
6138 @subsection Examples
6139
6140 @itemize
6141 @item
6142 Basic filtering with bm3d:
6143 @example
6144 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic
6145 @end example
6146
6147 @item
6148 Same as above, but filtering only luma:
6149 @example
6150 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic:planes=1
6151 @end example
6152
6153 @item
6154 Same as above, but with both estimation modes:
6155 @example
6156 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
6157 @end example
6158
6159 @item
6160 Same as above, but prefilter with @ref{nlmeans} filter instead:
6161 @example
6162 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
6163 @end example
6164 @end itemize
6165
6166 @section boxblur
6167
6168 Apply a boxblur algorithm to the input video.
6169
6170 It accepts the following parameters:
6171
6172 @table @option
6173
6174 @item luma_radius, lr
6175 @item luma_power, lp
6176 @item chroma_radius, cr
6177 @item chroma_power, cp
6178 @item alpha_radius, ar
6179 @item alpha_power, ap
6180
6181 @end table
6182
6183 A description of the accepted options follows.
6184
6185 @table @option
6186 @item luma_radius, lr
6187 @item chroma_radius, cr
6188 @item alpha_radius, ar
6189 Set an expression for the box radius in pixels used for blurring the
6190 corresponding input plane.
6191
6192 The radius value must be a non-negative number, and must not be
6193 greater than the value of the expression @code{min(w,h)/2} for the
6194 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
6195 planes.
6196
6197 Default value for @option{luma_radius} is "2". If not specified,
6198 @option{chroma_radius} and @option{alpha_radius} default to the
6199 corresponding value set for @option{luma_radius}.
6200
6201 The expressions can contain the following constants:
6202 @table @option
6203 @item w
6204 @item h
6205 The input width and height in pixels.
6206
6207 @item cw
6208 @item ch
6209 The input chroma image width and height in pixels.
6210
6211 @item hsub
6212 @item vsub
6213 The horizontal and vertical chroma subsample values. For example, for the
6214 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
6215 @end table
6216
6217 @item luma_power, lp
6218 @item chroma_power, cp
6219 @item alpha_power, ap
6220 Specify how many times the boxblur filter is applied to the
6221 corresponding plane.
6222
6223 Default value for @option{luma_power} is 2. If not specified,
6224 @option{chroma_power} and @option{alpha_power} default to the
6225 corresponding value set for @option{luma_power}.
6226
6227 A value of 0 will disable the effect.
6228 @end table
6229
6230 @subsection Examples
6231
6232 @itemize
6233 @item
6234 Apply a boxblur filter with the luma, chroma, and alpha radii
6235 set to 2:
6236 @example
6237 boxblur=luma_radius=2:luma_power=1
6238 boxblur=2:1
6239 @end example
6240
6241 @item
6242 Set the luma radius to 2, and alpha and chroma radius to 0:
6243 @example
6244 boxblur=2:1:cr=0:ar=0
6245 @end example
6246
6247 @item
6248 Set the luma and chroma radii to a fraction of the video dimension:
6249 @example
6250 boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
6251 @end example
6252 @end itemize
6253
6254 @section bwdif
6255
6256 Deinterlace the input video ("bwdif" stands for "Bob Weaver
6257 Deinterlacing Filter").
6258
6259 Motion adaptive deinterlacing based on yadif with the use of w3fdif and cubic
6260 interpolation algorithms.
6261 It accepts the following parameters:
6262
6263 @table @option
6264 @item mode
6265 The interlacing mode to adopt. It accepts one of the following values:
6266
6267 @table @option
6268 @item 0, send_frame
6269 Output one frame for each frame.
6270 @item 1, send_field
6271 Output one frame for each field.
6272 @end table
6273
6274 The default value is @code{send_field}.
6275
6276 @item parity
6277 The picture field parity assumed for the input interlaced video. It accepts one
6278 of the following values:
6279
6280 @table @option
6281 @item 0, tff
6282 Assume the top field is first.
6283 @item 1, bff
6284 Assume the bottom field is first.
6285 @item -1, auto
6286 Enable automatic detection of field parity.
6287 @end table
6288
6289 The default value is @code{auto}.
6290 If the interlacing is unknown or the decoder does not export this information,
6291 top field first will be assumed.
6292
6293 @item deint
6294 Specify which frames to deinterlace. Accept one of the following
6295 values:
6296
6297 @table @option
6298 @item 0, all
6299 Deinterlace all frames.
6300 @item 1, interlaced
6301 Only deinterlace frames marked as interlaced.
6302 @end table
6303
6304 The default value is @code{all}.
6305 @end table
6306
6307 @section chromahold
6308 Remove all color information for all colors except for certain one.
6309
6310 The filter accepts the following options:
6311
6312 @table @option
6313 @item color
6314 The color which will not be replaced with neutral chroma.
6315
6316 @item similarity
6317 Similarity percentage with the above color.
6318 0.01 matches only the exact key color, while 1.0 matches everything.
6319
6320 @item yuv
6321 Signals that the color passed is already in YUV instead of RGB.
6322
6323 Literal colors like "green" or "red" don't make sense with this enabled anymore.
6324 This can be used to pass exact YUV values as hexadecimal numbers.
6325 @end table
6326
6327 @section chromakey
6328 YUV colorspace color/chroma keying.
6329
6330 The filter accepts the following options:
6331
6332 @table @option
6333 @item color
6334 The color which will be replaced with transparency.
6335
6336 @item similarity
6337 Similarity percentage with the key color.
6338
6339 0.01 matches only the exact key color, while 1.0 matches everything.
6340
6341 @item blend
6342 Blend percentage.
6343
6344 0.0 makes pixels either fully transparent, or not transparent at all.
6345
6346 Higher values result in semi-transparent pixels, with a higher transparency
6347 the more similar the pixels color is to the key color.
6348
6349 @item yuv
6350 Signals that the color passed is already in YUV instead of RGB.
6351
6352 Literal colors like "green" or "red" don't make sense with this enabled anymore.
6353 This can be used to pass exact YUV values as hexadecimal numbers.
6354 @end table
6355
6356 @subsection Examples
6357
6358 @itemize
6359 @item
6360 Make every green pixel in the input image transparent:
6361 @example
6362 ffmpeg -i input.png -vf chromakey=green out.png
6363 @end example
6364
6365 @item
6366 Overlay a greenscreen-video on top of a static black background.
6367 @example
6368 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
6369 @end example
6370 @end itemize
6371
6372 @section chromashift
6373 Shift chroma pixels horizontally and/or vertically.
6374
6375 The filter accepts the following options:
6376 @table @option
6377 @item cbh
6378 Set amount to shift chroma-blue horizontally.
6379 @item cbv
6380 Set amount to shift chroma-blue vertically.
6381 @item crh
6382 Set amount to shift chroma-red horizontally.
6383 @item crv
6384 Set amount to shift chroma-red vertically.
6385 @item edge
6386 Set edge mode, can be @var{smear}, default, or @var{warp}.
6387 @end table
6388
6389 @section ciescope
6390
6391 Display CIE color diagram with pixels overlaid onto it.
6392
6393 The filter accepts the following options:
6394
6395 @table @option
6396 @item system
6397 Set color system.
6398
6399 @table @samp
6400 @item ntsc, 470m
6401 @item ebu, 470bg
6402 @item smpte
6403 @item 240m
6404 @item apple
6405 @item widergb
6406 @item cie1931
6407 @item rec709, hdtv
6408 @item uhdtv, rec2020
6409 @end table
6410
6411 @item cie
6412 Set CIE system.
6413
6414 @table @samp
6415 @item xyy
6416 @item ucs
6417 @item luv
6418 @end table
6419
6420 @item gamuts
6421 Set what gamuts to draw.
6422
6423 See @code{system} option for available values.
6424
6425 @item size, s
6426 Set ciescope size, by default set to 512.
6427
6428 @item intensity, i
6429 Set intensity used to map input pixel values to CIE diagram.
6430
6431 @item contrast
6432 Set contrast used to draw tongue colors that are out of active color system gamut.
6433
6434 @item corrgamma
6435 Correct gamma displayed on scope, by default enabled.
6436
6437 @item showwhite
6438 Show white point on CIE diagram, by default disabled.
6439
6440 @item gamma
6441 Set input gamma. Used only with XYZ input color space.
6442 @end table
6443
6444 @section codecview
6445
6446 Visualize information exported by some codecs.
6447
6448 Some codecs can export information through frames using side-data or other
6449 means. For example, some MPEG based codecs export motion vectors through the
6450 @var{export_mvs} flag in the codec @option{flags2} option.
6451
6452 The filter accepts the following option:
6453
6454 @table @option
6455 @item mv
6456 Set motion vectors to visualize.
6457
6458 Available flags for @var{mv} are:
6459
6460 @table @samp
6461 @item pf
6462 forward predicted MVs of P-frames
6463 @item bf
6464 forward predicted MVs of B-frames
6465 @item bb
6466 backward predicted MVs of B-frames
6467 @end table
6468
6469 @item qp
6470 Display quantization parameters using the chroma planes.
6471
6472 @item mv_type, mvt
6473 Set motion vectors type to visualize. Includes MVs from all frames unless specified by @var{frame_type} option.
6474
6475 Available flags for @var{mv_type} are:
6476
6477 @table @samp
6478 @item fp
6479 forward predicted MVs
6480 @item bp
6481 backward predicted MVs
6482 @end table
6483
6484 @item frame_type, ft
6485 Set frame type to visualize motion vectors of.
6486
6487 Available flags for @var{frame_type} are:
6488
6489 @table @samp
6490 @item if
6491 intra-coded frames (I-frames)
6492 @item pf
6493 predicted frames (P-frames)
6494 @item bf
6495 bi-directionally predicted frames (B-frames)
6496 @end table
6497 @end table
6498
6499 @subsection Examples
6500
6501 @itemize
6502 @item
6503 Visualize forward predicted MVs of all frames using @command{ffplay}:
6504 @example
6505 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp
6506 @end example
6507
6508 @item
6509 Visualize multi-directionals MVs of P and B-Frames using @command{ffplay}:
6510 @example
6511 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
6512 @end example
6513 @end itemize
6514
6515 @section colorbalance
6516 Modify intensity of primary colors (red, green and blue) of input frames.
6517
6518 The filter allows an input frame to be adjusted in the shadows, midtones or highlights
6519 regions for the red-cyan, green-magenta or blue-yellow balance.
6520
6521 A positive adjustment value shifts the balance towards the primary color, a negative
6522 value towards the complementary color.
6523
6524 The filter accepts the following options:
6525
6526 @table @option
6527 @item rs
6528 @item gs
6529 @item bs
6530 Adjust red, green and blue shadows (darkest pixels).
6531
6532 @item rm
6533 @item gm
6534 @item bm
6535 Adjust red, green and blue midtones (medium pixels).
6536
6537 @item rh
6538 @item gh
6539 @item bh
6540 Adjust red, green and blue highlights (brightest pixels).
6541
6542 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
6543 @end table
6544
6545 @subsection Examples
6546
6547 @itemize
6548 @item
6549 Add red color cast to shadows:
6550 @example
6551 colorbalance=rs=.3
6552 @end example
6553 @end itemize
6554
6555 @section colorkey
6556 RGB colorspace color keying.
6557
6558 The filter accepts the following options:
6559
6560 @table @option
6561 @item color
6562 The color which will be replaced with transparency.
6563
6564 @item similarity
6565 Similarity percentage with the key color.
6566
6567 0.01 matches only the exact key color, while 1.0 matches everything.
6568
6569 @item blend
6570 Blend percentage.
6571
6572 0.0 makes pixels either fully transparent, or not transparent at all.
6573
6574 Higher values result in semi-transparent pixels, with a higher transparency
6575 the more similar the pixels color is to the key color.
6576 @end table
6577
6578 @subsection Examples
6579
6580 @itemize
6581 @item
6582 Make every green pixel in the input image transparent:
6583 @example
6584 ffmpeg -i input.png -vf colorkey=green out.png
6585 @end example
6586
6587 @item
6588 Overlay a greenscreen-video on top of a static background image.
6589 @example
6590 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
6591 @end example
6592 @end itemize
6593
6594 @section colorlevels
6595
6596 Adjust video input frames using levels.
6597
6598 The filter accepts the following options:
6599
6600 @table @option
6601 @item rimin
6602 @item gimin
6603 @item bimin
6604 @item aimin
6605 Adjust red, green, blue and alpha input black point.
6606 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
6607
6608 @item rimax
6609 @item gimax
6610 @item bimax
6611 @item aimax
6612 Adjust red, green, blue and alpha input white point.
6613 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{1}.
6614
6615 Input levels are used to lighten highlights (bright tones), darken shadows
6616 (dark tones), change the balance of bright and dark tones.
6617
6618 @item romin
6619 @item gomin
6620 @item bomin
6621 @item aomin
6622 Adjust red, green, blue and alpha output black point.
6623 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{0}.
6624
6625 @item romax
6626 @item gomax
6627 @item bomax
6628 @item aomax
6629 Adjust red, green, blue and alpha output white point.
6630 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{1}.
6631
6632 Output levels allows manual selection of a constrained output level range.
6633 @end table
6634
6635 @subsection Examples
6636
6637 @itemize
6638 @item
6639 Make video output darker:
6640 @example
6641 colorlevels=rimin=0.058:gimin=0.058:bimin=0.058
6642 @end example
6643
6644 @item
6645 Increase contrast:
6646 @example
6647 colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96
6648 @end example
6649
6650 @item
6651 Make video output lighter:
6652 @example
6653 colorlevels=rimax=0.902:gimax=0.902:bimax=0.902
6654 @end example
6655
6656 @item
6657 Increase brightness:
6658 @example
6659 colorlevels=romin=0.5:gomin=0.5:bomin=0.5
6660 @end example
6661 @end itemize
6662
6663 @section colorchannelmixer
6664
6665 Adjust video input frames by re-mixing color channels.
6666
6667 This filter modifies a color channel by adding the values associated to
6668 the other channels of the same pixels. For example if the value to
6669 modify is red, the output value will be:
6670 @example
6671 @var{red}=@var{red}*@var{rr} + @var{blue}*@var{rb} + @var{green}*@var{rg} + @var{alpha}*@var{ra}
6672 @end example
6673
6674 The filter accepts the following options:
6675
6676 @table @option
6677 @item rr
6678 @item rg
6679 @item rb
6680 @item ra
6681 Adjust contribution of input red, green, blue and alpha channels for output red channel.
6682 Default is @code{1} for @var{rr}, and @code{0} for @var{rg}, @var{rb} and @var{ra}.
6683
6684 @item gr
6685 @item gg
6686 @item gb
6687 @item ga
6688 Adjust contribution of input red, green, blue and alpha channels for output green channel.
6689 Default is @code{1} for @var{gg}, and @code{0} for @var{gr}, @var{gb} and @var{ga}.
6690
6691 @item br
6692 @item bg
6693 @item bb
6694 @item ba
6695 Adjust contribution of input red, green, blue and alpha channels for output blue channel.
6696 Default is @code{1} for @var{bb}, and @code{0} for @var{br}, @var{bg} and @var{ba}.
6697
6698 @item ar
6699 @item ag
6700 @item ab
6701 @item aa
6702 Adjust contribution of input red, green, blue and alpha channels for output alpha channel.
6703 Default is @code{1} for @var{aa}, and @code{0} for @var{ar}, @var{ag} and @var{ab}.
6704
6705 Allowed ranges for options are @code{[-2.0, 2.0]}.
6706 @end table
6707
6708 @subsection Examples
6709
6710 @itemize
6711 @item
6712 Convert source to grayscale:
6713 @example
6714 colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
6715 @end example
6716 @item
6717 Simulate sepia tones:
6718 @example
6719 colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
6720 @end example
6721 @end itemize
6722
6723 @section colormatrix
6724
6725 Convert color matrix.
6726
6727 The filter accepts the following options:
6728
6729 @table @option
6730 @item src
6731 @item dst
6732 Specify the source and destination color matrix. Both values must be
6733 specified.
6734
6735 The accepted values are:
6736 @table @samp
6737 @item bt709
6738 BT.709
6739
6740 @item fcc
6741 FCC
6742
6743 @item bt601
6744 BT.601
6745
6746 @item bt470
6747 BT.470
6748
6749 @item bt470bg
6750 BT.470BG
6751
6752 @item smpte170m
6753 SMPTE-170M
6754
6755 @item smpte240m
6756 SMPTE-240M
6757
6758 @item bt2020
6759 BT.2020
6760 @end table
6761 @end table
6762
6763 For example to convert from BT.601 to SMPTE-240M, use the command:
6764 @example
6765 colormatrix=bt601:smpte240m
6766 @end example
6767
6768 @section colorspace
6769
6770 Convert colorspace, transfer characteristics or color primaries.
6771 Input video needs to have an even size.
6772
6773 The filter accepts the following options:
6774
6775 @table @option
6776 @anchor{all}
6777 @item all
6778 Specify all color properties at once.
6779
6780 The accepted values are:
6781 @table @samp
6782 @item bt470m
6783 BT.470M
6784
6785 @item bt470bg
6786 BT.470BG
6787
6788 @item bt601-6-525
6789 BT.601-6 525
6790
6791 @item bt601-6-625
6792 BT.601-6 625
6793
6794 @item bt709
6795 BT.709
6796
6797 @item smpte170m
6798 SMPTE-170M
6799
6800 @item smpte240m
6801 SMPTE-240M
6802
6803 @item bt2020
6804 BT.2020
6805
6806 @end table
6807
6808 @anchor{space}
6809 @item space
6810 Specify output colorspace.
6811
6812 The accepted values are:
6813 @table @samp
6814 @item bt709
6815 BT.709
6816
6817 @item fcc
6818 FCC
6819
6820 @item bt470bg
6821 BT.470BG or BT.601-6 625
6822
6823 @item smpte170m
6824 SMPTE-170M or BT.601-6 525
6825
6826 @item smpte240m
6827 SMPTE-240M
6828
6829 @item ycgco
6830 YCgCo
6831
6832 @item bt2020ncl
6833 BT.2020 with non-constant luminance
6834
6835 @end table
6836
6837 @anchor{trc}
6838 @item trc
6839 Specify output transfer characteristics.
6840
6841 The accepted values are:
6842 @table @samp
6843 @item bt709
6844 BT.709
6845
6846 @item bt470m
6847 BT.470M
6848
6849 @item bt470bg
6850 BT.470BG
6851
6852 @item gamma22
6853 Constant gamma of 2.2
6854
6855 @item gamma28
6856 Constant gamma of 2.8
6857
6858 @item smpte170m
6859 SMPTE-170M, BT.601-6 625 or BT.601-6 525
6860
6861 @item smpte240m
6862 SMPTE-240M
6863
6864 @item srgb
6865 SRGB
6866
6867 @item iec61966-2-1
6868 iec61966-2-1
6869
6870 @item iec61966-2-4
6871 iec61966-2-4
6872
6873 @item xvycc
6874 xvycc
6875
6876 @item bt2020-10
6877 BT.2020 for 10-bits content
6878
6879 @item bt2020-12
6880 BT.2020 for 12-bits content
6881
6882 @end table
6883
6884 @anchor{primaries}
6885 @item primaries
6886 Specify output color primaries.
6887
6888 The accepted values are:
6889 @table @samp
6890 @item bt709
6891 BT.709
6892
6893 @item bt470m
6894 BT.470M
6895
6896 @item bt470bg
6897 BT.470BG or BT.601-6 625
6898
6899 @item smpte170m
6900 SMPTE-170M or BT.601-6 525
6901
6902 @item smpte240m
6903 SMPTE-240M
6904
6905 @item film
6906 film
6907
6908 @item smpte431
6909 SMPTE-431
6910
6911 @item smpte432
6912 SMPTE-432
6913
6914 @item bt2020
6915 BT.2020
6916
6917 @item jedec-p22
6918 JEDEC P22 phosphors
6919
6920 @end table
6921
6922 @anchor{range}
6923 @item range
6924 Specify output color range.
6925
6926 The accepted values are:
6927 @table @samp
6928 @item tv
6929 TV (restricted) range
6930
6931 @item mpeg
6932 MPEG (restricted) range
6933
6934 @item pc
6935 PC (full) range
6936
6937 @item jpeg
6938 JPEG (full) range
6939
6940 @end table
6941
6942 @item format
6943 Specify output color format.
6944
6945 The accepted values are:
6946 @table @samp
6947 @item yuv420p
6948 YUV 4:2:0 planar 8-bits
6949
6950 @item yuv420p10
6951 YUV 4:2:0 planar 10-bits
6952
6953 @item yuv420p12
6954 YUV 4:2:0 planar 12-bits
6955
6956 @item yuv422p
6957 YUV 4:2:2 planar 8-bits
6958
6959 @item yuv422p10
6960 YUV 4:2:2 planar 10-bits
6961
6962 @item yuv422p12
6963 YUV 4:2:2 planar 12-bits
6964
6965 @item yuv444p
6966 YUV 4:4:4 planar 8-bits
6967
6968 @item yuv444p10
6969 YUV 4:4:4 planar 10-bits
6970
6971 @item yuv444p12
6972 YUV 4:4:4 planar 12-bits
6973
6974 @end table
6975
6976 @item fast
6977 Do a fast conversion, which skips gamma/primary correction. This will take
6978 significantly less CPU, but will be mathematically incorrect. To get output
6979 compatible with that produced by the colormatrix filter, use fast=1.
6980
6981 @item dither
6982 Specify dithering mode.
6983
6984 The accepted values are:
6985 @table @samp
6986 @item none
6987 No dithering
6988
6989 @item fsb
6990 Floyd-Steinberg dithering
6991 @end table
6992
6993 @item wpadapt
6994 Whitepoint adaptation mode.
6995
6996 The accepted values are:
6997 @table @samp
6998 @item bradford
6999 Bradford whitepoint adaptation
7000
7001 @item vonkries
7002 von Kries whitepoint adaptation
7003
7004 @item identity
7005 identity whitepoint adaptation (i.e. no whitepoint adaptation)
7006 @end table
7007
7008 @item iall
7009 Override all input properties at once. Same accepted values as @ref{all}.
7010
7011 @item ispace
7012 Override input colorspace. Same accepted values as @ref{space}.
7013
7014 @item iprimaries
7015 Override input color primaries. Same accepted values as @ref{primaries}.
7016
7017 @item itrc
7018 Override input transfer characteristics. Same accepted values as @ref{trc}.
7019
7020 @item irange
7021 Override input color range. Same accepted values as @ref{range}.
7022
7023 @end table
7024
7025 The filter converts the transfer characteristics, color space and color
7026 primaries to the specified user values. The output value, if not specified,
7027 is set to a default value based on the "all" property. If that property is
7028 also not specified, the filter will log an error. The output color range and
7029 format default to the same value as the input color range and format. The
7030 input transfer characteristics, color space, color primaries and color range
7031 should be set on the input data. If any of these are missing, the filter will
7032 log an error and no conversion will take place.
7033
7034 For example to convert the input to SMPTE-240M, use the command:
7035 @example
7036 colorspace=smpte240m
7037 @end example
7038
7039 @section convolution
7040
7041 Apply convolution of 3x3, 5x5, 7x7 or horizontal/vertical up to 49 elements.
7042
7043 The filter accepts the following options:
7044
7045 @table @option
7046 @item 0m
7047 @item 1m
7048 @item 2m
7049 @item 3m
7050 Set matrix for each plane.
7051 Matrix is sequence of 9, 25 or 49 signed integers in @var{square} mode,
7052 and from 1 to 49 odd number of signed integers in @var{row} mode.
7053
7054 @item 0rdiv
7055 @item 1rdiv
7056 @item 2rdiv
7057 @item 3rdiv
7058 Set multiplier for calculated value for each plane.
7059 If unset or 0, it will be sum of all matrix elements.
7060
7061 @item 0bias
7062 @item 1bias
7063 @item 2bias
7064 @item 3bias
7065 Set bias for each plane. This value is added to the result of the multiplication.
7066 Useful for making the overall image brighter or darker. Default is 0.0.
7067
7068 @item 0mode
7069 @item 1mode
7070 @item 2mode
7071 @item 3mode
7072 Set matrix mode for each plane. Can be @var{square}, @var{row} or @var{column}.
7073 Default is @var{square}.
7074 @end table
7075
7076 @subsection Examples
7077
7078 @itemize
7079 @item
7080 Apply sharpen:
7081 @example
7082 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"
7083 @end example
7084
7085 @item
7086 Apply blur:
7087 @example
7088 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"
7089 @end example
7090
7091 @item
7092 Apply edge enhance:
7093 @example
7094 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"
7095 @end example
7096
7097 @item
7098 Apply edge detect:
7099 @example
7100 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"
7101 @end example
7102
7103 @item
7104 Apply laplacian edge detector which includes diagonals:
7105 @example
7106 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"
7107 @end example
7108
7109 @item
7110 Apply emboss:
7111 @example
7112 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"
7113 @end example
7114 @end itemize
7115
7116 @section convolve
7117
7118 Apply 2D convolution of video stream in frequency domain using second stream
7119 as impulse.
7120
7121 The filter accepts the following options:
7122
7123 @table @option
7124 @item planes
7125 Set which planes to process.
7126
7127 @item impulse
7128 Set which impulse video frames will be processed, can be @var{first}
7129 or @var{all}. Default is @var{all}.
7130 @end table
7131
7132 The @code{convolve} filter also supports the @ref{framesync} options.
7133
7134 @section copy
7135
7136 Copy the input video source unchanged to the output. This is mainly useful for
7137 testing purposes.
7138
7139 @anchor{coreimage}
7140 @section coreimage
7141 Video filtering on GPU using Apple's CoreImage API on OSX.
7142
7143 Hardware acceleration is based on an OpenGL context. Usually, this means it is
7144 processed by video hardware. However, software-based OpenGL implementations
7145 exist which means there is no guarantee for hardware processing. It depends on
7146 the respective OSX.
7147
7148 There are many filters and image generators provided by Apple that come with a
7149 large variety of options. The filter has to be referenced by its name along
7150 with its options.
7151
7152 The coreimage filter accepts the following options:
7153 @table @option
7154 @item list_filters
7155 List all available filters and generators along with all their respective
7156 options as well as possible minimum and maximum values along with the default
7157 values.
7158 @example
7159 list_filters=true
7160 @end example
7161
7162 @item filter
7163 Specify all filters by their respective name and options.
7164 Use @var{list_filters} to determine all valid filter names and options.
7165 Numerical options are specified by a float value and are automatically clamped
7166 to their respective value range.  Vector and color options have to be specified
7167 by a list of space separated float values. Character escaping has to be done.
7168 A special option name @code{default} is available to use default options for a
7169 filter.
7170
7171 It is required to specify either @code{default} or at least one of the filter options.
7172 All omitted options are used with their default values.
7173 The syntax of the filter string is as follows:
7174 @example
7175 filter=<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...][#<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...]][#...]
7176 @end example
7177
7178 @item output_rect
7179 Specify a rectangle where the output of the filter chain is copied into the
7180 input image. It is given by a list of space separated float values:
7181 @example
7182 output_rect=x\ y\ width\ height
7183 @end example
7184 If not given, the output rectangle equals the dimensions of the input image.
7185 The output rectangle is automatically cropped at the borders of the input
7186 image. Negative values are valid for each component.
7187 @example
7188 output_rect=25\ 25\ 100\ 100
7189 @end example
7190 @end table
7191
7192 Several filters can be chained for successive processing without GPU-HOST
7193 transfers allowing for fast processing of complex filter chains.
7194 Currently, only filters with zero (generators) or exactly one (filters) input
7195 image and one output image are supported. Also, transition filters are not yet
7196 usable as intended.
7197
7198 Some filters generate output images with additional padding depending on the
7199 respective filter kernel. The padding is automatically removed to ensure the
7200 filter output has the same size as the input image.
7201
7202 For image generators, the size of the output image is determined by the
7203 previous output image of the filter chain or the input image of the whole
7204 filterchain, respectively. The generators do not use the pixel information of
7205 this image to generate their output. However, the generated output is
7206 blended onto this image, resulting in partial or complete coverage of the
7207 output image.
7208
7209 The @ref{coreimagesrc} video source can be used for generating input images
7210 which are directly fed into the filter chain. By using it, providing input
7211 images by another video source or an input video is not required.
7212
7213 @subsection Examples
7214
7215 @itemize
7216
7217 @item
7218 List all filters available:
7219 @example
7220 coreimage=list_filters=true
7221 @end example
7222
7223 @item
7224 Use the CIBoxBlur filter with default options to blur an image:
7225 @example
7226 coreimage=filter=CIBoxBlur@@default
7227 @end example
7228
7229 @item
7230 Use a filter chain with CISepiaTone at default values and CIVignetteEffect with
7231 its center at 100x100 and a radius of 50 pixels:
7232 @example
7233 coreimage=filter=CIBoxBlur@@default#CIVignetteEffect@@inputCenter=100\ 100@@inputRadius=50
7234 @end example
7235
7236 @item
7237 Use nullsrc and CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
7238 given as complete and escaped command-line for Apple's standard bash shell:
7239 @example
7240 ffmpeg -f lavfi -i nullsrc=s=100x100,coreimage=filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
7241 @end example
7242 @end itemize
7243
7244 @section crop
7245
7246 Crop the input video to given dimensions.
7247
7248 It accepts the following parameters:
7249
7250 @table @option
7251 @item w, out_w
7252 The width of the output video. It defaults to @code{iw}.
7253 This expression is evaluated only once during the filter
7254 configuration, or when the @samp{w} or @samp{out_w} command is sent.
7255
7256 @item h, out_h
7257 The height of the output video. It defaults to @code{ih}.
7258 This expression is evaluated only once during the filter
7259 configuration, or when the @samp{h} or @samp{out_h} command is sent.
7260
7261 @item x
7262 The horizontal position, in the input video, of the left edge of the output
7263 video. It defaults to @code{(in_w-out_w)/2}.
7264 This expression is evaluated per-frame.
7265
7266 @item y
7267 The vertical position, in the input video, of the top edge of the output video.
7268 It defaults to @code{(in_h-out_h)/2}.
7269 This expression is evaluated per-frame.
7270
7271 @item keep_aspect
7272 If set to 1 will force the output display aspect ratio
7273 to be the same of the input, by changing the output sample aspect
7274 ratio. It defaults to 0.
7275
7276 @item exact
7277 Enable exact cropping. If enabled, subsampled videos will be cropped at exact
7278 width/height/x/y as specified and will not be rounded to nearest smaller value.
7279 It defaults to 0.
7280 @end table
7281
7282 The @var{out_w}, @var{out_h}, @var{x}, @var{y} parameters are
7283 expressions containing the following constants:
7284
7285 @table @option
7286 @item x
7287 @item y
7288 The computed values for @var{x} and @var{y}. They are evaluated for
7289 each new frame.
7290
7291 @item in_w
7292 @item in_h
7293 The input width and height.
7294
7295 @item iw
7296 @item ih
7297 These are the same as @var{in_w} and @var{in_h}.
7298
7299 @item out_w
7300 @item out_h
7301 The output (cropped) width and height.
7302
7303 @item ow
7304 @item oh
7305 These are the same as @var{out_w} and @var{out_h}.
7306
7307 @item a
7308 same as @var{iw} / @var{ih}
7309
7310 @item sar
7311 input sample aspect ratio
7312
7313 @item dar
7314 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
7315
7316 @item hsub
7317 @item vsub
7318 horizontal and vertical chroma subsample values. For example for the
7319 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
7320
7321 @item n
7322 The number of the input frame, starting from 0.
7323
7324 @item pos
7325 the position in the file of the input frame, NAN if unknown
7326
7327 @item t
7328 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
7329
7330 @end table
7331
7332 The expression for @var{out_w} may depend on the value of @var{out_h},
7333 and the expression for @var{out_h} may depend on @var{out_w}, but they
7334 cannot depend on @var{x} and @var{y}, as @var{x} and @var{y} are
7335 evaluated after @var{out_w} and @var{out_h}.
7336
7337 The @var{x} and @var{y} parameters specify the expressions for the
7338 position of the top-left corner of the output (non-cropped) area. They
7339 are evaluated for each frame. If the evaluated value is not valid, it
7340 is approximated to the nearest valid value.
7341
7342 The expression for @var{x} may depend on @var{y}, and the expression
7343 for @var{y} may depend on @var{x}.
7344
7345 @subsection Examples
7346
7347 @itemize
7348 @item
7349 Crop area with size 100x100 at position (12,34).
7350 @example
7351 crop=100:100:12:34
7352 @end example
7353
7354 Using named options, the example above becomes:
7355 @example
7356 crop=w=100:h=100:x=12:y=34
7357 @end example
7358
7359 @item
7360 Crop the central input area with size 100x100:
7361 @example
7362 crop=100:100
7363 @end example
7364
7365 @item
7366 Crop the central input area with size 2/3 of the input video:
7367 @example
7368 crop=2/3*in_w:2/3*in_h
7369 @end example
7370
7371 @item
7372 Crop the input video central square:
7373 @example
7374 crop=out_w=in_h
7375 crop=in_h
7376 @end example
7377
7378 @item
7379 Delimit the rectangle with the top-left corner placed at position
7380 100:100 and the right-bottom corner corresponding to the right-bottom
7381 corner of the input image.
7382 @example
7383 crop=in_w-100:in_h-100:100:100
7384 @end example
7385
7386 @item
7387 Crop 10 pixels from the left and right borders, and 20 pixels from
7388 the top and bottom borders
7389 @example
7390 crop=in_w-2*10:in_h-2*20
7391 @end example
7392
7393 @item
7394 Keep only the bottom right quarter of the input image:
7395 @example
7396 crop=in_w/2:in_h/2:in_w/2:in_h/2
7397 @end example
7398
7399 @item
7400 Crop height for getting Greek harmony:
7401 @example
7402 crop=in_w:1/PHI*in_w
7403 @end example
7404
7405 @item
7406 Apply trembling effect:
7407 @example
7408 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)
7409 @end example
7410
7411 @item
7412 Apply erratic camera effect depending on timestamp:
7413 @example
7414 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)"
7415 @end example
7416
7417 @item
7418 Set x depending on the value of y:
7419 @example
7420 crop=in_w/2:in_h/2:y:10+10*sin(n/10)
7421 @end example
7422 @end itemize
7423
7424 @subsection Commands
7425
7426 This filter supports the following commands:
7427 @table @option
7428 @item w, out_w
7429 @item h, out_h
7430 @item x
7431 @item y
7432 Set width/height of the output video and the horizontal/vertical position
7433 in the input video.
7434 The command accepts the same syntax of the corresponding option.
7435
7436 If the specified expression is not valid, it is kept at its current
7437 value.
7438 @end table
7439
7440 @section cropdetect
7441
7442 Auto-detect the crop size.
7443
7444 It calculates the necessary cropping parameters and prints the
7445 recommended parameters via the logging system. The detected dimensions
7446 correspond to the non-black area of the input video.
7447
7448 It accepts the following parameters:
7449
7450 @table @option
7451
7452 @item limit
7453 Set higher black value threshold, which can be optionally specified
7454 from nothing (0) to everything (255 for 8-bit based formats). An intensity
7455 value greater to the set value is considered non-black. It defaults to 24.
7456 You can also specify a value between 0.0 and 1.0 which will be scaled depending
7457 on the bitdepth of the pixel format.
7458
7459 @item round
7460 The value which the width/height should be divisible by. It defaults to
7461 16. The offset is automatically adjusted to center the video. Use 2 to
7462 get only even dimensions (needed for 4:2:2 video). 16 is best when
7463 encoding to most video codecs.
7464
7465 @item reset_count, reset
7466 Set the counter that determines after how many frames cropdetect will
7467 reset the previously detected largest video area and start over to
7468 detect the current optimal crop area. Default value is 0.
7469
7470 This can be useful when channel logos distort the video area. 0
7471 indicates 'never reset', and returns the largest area encountered during
7472 playback.
7473 @end table
7474
7475 @anchor{cue}
7476 @section cue
7477
7478 Delay video filtering until a given wallclock timestamp. The filter first
7479 passes on @option{preroll} amount of frames, then it buffers at most
7480 @option{buffer} amount of frames and waits for the cue. After reaching the cue
7481 it forwards the buffered frames and also any subsequent frames coming in its
7482 input.
7483
7484 The filter can be used synchronize the output of multiple ffmpeg processes for
7485 realtime output devices like decklink. By putting the delay in the filtering
7486 chain and pre-buffering frames the process can pass on data to output almost
7487 immediately after the target wallclock timestamp is reached.
7488
7489 Perfect frame accuracy cannot be guaranteed, but the result is good enough for
7490 some use cases.
7491
7492 @table @option
7493
7494 @item cue
7495 The cue timestamp expressed in a UNIX timestamp in microseconds. Default is 0.
7496
7497 @item preroll
7498 The duration of content to pass on as preroll expressed in seconds. Default is 0.
7499
7500 @item buffer
7501 The maximum duration of content to buffer before waiting for the cue expressed
7502 in seconds. Default is 0.
7503
7504 @end table
7505
7506 @anchor{curves}
7507 @section curves
7508
7509 Apply color adjustments using curves.
7510
7511 This filter is similar to the Adobe Photoshop and GIMP curves tools. Each
7512 component (red, green and blue) has its values defined by @var{N} key points
7513 tied from each other using a smooth curve. The x-axis represents the pixel
7514 values from the input frame, and the y-axis the new pixel values to be set for
7515 the output frame.
7516
7517 By default, a component curve is defined by the two points @var{(0;0)} and
7518 @var{(1;1)}. This creates a straight line where each original pixel value is
7519 "adjusted" to its own value, which means no change to the image.
7520
7521 The filter allows you to redefine these two points and add some more. A new
7522 curve (using a natural cubic spline interpolation) will be define to pass
7523 smoothly through all these new coordinates. The new defined points needs to be
7524 strictly increasing over the x-axis, and their @var{x} and @var{y} values must
7525 be in the @var{[0;1]} interval.  If the computed curves happened to go outside
7526 the vector spaces, the values will be clipped accordingly.
7527
7528 The filter accepts the following options:
7529
7530 @table @option
7531 @item preset
7532 Select one of the available color presets. This option can be used in addition
7533 to the @option{r}, @option{g}, @option{b} parameters; in this case, the later
7534 options takes priority on the preset values.
7535 Available presets are:
7536 @table @samp
7537 @item none
7538 @item color_negative
7539 @item cross_process
7540 @item darker
7541 @item increase_contrast
7542 @item lighter
7543 @item linear_contrast
7544 @item medium_contrast
7545 @item negative
7546 @item strong_contrast
7547 @item vintage
7548 @end table
7549 Default is @code{none}.
7550 @item master, m
7551 Set the master key points. These points will define a second pass mapping. It
7552 is sometimes called a "luminance" or "value" mapping. It can be used with
7553 @option{r}, @option{g}, @option{b} or @option{all} since it acts like a
7554 post-processing LUT.
7555 @item red, r
7556 Set the key points for the red component.
7557 @item green, g
7558 Set the key points for the green component.
7559 @item blue, b
7560 Set the key points for the blue component.
7561 @item all
7562 Set the key points for all components (not including master).
7563 Can be used in addition to the other key points component
7564 options. In this case, the unset component(s) will fallback on this
7565 @option{all} setting.
7566 @item psfile
7567 Specify a Photoshop curves file (@code{.acv}) to import the settings from.
7568 @item plot
7569 Save Gnuplot script of the curves in specified file.
7570 @end table
7571
7572 To avoid some filtergraph syntax conflicts, each key points list need to be
7573 defined using the following syntax: @code{x0/y0 x1/y1 x2/y2 ...}.
7574
7575 @subsection Examples
7576
7577 @itemize
7578 @item
7579 Increase slightly the middle level of blue:
7580 @example
7581 curves=blue='0/0 0.5/0.58 1/1'
7582 @end example
7583
7584 @item
7585 Vintage effect:
7586 @example
7587 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'
7588 @end example
7589 Here we obtain the following coordinates for each components:
7590 @table @var
7591 @item red
7592 @code{(0;0.11) (0.42;0.51) (1;0.95)}
7593 @item green
7594 @code{(0;0) (0.50;0.48) (1;1)}
7595 @item blue
7596 @code{(0;0.22) (0.49;0.44) (1;0.80)}
7597 @end table
7598
7599 @item
7600 The previous example can also be achieved with the associated built-in preset:
7601 @example
7602 curves=preset=vintage
7603 @end example
7604
7605 @item
7606 Or simply:
7607 @example
7608 curves=vintage
7609 @end example
7610
7611 @item
7612 Use a Photoshop preset and redefine the points of the green component:
7613 @example
7614 curves=psfile='MyCurvesPresets/purple.acv':green='0/0 0.45/0.53 1/1'
7615 @end example
7616
7617 @item
7618 Check out the curves of the @code{cross_process} profile using @command{ffmpeg}
7619 and @command{gnuplot}:
7620 @example
7621 ffmpeg -f lavfi -i color -vf curves=cross_process:plot=/tmp/curves.plt -frames:v 1 -f null -
7622 gnuplot -p /tmp/curves.plt
7623 @end example
7624 @end itemize
7625
7626 @section datascope
7627
7628 Video data analysis filter.
7629
7630 This filter shows hexadecimal pixel values of part of video.
7631
7632 The filter accepts the following options:
7633
7634 @table @option
7635 @item size, s
7636 Set output video size.
7637
7638 @item x
7639 Set x offset from where to pick pixels.
7640
7641 @item y
7642 Set y offset from where to pick pixels.
7643
7644 @item mode
7645 Set scope mode, can be one of the following:
7646 @table @samp
7647 @item mono
7648 Draw hexadecimal pixel values with white color on black background.
7649
7650 @item color
7651 Draw hexadecimal pixel values with input video pixel color on black
7652 background.
7653
7654 @item color2
7655 Draw hexadecimal pixel values on color background picked from input video,
7656 the text color is picked in such way so its always visible.
7657 @end table
7658
7659 @item axis
7660 Draw rows and columns numbers on left and top of video.
7661
7662 @item opacity
7663 Set background opacity.
7664 @end table
7665
7666 @section dctdnoiz
7667
7668 Denoise frames using 2D DCT (frequency domain filtering).
7669
7670 This filter is not designed for real time.
7671
7672 The filter accepts the following options:
7673
7674 @table @option
7675 @item sigma, s
7676 Set the noise sigma constant.
7677
7678 This @var{sigma} defines a hard threshold of @code{3 * sigma}; every DCT
7679 coefficient (absolute value) below this threshold with be dropped.
7680
7681 If you need a more advanced filtering, see @option{expr}.
7682
7683 Default is @code{0}.
7684
7685 @item overlap
7686 Set number overlapping pixels for each block. Since the filter can be slow, you
7687 may want to reduce this value, at the cost of a less effective filter and the
7688 risk of various artefacts.
7689
7690 If the overlapping value doesn't permit processing the whole input width or
7691 height, a warning will be displayed and according borders won't be denoised.
7692
7693 Default value is @var{blocksize}-1, which is the best possible setting.
7694
7695 @item expr, e
7696 Set the coefficient factor expression.
7697
7698 For each coefficient of a DCT block, this expression will be evaluated as a
7699 multiplier value for the coefficient.
7700
7701 If this is option is set, the @option{sigma} option will be ignored.
7702
7703 The absolute value of the coefficient can be accessed through the @var{c}
7704 variable.
7705
7706 @item n
7707 Set the @var{blocksize} using the number of bits. @code{1<<@var{n}} defines the
7708 @var{blocksize}, which is the width and height of the processed blocks.
7709
7710 The default value is @var{3} (8x8) and can be raised to @var{4} for a
7711 @var{blocksize} of 16x16. Note that changing this setting has huge consequences
7712 on the speed processing. Also, a larger block size does not necessarily means a
7713 better de-noising.
7714 @end table
7715
7716 @subsection Examples
7717
7718 Apply a denoise with a @option{sigma} of @code{4.5}:
7719 @example
7720 dctdnoiz=4.5
7721 @end example
7722
7723 The same operation can be achieved using the expression system:
7724 @example
7725 dctdnoiz=e='gte(c, 4.5*3)'
7726 @end example
7727
7728 Violent denoise using a block size of @code{16x16}:
7729 @example
7730 dctdnoiz=15:n=4
7731 @end example
7732
7733 @section deband
7734
7735 Remove banding artifacts from input video.
7736 It works by replacing banded pixels with average value of referenced pixels.
7737
7738 The filter accepts the following options:
7739
7740 @table @option
7741 @item 1thr
7742 @item 2thr
7743 @item 3thr
7744 @item 4thr
7745 Set banding detection threshold for each plane. Default is 0.02.
7746 Valid range is 0.00003 to 0.5.
7747 If difference between current pixel and reference pixel is less than threshold,
7748 it will be considered as banded.
7749
7750 @item range, r
7751 Banding detection range in pixels. Default is 16. If positive, random number
7752 in range 0 to set value will be used. If negative, exact absolute value
7753 will be used.
7754 The range defines square of four pixels around current pixel.
7755
7756 @item direction, d
7757 Set direction in radians from which four pixel will be compared. If positive,
7758 random direction from 0 to set direction will be picked. If negative, exact of
7759 absolute value will be picked. For example direction 0, -PI or -2*PI radians
7760 will pick only pixels on same row and -PI/2 will pick only pixels on same
7761 column.
7762
7763 @item blur, b
7764 If enabled, current pixel is compared with average value of all four
7765 surrounding pixels. The default is enabled. If disabled current pixel is
7766 compared with all four surrounding pixels. The pixel is considered banded
7767 if only all four differences with surrounding pixels are less than threshold.
7768
7769 @item coupling, c
7770 If enabled, current pixel is changed if and only if all pixel components are banded,
7771 e.g. banding detection threshold is triggered for all color components.
7772 The default is disabled.
7773 @end table
7774
7775 @section deblock
7776
7777 Remove blocking artifacts from input video.
7778
7779 The filter accepts the following options:
7780
7781 @table @option
7782 @item filter
7783 Set filter type, can be @var{weak} or @var{strong}. Default is @var{strong}.
7784 This controls what kind of deblocking is applied.
7785
7786 @item block
7787 Set size of block, allowed range is from 4 to 512. Default is @var{8}.
7788
7789 @item alpha
7790 @item beta
7791 @item gamma
7792 @item delta
7793 Set blocking detection thresholds. Allowed range is 0 to 1.
7794 Defaults are: @var{0.098} for @var{alpha} and @var{0.05} for the rest.
7795 Using higher threshold gives more deblocking strength.
7796 Setting @var{alpha} controls threshold detection at exact edge of block.
7797 Remaining options controls threshold detection near the edge. Each one for
7798 below/above or left/right. Setting any of those to @var{0} disables
7799 deblocking.
7800
7801 @item planes
7802 Set planes to filter. Default is to filter all available planes.
7803 @end table
7804
7805 @subsection Examples
7806
7807 @itemize
7808 @item
7809 Deblock using weak filter and block size of 4 pixels.
7810 @example
7811 deblock=filter=weak:block=4
7812 @end example
7813
7814 @item
7815 Deblock using strong filter, block size of 4 pixels and custom thresholds for
7816 deblocking more edges.
7817 @example
7818 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05
7819 @end example
7820
7821 @item
7822 Similar as above, but filter only first plane.
7823 @example
7824 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=1
7825 @end example
7826
7827 @item
7828 Similar as above, but filter only second and third plane.
7829 @example
7830 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=6
7831 @end example
7832 @end itemize
7833
7834 @anchor{decimate}
7835 @section decimate
7836
7837 Drop duplicated frames at regular intervals.
7838
7839 The filter accepts the following options:
7840
7841 @table @option
7842 @item cycle
7843 Set the number of frames from which one will be dropped. Setting this to
7844 @var{N} means one frame in every batch of @var{N} frames will be dropped.
7845 Default is @code{5}.
7846
7847 @item dupthresh
7848 Set the threshold for duplicate detection. If the difference metric for a frame
7849 is less than or equal to this value, then it is declared as duplicate. Default
7850 is @code{1.1}
7851
7852 @item scthresh
7853 Set scene change threshold. Default is @code{15}.
7854
7855 @item blockx
7856 @item blocky
7857 Set the size of the x and y-axis blocks used during metric calculations.
7858 Larger blocks give better noise suppression, but also give worse detection of
7859 small movements. Must be a power of two. Default is @code{32}.
7860
7861 @item ppsrc
7862 Mark main input as a pre-processed input and activate clean source input
7863 stream. This allows the input to be pre-processed with various filters to help
7864 the metrics calculation while keeping the frame selection lossless. When set to
7865 @code{1}, the first stream is for the pre-processed input, and the second
7866 stream is the clean source from where the kept frames are chosen. Default is
7867 @code{0}.
7868
7869 @item chroma
7870 Set whether or not chroma is considered in the metric calculations. Default is
7871 @code{1}.
7872 @end table
7873
7874 @section deconvolve
7875
7876 Apply 2D deconvolution of video stream in frequency domain using second stream
7877 as impulse.
7878
7879 The filter accepts the following options:
7880
7881 @table @option
7882 @item planes
7883 Set which planes to process.
7884
7885 @item impulse
7886 Set which impulse video frames will be processed, can be @var{first}
7887 or @var{all}. Default is @var{all}.
7888
7889 @item noise
7890 Set noise when doing divisions. Default is @var{0.0000001}. Useful when width
7891 and height are not same and not power of 2 or if stream prior to convolving
7892 had noise.
7893 @end table
7894
7895 The @code{deconvolve} filter also supports the @ref{framesync} options.
7896
7897 @section dedot
7898
7899 Reduce cross-luminance (dot-crawl) and cross-color (rainbows) from video.
7900
7901 It accepts the following options:
7902
7903 @table @option
7904 @item m
7905 Set mode of operation. Can be combination of @var{dotcrawl} for cross-luminance reduction and/or
7906 @var{rainbows} for cross-color reduction.
7907
7908 @item lt
7909 Set spatial luma threshold. Lower values increases reduction of cross-luminance.
7910
7911 @item tl
7912 Set tolerance for temporal luma. Higher values increases reduction of cross-luminance.
7913
7914 @item tc
7915 Set tolerance for chroma temporal variation. Higher values increases reduction of cross-color.
7916
7917 @item ct
7918 Set temporal chroma threshold. Lower values increases reduction of cross-color.
7919 @end table
7920
7921 @section deflate
7922
7923 Apply deflate effect to the video.
7924
7925 This filter replaces the pixel by the local(3x3) average by taking into account
7926 only values lower than the pixel.
7927
7928 It accepts the following options:
7929
7930 @table @option
7931 @item threshold0
7932 @item threshold1
7933 @item threshold2
7934 @item threshold3
7935 Limit the maximum change for each plane, default is 65535.
7936 If 0, plane will remain unchanged.
7937 @end table
7938
7939 @section deflicker
7940
7941 Remove temporal frame luminance variations.
7942
7943 It accepts the following options:
7944
7945 @table @option
7946 @item size, s
7947 Set moving-average filter size in frames. Default is 5. Allowed range is 2 - 129.
7948
7949 @item mode, m
7950 Set averaging mode to smooth temporal luminance variations.
7951
7952 Available values are:
7953 @table @samp
7954 @item am
7955 Arithmetic mean
7956
7957 @item gm
7958 Geometric mean
7959
7960 @item hm
7961 Harmonic mean
7962
7963 @item qm
7964 Quadratic mean
7965
7966 @item cm
7967 Cubic mean
7968
7969 @item pm
7970 Power mean
7971
7972 @item median
7973 Median
7974 @end table
7975
7976 @item bypass
7977 Do not actually modify frame. Useful when one only wants metadata.
7978 @end table
7979
7980 @section dejudder
7981
7982 Remove judder produced by partially interlaced telecined content.
7983
7984 Judder can be introduced, for instance, by @ref{pullup} filter. If the original
7985 source was partially telecined content then the output of @code{pullup,dejudder}
7986 will have a variable frame rate. May change the recorded frame rate of the
7987 container. Aside from that change, this filter will not affect constant frame
7988 rate video.
7989
7990 The option available in this filter is:
7991 @table @option
7992
7993 @item cycle
7994 Specify the length of the window over which the judder repeats.
7995
7996 Accepts any integer greater than 1. Useful values are:
7997 @table @samp
7998
7999 @item 4
8000 If the original was telecined from 24 to 30 fps (Film to NTSC).
8001
8002 @item 5
8003 If the original was telecined from 25 to 30 fps (PAL to NTSC).
8004
8005 @item 20
8006 If a mixture of the two.
8007 @end table
8008
8009 The default is @samp{4}.
8010 @end table
8011
8012 @section delogo
8013
8014 Suppress a TV station logo by a simple interpolation of the surrounding
8015 pixels. Just set a rectangle covering the logo and watch it disappear
8016 (and sometimes something even uglier appear - your mileage may vary).
8017
8018 It accepts the following parameters:
8019 @table @option
8020
8021 @item x
8022 @item y
8023 Specify the top left corner coordinates of the logo. They must be
8024 specified.
8025
8026 @item w
8027 @item h
8028 Specify the width and height of the logo to clear. They must be
8029 specified.
8030
8031 @item band, t
8032 Specify the thickness of the fuzzy edge of the rectangle (added to
8033 @var{w} and @var{h}). The default value is 1. This option is
8034 deprecated, setting higher values should no longer be necessary and
8035 is not recommended.
8036
8037 @item show
8038 When set to 1, a green rectangle is drawn on the screen to simplify
8039 finding the right @var{x}, @var{y}, @var{w}, and @var{h} parameters.
8040 The default value is 0.
8041
8042 The rectangle is drawn on the outermost pixels which will be (partly)
8043 replaced with interpolated values. The values of the next pixels
8044 immediately outside this rectangle in each direction will be used to
8045 compute the interpolated pixel values inside the rectangle.
8046
8047 @end table
8048
8049 @subsection Examples
8050
8051 @itemize
8052 @item
8053 Set a rectangle covering the area with top left corner coordinates 0,0
8054 and size 100x77, and a band of size 10:
8055 @example
8056 delogo=x=0:y=0:w=100:h=77:band=10
8057 @end example
8058
8059 @end itemize
8060
8061 @section deshake
8062
8063 Attempt to fix small changes in horizontal and/or vertical shift. This
8064 filter helps remove camera shake from hand-holding a camera, bumping a
8065 tripod, moving on a vehicle, etc.
8066
8067 The filter accepts the following options:
8068
8069 @table @option
8070
8071 @item x
8072 @item y
8073 @item w
8074 @item h
8075 Specify a rectangular area where to limit the search for motion
8076 vectors.
8077 If desired the search for motion vectors can be limited to a
8078 rectangular area of the frame defined by its top left corner, width
8079 and height. These parameters have the same meaning as the drawbox
8080 filter which can be used to visualise the position of the bounding
8081 box.
8082
8083 This is useful when simultaneous movement of subjects within the frame
8084 might be confused for camera motion by the motion vector search.
8085
8086 If any or all of @var{x}, @var{y}, @var{w} and @var{h} are set to -1
8087 then the full frame is used. This allows later options to be set
8088 without specifying the bounding box for the motion vector search.
8089
8090 Default - search the whole frame.
8091
8092 @item rx
8093 @item ry
8094 Specify the maximum extent of movement in x and y directions in the
8095 range 0-64 pixels. Default 16.
8096
8097 @item edge
8098 Specify how to generate pixels to fill blanks at the edge of the
8099 frame. Available values are:
8100 @table @samp
8101 @item blank, 0
8102 Fill zeroes at blank locations
8103 @item original, 1
8104 Original image at blank locations
8105 @item clamp, 2
8106 Extruded edge value at blank locations
8107 @item mirror, 3
8108 Mirrored edge at blank locations
8109 @end table
8110 Default value is @samp{mirror}.
8111
8112 @item blocksize
8113 Specify the blocksize to use for motion search. Range 4-128 pixels,
8114 default 8.
8115
8116 @item contrast
8117 Specify the contrast threshold for blocks. Only blocks with more than
8118 the specified contrast (difference between darkest and lightest
8119 pixels) will be considered. Range 1-255, default 125.
8120
8121 @item search
8122 Specify the search strategy. Available values are:
8123 @table @samp
8124 @item exhaustive, 0
8125 Set exhaustive search
8126 @item less, 1
8127 Set less exhaustive search.
8128 @end table
8129 Default value is @samp{exhaustive}.
8130
8131 @item filename
8132 If set then a detailed log of the motion search is written to the
8133 specified file.
8134
8135 @end table
8136
8137 @section despill
8138
8139 Remove unwanted contamination of foreground colors, caused by reflected color of
8140 greenscreen or bluescreen.
8141
8142 This filter accepts the following options:
8143
8144 @table @option
8145 @item type
8146 Set what type of despill to use.
8147
8148 @item mix
8149 Set how spillmap will be generated.
8150
8151 @item expand
8152 Set how much to get rid of still remaining spill.
8153
8154 @item red
8155 Controls amount of red in spill area.
8156
8157 @item green
8158 Controls amount of green in spill area.
8159 Should be -1 for greenscreen.
8160
8161 @item blue
8162 Controls amount of blue in spill area.
8163 Should be -1 for bluescreen.
8164
8165 @item brightness
8166 Controls brightness of spill area, preserving colors.
8167
8168 @item alpha
8169 Modify alpha from generated spillmap.
8170 @end table
8171
8172 @section detelecine
8173
8174 Apply an exact inverse of the telecine operation. It requires a predefined
8175 pattern specified using the pattern option which must be the same as that passed
8176 to the telecine filter.
8177
8178 This filter accepts the following options:
8179
8180 @table @option
8181 @item first_field
8182 @table @samp
8183 @item top, t
8184 top field first
8185 @item bottom, b
8186 bottom field first
8187 The default value is @code{top}.
8188 @end table
8189
8190 @item pattern
8191 A string of numbers representing the pulldown pattern you wish to apply.
8192 The default value is @code{23}.
8193
8194 @item start_frame
8195 A number representing position of the first frame with respect to the telecine
8196 pattern. This is to be used if the stream is cut. The default value is @code{0}.
8197 @end table
8198
8199 @section dilation
8200
8201 Apply dilation effect to the video.
8202
8203 This filter replaces the pixel by the local(3x3) maximum.
8204
8205 It accepts the following options:
8206
8207 @table @option
8208 @item threshold0
8209 @item threshold1
8210 @item threshold2
8211 @item threshold3
8212 Limit the maximum change for each plane, default is 65535.
8213 If 0, plane will remain unchanged.
8214
8215 @item coordinates
8216 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
8217 pixels are used.
8218
8219 Flags to local 3x3 coordinates maps like this:
8220
8221     1 2 3
8222     4   5
8223     6 7 8
8224 @end table
8225
8226 @section displace
8227
8228 Displace pixels as indicated by second and third input stream.
8229
8230 It takes three input streams and outputs one stream, the first input is the
8231 source, and second and third input are displacement maps.
8232
8233 The second input specifies how much to displace pixels along the
8234 x-axis, while the third input specifies how much to displace pixels
8235 along the y-axis.
8236 If one of displacement map streams terminates, last frame from that
8237 displacement map will be used.
8238
8239 Note that once generated, displacements maps can be reused over and over again.
8240
8241 A description of the accepted options follows.
8242
8243 @table @option
8244 @item edge
8245 Set displace behavior for pixels that are out of range.
8246
8247 Available values are:
8248 @table @samp
8249 @item blank
8250 Missing pixels are replaced by black pixels.
8251
8252 @item smear
8253 Adjacent pixels will spread out to replace missing pixels.
8254
8255 @item wrap
8256 Out of range pixels are wrapped so they point to pixels of other side.
8257
8258 @item mirror
8259 Out of range pixels will be replaced with mirrored pixels.
8260 @end table
8261 Default is @samp{smear}.
8262
8263 @end table
8264
8265 @subsection Examples
8266
8267 @itemize
8268 @item
8269 Add ripple effect to rgb input of video size hd720:
8270 @example
8271 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
8272 @end example
8273
8274 @item
8275 Add wave effect to rgb input of video size hd720:
8276 @example
8277 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
8278 @end example
8279 @end itemize
8280
8281 @section drawbox
8282
8283 Draw a colored box on the input image.
8284
8285 It accepts the following parameters:
8286
8287 @table @option
8288 @item x
8289 @item y
8290 The expressions which specify the top left corner coordinates of the box. It defaults to 0.
8291
8292 @item width, w
8293 @item height, h
8294 The expressions which specify the width and height of the box; if 0 they are interpreted as
8295 the input width and height. It defaults to 0.
8296
8297 @item color, c
8298 Specify the color of the box to write. For the general syntax of this option,
8299 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
8300 value @code{invert} is used, the box edge color is the same as the
8301 video with inverted luma.
8302
8303 @item thickness, t
8304 The expression which sets the thickness of the box edge.
8305 A value of @code{fill} will create a filled box. Default value is @code{3}.
8306
8307 See below for the list of accepted constants.
8308
8309 @item replace
8310 Applicable if the input has alpha. With value @code{1}, the pixels of the painted box
8311 will overwrite the video's color and alpha pixels.
8312 Default is @code{0}, which composites the box onto the input, leaving the video's alpha intact.
8313 @end table
8314
8315 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
8316 following constants:
8317
8318 @table @option
8319 @item dar
8320 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
8321
8322 @item hsub
8323 @item vsub
8324 horizontal and vertical chroma subsample values. For example for the
8325 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
8326
8327 @item in_h, ih
8328 @item in_w, iw
8329 The input width and height.
8330
8331 @item sar
8332 The input sample aspect ratio.
8333
8334 @item x
8335 @item y
8336 The x and y offset coordinates where the box is drawn.
8337
8338 @item w
8339 @item h
8340 The width and height of the drawn box.
8341
8342 @item t
8343 The thickness of the drawn box.
8344
8345 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
8346 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
8347
8348 @end table
8349
8350 @subsection Examples
8351
8352 @itemize
8353 @item
8354 Draw a black box around the edge of the input image:
8355 @example
8356 drawbox
8357 @end example
8358
8359 @item
8360 Draw a box with color red and an opacity of 50%:
8361 @example
8362 drawbox=10:20:200:60:red@@0.5
8363 @end example
8364
8365 The previous example can be specified as:
8366 @example
8367 drawbox=x=10:y=20:w=200:h=60:color=red@@0.5
8368 @end example
8369
8370 @item
8371 Fill the box with pink color:
8372 @example
8373 drawbox=x=10:y=10:w=100:h=100:color=pink@@0.5:t=fill
8374 @end example
8375
8376 @item
8377 Draw a 2-pixel red 2.40:1 mask:
8378 @example
8379 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
8380 @end example
8381 @end itemize
8382
8383 @section drawgrid
8384
8385 Draw a grid on the input image.
8386
8387 It accepts the following parameters:
8388
8389 @table @option
8390 @item x
8391 @item y
8392 The expressions which specify the coordinates of some point of grid intersection (meant to configure offset). Both default to 0.
8393
8394 @item width, w
8395 @item height, h
8396 The expressions which specify the width and height of the grid cell, if 0 they are interpreted as the
8397 input width and height, respectively, minus @code{thickness}, so image gets
8398 framed. Default to 0.
8399
8400 @item color, c
8401 Specify the color of the grid. For the general syntax of this option,
8402 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
8403 value @code{invert} is used, the grid color is the same as the
8404 video with inverted luma.
8405
8406 @item thickness, t
8407 The expression which sets the thickness of the grid line. Default value is @code{1}.
8408
8409 See below for the list of accepted constants.
8410
8411 @item replace
8412 Applicable if the input has alpha. With @code{1} the pixels of the painted grid
8413 will overwrite the video's color and alpha pixels.
8414 Default is @code{0}, which composites the grid onto the input, leaving the video's alpha intact.
8415 @end table
8416
8417 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
8418 following constants:
8419
8420 @table @option
8421 @item dar
8422 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
8423
8424 @item hsub
8425 @item vsub
8426 horizontal and vertical chroma subsample values. For example for the
8427 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
8428
8429 @item in_h, ih
8430 @item in_w, iw
8431 The input grid cell width and height.
8432
8433 @item sar
8434 The input sample aspect ratio.
8435
8436 @item x
8437 @item y
8438 The x and y coordinates of some point of grid intersection (meant to configure offset).
8439
8440 @item w
8441 @item h
8442 The width and height of the drawn cell.
8443
8444 @item t
8445 The thickness of the drawn cell.
8446
8447 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
8448 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
8449
8450 @end table
8451
8452 @subsection Examples
8453
8454 @itemize
8455 @item
8456 Draw a grid with cell 100x100 pixels, thickness 2 pixels, with color red and an opacity of 50%:
8457 @example
8458 drawgrid=width=100:height=100:thickness=2:color=red@@0.5
8459 @end example
8460
8461 @item
8462 Draw a white 3x3 grid with an opacity of 50%:
8463 @example
8464 drawgrid=w=iw/3:h=ih/3:t=2:c=white@@0.5
8465 @end example
8466 @end itemize
8467
8468 @anchor{drawtext}
8469 @section drawtext
8470
8471 Draw a text string or text from a specified file on top of a video, using the
8472 libfreetype library.
8473
8474 To enable compilation of this filter, you need to configure FFmpeg with
8475 @code{--enable-libfreetype}.
8476 To enable default font fallback and the @var{font} option you need to
8477 configure FFmpeg with @code{--enable-libfontconfig}.
8478 To enable the @var{text_shaping} option, you need to configure FFmpeg with
8479 @code{--enable-libfribidi}.
8480
8481 @subsection Syntax
8482
8483 It accepts the following parameters:
8484
8485 @table @option
8486
8487 @item box
8488 Used to draw a box around text using the background color.
8489 The value must be either 1 (enable) or 0 (disable).
8490 The default value of @var{box} is 0.
8491
8492 @item boxborderw
8493 Set the width of the border to be drawn around the box using @var{boxcolor}.
8494 The default value of @var{boxborderw} is 0.
8495
8496 @item boxcolor
8497 The color to be used for drawing box around text. For the syntax of this
8498 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
8499
8500 The default value of @var{boxcolor} is "white".
8501
8502 @item line_spacing
8503 Set the line spacing in pixels of the border to be drawn around the box using @var{box}.
8504 The default value of @var{line_spacing} is 0.
8505
8506 @item borderw
8507 Set the width of the border to be drawn around the text using @var{bordercolor}.
8508 The default value of @var{borderw} is 0.
8509
8510 @item bordercolor
8511 Set the color to be used for drawing border around text. For the syntax of this
8512 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
8513
8514 The default value of @var{bordercolor} is "black".
8515
8516 @item expansion
8517 Select how the @var{text} is expanded. Can be either @code{none},
8518 @code{strftime} (deprecated) or
8519 @code{normal} (default). See the @ref{drawtext_expansion, Text expansion} section
8520 below for details.
8521
8522 @item basetime
8523 Set a start time for the count. Value is in microseconds. Only applied
8524 in the deprecated strftime expansion mode. To emulate in normal expansion
8525 mode use the @code{pts} function, supplying the start time (in seconds)
8526 as the second argument.
8527
8528 @item fix_bounds
8529 If true, check and fix text coords to avoid clipping.
8530
8531 @item fontcolor
8532 The color to be used for drawing fonts. For the syntax of this option, check
8533 the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
8534
8535 The default value of @var{fontcolor} is "black".
8536
8537 @item fontcolor_expr
8538 String which is expanded the same way as @var{text} to obtain dynamic
8539 @var{fontcolor} value. By default this option has empty value and is not
8540 processed. When this option is set, it overrides @var{fontcolor} option.
8541
8542 @item font
8543 The font family to be used for drawing text. By default Sans.
8544
8545 @item fontfile
8546 The font file to be used for drawing text. The path must be included.
8547 This parameter is mandatory if the fontconfig support is disabled.
8548
8549 @item alpha
8550 Draw the text applying alpha blending. The value can
8551 be a number between 0.0 and 1.0.
8552 The expression accepts the same variables @var{x, y} as well.
8553 The default value is 1.
8554 Please see @var{fontcolor_expr}.
8555
8556 @item fontsize
8557 The font size to be used for drawing text.
8558 The default value of @var{fontsize} is 16.
8559
8560 @item text_shaping
8561 If set to 1, attempt to shape the text (for example, reverse the order of
8562 right-to-left text and join Arabic characters) before drawing it.
8563 Otherwise, just draw the text exactly as given.
8564 By default 1 (if supported).
8565
8566 @item ft_load_flags
8567 The flags to be used for loading the fonts.
8568
8569 The flags map the corresponding flags supported by libfreetype, and are
8570 a combination of the following values:
8571 @table @var
8572 @item default
8573 @item no_scale
8574 @item no_hinting
8575 @item render
8576 @item no_bitmap
8577 @item vertical_layout
8578 @item force_autohint
8579 @item crop_bitmap
8580 @item pedantic
8581 @item ignore_global_advance_width
8582 @item no_recurse
8583 @item ignore_transform
8584 @item monochrome
8585 @item linear_design
8586 @item no_autohint
8587 @end table
8588
8589 Default value is "default".
8590
8591 For more information consult the documentation for the FT_LOAD_*
8592 libfreetype flags.
8593
8594 @item shadowcolor
8595 The color to be used for drawing a shadow behind the drawn text. For the
8596 syntax of this option, check the @ref{color syntax,,"Color" section in the
8597 ffmpeg-utils manual,ffmpeg-utils}.
8598
8599 The default value of @var{shadowcolor} is "black".
8600
8601 @item shadowx
8602 @item shadowy
8603 The x and y offsets for the text shadow position with respect to the
8604 position of the text. They can be either positive or negative
8605 values. The default value for both is "0".
8606
8607 @item start_number
8608 The starting frame number for the n/frame_num variable. The default value
8609 is "0".
8610
8611 @item tabsize
8612 The size in number of spaces to use for rendering the tab.
8613 Default value is 4.
8614
8615 @item timecode
8616 Set the initial timecode representation in "hh:mm:ss[:;.]ff"
8617 format. It can be used with or without text parameter. @var{timecode_rate}
8618 option must be specified.
8619
8620 @item timecode_rate, rate, r
8621 Set the timecode frame rate (timecode only). Value will be rounded to nearest
8622 integer. Minimum value is "1".
8623 Drop-frame timecode is supported for frame rates 30 & 60.
8624
8625 @item tc24hmax
8626 If set to 1, the output of the timecode option will wrap around at 24 hours.
8627 Default is 0 (disabled).
8628
8629 @item text
8630 The text string to be drawn. The text must be a sequence of UTF-8
8631 encoded characters.
8632 This parameter is mandatory if no file is specified with the parameter
8633 @var{textfile}.
8634
8635 @item textfile
8636 A text file containing text to be drawn. The text must be a sequence
8637 of UTF-8 encoded characters.
8638
8639 This parameter is mandatory if no text string is specified with the
8640 parameter @var{text}.
8641
8642 If both @var{text} and @var{textfile} are specified, an error is thrown.
8643
8644 @item reload
8645 If set to 1, the @var{textfile} will be reloaded before each frame.
8646 Be sure to update it atomically, or it may be read partially, or even fail.
8647
8648 @item x
8649 @item y
8650 The expressions which specify the offsets where text will be drawn
8651 within the video frame. They are relative to the top/left border of the
8652 output image.
8653
8654 The default value of @var{x} and @var{y} is "0".
8655
8656 See below for the list of accepted constants and functions.
8657 @end table
8658
8659 The parameters for @var{x} and @var{y} are expressions containing the
8660 following constants and functions:
8661
8662 @table @option
8663 @item dar
8664 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
8665
8666 @item hsub
8667 @item vsub
8668 horizontal and vertical chroma subsample values. For example for the
8669 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
8670
8671 @item line_h, lh
8672 the height of each text line
8673
8674 @item main_h, h, H
8675 the input height
8676
8677 @item main_w, w, W
8678 the input width
8679
8680 @item max_glyph_a, ascent
8681 the maximum distance from the baseline to the highest/upper grid
8682 coordinate used to place a glyph outline point, for all the rendered
8683 glyphs.
8684 It is a positive value, due to the grid's orientation with the Y axis
8685 upwards.
8686
8687 @item max_glyph_d, descent
8688 the maximum distance from the baseline to the lowest grid coordinate
8689 used to place a glyph outline point, for all the rendered glyphs.
8690 This is a negative value, due to the grid's orientation, with the Y axis
8691 upwards.
8692
8693 @item max_glyph_h
8694 maximum glyph height, that is the maximum height for all the glyphs
8695 contained in the rendered text, it is equivalent to @var{ascent} -
8696 @var{descent}.
8697
8698 @item max_glyph_w
8699 maximum glyph width, that is the maximum width for all the glyphs
8700 contained in the rendered text
8701
8702 @item n
8703 the number of input frame, starting from 0
8704
8705 @item rand(min, max)
8706 return a random number included between @var{min} and @var{max}
8707
8708 @item sar
8709 The input sample aspect ratio.
8710
8711 @item t
8712 timestamp expressed in seconds, NAN if the input timestamp is unknown
8713
8714 @item text_h, th
8715 the height of the rendered text
8716
8717 @item text_w, tw
8718 the width of the rendered text
8719
8720 @item x
8721 @item y
8722 the x and y offset coordinates where the text is drawn.
8723
8724 These parameters allow the @var{x} and @var{y} expressions to refer
8725 each other, so you can for example specify @code{y=x/dar}.
8726 @end table
8727
8728 @anchor{drawtext_expansion}
8729 @subsection Text expansion
8730
8731 If @option{expansion} is set to @code{strftime},
8732 the filter recognizes strftime() sequences in the provided text and
8733 expands them accordingly. Check the documentation of strftime(). This
8734 feature is deprecated.
8735
8736 If @option{expansion} is set to @code{none}, the text is printed verbatim.
8737
8738 If @option{expansion} is set to @code{normal} (which is the default),
8739 the following expansion mechanism is used.
8740
8741 The backslash character @samp{\}, followed by any character, always expands to
8742 the second character.
8743
8744 Sequences of the form @code{%@{...@}} are expanded. The text between the
8745 braces is a function name, possibly followed by arguments separated by ':'.
8746 If the arguments contain special characters or delimiters (':' or '@}'),
8747 they should be escaped.
8748
8749 Note that they probably must also be escaped as the value for the
8750 @option{text} option in the filter argument string and as the filter
8751 argument in the filtergraph description, and possibly also for the shell,
8752 that makes up to four levels of escaping; using a text file avoids these
8753 problems.
8754
8755 The following functions are available:
8756
8757 @table @command
8758
8759 @item expr, e
8760 The expression evaluation result.
8761
8762 It must take one argument specifying the expression to be evaluated,
8763 which accepts the same constants and functions as the @var{x} and
8764 @var{y} values. Note that not all constants should be used, for
8765 example the text size is not known when evaluating the expression, so
8766 the constants @var{text_w} and @var{text_h} will have an undefined
8767 value.
8768
8769 @item expr_int_format, eif
8770 Evaluate the expression's value and output as formatted integer.
8771
8772 The first argument is the expression to be evaluated, just as for the @var{expr} function.
8773 The second argument specifies the output format. Allowed values are @samp{x},
8774 @samp{X}, @samp{d} and @samp{u}. They are treated exactly as in the
8775 @code{printf} function.
8776 The third parameter is optional and sets the number of positions taken by the output.
8777 It can be used to add padding with zeros from the left.
8778
8779 @item gmtime
8780 The time at which the filter is running, expressed in UTC.
8781 It can accept an argument: a strftime() format string.
8782
8783 @item localtime
8784 The time at which the filter is running, expressed in the local time zone.
8785 It can accept an argument: a strftime() format string.
8786
8787 @item metadata
8788 Frame metadata. Takes one or two arguments.
8789
8790 The first argument is mandatory and specifies the metadata key.
8791
8792 The second argument is optional and specifies a default value, used when the
8793 metadata key is not found or empty.
8794
8795 @item n, frame_num
8796 The frame number, starting from 0.
8797
8798 @item pict_type
8799 A 1 character description of the current picture type.
8800
8801 @item pts
8802 The timestamp of the current frame.
8803 It can take up to three arguments.
8804
8805 The first argument is the format of the timestamp; it defaults to @code{flt}
8806 for seconds as a decimal number with microsecond accuracy; @code{hms} stands
8807 for a formatted @var{[-]HH:MM:SS.mmm} timestamp with millisecond accuracy.
8808 @code{gmtime} stands for the timestamp of the frame formatted as UTC time;
8809 @code{localtime} stands for the timestamp of the frame formatted as
8810 local time zone time.
8811
8812 The second argument is an offset added to the timestamp.
8813
8814 If the format is set to @code{hms}, a third argument @code{24HH} may be
8815 supplied to present the hour part of the formatted timestamp in 24h format
8816 (00-23).
8817
8818 If the format is set to @code{localtime} or @code{gmtime},
8819 a third argument may be supplied: a strftime() format string.
8820 By default, @var{YYYY-MM-DD HH:MM:SS} format will be used.
8821 @end table
8822
8823 @subsection Examples
8824
8825 @itemize
8826 @item
8827 Draw "Test Text" with font FreeSerif, using the default values for the
8828 optional parameters.
8829
8830 @example
8831 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
8832 @end example
8833
8834 @item
8835 Draw 'Test Text' with font FreeSerif of size 24 at position x=100
8836 and y=50 (counting from the top-left corner of the screen), text is
8837 yellow with a red box around it. Both the text and the box have an
8838 opacity of 20%.
8839
8840 @example
8841 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
8842           x=100: y=50: fontsize=24: fontcolor=yellow@@0.2: box=1: boxcolor=red@@0.2"
8843 @end example
8844
8845 Note that the double quotes are not necessary if spaces are not used
8846 within the parameter list.
8847
8848 @item
8849 Show the text at the center of the video frame:
8850 @example
8851 drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h)/2"
8852 @end example
8853
8854 @item
8855 Show the text at a random position, switching to a new position every 30 seconds:
8856 @example
8857 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)"
8858 @end example
8859
8860 @item
8861 Show a text line sliding from right to left in the last row of the video
8862 frame. The file @file{LONG_LINE} is assumed to contain a single line
8863 with no newlines.
8864 @example
8865 drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
8866 @end example
8867
8868 @item
8869 Show the content of file @file{CREDITS} off the bottom of the frame and scroll up.
8870 @example
8871 drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
8872 @end example
8873
8874 @item
8875 Draw a single green letter "g", at the center of the input video.
8876 The glyph baseline is placed at half screen height.
8877 @example
8878 drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
8879 @end example
8880
8881 @item
8882 Show text for 1 second every 3 seconds:
8883 @example
8884 drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'"
8885 @end example
8886
8887 @item
8888 Use fontconfig to set the font. Note that the colons need to be escaped.
8889 @example
8890 drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
8891 @end example
8892
8893 @item
8894 Print the date of a real-time encoding (see strftime(3)):
8895 @example
8896 drawtext='fontfile=FreeSans.ttf:text=%@{localtime\:%a %b %d %Y@}'
8897 @end example
8898
8899 @item
8900 Show text fading in and out (appearing/disappearing):
8901 @example
8902 #!/bin/sh
8903 DS=1.0 # display start
8904 DE=10.0 # display end
8905 FID=1.5 # fade in duration
8906 FOD=5 # fade out duration
8907 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 @}"
8908 @end example
8909
8910 @item
8911 Horizontally align multiple separate texts. Note that @option{max_glyph_a}
8912 and the @option{fontsize} value are included in the @option{y} offset.
8913 @example
8914 drawtext=fontfile=FreeSans.ttf:text=DOG:fontsize=24:x=10:y=20+24-max_glyph_a,
8915 drawtext=fontfile=FreeSans.ttf:text=cow:fontsize=24:x=80:y=20+24-max_glyph_a
8916 @end example
8917
8918 @end itemize
8919
8920 For more information about libfreetype, check:
8921 @url{http://www.freetype.org/}.
8922
8923 For more information about fontconfig, check:
8924 @url{http://freedesktop.org/software/fontconfig/fontconfig-user.html}.
8925
8926 For more information about libfribidi, check:
8927 @url{http://fribidi.org/}.
8928
8929 @section edgedetect
8930
8931 Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
8932
8933 The filter accepts the following options:
8934
8935 @table @option
8936 @item low
8937 @item high
8938 Set low and high threshold values used by the Canny thresholding
8939 algorithm.
8940
8941 The high threshold selects the "strong" edge pixels, which are then
8942 connected through 8-connectivity with the "weak" edge pixels selected
8943 by the low threshold.
8944
8945 @var{low} and @var{high} threshold values must be chosen in the range
8946 [0,1], and @var{low} should be lesser or equal to @var{high}.
8947
8948 Default value for @var{low} is @code{20/255}, and default value for @var{high}
8949 is @code{50/255}.
8950
8951 @item mode
8952 Define the drawing mode.
8953
8954 @table @samp
8955 @item wires
8956 Draw white/gray wires on black background.
8957
8958 @item colormix
8959 Mix the colors to create a paint/cartoon effect.
8960
8961 @item canny
8962 Apply Canny edge detector on all selected planes.
8963 @end table
8964 Default value is @var{wires}.
8965
8966 @item planes
8967 Select planes for filtering. By default all available planes are filtered.
8968 @end table
8969
8970 @subsection Examples
8971
8972 @itemize
8973 @item
8974 Standard edge detection with custom values for the hysteresis thresholding:
8975 @example
8976 edgedetect=low=0.1:high=0.4
8977 @end example
8978
8979 @item
8980 Painting effect without thresholding:
8981 @example
8982 edgedetect=mode=colormix:high=0
8983 @end example
8984 @end itemize
8985
8986 @section eq
8987 Set brightness, contrast, saturation and approximate gamma adjustment.
8988
8989 The filter accepts the following options:
8990
8991 @table @option
8992 @item contrast
8993 Set the contrast expression. The value must be a float value in range
8994 @code{-2.0} to @code{2.0}. The default value is "1".
8995
8996 @item brightness
8997 Set the brightness expression. The value must be a float value in
8998 range @code{-1.0} to @code{1.0}. The default value is "0".
8999
9000 @item saturation
9001 Set the saturation expression. The value must be a float in
9002 range @code{0.0} to @code{3.0}. The default value is "1".
9003
9004 @item gamma
9005 Set the gamma expression. The value must be a float in range
9006 @code{0.1} to @code{10.0}.  The default value is "1".
9007
9008 @item gamma_r
9009 Set the gamma expression for red. The value must be a float in
9010 range @code{0.1} to @code{10.0}. The default value is "1".
9011
9012 @item gamma_g
9013 Set the gamma expression for green. The value must be a float in range
9014 @code{0.1} to @code{10.0}. The default value is "1".
9015
9016 @item gamma_b
9017 Set the gamma expression for blue. The value must be a float in range
9018 @code{0.1} to @code{10.0}. The default value is "1".
9019
9020 @item gamma_weight
9021 Set the gamma weight expression. It can be used to reduce the effect
9022 of a high gamma value on bright image areas, e.g. keep them from
9023 getting overamplified and just plain white. The value must be a float
9024 in range @code{0.0} to @code{1.0}. A value of @code{0.0} turns the
9025 gamma correction all the way down while @code{1.0} leaves it at its
9026 full strength. Default is "1".
9027
9028 @item eval
9029 Set when the expressions for brightness, contrast, saturation and
9030 gamma expressions are evaluated.
9031
9032 It accepts the following values:
9033 @table @samp
9034 @item init
9035 only evaluate expressions once during the filter initialization or
9036 when a command is processed
9037
9038 @item frame
9039 evaluate expressions for each incoming frame
9040 @end table
9041
9042 Default value is @samp{init}.
9043 @end table
9044
9045 The expressions accept the following parameters:
9046 @table @option
9047 @item n
9048 frame count of the input frame starting from 0
9049
9050 @item pos
9051 byte position of the corresponding packet in the input file, NAN if
9052 unspecified
9053
9054 @item r
9055 frame rate of the input video, NAN if the input frame rate is unknown
9056
9057 @item t
9058 timestamp expressed in seconds, NAN if the input timestamp is unknown
9059 @end table
9060
9061 @subsection Commands
9062 The filter supports the following commands:
9063
9064 @table @option
9065 @item contrast
9066 Set the contrast expression.
9067
9068 @item brightness
9069 Set the brightness expression.
9070
9071 @item saturation
9072 Set the saturation expression.
9073
9074 @item gamma
9075 Set the gamma expression.
9076
9077 @item gamma_r
9078 Set the gamma_r expression.
9079
9080 @item gamma_g
9081 Set gamma_g expression.
9082
9083 @item gamma_b
9084 Set gamma_b expression.
9085
9086 @item gamma_weight
9087 Set gamma_weight expression.
9088
9089 The command accepts the same syntax of the corresponding option.
9090
9091 If the specified expression is not valid, it is kept at its current
9092 value.
9093
9094 @end table
9095
9096 @section erosion
9097
9098 Apply erosion effect to the video.
9099
9100 This filter replaces the pixel by the local(3x3) minimum.
9101
9102 It accepts the following options:
9103
9104 @table @option
9105 @item threshold0
9106 @item threshold1
9107 @item threshold2
9108 @item threshold3
9109 Limit the maximum change for each plane, default is 65535.
9110 If 0, plane will remain unchanged.
9111
9112 @item coordinates
9113 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
9114 pixels are used.
9115
9116 Flags to local 3x3 coordinates maps like this:
9117
9118     1 2 3
9119     4   5
9120     6 7 8
9121 @end table
9122
9123 @section extractplanes
9124
9125 Extract color channel components from input video stream into
9126 separate grayscale video streams.
9127
9128 The filter accepts the following option:
9129
9130 @table @option
9131 @item planes
9132 Set plane(s) to extract.
9133
9134 Available values for planes are:
9135 @table @samp
9136 @item y
9137 @item u
9138 @item v
9139 @item a
9140 @item r
9141 @item g
9142 @item b
9143 @end table
9144
9145 Choosing planes not available in the input will result in an error.
9146 That means you cannot select @code{r}, @code{g}, @code{b} planes
9147 with @code{y}, @code{u}, @code{v} planes at same time.
9148 @end table
9149
9150 @subsection Examples
9151
9152 @itemize
9153 @item
9154 Extract luma, u and v color channel component from input video frame
9155 into 3 grayscale outputs:
9156 @example
9157 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
9158 @end example
9159 @end itemize
9160
9161 @section elbg
9162
9163 Apply a posterize effect using the ELBG (Enhanced LBG) algorithm.
9164
9165 For each input image, the filter will compute the optimal mapping from
9166 the input to the output given the codebook length, that is the number
9167 of distinct output colors.
9168
9169 This filter accepts the following options.
9170
9171 @table @option
9172 @item codebook_length, l
9173 Set codebook length. The value must be a positive integer, and
9174 represents the number of distinct output colors. Default value is 256.
9175
9176 @item nb_steps, n
9177 Set the maximum number of iterations to apply for computing the optimal
9178 mapping. The higher the value the better the result and the higher the
9179 computation time. Default value is 1.
9180
9181 @item seed, s
9182 Set a random seed, must be an integer included between 0 and
9183 UINT32_MAX. If not specified, or if explicitly set to -1, the filter
9184 will try to use a good random seed on a best effort basis.
9185
9186 @item pal8
9187 Set pal8 output pixel format. This option does not work with codebook
9188 length greater than 256.
9189 @end table
9190
9191 @section entropy
9192
9193 Measure graylevel entropy in histogram of color channels of video frames.
9194
9195 It accepts the following parameters:
9196
9197 @table @option
9198 @item mode
9199 Can be either @var{normal} or @var{diff}. Default is @var{normal}.
9200
9201 @var{diff} mode measures entropy of histogram delta values, absolute differences
9202 between neighbour histogram values.
9203 @end table
9204
9205 @section fade
9206
9207 Apply a fade-in/out effect to the input video.
9208
9209 It accepts the following parameters:
9210
9211 @table @option
9212 @item type, t
9213 The effect type can be either "in" for a fade-in, or "out" for a fade-out
9214 effect.
9215 Default is @code{in}.
9216
9217 @item start_frame, s
9218 Specify the number of the frame to start applying the fade
9219 effect at. Default is 0.
9220
9221 @item nb_frames, n
9222 The number of frames that the fade effect lasts. At the end of the
9223 fade-in effect, the output video will have the same intensity as the input video.
9224 At the end of the fade-out transition, the output video will be filled with the
9225 selected @option{color}.
9226 Default is 25.
9227
9228 @item alpha
9229 If set to 1, fade only alpha channel, if one exists on the input.
9230 Default value is 0.
9231
9232 @item start_time, st
9233 Specify the timestamp (in seconds) of the frame to start to apply the fade
9234 effect. If both start_frame and start_time are specified, the fade will start at
9235 whichever comes last.  Default is 0.
9236
9237 @item duration, d
9238 The number of seconds for which the fade effect has to last. At the end of the
9239 fade-in effect the output video will have the same intensity as the input video,
9240 at the end of the fade-out transition the output video will be filled with the
9241 selected @option{color}.
9242 If both duration and nb_frames are specified, duration is used. Default is 0
9243 (nb_frames is used by default).
9244
9245 @item color, c
9246 Specify the color of the fade. Default is "black".
9247 @end table
9248
9249 @subsection Examples
9250
9251 @itemize
9252 @item
9253 Fade in the first 30 frames of video:
9254 @example
9255 fade=in:0:30
9256 @end example
9257
9258 The command above is equivalent to:
9259 @example
9260 fade=t=in:s=0:n=30
9261 @end example
9262
9263 @item
9264 Fade out the last 45 frames of a 200-frame video:
9265 @example
9266 fade=out:155:45
9267 fade=type=out:start_frame=155:nb_frames=45
9268 @end example
9269
9270 @item
9271 Fade in the first 25 frames and fade out the last 25 frames of a 1000-frame video:
9272 @example
9273 fade=in:0:25, fade=out:975:25
9274 @end example
9275
9276 @item
9277 Make the first 5 frames yellow, then fade in from frame 5-24:
9278 @example
9279 fade=in:5:20:color=yellow
9280 @end example
9281
9282 @item
9283 Fade in alpha over first 25 frames of video:
9284 @example
9285 fade=in:0:25:alpha=1
9286 @end example
9287
9288 @item
9289 Make the first 5.5 seconds black, then fade in for 0.5 seconds:
9290 @example
9291 fade=t=in:st=5.5:d=0.5
9292 @end example
9293
9294 @end itemize
9295
9296 @section fftfilt
9297 Apply arbitrary expressions to samples in frequency domain
9298
9299 @table @option
9300 @item dc_Y
9301 Adjust the dc value (gain) of the luma plane of the image. The filter
9302 accepts an integer value in range @code{0} to @code{1000}. The default
9303 value is set to @code{0}.
9304
9305 @item dc_U
9306 Adjust the dc value (gain) of the 1st chroma plane of the image. The
9307 filter accepts an integer value in range @code{0} to @code{1000}. The
9308 default value is set to @code{0}.
9309
9310 @item dc_V
9311 Adjust the dc value (gain) of the 2nd chroma plane of the image. The
9312 filter accepts an integer value in range @code{0} to @code{1000}. The
9313 default value is set to @code{0}.
9314
9315 @item weight_Y
9316 Set the frequency domain weight expression for the luma plane.
9317
9318 @item weight_U
9319 Set the frequency domain weight expression for the 1st chroma plane.
9320
9321 @item weight_V
9322 Set the frequency domain weight expression for the 2nd chroma plane.
9323
9324 @item eval
9325 Set when the expressions are evaluated.
9326
9327 It accepts the following values:
9328 @table @samp
9329 @item init
9330 Only evaluate expressions once during the filter initialization.
9331
9332 @item frame
9333 Evaluate expressions for each incoming frame.
9334 @end table
9335
9336 Default value is @samp{init}.
9337
9338 The filter accepts the following variables:
9339 @item X
9340 @item Y
9341 The coordinates of the current sample.
9342
9343 @item W
9344 @item H
9345 The width and height of the image.
9346
9347 @item N
9348 The number of input frame, starting from 0.
9349 @end table
9350
9351 @subsection Examples
9352
9353 @itemize
9354 @item
9355 High-pass:
9356 @example
9357 fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)'
9358 @end example
9359
9360 @item
9361 Low-pass:
9362 @example
9363 fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)'
9364 @end example
9365
9366 @item
9367 Sharpen:
9368 @example
9369 fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)'
9370 @end example
9371
9372 @item
9373 Blur:
9374 @example
9375 fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))'
9376 @end example
9377
9378 @end itemize
9379
9380 @section fftdnoiz
9381 Denoise frames using 3D FFT (frequency domain filtering).
9382
9383 The filter accepts the following options:
9384
9385 @table @option
9386 @item sigma
9387 Set the noise sigma constant. This sets denoising strength.
9388 Default value is 1. Allowed range is from 0 to 30.
9389 Using very high sigma with low overlap may give blocking artifacts.
9390
9391 @item amount
9392 Set amount of denoising. By default all detected noise is reduced.
9393 Default value is 1. Allowed range is from 0 to 1.
9394
9395 @item block
9396 Set size of block, Default is 4, can be 3, 4, 5 or 6.
9397 Actual size of block in pixels is 2 to power of @var{block}, so by default
9398 block size in pixels is 2^4 which is 16.
9399
9400 @item overlap
9401 Set block overlap. Default is 0.5. Allowed range is from 0.2 to 0.8.
9402
9403 @item prev
9404 Set number of previous frames to use for denoising. By default is set to 0.
9405
9406 @item next
9407 Set number of next frames to to use for denoising. By default is set to 0.
9408
9409 @item planes
9410 Set planes which will be filtered, by default are all available filtered
9411 except alpha.
9412 @end table
9413
9414 @section field
9415
9416 Extract a single field from an interlaced image using stride
9417 arithmetic to avoid wasting CPU time. The output frames are marked as
9418 non-interlaced.
9419
9420 The filter accepts the following options:
9421
9422 @table @option
9423 @item type
9424 Specify whether to extract the top (if the value is @code{0} or
9425 @code{top}) or the bottom field (if the value is @code{1} or
9426 @code{bottom}).
9427 @end table
9428
9429 @section fieldhint
9430
9431 Create new frames by copying the top and bottom fields from surrounding frames
9432 supplied as numbers by the hint file.
9433
9434 @table @option
9435 @item hint
9436 Set file containing hints: absolute/relative frame numbers.
9437
9438 There must be one line for each frame in a clip. Each line must contain two
9439 numbers separated by the comma, optionally followed by @code{-} or @code{+}.
9440 Numbers supplied on each line of file can not be out of [N-1,N+1] where N
9441 is current frame number for @code{absolute} mode or out of [-1, 1] range
9442 for @code{relative} mode. First number tells from which frame to pick up top
9443 field and second number tells from which frame to pick up bottom field.
9444
9445 If optionally followed by @code{+} output frame will be marked as interlaced,
9446 else if followed by @code{-} output frame will be marked as progressive, else
9447 it will be marked same as input frame.
9448 If line starts with @code{#} or @code{;} that line is skipped.
9449
9450 @item mode
9451 Can be item @code{absolute} or @code{relative}. Default is @code{absolute}.
9452 @end table
9453
9454 Example of first several lines of @code{hint} file for @code{relative} mode:
9455 @example
9456 0,0 - # first frame
9457 1,0 - # second frame, use third's frame top field and second's frame bottom field
9458 1,0 - # third frame, use fourth's frame top field and third's frame bottom field
9459 1,0 -
9460 0,0 -
9461 0,0 -
9462 1,0 -
9463 1,0 -
9464 1,0 -
9465 0,0 -
9466 0,0 -
9467 1,0 -
9468 1,0 -
9469 1,0 -
9470 0,0 -
9471 @end example
9472
9473 @section fieldmatch
9474
9475 Field matching filter for inverse telecine. It is meant to reconstruct the
9476 progressive frames from a telecined stream. The filter does not drop duplicated
9477 frames, so to achieve a complete inverse telecine @code{fieldmatch} needs to be
9478 followed by a decimation filter such as @ref{decimate} in the filtergraph.
9479
9480 The separation of the field matching and the decimation is notably motivated by
9481 the possibility of inserting a de-interlacing filter fallback between the two.
9482 If the source has mixed telecined and real interlaced content,
9483 @code{fieldmatch} will not be able to match fields for the interlaced parts.
9484 But these remaining combed frames will be marked as interlaced, and thus can be
9485 de-interlaced by a later filter such as @ref{yadif} before decimation.
9486
9487 In addition to the various configuration options, @code{fieldmatch} can take an
9488 optional second stream, activated through the @option{ppsrc} option. If
9489 enabled, the frames reconstruction will be based on the fields and frames from
9490 this second stream. This allows the first input to be pre-processed in order to
9491 help the various algorithms of the filter, while keeping the output lossless
9492 (assuming the fields are matched properly). Typically, a field-aware denoiser,
9493 or brightness/contrast adjustments can help.
9494
9495 Note that this filter uses the same algorithms as TIVTC/TFM (AviSynth project)
9496 and VIVTC/VFM (VapourSynth project). The later is a light clone of TFM from
9497 which @code{fieldmatch} is based on. While the semantic and usage are very
9498 close, some behaviour and options names can differ.
9499
9500 The @ref{decimate} filter currently only works for constant frame rate input.
9501 If your input has mixed telecined (30fps) and progressive content with a lower
9502 framerate like 24fps use the following filterchain to produce the necessary cfr
9503 stream: @code{dejudder,fps=30000/1001,fieldmatch,decimate}.
9504
9505 The filter accepts the following options:
9506
9507 @table @option
9508 @item order
9509 Specify the assumed field order of the input stream. Available values are:
9510
9511 @table @samp
9512 @item auto
9513 Auto detect parity (use FFmpeg's internal parity value).
9514 @item bff
9515 Assume bottom field first.
9516 @item tff
9517 Assume top field first.
9518 @end table
9519
9520 Note that it is sometimes recommended not to trust the parity announced by the
9521 stream.
9522
9523 Default value is @var{auto}.
9524
9525 @item mode
9526 Set the matching mode or strategy to use. @option{pc} mode is the safest in the
9527 sense that it won't risk creating jerkiness due to duplicate frames when
9528 possible, but if there are bad edits or blended fields it will end up
9529 outputting combed frames when a good match might actually exist. On the other
9530 hand, @option{pcn_ub} mode is the most risky in terms of creating jerkiness,
9531 but will almost always find a good frame if there is one. The other values are
9532 all somewhere in between @option{pc} and @option{pcn_ub} in terms of risking
9533 jerkiness and creating duplicate frames versus finding good matches in sections
9534 with bad edits, orphaned fields, blended fields, etc.
9535
9536 More details about p/c/n/u/b are available in @ref{p/c/n/u/b meaning} section.
9537
9538 Available values are:
9539
9540 @table @samp
9541 @item pc
9542 2-way matching (p/c)
9543 @item pc_n
9544 2-way matching, and trying 3rd match if still combed (p/c + n)
9545 @item pc_u
9546 2-way matching, and trying 3rd match (same order) if still combed (p/c + u)
9547 @item pc_n_ub
9548 2-way matching, trying 3rd match if still combed, and trying 4th/5th matches if
9549 still combed (p/c + n + u/b)
9550 @item pcn
9551 3-way matching (p/c/n)
9552 @item pcn_ub
9553 3-way matching, and trying 4th/5th matches if all 3 of the original matches are
9554 detected as combed (p/c/n + u/b)
9555 @end table
9556
9557 The parenthesis at the end indicate the matches that would be used for that
9558 mode assuming @option{order}=@var{tff} (and @option{field} on @var{auto} or
9559 @var{top}).
9560
9561 In terms of speed @option{pc} mode is by far the fastest and @option{pcn_ub} is
9562 the slowest.
9563
9564 Default value is @var{pc_n}.
9565
9566 @item ppsrc
9567 Mark the main input stream as a pre-processed input, and enable the secondary
9568 input stream as the clean source to pick the fields from. See the filter
9569 introduction for more details. It is similar to the @option{clip2} feature from
9570 VFM/TFM.
9571
9572 Default value is @code{0} (disabled).
9573
9574 @item field
9575 Set the field to match from. It is recommended to set this to the same value as
9576 @option{order} unless you experience matching failures with that setting. In
9577 certain circumstances changing the field that is used to match from can have a
9578 large impact on matching performance. Available values are:
9579
9580 @table @samp
9581 @item auto
9582 Automatic (same value as @option{order}).
9583 @item bottom
9584 Match from the bottom field.
9585 @item top
9586 Match from the top field.
9587 @end table
9588
9589 Default value is @var{auto}.
9590
9591 @item mchroma
9592 Set whether or not chroma is included during the match comparisons. In most
9593 cases it is recommended to leave this enabled. You should set this to @code{0}
9594 only if your clip has bad chroma problems such as heavy rainbowing or other
9595 artifacts. Setting this to @code{0} could also be used to speed things up at
9596 the cost of some accuracy.
9597
9598 Default value is @code{1}.
9599
9600 @item y0
9601 @item y1
9602 These define an exclusion band which excludes the lines between @option{y0} and
9603 @option{y1} from being included in the field matching decision. An exclusion
9604 band can be used to ignore subtitles, a logo, or other things that may
9605 interfere with the matching. @option{y0} sets the starting scan line and
9606 @option{y1} sets the ending line; all lines in between @option{y0} and
9607 @option{y1} (including @option{y0} and @option{y1}) will be ignored. Setting
9608 @option{y0} and @option{y1} to the same value will disable the feature.
9609 @option{y0} and @option{y1} defaults to @code{0}.
9610
9611 @item scthresh
9612 Set the scene change detection threshold as a percentage of maximum change on
9613 the luma plane. Good values are in the @code{[8.0, 14.0]} range. Scene change
9614 detection is only relevant in case @option{combmatch}=@var{sc}.  The range for
9615 @option{scthresh} is @code{[0.0, 100.0]}.
9616
9617 Default value is @code{12.0}.
9618
9619 @item combmatch
9620 When @option{combatch} is not @var{none}, @code{fieldmatch} will take into
9621 account the combed scores of matches when deciding what match to use as the
9622 final match. Available values are:
9623
9624 @table @samp
9625 @item none
9626 No final matching based on combed scores.
9627 @item sc
9628 Combed scores are only used when a scene change is detected.
9629 @item full
9630 Use combed scores all the time.
9631 @end table
9632
9633 Default is @var{sc}.
9634
9635 @item combdbg
9636 Force @code{fieldmatch} to calculate the combed metrics for certain matches and
9637 print them. This setting is known as @option{micout} in TFM/VFM vocabulary.
9638 Available values are:
9639
9640 @table @samp
9641 @item none
9642 No forced calculation.
9643 @item pcn
9644 Force p/c/n calculations.
9645 @item pcnub
9646 Force p/c/n/u/b calculations.
9647 @end table
9648
9649 Default value is @var{none}.
9650
9651 @item cthresh
9652 This is the area combing threshold used for combed frame detection. This
9653 essentially controls how "strong" or "visible" combing must be to be detected.
9654 Larger values mean combing must be more visible and smaller values mean combing
9655 can be less visible or strong and still be detected. Valid settings are from
9656 @code{-1} (every pixel will be detected as combed) to @code{255} (no pixel will
9657 be detected as combed). This is basically a pixel difference value. A good
9658 range is @code{[8, 12]}.
9659
9660 Default value is @code{9}.
9661
9662 @item chroma
9663 Sets whether or not chroma is considered in the combed frame decision.  Only
9664 disable this if your source has chroma problems (rainbowing, etc.) that are
9665 causing problems for the combed frame detection with chroma enabled. Actually,
9666 using @option{chroma}=@var{0} is usually more reliable, except for the case
9667 where there is chroma only combing in the source.
9668
9669 Default value is @code{0}.
9670
9671 @item blockx
9672 @item blocky
9673 Respectively set the x-axis and y-axis size of the window used during combed
9674 frame detection. This has to do with the size of the area in which
9675 @option{combpel} pixels are required to be detected as combed for a frame to be
9676 declared combed. See the @option{combpel} parameter description for more info.
9677 Possible values are any number that is a power of 2 starting at 4 and going up
9678 to 512.
9679
9680 Default value is @code{16}.
9681
9682 @item combpel
9683 The number of combed pixels inside any of the @option{blocky} by
9684 @option{blockx} size blocks on the frame for the frame to be detected as
9685 combed. While @option{cthresh} controls how "visible" the combing must be, this
9686 setting controls "how much" combing there must be in any localized area (a
9687 window defined by the @option{blockx} and @option{blocky} settings) on the
9688 frame. Minimum value is @code{0} and maximum is @code{blocky x blockx} (at
9689 which point no frames will ever be detected as combed). This setting is known
9690 as @option{MI} in TFM/VFM vocabulary.
9691
9692 Default value is @code{80}.
9693 @end table
9694
9695 @anchor{p/c/n/u/b meaning}
9696 @subsection p/c/n/u/b meaning
9697
9698 @subsubsection p/c/n
9699
9700 We assume the following telecined stream:
9701
9702 @example
9703 Top fields:     1 2 2 3 4
9704 Bottom fields:  1 2 3 4 4
9705 @end example
9706
9707 The numbers correspond to the progressive frame the fields relate to. Here, the
9708 first two frames are progressive, the 3rd and 4th are combed, and so on.
9709
9710 When @code{fieldmatch} is configured to run a matching from bottom
9711 (@option{field}=@var{bottom}) this is how this input stream get transformed:
9712
9713 @example
9714 Input stream:
9715                 T     1 2 2 3 4
9716                 B     1 2 3 4 4   <-- matching reference
9717
9718 Matches:              c c n n c
9719
9720 Output stream:
9721                 T     1 2 3 4 4
9722                 B     1 2 3 4 4
9723 @end example
9724
9725 As a result of the field matching, we can see that some frames get duplicated.
9726 To perform a complete inverse telecine, you need to rely on a decimation filter
9727 after this operation. See for instance the @ref{decimate} filter.
9728
9729 The same operation now matching from top fields (@option{field}=@var{top})
9730 looks like this:
9731
9732 @example
9733 Input stream:
9734                 T     1 2 2 3 4   <-- matching reference
9735                 B     1 2 3 4 4
9736
9737 Matches:              c c p p c
9738
9739 Output stream:
9740                 T     1 2 2 3 4
9741                 B     1 2 2 3 4
9742 @end example
9743
9744 In these examples, we can see what @var{p}, @var{c} and @var{n} mean;
9745 basically, they refer to the frame and field of the opposite parity:
9746
9747 @itemize
9748 @item @var{p} matches the field of the opposite parity in the previous frame
9749 @item @var{c} matches the field of the opposite parity in the current frame
9750 @item @var{n} matches the field of the opposite parity in the next frame
9751 @end itemize
9752
9753 @subsubsection u/b
9754
9755 The @var{u} and @var{b} matching are a bit special in the sense that they match
9756 from the opposite parity flag. In the following examples, we assume that we are
9757 currently matching the 2nd frame (Top:2, bottom:2). According to the match, a
9758 'x' is placed above and below each matched fields.
9759
9760 With bottom matching (@option{field}=@var{bottom}):
9761 @example
9762 Match:           c         p           n          b          u
9763
9764                  x       x               x        x          x
9765   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
9766   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
9767                  x         x           x        x              x
9768
9769 Output frames:
9770                  2          1          2          2          2
9771                  2          2          2          1          3
9772 @end example
9773
9774 With top matching (@option{field}=@var{top}):
9775 @example
9776 Match:           c         p           n          b          u
9777
9778                  x         x           x        x              x
9779   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
9780   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
9781                  x       x               x        x          x
9782
9783 Output frames:
9784                  2          2          2          1          2
9785                  2          1          3          2          2
9786 @end example
9787
9788 @subsection Examples
9789
9790 Simple IVTC of a top field first telecined stream:
9791 @example
9792 fieldmatch=order=tff:combmatch=none, decimate
9793 @end example
9794
9795 Advanced IVTC, with fallback on @ref{yadif} for still combed frames:
9796 @example
9797 fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
9798 @end example
9799
9800 @section fieldorder
9801
9802 Transform the field order of the input video.
9803
9804 It accepts the following parameters:
9805
9806 @table @option
9807
9808 @item order
9809 The output field order. Valid values are @var{tff} for top field first or @var{bff}
9810 for bottom field first.
9811 @end table
9812
9813 The default value is @samp{tff}.
9814
9815 The transformation is done by shifting the picture content up or down
9816 by one line, and filling the remaining line with appropriate picture content.
9817 This method is consistent with most broadcast field order converters.
9818
9819 If the input video is not flagged as being interlaced, or it is already
9820 flagged as being of the required output field order, then this filter does
9821 not alter the incoming video.
9822
9823 It is very useful when converting to or from PAL DV material,
9824 which is bottom field first.
9825
9826 For example:
9827 @example
9828 ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
9829 @end example
9830
9831 @section fifo, afifo
9832
9833 Buffer input images and send them when they are requested.
9834
9835 It is mainly useful when auto-inserted by the libavfilter
9836 framework.
9837
9838 It does not take parameters.
9839
9840 @section fillborders
9841
9842 Fill borders of the input video, without changing video stream dimensions.
9843 Sometimes video can have garbage at the four edges and you may not want to
9844 crop video input to keep size multiple of some number.
9845
9846 This filter accepts the following options:
9847
9848 @table @option
9849 @item left
9850 Number of pixels to fill from left border.
9851
9852 @item right
9853 Number of pixels to fill from right border.
9854
9855 @item top
9856 Number of pixels to fill from top border.
9857
9858 @item bottom
9859 Number of pixels to fill from bottom border.
9860
9861 @item mode
9862 Set fill mode.
9863
9864 It accepts the following values:
9865 @table @samp
9866 @item smear
9867 fill pixels using outermost pixels
9868
9869 @item mirror
9870 fill pixels using mirroring
9871
9872 @item fixed
9873 fill pixels with constant value
9874 @end table
9875
9876 Default is @var{smear}.
9877
9878 @item color
9879 Set color for pixels in fixed mode. Default is @var{black}.
9880 @end table
9881
9882 @section find_rect
9883
9884 Find a rectangular object
9885
9886 It accepts the following options:
9887
9888 @table @option
9889 @item object
9890 Filepath of the object image, needs to be in gray8.
9891
9892 @item threshold
9893 Detection threshold, default is 0.5.
9894
9895 @item mipmaps
9896 Number of mipmaps, default is 3.
9897
9898 @item xmin, ymin, xmax, ymax
9899 Specifies the rectangle in which to search.
9900 @end table
9901
9902 @subsection Examples
9903
9904 @itemize
9905 @item
9906 Generate a representative palette of a given video using @command{ffmpeg}:
9907 @example
9908 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
9909 @end example
9910 @end itemize
9911
9912 @section cover_rect
9913
9914 Cover a rectangular object
9915
9916 It accepts the following options:
9917
9918 @table @option
9919 @item cover
9920 Filepath of the optional cover image, needs to be in yuv420.
9921
9922 @item mode
9923 Set covering mode.
9924
9925 It accepts the following values:
9926 @table @samp
9927 @item cover
9928 cover it by the supplied image
9929 @item blur
9930 cover it by interpolating the surrounding pixels
9931 @end table
9932
9933 Default value is @var{blur}.
9934 @end table
9935
9936 @subsection Examples
9937
9938 @itemize
9939 @item
9940 Generate a representative palette of a given video using @command{ffmpeg}:
9941 @example
9942 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
9943 @end example
9944 @end itemize
9945
9946 @section floodfill
9947
9948 Flood area with values of same pixel components with another values.
9949
9950 It accepts the following options:
9951 @table @option
9952 @item x
9953 Set pixel x coordinate.
9954
9955 @item y
9956 Set pixel y coordinate.
9957
9958 @item s0
9959 Set source #0 component value.
9960
9961 @item s1
9962 Set source #1 component value.
9963
9964 @item s2
9965 Set source #2 component value.
9966
9967 @item s3
9968 Set source #3 component value.
9969
9970 @item d0
9971 Set destination #0 component value.
9972
9973 @item d1
9974 Set destination #1 component value.
9975
9976 @item d2
9977 Set destination #2 component value.
9978
9979 @item d3
9980 Set destination #3 component value.
9981 @end table
9982
9983 @anchor{format}
9984 @section format
9985
9986 Convert the input video to one of the specified pixel formats.
9987 Libavfilter will try to pick one that is suitable as input to
9988 the next filter.
9989
9990 It accepts the following parameters:
9991 @table @option
9992
9993 @item pix_fmts
9994 A '|'-separated list of pixel format names, such as
9995 "pix_fmts=yuv420p|monow|rgb24".
9996
9997 @end table
9998
9999 @subsection Examples
10000
10001 @itemize
10002 @item
10003 Convert the input video to the @var{yuv420p} format
10004 @example
10005 format=pix_fmts=yuv420p
10006 @end example
10007
10008 Convert the input video to any of the formats in the list
10009 @example
10010 format=pix_fmts=yuv420p|yuv444p|yuv410p
10011 @end example
10012 @end itemize
10013
10014 @anchor{fps}
10015 @section fps
10016
10017 Convert the video to specified constant frame rate by duplicating or dropping
10018 frames as necessary.
10019
10020 It accepts the following parameters:
10021 @table @option
10022
10023 @item fps
10024 The desired output frame rate. The default is @code{25}.
10025
10026 @item start_time
10027 Assume the first PTS should be the given value, in seconds. This allows for
10028 padding/trimming at the start of stream. By default, no assumption is made
10029 about the first frame's expected PTS, so no padding or trimming is done.
10030 For example, this could be set to 0 to pad the beginning with duplicates of
10031 the first frame if a video stream starts after the audio stream or to trim any
10032 frames with a negative PTS.
10033
10034 @item round
10035 Timestamp (PTS) rounding method.
10036
10037 Possible values are:
10038 @table @option
10039 @item zero
10040 round towards 0
10041 @item inf
10042 round away from 0
10043 @item down
10044 round towards -infinity
10045 @item up
10046 round towards +infinity
10047 @item near
10048 round to nearest
10049 @end table
10050 The default is @code{near}.
10051
10052 @item eof_action
10053 Action performed when reading the last frame.
10054
10055 Possible values are:
10056 @table @option
10057 @item round
10058 Use same timestamp rounding method as used for other frames.
10059 @item pass
10060 Pass through last frame if input duration has not been reached yet.
10061 @end table
10062 The default is @code{round}.
10063
10064 @end table
10065
10066 Alternatively, the options can be specified as a flat string:
10067 @var{fps}[:@var{start_time}[:@var{round}]].
10068
10069 See also the @ref{setpts} filter.
10070
10071 @subsection Examples
10072
10073 @itemize
10074 @item
10075 A typical usage in order to set the fps to 25:
10076 @example
10077 fps=fps=25
10078 @end example
10079
10080 @item
10081 Sets the fps to 24, using abbreviation and rounding method to round to nearest:
10082 @example
10083 fps=fps=film:round=near
10084 @end example
10085 @end itemize
10086
10087 @section framepack
10088
10089 Pack two different video streams into a stereoscopic video, setting proper
10090 metadata on supported codecs. The two views should have the same size and
10091 framerate and processing will stop when the shorter video ends. Please note
10092 that you may conveniently adjust view properties with the @ref{scale} and
10093 @ref{fps} filters.
10094
10095 It accepts the following parameters:
10096 @table @option
10097
10098 @item format
10099 The desired packing format. Supported values are:
10100
10101 @table @option
10102
10103 @item sbs
10104 The views are next to each other (default).
10105
10106 @item tab
10107 The views are on top of each other.
10108
10109 @item lines
10110 The views are packed by line.
10111
10112 @item columns
10113 The views are packed by column.
10114
10115 @item frameseq
10116 The views are temporally interleaved.
10117
10118 @end table
10119
10120 @end table
10121
10122 Some examples:
10123
10124 @example
10125 # Convert left and right views into a frame-sequential video
10126 ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT
10127
10128 # Convert views into a side-by-side video with the same output resolution as the input
10129 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
10130 @end example
10131
10132 @section framerate
10133
10134 Change the frame rate by interpolating new video output frames from the source
10135 frames.
10136
10137 This filter is not designed to function correctly with interlaced media. If
10138 you wish to change the frame rate of interlaced media then you are required
10139 to deinterlace before this filter and re-interlace after this filter.
10140
10141 A description of the accepted options follows.
10142
10143 @table @option
10144 @item fps
10145 Specify the output frames per second. This option can also be specified
10146 as a value alone. The default is @code{50}.
10147
10148 @item interp_start
10149 Specify the start of a range where the output frame will be created as a
10150 linear interpolation of two frames. The range is [@code{0}-@code{255}],
10151 the default is @code{15}.
10152
10153 @item interp_end
10154 Specify the end of a range where the output frame will be created as a
10155 linear interpolation of two frames. The range is [@code{0}-@code{255}],
10156 the default is @code{240}.
10157
10158 @item scene
10159 Specify the level at which a scene change is detected as a value between
10160 0 and 100 to indicate a new scene; a low value reflects a low
10161 probability for the current frame to introduce a new scene, while a higher
10162 value means the current frame is more likely to be one.
10163 The default is @code{8.2}.
10164
10165 @item flags
10166 Specify flags influencing the filter process.
10167
10168 Available value for @var{flags} is:
10169
10170 @table @option
10171 @item scene_change_detect, scd
10172 Enable scene change detection using the value of the option @var{scene}.
10173 This flag is enabled by default.
10174 @end table
10175 @end table
10176
10177 @section framestep
10178
10179 Select one frame every N-th frame.
10180
10181 This filter accepts the following option:
10182 @table @option
10183 @item step
10184 Select frame after every @code{step} frames.
10185 Allowed values are positive integers higher than 0. Default value is @code{1}.
10186 @end table
10187
10188 @section freezedetect
10189
10190 Detect frozen video.
10191
10192 This filter logs a message and sets frame metadata when it detects that the
10193 input video has no significant change in content during a specified duration.
10194 Video freeze detection calculates the mean average absolute difference of all
10195 the components of video frames and compares it to a noise floor.
10196
10197 The printed times and duration are expressed in seconds. The
10198 @code{lavfi.freezedetect.freeze_start} metadata key is set on the first frame
10199 whose timestamp equals or exceeds the detection duration and it contains the
10200 timestamp of the first frame of the freeze. The
10201 @code{lavfi.freezedetect.freeze_duration} and
10202 @code{lavfi.freezedetect.freeze_end} metadata keys are set on the first frame
10203 after the freeze.
10204
10205 The filter accepts the following options:
10206
10207 @table @option
10208 @item noise, n
10209 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
10210 specified value) or as a difference ratio between 0 and 1. Default is -60dB, or
10211 0.001.
10212
10213 @item duration, d
10214 Set freeze duration until notification (default is 2 seconds).
10215 @end table
10216
10217 @anchor{frei0r}
10218 @section frei0r
10219
10220 Apply a frei0r effect to the input video.
10221
10222 To enable the compilation of this filter, you need to install the frei0r
10223 header and configure FFmpeg with @code{--enable-frei0r}.
10224
10225 It accepts the following parameters:
10226
10227 @table @option
10228
10229 @item filter_name
10230 The name of the frei0r effect to load. If the environment variable
10231 @env{FREI0R_PATH} is defined, the frei0r effect is searched for in each of the
10232 directories specified by the colon-separated list in @env{FREI0R_PATH}.
10233 Otherwise, the standard frei0r paths are searched, in this order:
10234 @file{HOME/.frei0r-1/lib/}, @file{/usr/local/lib/frei0r-1/},
10235 @file{/usr/lib/frei0r-1/}.
10236
10237 @item filter_params
10238 A '|'-separated list of parameters to pass to the frei0r effect.
10239
10240 @end table
10241
10242 A frei0r effect parameter can be a boolean (its value is either
10243 "y" or "n"), a double, a color (specified as
10244 @var{R}/@var{G}/@var{B}, where @var{R}, @var{G}, and @var{B} are floating point
10245 numbers between 0.0 and 1.0, inclusive) or a color description as specified in the
10246 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils},
10247 a position (specified as @var{X}/@var{Y}, where
10248 @var{X} and @var{Y} are floating point numbers) and/or a string.
10249
10250 The number and types of parameters depend on the loaded effect. If an
10251 effect parameter is not specified, the default value is set.
10252
10253 @subsection Examples
10254
10255 @itemize
10256 @item
10257 Apply the distort0r effect, setting the first two double parameters:
10258 @example
10259 frei0r=filter_name=distort0r:filter_params=0.5|0.01
10260 @end example
10261
10262 @item
10263 Apply the colordistance effect, taking a color as the first parameter:
10264 @example
10265 frei0r=colordistance:0.2/0.3/0.4
10266 frei0r=colordistance:violet
10267 frei0r=colordistance:0x112233
10268 @end example
10269
10270 @item
10271 Apply the perspective effect, specifying the top left and top right image
10272 positions:
10273 @example
10274 frei0r=perspective:0.2/0.2|0.8/0.2
10275 @end example
10276 @end itemize
10277
10278 For more information, see
10279 @url{http://frei0r.dyne.org}
10280
10281 @section fspp
10282
10283 Apply fast and simple postprocessing. It is a faster version of @ref{spp}.
10284
10285 It splits (I)DCT into horizontal/vertical passes. Unlike the simple post-
10286 processing filter, one of them is performed once per block, not per pixel.
10287 This allows for much higher speed.
10288
10289 The filter accepts the following options:
10290
10291 @table @option
10292 @item quality
10293 Set quality. This option defines the number of levels for averaging. It accepts
10294 an integer in the range 4-5. Default value is @code{4}.
10295
10296 @item qp
10297 Force a constant quantization parameter. It accepts an integer in range 0-63.
10298 If not set, the filter will use the QP from the video stream (if available).
10299
10300 @item strength
10301 Set filter strength. It accepts an integer in range -15 to 32. Lower values mean
10302 more details but also more artifacts, while higher values make the image smoother
10303 but also blurrier. Default value is @code{0} âˆ’ PSNR optimal.
10304
10305 @item use_bframe_qp
10306 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
10307 option may cause flicker since the B-Frames have often larger QP. Default is
10308 @code{0} (not enabled).
10309
10310 @end table
10311
10312 @section gblur
10313
10314 Apply Gaussian blur filter.
10315
10316 The filter accepts the following options:
10317
10318 @table @option
10319 @item sigma
10320 Set horizontal sigma, standard deviation of Gaussian blur. Default is @code{0.5}.
10321
10322 @item steps
10323 Set number of steps for Gaussian approximation. Default is @code{1}.
10324
10325 @item planes
10326 Set which planes to filter. By default all planes are filtered.
10327
10328 @item sigmaV
10329 Set vertical sigma, if negative it will be same as @code{sigma}.
10330 Default is @code{-1}.
10331 @end table
10332
10333 @section geq
10334
10335 Apply generic equation to each pixel.
10336
10337 The filter accepts the following options:
10338
10339 @table @option
10340 @item lum_expr, lum
10341 Set the luminance expression.
10342 @item cb_expr, cb
10343 Set the chrominance blue expression.
10344 @item cr_expr, cr
10345 Set the chrominance red expression.
10346 @item alpha_expr, a
10347 Set the alpha expression.
10348 @item red_expr, r
10349 Set the red expression.
10350 @item green_expr, g
10351 Set the green expression.
10352 @item blue_expr, b
10353 Set the blue expression.
10354 @end table
10355
10356 The colorspace is selected according to the specified options. If one
10357 of the @option{lum_expr}, @option{cb_expr}, or @option{cr_expr}
10358 options is specified, the filter will automatically select a YCbCr
10359 colorspace. If one of the @option{red_expr}, @option{green_expr}, or
10360 @option{blue_expr} options is specified, it will select an RGB
10361 colorspace.
10362
10363 If one of the chrominance expression is not defined, it falls back on the other
10364 one. If no alpha expression is specified it will evaluate to opaque value.
10365 If none of chrominance expressions are specified, they will evaluate
10366 to the luminance expression.
10367
10368 The expressions can use the following variables and functions:
10369
10370 @table @option
10371 @item N
10372 The sequential number of the filtered frame, starting from @code{0}.
10373
10374 @item X
10375 @item Y
10376 The coordinates of the current sample.
10377
10378 @item W
10379 @item H
10380 The width and height of the image.
10381
10382 @item SW
10383 @item SH
10384 Width and height scale depending on the currently filtered plane. It is the
10385 ratio between the corresponding luma plane number of pixels and the current
10386 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
10387 @code{0.5,0.5} for chroma planes.
10388
10389 @item T
10390 Time of the current frame, expressed in seconds.
10391
10392 @item p(x, y)
10393 Return the value of the pixel at location (@var{x},@var{y}) of the current
10394 plane.
10395
10396 @item lum(x, y)
10397 Return the value of the pixel at location (@var{x},@var{y}) of the luminance
10398 plane.
10399
10400 @item cb(x, y)
10401 Return the value of the pixel at location (@var{x},@var{y}) of the
10402 blue-difference chroma plane. Return 0 if there is no such plane.
10403
10404 @item cr(x, y)
10405 Return the value of the pixel at location (@var{x},@var{y}) of the
10406 red-difference chroma plane. Return 0 if there is no such plane.
10407
10408 @item r(x, y)
10409 @item g(x, y)
10410 @item b(x, y)
10411 Return the value of the pixel at location (@var{x},@var{y}) of the
10412 red/green/blue component. Return 0 if there is no such component.
10413
10414 @item alpha(x, y)
10415 Return the value of the pixel at location (@var{x},@var{y}) of the alpha
10416 plane. Return 0 if there is no such plane.
10417 @end table
10418
10419 For functions, if @var{x} and @var{y} are outside the area, the value will be
10420 automatically clipped to the closer edge.
10421
10422 @subsection Examples
10423
10424 @itemize
10425 @item
10426 Flip the image horizontally:
10427 @example
10428 geq=p(W-X\,Y)
10429 @end example
10430
10431 @item
10432 Generate a bidimensional sine wave, with angle @code{PI/3} and a
10433 wavelength of 100 pixels:
10434 @example
10435 geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
10436 @end example
10437
10438 @item
10439 Generate a fancy enigmatic moving light:
10440 @example
10441 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
10442 @end example
10443
10444 @item
10445 Generate a quick emboss effect:
10446 @example
10447 format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
10448 @end example
10449
10450 @item
10451 Modify RGB components depending on pixel position:
10452 @example
10453 geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
10454 @end example
10455
10456 @item
10457 Create a radial gradient that is the same size as the input (also see
10458 the @ref{vignette} filter):
10459 @example
10460 geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
10461 @end example
10462 @end itemize
10463
10464 @section gradfun
10465
10466 Fix the banding artifacts that are sometimes introduced into nearly flat
10467 regions by truncation to 8-bit color depth.
10468 Interpolate the gradients that should go where the bands are, and
10469 dither them.
10470
10471 It is designed for playback only.  Do not use it prior to
10472 lossy compression, because compression tends to lose the dither and
10473 bring back the bands.
10474
10475 It accepts the following parameters:
10476
10477 @table @option
10478
10479 @item strength
10480 The maximum amount by which the filter will change any one pixel. This is also
10481 the threshold for detecting nearly flat regions. Acceptable values range from
10482 .51 to 64; the default value is 1.2. Out-of-range values will be clipped to the
10483 valid range.
10484
10485 @item radius
10486 The neighborhood to fit the gradient to. A larger radius makes for smoother
10487 gradients, but also prevents the filter from modifying the pixels near detailed
10488 regions. Acceptable values are 8-32; the default value is 16. Out-of-range
10489 values will be clipped to the valid range.
10490
10491 @end table
10492
10493 Alternatively, the options can be specified as a flat string:
10494 @var{strength}[:@var{radius}]
10495
10496 @subsection Examples
10497
10498 @itemize
10499 @item
10500 Apply the filter with a @code{3.5} strength and radius of @code{8}:
10501 @example
10502 gradfun=3.5:8
10503 @end example
10504
10505 @item
10506 Specify radius, omitting the strength (which will fall-back to the default
10507 value):
10508 @example
10509 gradfun=radius=8
10510 @end example
10511
10512 @end itemize
10513
10514 @section graphmonitor, agraphmonitor
10515 Show various filtergraph stats.
10516
10517 With this filter one can debug complete filtergraph.
10518 Especially issues with links filling with queued frames.
10519
10520 The filter accepts the following options:
10521
10522 @table @option
10523 @item size, s
10524 Set video output size. Default is @var{hd720}.
10525
10526 @item opacity, o
10527 Set video opacity. Default is @var{0.9}. Allowed range is from @var{0} to @var{1}.
10528
10529 @item mode, m
10530 Set output mode, can be @var{fulll} or @var{compact}.
10531 In @var{compact} mode only filters with some queued frames have displayed stats.
10532
10533 @item flags, f
10534 Set flags which enable which stats are shown in video.
10535
10536 Available values for flags are:
10537 @table @samp
10538 @item queue
10539 Display number of queued frames in each link.
10540
10541 @item frame_count_in
10542 Display number of frames taken from filter.
10543
10544 @item frame_count_out
10545 Display number of frames given out from filter.
10546
10547 @item pts
10548 Display current filtered frame pts.
10549
10550 @item time
10551 Display current filtered frame time.
10552
10553 @item timebase
10554 Display time base for filter link.
10555
10556 @item format
10557 Display used format for filter link.
10558
10559 @item size
10560 Display video size or number of audio channels in case of audio used by filter link.
10561
10562 @item rate
10563 Display video frame rate or sample rate in case of audio used by filter link.
10564 @end table
10565
10566 @item rate, r
10567 Set upper limit for video rate of output stream, Default value is @var{25}.
10568 This guarantee that output video frame rate will not be higher than this value.
10569 @end table
10570
10571 @section greyedge
10572 A color constancy variation filter which estimates scene illumination via grey edge algorithm
10573 and corrects the scene colors accordingly.
10574
10575 See: @url{https://staff.science.uva.nl/th.gevers/pub/GeversTIP07.pdf}
10576
10577 The filter accepts the following options:
10578
10579 @table @option
10580 @item difford
10581 The order of differentiation to be applied on the scene. Must be chosen in the range
10582 [0,2] and default value is 1.
10583
10584 @item minknorm
10585 The Minkowski parameter to be used for calculating the Minkowski distance. Must
10586 be chosen in the range [0,20] and default value is 1. Set to 0 for getting
10587 max value instead of calculating Minkowski distance.
10588
10589 @item sigma
10590 The standard deviation of Gaussian blur to be applied on the scene. Must be
10591 chosen in the range [0,1024.0] and default value = 1. floor( @var{sigma} * break_off_sigma(3) )
10592 can't be equal to 0 if @var{difford} is greater than 0.
10593 @end table
10594
10595 @subsection Examples
10596 @itemize
10597
10598 @item
10599 Grey Edge:
10600 @example
10601 greyedge=difford=1:minknorm=5:sigma=2
10602 @end example
10603
10604 @item
10605 Max Edge:
10606 @example
10607 greyedge=difford=1:minknorm=0:sigma=2
10608 @end example
10609
10610 @end itemize
10611
10612 @anchor{haldclut}
10613 @section haldclut
10614
10615 Apply a Hald CLUT to a video stream.
10616
10617 First input is the video stream to process, and second one is the Hald CLUT.
10618 The Hald CLUT input can be a simple picture or a complete video stream.
10619
10620 The filter accepts the following options:
10621
10622 @table @option
10623 @item shortest
10624 Force termination when the shortest input terminates. Default is @code{0}.
10625 @item repeatlast
10626 Continue applying the last CLUT after the end of the stream. A value of
10627 @code{0} disable the filter after the last frame of the CLUT is reached.
10628 Default is @code{1}.
10629 @end table
10630
10631 @code{haldclut} also has the same interpolation options as @ref{lut3d} (both
10632 filters share the same internals).
10633
10634 More information about the Hald CLUT can be found on Eskil Steenberg's website
10635 (Hald CLUT author) at @url{http://www.quelsolaar.com/technology/clut.html}.
10636
10637 @subsection Workflow examples
10638
10639 @subsubsection Hald CLUT video stream
10640
10641 Generate an identity Hald CLUT stream altered with various effects:
10642 @example
10643 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
10644 @end example
10645
10646 Note: make sure you use a lossless codec.
10647
10648 Then use it with @code{haldclut} to apply it on some random stream:
10649 @example
10650 ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
10651 @end example
10652
10653 The Hald CLUT will be applied to the 10 first seconds (duration of
10654 @file{clut.nut}), then the latest picture of that CLUT stream will be applied
10655 to the remaining frames of the @code{mandelbrot} stream.
10656
10657 @subsubsection Hald CLUT with preview
10658
10659 A Hald CLUT is supposed to be a squared image of @code{Level*Level*Level} by
10660 @code{Level*Level*Level} pixels. For a given Hald CLUT, FFmpeg will select the
10661 biggest possible square starting at the top left of the picture. The remaining
10662 padding pixels (bottom or right) will be ignored. This area can be used to add
10663 a preview of the Hald CLUT.
10664
10665 Typically, the following generated Hald CLUT will be supported by the
10666 @code{haldclut} filter:
10667
10668 @example
10669 ffmpeg -f lavfi -i @ref{haldclutsrc}=8 -vf "
10670    pad=iw+320 [padded_clut];
10671    smptebars=s=320x256, split [a][b];
10672    [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
10673    [main][b] overlay=W-320" -frames:v 1 clut.png
10674 @end example
10675
10676 It contains the original and a preview of the effect of the CLUT: SMPTE color
10677 bars are displayed on the right-top, and below the same color bars processed by
10678 the color changes.
10679
10680 Then, the effect of this Hald CLUT can be visualized with:
10681 @example
10682 ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
10683 @end example
10684
10685 @section hflip
10686
10687 Flip the input video horizontally.
10688
10689 For example, to horizontally flip the input video with @command{ffmpeg}:
10690 @example
10691 ffmpeg -i in.avi -vf "hflip" out.avi
10692 @end example
10693
10694 @section histeq
10695 This filter applies a global color histogram equalization on a
10696 per-frame basis.
10697
10698 It can be used to correct video that has a compressed range of pixel
10699 intensities.  The filter redistributes the pixel intensities to
10700 equalize their distribution across the intensity range. It may be
10701 viewed as an "automatically adjusting contrast filter". This filter is
10702 useful only for correcting degraded or poorly captured source
10703 video.
10704
10705 The filter accepts the following options:
10706
10707 @table @option
10708 @item strength
10709 Determine the amount of equalization to be applied.  As the strength
10710 is reduced, the distribution of pixel intensities more-and-more
10711 approaches that of the input frame. The value must be a float number
10712 in the range [0,1] and defaults to 0.200.
10713
10714 @item intensity
10715 Set the maximum intensity that can generated and scale the output
10716 values appropriately.  The strength should be set as desired and then
10717 the intensity can be limited if needed to avoid washing-out. The value
10718 must be a float number in the range [0,1] and defaults to 0.210.
10719
10720 @item antibanding
10721 Set the antibanding level. If enabled the filter will randomly vary
10722 the luminance of output pixels by a small amount to avoid banding of
10723 the histogram. Possible values are @code{none}, @code{weak} or
10724 @code{strong}. It defaults to @code{none}.
10725 @end table
10726
10727 @section histogram
10728
10729 Compute and draw a color distribution histogram for the input video.
10730
10731 The computed histogram is a representation of the color component
10732 distribution in an image.
10733
10734 Standard histogram displays the color components distribution in an image.
10735 Displays color graph for each color component. Shows distribution of
10736 the Y, U, V, A or R, G, B components, depending on input format, in the
10737 current frame. Below each graph a color component scale meter is shown.
10738
10739 The filter accepts the following options:
10740
10741 @table @option
10742 @item level_height
10743 Set height of level. Default value is @code{200}.
10744 Allowed range is [50, 2048].
10745
10746 @item scale_height
10747 Set height of color scale. Default value is @code{12}.
10748 Allowed range is [0, 40].
10749
10750 @item display_mode
10751 Set display mode.
10752 It accepts the following values:
10753 @table @samp
10754 @item stack
10755 Per color component graphs are placed below each other.
10756
10757 @item parade
10758 Per color component graphs are placed side by side.
10759
10760 @item overlay
10761 Presents information identical to that in the @code{parade}, except
10762 that the graphs representing color components are superimposed directly
10763 over one another.
10764 @end table
10765 Default is @code{stack}.
10766
10767 @item levels_mode
10768 Set mode. Can be either @code{linear}, or @code{logarithmic}.
10769 Default is @code{linear}.
10770
10771 @item components
10772 Set what color components to display.
10773 Default is @code{7}.
10774
10775 @item fgopacity
10776 Set foreground opacity. Default is @code{0.7}.
10777
10778 @item bgopacity
10779 Set background opacity. Default is @code{0.5}.
10780 @end table
10781
10782 @subsection Examples
10783
10784 @itemize
10785
10786 @item
10787 Calculate and draw histogram:
10788 @example
10789 ffplay -i input -vf histogram
10790 @end example
10791
10792 @end itemize
10793
10794 @anchor{hqdn3d}
10795 @section hqdn3d
10796
10797 This is a high precision/quality 3d denoise filter. It aims to reduce
10798 image noise, producing smooth images and making still images really
10799 still. It should enhance compressibility.
10800
10801 It accepts the following optional parameters:
10802
10803 @table @option
10804 @item luma_spatial
10805 A non-negative floating point number which specifies spatial luma strength.
10806 It defaults to 4.0.
10807
10808 @item chroma_spatial
10809 A non-negative floating point number which specifies spatial chroma strength.
10810 It defaults to 3.0*@var{luma_spatial}/4.0.
10811
10812 @item luma_tmp
10813 A floating point number which specifies luma temporal strength. It defaults to
10814 6.0*@var{luma_spatial}/4.0.
10815
10816 @item chroma_tmp
10817 A floating point number which specifies chroma temporal strength. It defaults to
10818 @var{luma_tmp}*@var{chroma_spatial}/@var{luma_spatial}.
10819 @end table
10820
10821 @anchor{hwdownload}
10822 @section hwdownload
10823
10824 Download hardware frames to system memory.
10825
10826 The input must be in hardware frames, and the output a non-hardware format.
10827 Not all formats will be supported on the output - it may be necessary to insert
10828 an additional @option{format} filter immediately following in the graph to get
10829 the output in a supported format.
10830
10831 @section hwmap
10832
10833 Map hardware frames to system memory or to another device.
10834
10835 This filter has several different modes of operation; which one is used depends
10836 on the input and output formats:
10837 @itemize
10838 @item
10839 Hardware frame input, normal frame output
10840
10841 Map the input frames to system memory and pass them to the output.  If the
10842 original hardware frame is later required (for example, after overlaying
10843 something else on part of it), the @option{hwmap} filter can be used again
10844 in the next mode to retrieve it.
10845 @item
10846 Normal frame input, hardware frame output
10847
10848 If the input is actually a software-mapped hardware frame, then unmap it -
10849 that is, return the original hardware frame.
10850
10851 Otherwise, a device must be provided.  Create new hardware surfaces on that
10852 device for the output, then map them back to the software format at the input
10853 and give those frames to the preceding filter.  This will then act like the
10854 @option{hwupload} filter, but may be able to avoid an additional copy when
10855 the input is already in a compatible format.
10856 @item
10857 Hardware frame input and output
10858
10859 A device must be supplied for the output, either directly or with the
10860 @option{derive_device} option.  The input and output devices must be of
10861 different types and compatible - the exact meaning of this is
10862 system-dependent, but typically it means that they must refer to the same
10863 underlying hardware context (for example, refer to the same graphics card).
10864
10865 If the input frames were originally created on the output device, then unmap
10866 to retrieve the original frames.
10867
10868 Otherwise, map the frames to the output device - create new hardware frames
10869 on the output corresponding to the frames on the input.
10870 @end itemize
10871
10872 The following additional parameters are accepted:
10873
10874 @table @option
10875 @item mode
10876 Set the frame mapping mode.  Some combination of:
10877 @table @var
10878 @item read
10879 The mapped frame should be readable.
10880 @item write
10881 The mapped frame should be writeable.
10882 @item overwrite
10883 The mapping will always overwrite the entire frame.
10884
10885 This may improve performance in some cases, as the original contents of the
10886 frame need not be loaded.
10887 @item direct
10888 The mapping must not involve any copying.
10889
10890 Indirect mappings to copies of frames are created in some cases where either
10891 direct mapping is not possible or it would have unexpected properties.
10892 Setting this flag ensures that the mapping is direct and will fail if that is
10893 not possible.
10894 @end table
10895 Defaults to @var{read+write} if not specified.
10896
10897 @item derive_device @var{type}
10898 Rather than using the device supplied at initialisation, instead derive a new
10899 device of type @var{type} from the device the input frames exist on.
10900
10901 @item reverse
10902 In a hardware to hardware mapping, map in reverse - create frames in the sink
10903 and map them back to the source.  This may be necessary in some cases where
10904 a mapping in one direction is required but only the opposite direction is
10905 supported by the devices being used.
10906
10907 This option is dangerous - it may break the preceding filter in undefined
10908 ways if there are any additional constraints on that filter's output.
10909 Do not use it without fully understanding the implications of its use.
10910 @end table
10911
10912 @anchor{hwupload}
10913 @section hwupload
10914
10915 Upload system memory frames to hardware surfaces.
10916
10917 The device to upload to must be supplied when the filter is initialised.  If
10918 using ffmpeg, select the appropriate device with the @option{-filter_hw_device}
10919 option.
10920
10921 @anchor{hwupload_cuda}
10922 @section hwupload_cuda
10923
10924 Upload system memory frames to a CUDA device.
10925
10926 It accepts the following optional parameters:
10927
10928 @table @option
10929 @item device
10930 The number of the CUDA device to use
10931 @end table
10932
10933 @section hqx
10934
10935 Apply a high-quality magnification filter designed for pixel art. This filter
10936 was originally created by Maxim Stepin.
10937
10938 It accepts the following option:
10939
10940 @table @option
10941 @item n
10942 Set the scaling dimension: @code{2} for @code{hq2x}, @code{3} for
10943 @code{hq3x} and @code{4} for @code{hq4x}.
10944 Default is @code{3}.
10945 @end table
10946
10947 @section hstack
10948 Stack input videos horizontally.
10949
10950 All streams must be of same pixel format and of same height.
10951
10952 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
10953 to create same output.
10954
10955 The filter accept the following option:
10956
10957 @table @option
10958 @item inputs
10959 Set number of input streams. Default is 2.
10960
10961 @item shortest
10962 If set to 1, force the output to terminate when the shortest input
10963 terminates. Default value is 0.
10964 @end table
10965
10966 @section hue
10967
10968 Modify the hue and/or the saturation of the input.
10969
10970 It accepts the following parameters:
10971
10972 @table @option
10973 @item h
10974 Specify the hue angle as a number of degrees. It accepts an expression,
10975 and defaults to "0".
10976
10977 @item s
10978 Specify the saturation in the [-10,10] range. It accepts an expression and
10979 defaults to "1".
10980
10981 @item H
10982 Specify the hue angle as a number of radians. It accepts an
10983 expression, and defaults to "0".
10984
10985 @item b
10986 Specify the brightness in the [-10,10] range. It accepts an expression and
10987 defaults to "0".
10988 @end table
10989
10990 @option{h} and @option{H} are mutually exclusive, and can't be
10991 specified at the same time.
10992
10993 The @option{b}, @option{h}, @option{H} and @option{s} option values are
10994 expressions containing the following constants:
10995
10996 @table @option
10997 @item n
10998 frame count of the input frame starting from 0
10999
11000 @item pts
11001 presentation timestamp of the input frame expressed in time base units
11002
11003 @item r
11004 frame rate of the input video, NAN if the input frame rate is unknown
11005
11006 @item t
11007 timestamp expressed in seconds, NAN if the input timestamp is unknown
11008
11009 @item tb
11010 time base of the input video
11011 @end table
11012
11013 @subsection Examples
11014
11015 @itemize
11016 @item
11017 Set the hue to 90 degrees and the saturation to 1.0:
11018 @example
11019 hue=h=90:s=1
11020 @end example
11021
11022 @item
11023 Same command but expressing the hue in radians:
11024 @example
11025 hue=H=PI/2:s=1
11026 @end example
11027
11028 @item
11029 Rotate hue and make the saturation swing between 0
11030 and 2 over a period of 1 second:
11031 @example
11032 hue="H=2*PI*t: s=sin(2*PI*t)+1"
11033 @end example
11034
11035 @item
11036 Apply a 3 seconds saturation fade-in effect starting at 0:
11037 @example
11038 hue="s=min(t/3\,1)"
11039 @end example
11040
11041 The general fade-in expression can be written as:
11042 @example
11043 hue="s=min(0\, max((t-START)/DURATION\, 1))"
11044 @end example
11045
11046 @item
11047 Apply a 3 seconds saturation fade-out effect starting at 5 seconds:
11048 @example
11049 hue="s=max(0\, min(1\, (8-t)/3))"
11050 @end example
11051
11052 The general fade-out expression can be written as:
11053 @example
11054 hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
11055 @end example
11056
11057 @end itemize
11058
11059 @subsection Commands
11060
11061 This filter supports the following commands:
11062 @table @option
11063 @item b
11064 @item s
11065 @item h
11066 @item H
11067 Modify the hue and/or the saturation and/or brightness of the input video.
11068 The command accepts the same syntax of the corresponding option.
11069
11070 If the specified expression is not valid, it is kept at its current
11071 value.
11072 @end table
11073
11074 @section hysteresis
11075
11076 Grow first stream into second stream by connecting components.
11077 This makes it possible to build more robust edge masks.
11078
11079 This filter accepts the following options:
11080
11081 @table @option
11082 @item planes
11083 Set which planes will be processed as bitmap, unprocessed planes will be
11084 copied from first stream.
11085 By default value 0xf, all planes will be processed.
11086
11087 @item threshold
11088 Set threshold which is used in filtering. If pixel component value is higher than
11089 this value filter algorithm for connecting components is activated.
11090 By default value is 0.
11091 @end table
11092
11093 @section idet
11094
11095 Detect video interlacing type.
11096
11097 This filter tries to detect if the input frames are interlaced, progressive,
11098 top or bottom field first. It will also try to detect fields that are
11099 repeated between adjacent frames (a sign of telecine).
11100
11101 Single frame detection considers only immediately adjacent frames when classifying each frame.
11102 Multiple frame detection incorporates the classification history of previous frames.
11103
11104 The filter will log these metadata values:
11105
11106 @table @option
11107 @item single.current_frame
11108 Detected type of current frame using single-frame detection. One of:
11109 ``tff'' (top field first), ``bff'' (bottom field first),
11110 ``progressive'', or ``undetermined''
11111
11112 @item single.tff
11113 Cumulative number of frames detected as top field first using single-frame detection.
11114
11115 @item multiple.tff
11116 Cumulative number of frames detected as top field first using multiple-frame detection.
11117
11118 @item single.bff
11119 Cumulative number of frames detected as bottom field first using single-frame detection.
11120
11121 @item multiple.current_frame
11122 Detected type of current frame using multiple-frame detection. One of:
11123 ``tff'' (top field first), ``bff'' (bottom field first),
11124 ``progressive'', or ``undetermined''
11125
11126 @item multiple.bff
11127 Cumulative number of frames detected as bottom field first using multiple-frame detection.
11128
11129 @item single.progressive
11130 Cumulative number of frames detected as progressive using single-frame detection.
11131
11132 @item multiple.progressive
11133 Cumulative number of frames detected as progressive using multiple-frame detection.
11134
11135 @item single.undetermined
11136 Cumulative number of frames that could not be classified using single-frame detection.
11137
11138 @item multiple.undetermined
11139 Cumulative number of frames that could not be classified using multiple-frame detection.
11140
11141 @item repeated.current_frame
11142 Which field in the current frame is repeated from the last. One of ``neither'', ``top'', or ``bottom''.
11143
11144 @item repeated.neither
11145 Cumulative number of frames with no repeated field.
11146
11147 @item repeated.top
11148 Cumulative number of frames with the top field repeated from the previous frame's top field.
11149
11150 @item repeated.bottom
11151 Cumulative number of frames with the bottom field repeated from the previous frame's bottom field.
11152 @end table
11153
11154 The filter accepts the following options:
11155
11156 @table @option
11157 @item intl_thres
11158 Set interlacing threshold.
11159 @item prog_thres
11160 Set progressive threshold.
11161 @item rep_thres
11162 Threshold for repeated field detection.
11163 @item half_life
11164 Number of frames after which a given frame's contribution to the
11165 statistics is halved (i.e., it contributes only 0.5 to its
11166 classification). The default of 0 means that all frames seen are given
11167 full weight of 1.0 forever.
11168 @item analyze_interlaced_flag
11169 When this is not 0 then idet will use the specified number of frames to determine
11170 if the interlaced flag is accurate, it will not count undetermined frames.
11171 If the flag is found to be accurate it will be used without any further
11172 computations, if it is found to be inaccurate it will be cleared without any
11173 further computations. This allows inserting the idet filter as a low computational
11174 method to clean up the interlaced flag
11175 @end table
11176
11177 @section il
11178
11179 Deinterleave or interleave fields.
11180
11181 This filter allows one to process interlaced images fields without
11182 deinterlacing them. Deinterleaving splits the input frame into 2
11183 fields (so called half pictures). Odd lines are moved to the top
11184 half of the output image, even lines to the bottom half.
11185 You can process (filter) them independently and then re-interleave them.
11186
11187 The filter accepts the following options:
11188
11189 @table @option
11190 @item luma_mode, l
11191 @item chroma_mode, c
11192 @item alpha_mode, a
11193 Available values for @var{luma_mode}, @var{chroma_mode} and
11194 @var{alpha_mode} are:
11195
11196 @table @samp
11197 @item none
11198 Do nothing.
11199
11200 @item deinterleave, d
11201 Deinterleave fields, placing one above the other.
11202
11203 @item interleave, i
11204 Interleave fields. Reverse the effect of deinterleaving.
11205 @end table
11206 Default value is @code{none}.
11207
11208 @item luma_swap, ls
11209 @item chroma_swap, cs
11210 @item alpha_swap, as
11211 Swap luma/chroma/alpha fields. Exchange even & odd lines. Default value is @code{0}.
11212 @end table
11213
11214 @section inflate
11215
11216 Apply inflate effect to the video.
11217
11218 This filter replaces the pixel by the local(3x3) average by taking into account
11219 only values higher than the pixel.
11220
11221 It accepts the following options:
11222
11223 @table @option
11224 @item threshold0
11225 @item threshold1
11226 @item threshold2
11227 @item threshold3
11228 Limit the maximum change for each plane, default is 65535.
11229 If 0, plane will remain unchanged.
11230 @end table
11231
11232 @section interlace
11233
11234 Simple interlacing filter from progressive contents. This interleaves upper (or
11235 lower) lines from odd frames with lower (or upper) lines from even frames,
11236 halving the frame rate and preserving image height.
11237
11238 @example
11239    Original        Original             New Frame
11240    Frame 'j'      Frame 'j+1'             (tff)
11241   ==========      ===========       ==================
11242     Line 0  -------------------->    Frame 'j' Line 0
11243     Line 1          Line 1  ---->   Frame 'j+1' Line 1
11244     Line 2 --------------------->    Frame 'j' Line 2
11245     Line 3          Line 3  ---->   Frame 'j+1' Line 3
11246      ...             ...                   ...
11247 New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
11248 @end example
11249
11250 It accepts the following optional parameters:
11251
11252 @table @option
11253 @item scan
11254 This determines whether the interlaced frame is taken from the even
11255 (tff - default) or odd (bff) lines of the progressive frame.
11256
11257 @item lowpass
11258 Vertical lowpass filter to avoid twitter interlacing and
11259 reduce moire patterns.
11260
11261 @table @samp
11262 @item 0, off
11263 Disable vertical lowpass filter
11264
11265 @item 1, linear
11266 Enable linear filter (default)
11267
11268 @item 2, complex
11269 Enable complex filter. This will slightly less reduce twitter and moire
11270 but better retain detail and subjective sharpness impression.
11271
11272 @end table
11273 @end table
11274
11275 @section kerndeint
11276
11277 Deinterlace input video by applying Donald Graft's adaptive kernel
11278 deinterling. Work on interlaced parts of a video to produce
11279 progressive frames.
11280
11281 The description of the accepted parameters follows.
11282
11283 @table @option
11284 @item thresh
11285 Set the threshold which affects the filter's tolerance when
11286 determining if a pixel line must be processed. It must be an integer
11287 in the range [0,255] and defaults to 10. A value of 0 will result in
11288 applying the process on every pixels.
11289
11290 @item map
11291 Paint pixels exceeding the threshold value to white if set to 1.
11292 Default is 0.
11293
11294 @item order
11295 Set the fields order. Swap fields if set to 1, leave fields alone if
11296 0. Default is 0.
11297
11298 @item sharp
11299 Enable additional sharpening if set to 1. Default is 0.
11300
11301 @item twoway
11302 Enable twoway sharpening if set to 1. Default is 0.
11303 @end table
11304
11305 @subsection Examples
11306
11307 @itemize
11308 @item
11309 Apply default values:
11310 @example
11311 kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
11312 @end example
11313
11314 @item
11315 Enable additional sharpening:
11316 @example
11317 kerndeint=sharp=1
11318 @end example
11319
11320 @item
11321 Paint processed pixels in white:
11322 @example
11323 kerndeint=map=1
11324 @end example
11325 @end itemize
11326
11327 @section lenscorrection
11328
11329 Correct radial lens distortion
11330
11331 This filter can be used to correct for radial distortion as can result from the use
11332 of wide angle lenses, and thereby re-rectify the image. To find the right parameters
11333 one can use tools available for example as part of opencv or simply trial-and-error.
11334 To use opencv use the calibration sample (under samples/cpp) from the opencv sources
11335 and extract the k1 and k2 coefficients from the resulting matrix.
11336
11337 Note that effectively the same filter is available in the open-source tools Krita and
11338 Digikam from the KDE project.
11339
11340 In contrast to the @ref{vignette} filter, which can also be used to compensate lens errors,
11341 this filter corrects the distortion of the image, whereas @ref{vignette} corrects the
11342 brightness distribution, so you may want to use both filters together in certain
11343 cases, though you will have to take care of ordering, i.e. whether vignetting should
11344 be applied before or after lens correction.
11345
11346 @subsection Options
11347
11348 The filter accepts the following options:
11349
11350 @table @option
11351 @item cx
11352 Relative x-coordinate of the focal point of the image, and thereby the center of the
11353 distortion. This value has a range [0,1] and is expressed as fractions of the image
11354 width. Default is 0.5.
11355 @item cy
11356 Relative y-coordinate of the focal point of the image, and thereby the center of the
11357 distortion. This value has a range [0,1] and is expressed as fractions of the image
11358 height. Default is 0.5.
11359 @item k1
11360 Coefficient of the quadratic correction term. This value has a range [-1,1]. 0 means
11361 no correction. Default is 0.
11362 @item k2
11363 Coefficient of the double quadratic correction term. This value has a range [-1,1].
11364 0 means no correction. Default is 0.
11365 @end table
11366
11367 The formula that generates the correction is:
11368
11369 @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)
11370
11371 where @var{r_0} is halve of the image diagonal and @var{r_src} and @var{r_tgt} are the
11372 distances from the focal point in the source and target images, respectively.
11373
11374 @section lensfun
11375
11376 Apply lens correction via the lensfun library (@url{http://lensfun.sourceforge.net/}).
11377
11378 The @code{lensfun} filter requires the camera make, camera model, and lens model
11379 to apply the lens correction. The filter will load the lensfun database and
11380 query it to find the corresponding camera and lens entries in the database. As
11381 long as these entries can be found with the given options, the filter can
11382 perform corrections on frames. Note that incomplete strings will result in the
11383 filter choosing the best match with the given options, and the filter will
11384 output the chosen camera and lens models (logged with level "info"). You must
11385 provide the make, camera model, and lens model as they are required.
11386
11387 The filter accepts the following options:
11388
11389 @table @option
11390 @item make
11391 The make of the camera (for example, "Canon"). This option is required.
11392
11393 @item model
11394 The model of the camera (for example, "Canon EOS 100D"). This option is
11395 required.
11396
11397 @item lens_model
11398 The model of the lens (for example, "Canon EF-S 18-55mm f/3.5-5.6 IS STM"). This
11399 option is required.
11400
11401 @item mode
11402 The type of correction to apply. The following values are valid options:
11403
11404 @table @samp
11405 @item vignetting
11406 Enables fixing lens vignetting.
11407
11408 @item geometry
11409 Enables fixing lens geometry. This is the default.
11410
11411 @item subpixel
11412 Enables fixing chromatic aberrations.
11413
11414 @item vig_geo
11415 Enables fixing lens vignetting and lens geometry.
11416
11417 @item vig_subpixel
11418 Enables fixing lens vignetting and chromatic aberrations.
11419
11420 @item distortion
11421 Enables fixing both lens geometry and chromatic aberrations.
11422
11423 @item all
11424 Enables all possible corrections.
11425
11426 @end table
11427 @item focal_length
11428 The focal length of the image/video (zoom; expected constant for video). For
11429 example, a 18--55mm lens has focal length range of [18--55], so a value in that
11430 range should be chosen when using that lens. Default 18.
11431
11432 @item aperture
11433 The aperture of the image/video (expected constant for video). Note that
11434 aperture is only used for vignetting correction. Default 3.5.
11435
11436 @item focus_distance
11437 The focus distance of the image/video (expected constant for video). Note that
11438 focus distance is only used for vignetting and only slightly affects the
11439 vignetting correction process. If unknown, leave it at the default value (which
11440 is 1000).
11441
11442 @item scale
11443 The scale factor which is applied after transformation. After correction the
11444 video is no longer necessarily rectangular. This parameter controls how much of
11445 the resulting image is visible. The value 0 means that a value will be chosen
11446 automatically such that there is little or no unmapped area in the output
11447 image. 1.0 means that no additional scaling is done. Lower values may result
11448 in more of the corrected image being visible, while higher values may avoid
11449 unmapped areas in the output.
11450
11451 @item target_geometry
11452 The target geometry of the output image/video. The following values are valid
11453 options:
11454
11455 @table @samp
11456 @item rectilinear (default)
11457 @item fisheye
11458 @item panoramic
11459 @item equirectangular
11460 @item fisheye_orthographic
11461 @item fisheye_stereographic
11462 @item fisheye_equisolid
11463 @item fisheye_thoby
11464 @end table
11465 @item reverse
11466 Apply the reverse of image correction (instead of correcting distortion, apply
11467 it).
11468
11469 @item interpolation
11470 The type of interpolation used when correcting distortion. The following values
11471 are valid options:
11472
11473 @table @samp
11474 @item nearest
11475 @item linear (default)
11476 @item lanczos
11477 @end table
11478 @end table
11479
11480 @subsection Examples
11481
11482 @itemize
11483 @item
11484 Apply lens correction with make "Canon", camera model "Canon EOS 100D", and lens
11485 model "Canon EF-S 18-55mm f/3.5-5.6 IS STM" with focal length of "18" and
11486 aperture of "8.0".
11487
11488 @example
11489 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
11490 @end example
11491
11492 @item
11493 Apply the same as before, but only for the first 5 seconds of video.
11494
11495 @example
11496 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
11497 @end example
11498
11499 @end itemize
11500
11501 @section libvmaf
11502
11503 Obtain the VMAF (Video Multi-Method Assessment Fusion)
11504 score between two input videos.
11505
11506 The obtained VMAF score is printed through the logging system.
11507
11508 It requires Netflix's vmaf library (libvmaf) as a pre-requisite.
11509 After installing the library it can be enabled using:
11510 @code{./configure --enable-libvmaf --enable-version3}.
11511 If no model path is specified it uses the default model: @code{vmaf_v0.6.1.pkl}.
11512
11513 The filter has following options:
11514
11515 @table @option
11516 @item model_path
11517 Set the model path which is to be used for SVM.
11518 Default value: @code{"vmaf_v0.6.1.pkl"}
11519
11520 @item log_path
11521 Set the file path to be used to store logs.
11522
11523 @item log_fmt
11524 Set the format of the log file (xml or json).
11525
11526 @item enable_transform
11527 This option can enable/disable the @code{score_transform} applied to the final predicted VMAF score,
11528 if you have specified score_transform option in the input parameter file passed to @code{run_vmaf_training.py}
11529 Default value: @code{false}
11530
11531 @item phone_model
11532 Invokes the phone model which will generate VMAF scores higher than in the
11533 regular model, which is more suitable for laptop, TV, etc. viewing conditions.
11534
11535 @item psnr
11536 Enables computing psnr along with vmaf.
11537
11538 @item ssim
11539 Enables computing ssim along with vmaf.
11540
11541 @item ms_ssim
11542 Enables computing ms_ssim along with vmaf.
11543
11544 @item pool
11545 Set the pool method (mean, min or harmonic mean) to be used for computing vmaf.
11546
11547 @item n_threads
11548 Set number of threads to be used when computing vmaf.
11549
11550 @item n_subsample
11551 Set interval for frame subsampling used when computing vmaf.
11552
11553 @item enable_conf_interval
11554 Enables confidence interval.
11555 @end table
11556
11557 This filter also supports the @ref{framesync} options.
11558
11559 On the below examples the input file @file{main.mpg} being processed is
11560 compared with the reference file @file{ref.mpg}.
11561
11562 @example
11563 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf -f null -
11564 @end example
11565
11566 Example with options:
11567 @example
11568 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf="psnr=1:log_fmt=json" -f null -
11569 @end example
11570
11571 @section limiter
11572
11573 Limits the pixel components values to the specified range [min, max].
11574
11575 The filter accepts the following options:
11576
11577 @table @option
11578 @item min
11579 Lower bound. Defaults to the lowest allowed value for the input.
11580
11581 @item max
11582 Upper bound. Defaults to the highest allowed value for the input.
11583
11584 @item planes
11585 Specify which planes will be processed. Defaults to all available.
11586 @end table
11587
11588 @section loop
11589
11590 Loop video frames.
11591
11592 The filter accepts the following options:
11593
11594 @table @option
11595 @item loop
11596 Set the number of loops. Setting this value to -1 will result in infinite loops.
11597 Default is 0.
11598
11599 @item size
11600 Set maximal size in number of frames. Default is 0.
11601
11602 @item start
11603 Set first frame of loop. Default is 0.
11604 @end table
11605
11606 @subsection Examples
11607
11608 @itemize
11609 @item
11610 Loop single first frame infinitely:
11611 @example
11612 loop=loop=-1:size=1:start=0
11613 @end example
11614
11615 @item
11616 Loop single first frame 10 times:
11617 @example
11618 loop=loop=10:size=1:start=0
11619 @end example
11620
11621 @item
11622 Loop 10 first frames 5 times:
11623 @example
11624 loop=loop=5:size=10:start=0
11625 @end example
11626 @end itemize
11627
11628 @section lut1d
11629
11630 Apply a 1D LUT to an input video.
11631
11632 The filter accepts the following options:
11633
11634 @table @option
11635 @item file
11636 Set the 1D LUT file name.
11637
11638 Currently supported formats:
11639 @table @samp
11640 @item cube
11641 Iridas
11642 @end table
11643
11644 @item interp
11645 Select interpolation mode.
11646
11647 Available values are:
11648
11649 @table @samp
11650 @item nearest
11651 Use values from the nearest defined point.
11652 @item linear
11653 Interpolate values using the linear interpolation.
11654 @item cosine
11655 Interpolate values using the cosine interpolation.
11656 @item cubic
11657 Interpolate values using the cubic interpolation.
11658 @item spline
11659 Interpolate values using the spline interpolation.
11660 @end table
11661 @end table
11662
11663 @anchor{lut3d}
11664 @section lut3d
11665
11666 Apply a 3D LUT to an input video.
11667
11668 The filter accepts the following options:
11669
11670 @table @option
11671 @item file
11672 Set the 3D LUT file name.
11673
11674 Currently supported formats:
11675 @table @samp
11676 @item 3dl
11677 AfterEffects
11678 @item cube
11679 Iridas
11680 @item dat
11681 DaVinci
11682 @item m3d
11683 Pandora
11684 @end table
11685 @item interp
11686 Select interpolation mode.
11687
11688 Available values are:
11689
11690 @table @samp
11691 @item nearest
11692 Use values from the nearest defined point.
11693 @item trilinear
11694 Interpolate values using the 8 points defining a cube.
11695 @item tetrahedral
11696 Interpolate values using a tetrahedron.
11697 @end table
11698 @end table
11699
11700 This filter also supports the @ref{framesync} options.
11701
11702 @section lumakey
11703
11704 Turn certain luma values into transparency.
11705
11706 The filter accepts the following options:
11707
11708 @table @option
11709 @item threshold
11710 Set the luma which will be used as base for transparency.
11711 Default value is @code{0}.
11712
11713 @item tolerance
11714 Set the range of luma values to be keyed out.
11715 Default value is @code{0}.
11716
11717 @item softness
11718 Set the range of softness. Default value is @code{0}.
11719 Use this to control gradual transition from zero to full transparency.
11720 @end table
11721
11722 @section lut, lutrgb, lutyuv
11723
11724 Compute a look-up table for binding each pixel component input value
11725 to an output value, and apply it to the input video.
11726
11727 @var{lutyuv} applies a lookup table to a YUV input video, @var{lutrgb}
11728 to an RGB input video.
11729
11730 These filters accept the following parameters:
11731 @table @option
11732 @item c0
11733 set first pixel component expression
11734 @item c1
11735 set second pixel component expression
11736 @item c2
11737 set third pixel component expression
11738 @item c3
11739 set fourth pixel component expression, corresponds to the alpha component
11740
11741 @item r
11742 set red component expression
11743 @item g
11744 set green component expression
11745 @item b
11746 set blue component expression
11747 @item a
11748 alpha component expression
11749
11750 @item y
11751 set Y/luminance component expression
11752 @item u
11753 set U/Cb component expression
11754 @item v
11755 set V/Cr component expression
11756 @end table
11757
11758 Each of them specifies the expression to use for computing the lookup table for
11759 the corresponding pixel component values.
11760
11761 The exact component associated to each of the @var{c*} options depends on the
11762 format in input.
11763
11764 The @var{lut} filter requires either YUV or RGB pixel formats in input,
11765 @var{lutrgb} requires RGB pixel formats in input, and @var{lutyuv} requires YUV.
11766
11767 The expressions can contain the following constants and functions:
11768
11769 @table @option
11770 @item w
11771 @item h
11772 The input width and height.
11773
11774 @item val
11775 The input value for the pixel component.
11776
11777 @item clipval
11778 The input value, clipped to the @var{minval}-@var{maxval} range.
11779
11780 @item maxval
11781 The maximum value for the pixel component.
11782
11783 @item minval
11784 The minimum value for the pixel component.
11785
11786 @item negval
11787 The negated value for the pixel component value, clipped to the
11788 @var{minval}-@var{maxval} range; it corresponds to the expression
11789 "maxval-clipval+minval".
11790
11791 @item clip(val)
11792 The computed value in @var{val}, clipped to the
11793 @var{minval}-@var{maxval} range.
11794
11795 @item gammaval(gamma)
11796 The computed gamma correction value of the pixel component value,
11797 clipped to the @var{minval}-@var{maxval} range. It corresponds to the
11798 expression
11799 "pow((clipval-minval)/(maxval-minval)\,@var{gamma})*(maxval-minval)+minval"
11800
11801 @end table
11802
11803 All expressions default to "val".
11804
11805 @subsection Examples
11806
11807 @itemize
11808 @item
11809 Negate input video:
11810 @example
11811 lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
11812 lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
11813 @end example
11814
11815 The above is the same as:
11816 @example
11817 lutrgb="r=negval:g=negval:b=negval"
11818 lutyuv="y=negval:u=negval:v=negval"
11819 @end example
11820
11821 @item
11822 Negate luminance:
11823 @example
11824 lutyuv=y=negval
11825 @end example
11826
11827 @item
11828 Remove chroma components, turning the video into a graytone image:
11829 @example
11830 lutyuv="u=128:v=128"
11831 @end example
11832
11833 @item
11834 Apply a luma burning effect:
11835 @example
11836 lutyuv="y=2*val"
11837 @end example
11838
11839 @item
11840 Remove green and blue components:
11841 @example
11842 lutrgb="g=0:b=0"
11843 @end example
11844
11845 @item
11846 Set a constant alpha channel value on input:
11847 @example
11848 format=rgba,lutrgb=a="maxval-minval/2"
11849 @end example
11850
11851 @item
11852 Correct luminance gamma by a factor of 0.5:
11853 @example
11854 lutyuv=y=gammaval(0.5)
11855 @end example
11856
11857 @item
11858 Discard least significant bits of luma:
11859 @example
11860 lutyuv=y='bitand(val, 128+64+32)'
11861 @end example
11862
11863 @item
11864 Technicolor like effect:
11865 @example
11866 lutyuv=u='(val-maxval/2)*2+maxval/2':v='(val-maxval/2)*2+maxval/2'
11867 @end example
11868 @end itemize
11869
11870 @section lut2, tlut2
11871
11872 The @code{lut2} filter takes two input streams and outputs one
11873 stream.
11874
11875 The @code{tlut2} (time lut2) filter takes two consecutive frames
11876 from one single stream.
11877
11878 This filter accepts the following parameters:
11879 @table @option
11880 @item c0
11881 set first pixel component expression
11882 @item c1
11883 set second pixel component expression
11884 @item c2
11885 set third pixel component expression
11886 @item c3
11887 set fourth pixel component expression, corresponds to the alpha component
11888
11889 @item d
11890 set output bit depth, only available for @code{lut2} filter. By default is 0,
11891 which means bit depth is automatically picked from first input format.
11892 @end table
11893
11894 Each of them specifies the expression to use for computing the lookup table for
11895 the corresponding pixel component values.
11896
11897 The exact component associated to each of the @var{c*} options depends on the
11898 format in inputs.
11899
11900 The expressions can contain the following constants:
11901
11902 @table @option
11903 @item w
11904 @item h
11905 The input width and height.
11906
11907 @item x
11908 The first input value for the pixel component.
11909
11910 @item y
11911 The second input value for the pixel component.
11912
11913 @item bdx
11914 The first input video bit depth.
11915
11916 @item bdy
11917 The second input video bit depth.
11918 @end table
11919
11920 All expressions default to "x".
11921
11922 @subsection Examples
11923
11924 @itemize
11925 @item
11926 Highlight differences between two RGB video streams:
11927 @example
11928 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)'
11929 @end example
11930
11931 @item
11932 Highlight differences between two YUV video streams:
11933 @example
11934 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)'
11935 @end example
11936
11937 @item
11938 Show max difference between two video streams:
11939 @example
11940 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)))'
11941 @end example
11942 @end itemize
11943
11944 @section maskedclamp
11945
11946 Clamp the first input stream with the second input and third input stream.
11947
11948 Returns the value of first stream to be between second input
11949 stream - @code{undershoot} and third input stream + @code{overshoot}.
11950
11951 This filter accepts the following options:
11952 @table @option
11953 @item undershoot
11954 Default value is @code{0}.
11955
11956 @item overshoot
11957 Default value is @code{0}.
11958
11959 @item planes
11960 Set which planes will be processed as bitmap, unprocessed planes will be
11961 copied from first stream.
11962 By default value 0xf, all planes will be processed.
11963 @end table
11964
11965 @section maskedmerge
11966
11967 Merge the first input stream with the second input stream using per pixel
11968 weights in the third input stream.
11969
11970 A value of 0 in the third stream pixel component means that pixel component
11971 from first stream is returned unchanged, while maximum value (eg. 255 for
11972 8-bit videos) means that pixel component from second stream is returned
11973 unchanged. Intermediate values define the amount of merging between both
11974 input stream's pixel components.
11975
11976 This filter accepts the following options:
11977 @table @option
11978 @item planes
11979 Set which planes will be processed as bitmap, unprocessed planes will be
11980 copied from first stream.
11981 By default value 0xf, all planes will be processed.
11982 @end table
11983
11984 @section maskfun
11985 Create mask from input video.
11986
11987 For example it is useful to create motion masks after @code{tblend} filter.
11988
11989 This filter accepts the following options:
11990
11991 @table @option
11992 @item low
11993 Set low threshold. Any pixel component lower or exact than this value will be set to 0.
11994
11995 @item high
11996 Set high threshold. Any pixel component higher than this value will be set to max value
11997 allowed for current pixel format.
11998
11999 @item planes
12000 Set planes to filter, by default all available planes are filtered.
12001
12002 @item fill
12003 Fill all frame pixels with this value.
12004
12005 @item sum
12006 Set max average pixel value for frame. If sum of all pixel components is higher that this
12007 average, output frame will be completely filled with value set by @var{fill} option.
12008 Typically useful for scene changes when used in combination with @code{tblend} filter.
12009 @end table
12010
12011 @section mcdeint
12012
12013 Apply motion-compensation deinterlacing.
12014
12015 It needs one field per frame as input and must thus be used together
12016 with yadif=1/3 or equivalent.
12017
12018 This filter accepts the following options:
12019 @table @option
12020 @item mode
12021 Set the deinterlacing mode.
12022
12023 It accepts one of the following values:
12024 @table @samp
12025 @item fast
12026 @item medium
12027 @item slow
12028 use iterative motion estimation
12029 @item extra_slow
12030 like @samp{slow}, but use multiple reference frames.
12031 @end table
12032 Default value is @samp{fast}.
12033
12034 @item parity
12035 Set the picture field parity assumed for the input video. It must be
12036 one of the following values:
12037
12038 @table @samp
12039 @item 0, tff
12040 assume top field first
12041 @item 1, bff
12042 assume bottom field first
12043 @end table
12044
12045 Default value is @samp{bff}.
12046
12047 @item qp
12048 Set per-block quantization parameter (QP) used by the internal
12049 encoder.
12050
12051 Higher values should result in a smoother motion vector field but less
12052 optimal individual vectors. Default value is 1.
12053 @end table
12054
12055 @section mergeplanes
12056
12057 Merge color channel components from several video streams.
12058
12059 The filter accepts up to 4 input streams, and merge selected input
12060 planes to the output video.
12061
12062 This filter accepts the following options:
12063 @table @option
12064 @item mapping
12065 Set input to output plane mapping. Default is @code{0}.
12066
12067 The mappings is specified as a bitmap. It should be specified as a
12068 hexadecimal number in the form 0xAa[Bb[Cc[Dd]]]. 'Aa' describes the
12069 mapping for the first plane of the output stream. 'A' sets the number of
12070 the input stream to use (from 0 to 3), and 'a' the plane number of the
12071 corresponding input to use (from 0 to 3). The rest of the mappings is
12072 similar, 'Bb' describes the mapping for the output stream second
12073 plane, 'Cc' describes the mapping for the output stream third plane and
12074 'Dd' describes the mapping for the output stream fourth plane.
12075
12076 @item format
12077 Set output pixel format. Default is @code{yuva444p}.
12078 @end table
12079
12080 @subsection Examples
12081
12082 @itemize
12083 @item
12084 Merge three gray video streams of same width and height into single video stream:
12085 @example
12086 [a0][a1][a2]mergeplanes=0x001020:yuv444p
12087 @end example
12088
12089 @item
12090 Merge 1st yuv444p stream and 2nd gray video stream into yuva444p video stream:
12091 @example
12092 [a0][a1]mergeplanes=0x00010210:yuva444p
12093 @end example
12094
12095 @item
12096 Swap Y and A plane in yuva444p stream:
12097 @example
12098 format=yuva444p,mergeplanes=0x03010200:yuva444p
12099 @end example
12100
12101 @item
12102 Swap U and V plane in yuv420p stream:
12103 @example
12104 format=yuv420p,mergeplanes=0x000201:yuv420p
12105 @end example
12106
12107 @item
12108 Cast a rgb24 clip to yuv444p:
12109 @example
12110 format=rgb24,mergeplanes=0x000102:yuv444p
12111 @end example
12112 @end itemize
12113
12114 @section mestimate
12115
12116 Estimate and export motion vectors using block matching algorithms.
12117 Motion vectors are stored in frame side data to be used by other filters.
12118
12119 This filter accepts the following options:
12120 @table @option
12121 @item method
12122 Specify the motion estimation method. Accepts one of the following values:
12123
12124 @table @samp
12125 @item esa
12126 Exhaustive search algorithm.
12127 @item tss
12128 Three step search algorithm.
12129 @item tdls
12130 Two dimensional logarithmic search algorithm.
12131 @item ntss
12132 New three step search algorithm.
12133 @item fss
12134 Four step search algorithm.
12135 @item ds
12136 Diamond search algorithm.
12137 @item hexbs
12138 Hexagon-based search algorithm.
12139 @item epzs
12140 Enhanced predictive zonal search algorithm.
12141 @item umh
12142 Uneven multi-hexagon search algorithm.
12143 @end table
12144 Default value is @samp{esa}.
12145
12146 @item mb_size
12147 Macroblock size. Default @code{16}.
12148
12149 @item search_param
12150 Search parameter. Default @code{7}.
12151 @end table
12152
12153 @section midequalizer
12154
12155 Apply Midway Image Equalization effect using two video streams.
12156
12157 Midway Image Equalization adjusts a pair of images to have the same
12158 histogram, while maintaining their dynamics as much as possible. It's
12159 useful for e.g. matching exposures from a pair of stereo cameras.
12160
12161 This filter has two inputs and one output, which must be of same pixel format, but
12162 may be of different sizes. The output of filter is first input adjusted with
12163 midway histogram of both inputs.
12164
12165 This filter accepts the following option:
12166
12167 @table @option
12168 @item planes
12169 Set which planes to process. Default is @code{15}, which is all available planes.
12170 @end table
12171
12172 @section minterpolate
12173
12174 Convert the video to specified frame rate using motion interpolation.
12175
12176 This filter accepts the following options:
12177 @table @option
12178 @item fps
12179 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}.
12180
12181 @item mi_mode
12182 Motion interpolation mode. Following values are accepted:
12183 @table @samp
12184 @item dup
12185 Duplicate previous or next frame for interpolating new ones.
12186 @item blend
12187 Blend source frames. Interpolated frame is mean of previous and next frames.
12188 @item mci
12189 Motion compensated interpolation. Following options are effective when this mode is selected:
12190
12191 @table @samp
12192 @item mc_mode
12193 Motion compensation mode. Following values are accepted:
12194 @table @samp
12195 @item obmc
12196 Overlapped block motion compensation.
12197 @item aobmc
12198 Adaptive overlapped block motion compensation. Window weighting coefficients are controlled adaptively according to the reliabilities of the neighboring motion vectors to reduce oversmoothing.
12199 @end table
12200 Default mode is @samp{obmc}.
12201
12202 @item me_mode
12203 Motion estimation mode. Following values are accepted:
12204 @table @samp
12205 @item bidir
12206 Bidirectional motion estimation. Motion vectors are estimated for each source frame in both forward and backward directions.
12207 @item bilat
12208 Bilateral motion estimation. Motion vectors are estimated directly for interpolated frame.
12209 @end table
12210 Default mode is @samp{bilat}.
12211
12212 @item me
12213 The algorithm to be used for motion estimation. Following values are accepted:
12214 @table @samp
12215 @item esa
12216 Exhaustive search algorithm.
12217 @item tss
12218 Three step search algorithm.
12219 @item tdls
12220 Two dimensional logarithmic search algorithm.
12221 @item ntss
12222 New three step search algorithm.
12223 @item fss
12224 Four step search algorithm.
12225 @item ds
12226 Diamond search algorithm.
12227 @item hexbs
12228 Hexagon-based search algorithm.
12229 @item epzs
12230 Enhanced predictive zonal search algorithm.
12231 @item umh
12232 Uneven multi-hexagon search algorithm.
12233 @end table
12234 Default algorithm is @samp{epzs}.
12235
12236 @item mb_size
12237 Macroblock size. Default @code{16}.
12238
12239 @item search_param
12240 Motion estimation search parameter. Default @code{32}.
12241
12242 @item vsbmc
12243 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).
12244 @end table
12245 @end table
12246
12247 @item scd
12248 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:
12249 @table @samp
12250 @item none
12251 Disable scene change detection.
12252 @item fdiff
12253 Frame difference. Corresponding pixel values are compared and if it satisfies @var{scd_threshold} scene change is detected.
12254 @end table
12255 Default method is @samp{fdiff}.
12256
12257 @item scd_threshold
12258 Scene change detection threshold. Default is @code{5.0}.
12259 @end table
12260
12261 @section mix
12262
12263 Mix several video input streams into one video stream.
12264
12265 A description of the accepted options follows.
12266
12267 @table @option
12268 @item nb_inputs
12269 The number of inputs. If unspecified, it defaults to 2.
12270
12271 @item weights
12272 Specify weight of each input video stream as sequence.
12273 Each weight is separated by space. If number of weights
12274 is smaller than number of @var{frames} last specified
12275 weight will be used for all remaining unset weights.
12276
12277 @item scale
12278 Specify scale, if it is set it will be multiplied with sum
12279 of each weight multiplied with pixel values to give final destination
12280 pixel value. By default @var{scale} is auto scaled to sum of weights.
12281
12282 @item duration
12283 Specify how end of stream is determined.
12284 @table @samp
12285 @item longest
12286 The duration of the longest input. (default)
12287
12288 @item shortest
12289 The duration of the shortest input.
12290
12291 @item first
12292 The duration of the first input.
12293 @end table
12294 @end table
12295
12296 @section mpdecimate
12297
12298 Drop frames that do not differ greatly from the previous frame in
12299 order to reduce frame rate.
12300
12301 The main use of this filter is for very-low-bitrate encoding
12302 (e.g. streaming over dialup modem), but it could in theory be used for
12303 fixing movies that were inverse-telecined incorrectly.
12304
12305 A description of the accepted options follows.
12306
12307 @table @option
12308 @item max
12309 Set the maximum number of consecutive frames which can be dropped (if
12310 positive), or the minimum interval between dropped frames (if
12311 negative). If the value is 0, the frame is dropped disregarding the
12312 number of previous sequentially dropped frames.
12313
12314 Default value is 0.
12315
12316 @item hi
12317 @item lo
12318 @item frac
12319 Set the dropping threshold values.
12320
12321 Values for @option{hi} and @option{lo} are for 8x8 pixel blocks and
12322 represent actual pixel value differences, so a threshold of 64
12323 corresponds to 1 unit of difference for each pixel, or the same spread
12324 out differently over the block.
12325
12326 A frame is a candidate for dropping if no 8x8 blocks differ by more
12327 than a threshold of @option{hi}, and if no more than @option{frac} blocks (1
12328 meaning the whole image) differ by more than a threshold of @option{lo}.
12329
12330 Default value for @option{hi} is 64*12, default value for @option{lo} is
12331 64*5, and default value for @option{frac} is 0.33.
12332 @end table
12333
12334
12335 @section negate
12336
12337 Negate (invert) the input video.
12338
12339 It accepts the following option:
12340
12341 @table @option
12342
12343 @item negate_alpha
12344 With value 1, it negates the alpha component, if present. Default value is 0.
12345 @end table
12346
12347 @anchor{nlmeans}
12348 @section nlmeans
12349
12350 Denoise frames using Non-Local Means algorithm.
12351
12352 Each pixel is adjusted by looking for other pixels with similar contexts. This
12353 context similarity is defined by comparing their surrounding patches of size
12354 @option{p}x@option{p}. Patches are searched in an area of @option{r}x@option{r}
12355 around the pixel.
12356
12357 Note that the research area defines centers for patches, which means some
12358 patches will be made of pixels outside that research area.
12359
12360 The filter accepts the following options.
12361
12362 @table @option
12363 @item s
12364 Set denoising strength. Default is 1.0. Must be in range [1.0, 30.0].
12365
12366 @item p
12367 Set patch size. Default is 7. Must be odd number in range [0, 99].
12368
12369 @item pc
12370 Same as @option{p} but for chroma planes.
12371
12372 The default value is @var{0} and means automatic.
12373
12374 @item r
12375 Set research size. Default is 15. Must be odd number in range [0, 99].
12376
12377 @item rc
12378 Same as @option{r} but for chroma planes.
12379
12380 The default value is @var{0} and means automatic.
12381 @end table
12382
12383 @section nnedi
12384
12385 Deinterlace video using neural network edge directed interpolation.
12386
12387 This filter accepts the following options:
12388
12389 @table @option
12390 @item weights
12391 Mandatory option, without binary file filter can not work.
12392 Currently file can be found here:
12393 https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin
12394
12395 @item deint
12396 Set which frames to deinterlace, by default it is @code{all}.
12397 Can be @code{all} or @code{interlaced}.
12398
12399 @item field
12400 Set mode of operation.
12401
12402 Can be one of the following:
12403
12404 @table @samp
12405 @item af
12406 Use frame flags, both fields.
12407 @item a
12408 Use frame flags, single field.
12409 @item t
12410 Use top field only.
12411 @item b
12412 Use bottom field only.
12413 @item tf
12414 Use both fields, top first.
12415 @item bf
12416 Use both fields, bottom first.
12417 @end table
12418
12419 @item planes
12420 Set which planes to process, by default filter process all frames.
12421
12422 @item nsize
12423 Set size of local neighborhood around each pixel, used by the predictor neural
12424 network.
12425
12426 Can be one of the following:
12427
12428 @table @samp
12429 @item s8x6
12430 @item s16x6
12431 @item s32x6
12432 @item s48x6
12433 @item s8x4
12434 @item s16x4
12435 @item s32x4
12436 @end table
12437
12438 @item nns
12439 Set the number of neurons in predictor neural network.
12440 Can be one of the following:
12441
12442 @table @samp
12443 @item n16
12444 @item n32
12445 @item n64
12446 @item n128
12447 @item n256
12448 @end table
12449
12450 @item qual
12451 Controls the number of different neural network predictions that are blended
12452 together to compute the final output value. Can be @code{fast}, default or
12453 @code{slow}.
12454
12455 @item etype
12456 Set which set of weights to use in the predictor.
12457 Can be one of the following:
12458
12459 @table @samp
12460 @item a
12461 weights trained to minimize absolute error
12462 @item s
12463 weights trained to minimize squared error
12464 @end table
12465
12466 @item pscrn
12467 Controls whether or not the prescreener neural network is used to decide
12468 which pixels should be processed by the predictor neural network and which
12469 can be handled by simple cubic interpolation.
12470 The prescreener is trained to know whether cubic interpolation will be
12471 sufficient for a pixel or whether it should be predicted by the predictor nn.
12472 The computational complexity of the prescreener nn is much less than that of
12473 the predictor nn. Since most pixels can be handled by cubic interpolation,
12474 using the prescreener generally results in much faster processing.
12475 The prescreener is pretty accurate, so the difference between using it and not
12476 using it is almost always unnoticeable.
12477
12478 Can be one of the following:
12479
12480 @table @samp
12481 @item none
12482 @item original
12483 @item new
12484 @end table
12485
12486 Default is @code{new}.
12487
12488 @item fapprox
12489 Set various debugging flags.
12490 @end table
12491
12492 @section noformat
12493
12494 Force libavfilter not to use any of the specified pixel formats for the
12495 input to the next filter.
12496
12497 It accepts the following parameters:
12498 @table @option
12499
12500 @item pix_fmts
12501 A '|'-separated list of pixel format names, such as
12502 pix_fmts=yuv420p|monow|rgb24".
12503
12504 @end table
12505
12506 @subsection Examples
12507
12508 @itemize
12509 @item
12510 Force libavfilter to use a format different from @var{yuv420p} for the
12511 input to the vflip filter:
12512 @example
12513 noformat=pix_fmts=yuv420p,vflip
12514 @end example
12515
12516 @item
12517 Convert the input video to any of the formats not contained in the list:
12518 @example
12519 noformat=yuv420p|yuv444p|yuv410p
12520 @end example
12521 @end itemize
12522
12523 @section noise
12524
12525 Add noise on video input frame.
12526
12527 The filter accepts the following options:
12528
12529 @table @option
12530 @item all_seed
12531 @item c0_seed
12532 @item c1_seed
12533 @item c2_seed
12534 @item c3_seed
12535 Set noise seed for specific pixel component or all pixel components in case
12536 of @var{all_seed}. Default value is @code{123457}.
12537
12538 @item all_strength, alls
12539 @item c0_strength, c0s
12540 @item c1_strength, c1s
12541 @item c2_strength, c2s
12542 @item c3_strength, c3s
12543 Set noise strength for specific pixel component or all pixel components in case
12544 @var{all_strength}. Default value is @code{0}. Allowed range is [0, 100].
12545
12546 @item all_flags, allf
12547 @item c0_flags, c0f
12548 @item c1_flags, c1f
12549 @item c2_flags, c2f
12550 @item c3_flags, c3f
12551 Set pixel component flags or set flags for all components if @var{all_flags}.
12552 Available values for component flags are:
12553 @table @samp
12554 @item a
12555 averaged temporal noise (smoother)
12556 @item p
12557 mix random noise with a (semi)regular pattern
12558 @item t
12559 temporal noise (noise pattern changes between frames)
12560 @item u
12561 uniform noise (gaussian otherwise)
12562 @end table
12563 @end table
12564
12565 @subsection Examples
12566
12567 Add temporal and uniform noise to input video:
12568 @example
12569 noise=alls=20:allf=t+u
12570 @end example
12571
12572 @section normalize
12573
12574 Normalize RGB video (aka histogram stretching, contrast stretching).
12575 See: https://en.wikipedia.org/wiki/Normalization_(image_processing)
12576
12577 For each channel of each frame, the filter computes the input range and maps
12578 it linearly to the user-specified output range. The output range defaults
12579 to the full dynamic range from pure black to pure white.
12580
12581 Temporal smoothing can be used on the input range to reduce flickering (rapid
12582 changes in brightness) caused when small dark or bright objects enter or leave
12583 the scene. This is similar to the auto-exposure (automatic gain control) on a
12584 video camera, and, like a video camera, it may cause a period of over- or
12585 under-exposure of the video.
12586
12587 The R,G,B channels can be normalized independently, which may cause some
12588 color shifting, or linked together as a single channel, which prevents
12589 color shifting. Linked normalization preserves hue. Independent normalization
12590 does not, so it can be used to remove some color casts. Independent and linked
12591 normalization can be combined in any ratio.
12592
12593 The normalize filter accepts the following options:
12594
12595 @table @option
12596 @item blackpt
12597 @item whitept
12598 Colors which define the output range. The minimum input value is mapped to
12599 the @var{blackpt}. The maximum input value is mapped to the @var{whitept}.
12600 The defaults are black and white respectively. Specifying white for
12601 @var{blackpt} and black for @var{whitept} will give color-inverted,
12602 normalized video. Shades of grey can be used to reduce the dynamic range
12603 (contrast). Specifying saturated colors here can create some interesting
12604 effects.
12605
12606 @item smoothing
12607 The number of previous frames to use for temporal smoothing. The input range
12608 of each channel is smoothed using a rolling average over the current frame
12609 and the @var{smoothing} previous frames. The default is 0 (no temporal
12610 smoothing).
12611
12612 @item independence
12613 Controls the ratio of independent (color shifting) channel normalization to
12614 linked (color preserving) normalization. 0.0 is fully linked, 1.0 is fully
12615 independent. Defaults to 1.0 (fully independent).
12616
12617 @item strength
12618 Overall strength of the filter. 1.0 is full strength. 0.0 is a rather
12619 expensive no-op. Defaults to 1.0 (full strength).
12620
12621 @end table
12622
12623 @subsection Examples
12624
12625 Stretch video contrast to use the full dynamic range, with no temporal
12626 smoothing; may flicker depending on the source content:
12627 @example
12628 normalize=blackpt=black:whitept=white:smoothing=0
12629 @end example
12630
12631 As above, but with 50 frames of temporal smoothing; flicker should be
12632 reduced, depending on the source content:
12633 @example
12634 normalize=blackpt=black:whitept=white:smoothing=50
12635 @end example
12636
12637 As above, but with hue-preserving linked channel normalization:
12638 @example
12639 normalize=blackpt=black:whitept=white:smoothing=50:independence=0
12640 @end example
12641
12642 As above, but with half strength:
12643 @example
12644 normalize=blackpt=black:whitept=white:smoothing=50:independence=0:strength=0.5
12645 @end example
12646
12647 Map the darkest input color to red, the brightest input color to cyan:
12648 @example
12649 normalize=blackpt=red:whitept=cyan
12650 @end example
12651
12652 @section null
12653
12654 Pass the video source unchanged to the output.
12655
12656 @section ocr
12657 Optical Character Recognition
12658
12659 This filter uses Tesseract for optical character recognition. To enable
12660 compilation of this filter, you need to configure FFmpeg with
12661 @code{--enable-libtesseract}.
12662
12663 It accepts the following options:
12664
12665 @table @option
12666 @item datapath
12667 Set datapath to tesseract data. Default is to use whatever was
12668 set at installation.
12669
12670 @item language
12671 Set language, default is "eng".
12672
12673 @item whitelist
12674 Set character whitelist.
12675
12676 @item blacklist
12677 Set character blacklist.
12678 @end table
12679
12680 The filter exports recognized text as the frame metadata @code{lavfi.ocr.text}.
12681
12682 @section ocv
12683
12684 Apply a video transform using libopencv.
12685
12686 To enable this filter, install the libopencv library and headers and
12687 configure FFmpeg with @code{--enable-libopencv}.
12688
12689 It accepts the following parameters:
12690
12691 @table @option
12692
12693 @item filter_name
12694 The name of the libopencv filter to apply.
12695
12696 @item filter_params
12697 The parameters to pass to the libopencv filter. If not specified, the default
12698 values are assumed.
12699
12700 @end table
12701
12702 Refer to the official libopencv documentation for more precise
12703 information:
12704 @url{http://docs.opencv.org/master/modules/imgproc/doc/filtering.html}
12705
12706 Several libopencv filters are supported; see the following subsections.
12707
12708 @anchor{dilate}
12709 @subsection dilate
12710
12711 Dilate an image by using a specific structuring element.
12712 It corresponds to the libopencv function @code{cvDilate}.
12713
12714 It accepts the parameters: @var{struct_el}|@var{nb_iterations}.
12715
12716 @var{struct_el} represents a structuring element, and has the syntax:
12717 @var{cols}x@var{rows}+@var{anchor_x}x@var{anchor_y}/@var{shape}
12718
12719 @var{cols} and @var{rows} represent the number of columns and rows of
12720 the structuring element, @var{anchor_x} and @var{anchor_y} the anchor
12721 point, and @var{shape} the shape for the structuring element. @var{shape}
12722 must be "rect", "cross", "ellipse", or "custom".
12723
12724 If the value for @var{shape} is "custom", it must be followed by a
12725 string of the form "=@var{filename}". The file with name
12726 @var{filename} is assumed to represent a binary image, with each
12727 printable character corresponding to a bright pixel. When a custom
12728 @var{shape} is used, @var{cols} and @var{rows} are ignored, the number
12729 or columns and rows of the read file are assumed instead.
12730
12731 The default value for @var{struct_el} is "3x3+0x0/rect".
12732
12733 @var{nb_iterations} specifies the number of times the transform is
12734 applied to the image, and defaults to 1.
12735
12736 Some examples:
12737 @example
12738 # Use the default values
12739 ocv=dilate
12740
12741 # Dilate using a structuring element with a 5x5 cross, iterating two times
12742 ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
12743
12744 # Read the shape from the file diamond.shape, iterating two times.
12745 # The file diamond.shape may contain a pattern of characters like this
12746 #   *
12747 #  ***
12748 # *****
12749 #  ***
12750 #   *
12751 # The specified columns and rows are ignored
12752 # but the anchor point coordinates are not
12753 ocv=dilate:0x0+2x2/custom=diamond.shape|2
12754 @end example
12755
12756 @subsection erode
12757
12758 Erode an image by using a specific structuring element.
12759 It corresponds to the libopencv function @code{cvErode}.
12760
12761 It accepts the parameters: @var{struct_el}:@var{nb_iterations},
12762 with the same syntax and semantics as the @ref{dilate} filter.
12763
12764 @subsection smooth
12765
12766 Smooth the input video.
12767
12768 The filter takes the following parameters:
12769 @var{type}|@var{param1}|@var{param2}|@var{param3}|@var{param4}.
12770
12771 @var{type} is the type of smooth filter to apply, and must be one of
12772 the following values: "blur", "blur_no_scale", "median", "gaussian",
12773 or "bilateral". The default value is "gaussian".
12774
12775 The meaning of @var{param1}, @var{param2}, @var{param3}, and @var{param4}
12776 depend on the smooth type. @var{param1} and
12777 @var{param2} accept integer positive values or 0. @var{param3} and
12778 @var{param4} accept floating point values.
12779
12780 The default value for @var{param1} is 3. The default value for the
12781 other parameters is 0.
12782
12783 These parameters correspond to the parameters assigned to the
12784 libopencv function @code{cvSmooth}.
12785
12786 @section oscilloscope
12787
12788 2D Video Oscilloscope.
12789
12790 Useful to measure spatial impulse, step responses, chroma delays, etc.
12791
12792 It accepts the following parameters:
12793
12794 @table @option
12795 @item x
12796 Set scope center x position.
12797
12798 @item y
12799 Set scope center y position.
12800
12801 @item s
12802 Set scope size, relative to frame diagonal.
12803
12804 @item t
12805 Set scope tilt/rotation.
12806
12807 @item o
12808 Set trace opacity.
12809
12810 @item tx
12811 Set trace center x position.
12812
12813 @item ty
12814 Set trace center y position.
12815
12816 @item tw
12817 Set trace width, relative to width of frame.
12818
12819 @item th
12820 Set trace height, relative to height of frame.
12821
12822 @item c
12823 Set which components to trace. By default it traces first three components.
12824
12825 @item g
12826 Draw trace grid. By default is enabled.
12827
12828 @item st
12829 Draw some statistics. By default is enabled.
12830
12831 @item sc
12832 Draw scope. By default is enabled.
12833 @end table
12834
12835 @subsection Examples
12836
12837 @itemize
12838 @item
12839 Inspect full first row of video frame.
12840 @example
12841 oscilloscope=x=0.5:y=0:s=1
12842 @end example
12843
12844 @item
12845 Inspect full last row of video frame.
12846 @example
12847 oscilloscope=x=0.5:y=1:s=1
12848 @end example
12849
12850 @item
12851 Inspect full 5th line of video frame of height 1080.
12852 @example
12853 oscilloscope=x=0.5:y=5/1080:s=1
12854 @end example
12855
12856 @item
12857 Inspect full last column of video frame.
12858 @example
12859 oscilloscope=x=1:y=0.5:s=1:t=1
12860 @end example
12861
12862 @end itemize
12863
12864 @anchor{overlay}
12865 @section overlay
12866
12867 Overlay one video on top of another.
12868
12869 It takes two inputs and has one output. The first input is the "main"
12870 video on which the second input is overlaid.
12871
12872 It accepts the following parameters:
12873
12874 A description of the accepted options follows.
12875
12876 @table @option
12877 @item x
12878 @item y
12879 Set the expression for the x and y coordinates of the overlaid video
12880 on the main video. Default value is "0" for both expressions. In case
12881 the expression is invalid, it is set to a huge value (meaning that the
12882 overlay will not be displayed within the output visible area).
12883
12884 @item eof_action
12885 See @ref{framesync}.
12886
12887 @item eval
12888 Set when the expressions for @option{x}, and @option{y} are evaluated.
12889
12890 It accepts the following values:
12891 @table @samp
12892 @item init
12893 only evaluate expressions once during the filter initialization or
12894 when a command is processed
12895
12896 @item frame
12897 evaluate expressions for each incoming frame
12898 @end table
12899
12900 Default value is @samp{frame}.
12901
12902 @item shortest
12903 See @ref{framesync}.
12904
12905 @item format
12906 Set the format for the output video.
12907
12908 It accepts the following values:
12909 @table @samp
12910 @item yuv420
12911 force YUV420 output
12912
12913 @item yuv422
12914 force YUV422 output
12915
12916 @item yuv444
12917 force YUV444 output
12918
12919 @item rgb
12920 force packed RGB output
12921
12922 @item gbrp
12923 force planar RGB output
12924
12925 @item auto
12926 automatically pick format
12927 @end table
12928
12929 Default value is @samp{yuv420}.
12930
12931 @item repeatlast
12932 See @ref{framesync}.
12933
12934 @item alpha
12935 Set format of alpha of the overlaid video, it can be @var{straight} or
12936 @var{premultiplied}. Default is @var{straight}.
12937 @end table
12938
12939 The @option{x}, and @option{y} expressions can contain the following
12940 parameters.
12941
12942 @table @option
12943 @item main_w, W
12944 @item main_h, H
12945 The main input width and height.
12946
12947 @item overlay_w, w
12948 @item overlay_h, h
12949 The overlay input width and height.
12950
12951 @item x
12952 @item y
12953 The computed values for @var{x} and @var{y}. They are evaluated for
12954 each new frame.
12955
12956 @item hsub
12957 @item vsub
12958 horizontal and vertical chroma subsample values of the output
12959 format. For example for the pixel format "yuv422p" @var{hsub} is 2 and
12960 @var{vsub} is 1.
12961
12962 @item n
12963 the number of input frame, starting from 0
12964
12965 @item pos
12966 the position in the file of the input frame, NAN if unknown
12967
12968 @item t
12969 The timestamp, expressed in seconds. It's NAN if the input timestamp is unknown.
12970
12971 @end table
12972
12973 This filter also supports the @ref{framesync} options.
12974
12975 Note that the @var{n}, @var{pos}, @var{t} variables are available only
12976 when evaluation is done @emph{per frame}, and will evaluate to NAN
12977 when @option{eval} is set to @samp{init}.
12978
12979 Be aware that frames are taken from each input video in timestamp
12980 order, hence, if their initial timestamps differ, it is a good idea
12981 to pass the two inputs through a @var{setpts=PTS-STARTPTS} filter to
12982 have them begin in the same zero timestamp, as the example for
12983 the @var{movie} filter does.
12984
12985 You can chain together more overlays but you should test the
12986 efficiency of such approach.
12987
12988 @subsection Commands
12989
12990 This filter supports the following commands:
12991 @table @option
12992 @item x
12993 @item y
12994 Modify the x and y of the overlay input.
12995 The command accepts the same syntax of the corresponding option.
12996
12997 If the specified expression is not valid, it is kept at its current
12998 value.
12999 @end table
13000
13001 @subsection Examples
13002
13003 @itemize
13004 @item
13005 Draw the overlay at 10 pixels from the bottom right corner of the main
13006 video:
13007 @example
13008 overlay=main_w-overlay_w-10:main_h-overlay_h-10
13009 @end example
13010
13011 Using named options the example above becomes:
13012 @example
13013 overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
13014 @end example
13015
13016 @item
13017 Insert a transparent PNG logo in the bottom left corner of the input,
13018 using the @command{ffmpeg} tool with the @code{-filter_complex} option:
13019 @example
13020 ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
13021 @end example
13022
13023 @item
13024 Insert 2 different transparent PNG logos (second logo on bottom
13025 right corner) using the @command{ffmpeg} tool:
13026 @example
13027 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
13028 @end example
13029
13030 @item
13031 Add a transparent color layer on top of the main video; @code{WxH}
13032 must specify the size of the main input to the overlay filter:
13033 @example
13034 color=color=red@@.3:size=WxH [over]; [in][over] overlay [out]
13035 @end example
13036
13037 @item
13038 Play an original video and a filtered version (here with the deshake
13039 filter) side by side using the @command{ffplay} tool:
13040 @example
13041 ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
13042 @end example
13043
13044 The above command is the same as:
13045 @example
13046 ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
13047 @end example
13048
13049 @item
13050 Make a sliding overlay appearing from the left to the right top part of the
13051 screen starting since time 2:
13052 @example
13053 overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
13054 @end example
13055
13056 @item
13057 Compose output by putting two input videos side to side:
13058 @example
13059 ffmpeg -i left.avi -i right.avi -filter_complex "
13060 nullsrc=size=200x100 [background];
13061 [0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
13062 [1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
13063 [background][left]       overlay=shortest=1       [background+left];
13064 [background+left][right] overlay=shortest=1:x=100 [left+right]
13065 "
13066 @end example
13067
13068 @item
13069 Mask 10-20 seconds of a video by applying the delogo filter to a section
13070 @example
13071 ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
13072 -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]'
13073 masked.avi
13074 @end example
13075
13076 @item
13077 Chain several overlays in cascade:
13078 @example
13079 nullsrc=s=200x200 [bg];
13080 testsrc=s=100x100, split=4 [in0][in1][in2][in3];
13081 [in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
13082 [in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
13083 [in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
13084 [in3] null,       [mid2] overlay=100:100 [out0]
13085 @end example
13086
13087 @end itemize
13088
13089 @section owdenoise
13090
13091 Apply Overcomplete Wavelet denoiser.
13092
13093 The filter accepts the following options:
13094
13095 @table @option
13096 @item depth
13097 Set depth.
13098
13099 Larger depth values will denoise lower frequency components more, but
13100 slow down filtering.
13101
13102 Must be an int in the range 8-16, default is @code{8}.
13103
13104 @item luma_strength, ls
13105 Set luma strength.
13106
13107 Must be a double value in the range 0-1000, default is @code{1.0}.
13108
13109 @item chroma_strength, cs
13110 Set chroma strength.
13111
13112 Must be a double value in the range 0-1000, default is @code{1.0}.
13113 @end table
13114
13115 @anchor{pad}
13116 @section pad
13117
13118 Add paddings to the input image, and place the original input at the
13119 provided @var{x}, @var{y} coordinates.
13120
13121 It accepts the following parameters:
13122
13123 @table @option
13124 @item width, w
13125 @item height, h
13126 Specify an expression for the size of the output image with the
13127 paddings added. If the value for @var{width} or @var{height} is 0, the
13128 corresponding input size is used for the output.
13129
13130 The @var{width} expression can reference the value set by the
13131 @var{height} expression, and vice versa.
13132
13133 The default value of @var{width} and @var{height} is 0.
13134
13135 @item x
13136 @item y
13137 Specify the offsets to place the input image at within the padded area,
13138 with respect to the top/left border of the output image.
13139
13140 The @var{x} expression can reference the value set by the @var{y}
13141 expression, and vice versa.
13142
13143 The default value of @var{x} and @var{y} is 0.
13144
13145 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
13146 so the input image is centered on the padded area.
13147
13148 @item color
13149 Specify the color of the padded area. For the syntax of this option,
13150 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
13151 manual,ffmpeg-utils}.
13152
13153 The default value of @var{color} is "black".
13154
13155 @item eval
13156 Specify when to evaluate  @var{width}, @var{height}, @var{x} and @var{y} expression.
13157
13158 It accepts the following values:
13159
13160 @table @samp
13161 @item init
13162 Only evaluate expressions once during the filter initialization or when
13163 a command is processed.
13164
13165 @item frame
13166 Evaluate expressions for each incoming frame.
13167
13168 @end table
13169
13170 Default value is @samp{init}.
13171
13172 @item aspect
13173 Pad to aspect instead to a resolution.
13174
13175 @end table
13176
13177 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
13178 options are expressions containing the following constants:
13179
13180 @table @option
13181 @item in_w
13182 @item in_h
13183 The input video width and height.
13184
13185 @item iw
13186 @item ih
13187 These are the same as @var{in_w} and @var{in_h}.
13188
13189 @item out_w
13190 @item out_h
13191 The output width and height (the size of the padded area), as
13192 specified by the @var{width} and @var{height} expressions.
13193
13194 @item ow
13195 @item oh
13196 These are the same as @var{out_w} and @var{out_h}.
13197
13198 @item x
13199 @item y
13200 The x and y offsets as specified by the @var{x} and @var{y}
13201 expressions, or NAN if not yet specified.
13202
13203 @item a
13204 same as @var{iw} / @var{ih}
13205
13206 @item sar
13207 input sample aspect ratio
13208
13209 @item dar
13210 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
13211
13212 @item hsub
13213 @item vsub
13214 The horizontal and vertical chroma subsample values. For example for the
13215 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
13216 @end table
13217
13218 @subsection Examples
13219
13220 @itemize
13221 @item
13222 Add paddings with the color "violet" to the input video. The output video
13223 size is 640x480, and the top-left corner of the input video is placed at
13224 column 0, row 40
13225 @example
13226 pad=640:480:0:40:violet
13227 @end example
13228
13229 The example above is equivalent to the following command:
13230 @example
13231 pad=width=640:height=480:x=0:y=40:color=violet
13232 @end example
13233
13234 @item
13235 Pad the input to get an output with dimensions increased by 3/2,
13236 and put the input video at the center of the padded area:
13237 @example
13238 pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
13239 @end example
13240
13241 @item
13242 Pad the input to get a squared output with size equal to the maximum
13243 value between the input width and height, and put the input video at
13244 the center of the padded area:
13245 @example
13246 pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
13247 @end example
13248
13249 @item
13250 Pad the input to get a final w/h ratio of 16:9:
13251 @example
13252 pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
13253 @end example
13254
13255 @item
13256 In case of anamorphic video, in order to set the output display aspect
13257 correctly, it is necessary to use @var{sar} in the expression,
13258 according to the relation:
13259 @example
13260 (ih * X / ih) * sar = output_dar
13261 X = output_dar / sar
13262 @end example
13263
13264 Thus the previous example needs to be modified to:
13265 @example
13266 pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
13267 @end example
13268
13269 @item
13270 Double the output size and put the input video in the bottom-right
13271 corner of the output padded area:
13272 @example
13273 pad="2*iw:2*ih:ow-iw:oh-ih"
13274 @end example
13275 @end itemize
13276
13277 @anchor{palettegen}
13278 @section palettegen
13279
13280 Generate one palette for a whole video stream.
13281
13282 It accepts the following options:
13283
13284 @table @option
13285 @item max_colors
13286 Set the maximum number of colors to quantize in the palette.
13287 Note: the palette will still contain 256 colors; the unused palette entries
13288 will be black.
13289
13290 @item reserve_transparent
13291 Create a palette of 255 colors maximum and reserve the last one for
13292 transparency. Reserving the transparency color is useful for GIF optimization.
13293 If not set, the maximum of colors in the palette will be 256. You probably want
13294 to disable this option for a standalone image.
13295 Set by default.
13296
13297 @item transparency_color
13298 Set the color that will be used as background for transparency.
13299
13300 @item stats_mode
13301 Set statistics mode.
13302
13303 It accepts the following values:
13304 @table @samp
13305 @item full
13306 Compute full frame histograms.
13307 @item diff
13308 Compute histograms only for the part that differs from previous frame. This
13309 might be relevant to give more importance to the moving part of your input if
13310 the background is static.
13311 @item single
13312 Compute new histogram for each frame.
13313 @end table
13314
13315 Default value is @var{full}.
13316 @end table
13317
13318 The filter also exports the frame metadata @code{lavfi.color_quant_ratio}
13319 (@code{nb_color_in / nb_color_out}) which you can use to evaluate the degree of
13320 color quantization of the palette. This information is also visible at
13321 @var{info} logging level.
13322
13323 @subsection Examples
13324
13325 @itemize
13326 @item
13327 Generate a representative palette of a given video using @command{ffmpeg}:
13328 @example
13329 ffmpeg -i input.mkv -vf palettegen palette.png
13330 @end example
13331 @end itemize
13332
13333 @section paletteuse
13334
13335 Use a palette to downsample an input video stream.
13336
13337 The filter takes two inputs: one video stream and a palette. The palette must
13338 be a 256 pixels image.
13339
13340 It accepts the following options:
13341
13342 @table @option
13343 @item dither
13344 Select dithering mode. Available algorithms are:
13345 @table @samp
13346 @item bayer
13347 Ordered 8x8 bayer dithering (deterministic)
13348 @item heckbert
13349 Dithering as defined by Paul Heckbert in 1982 (simple error diffusion).
13350 Note: this dithering is sometimes considered "wrong" and is included as a
13351 reference.
13352 @item floyd_steinberg
13353 Floyd and Steingberg dithering (error diffusion)
13354 @item sierra2
13355 Frankie Sierra dithering v2 (error diffusion)
13356 @item sierra2_4a
13357 Frankie Sierra dithering v2 "Lite" (error diffusion)
13358 @end table
13359
13360 Default is @var{sierra2_4a}.
13361
13362 @item bayer_scale
13363 When @var{bayer} dithering is selected, this option defines the scale of the
13364 pattern (how much the crosshatch pattern is visible). A low value means more
13365 visible pattern for less banding, and higher value means less visible pattern
13366 at the cost of more banding.
13367
13368 The option must be an integer value in the range [0,5]. Default is @var{2}.
13369
13370 @item diff_mode
13371 If set, define the zone to process
13372
13373 @table @samp
13374 @item rectangle
13375 Only the changing rectangle will be reprocessed. This is similar to GIF
13376 cropping/offsetting compression mechanism. This option can be useful for speed
13377 if only a part of the image is changing, and has use cases such as limiting the
13378 scope of the error diffusal @option{dither} to the rectangle that bounds the
13379 moving scene (it leads to more deterministic output if the scene doesn't change
13380 much, and as a result less moving noise and better GIF compression).
13381 @end table
13382
13383 Default is @var{none}.
13384
13385 @item new
13386 Take new palette for each output frame.
13387
13388 @item alpha_threshold
13389 Sets the alpha threshold for transparency. Alpha values above this threshold
13390 will be treated as completely opaque, and values below this threshold will be
13391 treated as completely transparent.
13392
13393 The option must be an integer value in the range [0,255]. Default is @var{128}.
13394 @end table
13395
13396 @subsection Examples
13397
13398 @itemize
13399 @item
13400 Use a palette (generated for example with @ref{palettegen}) to encode a GIF
13401 using @command{ffmpeg}:
13402 @example
13403 ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
13404 @end example
13405 @end itemize
13406
13407 @section perspective
13408
13409 Correct perspective of video not recorded perpendicular to the screen.
13410
13411 A description of the accepted parameters follows.
13412
13413 @table @option
13414 @item x0
13415 @item y0
13416 @item x1
13417 @item y1
13418 @item x2
13419 @item y2
13420 @item x3
13421 @item y3
13422 Set coordinates expression for top left, top right, bottom left and bottom right corners.
13423 Default values are @code{0:0:W:0:0:H:W:H} with which perspective will remain unchanged.
13424 If the @code{sense} option is set to @code{source}, then the specified points will be sent
13425 to the corners of the destination. If the @code{sense} option is set to @code{destination},
13426 then the corners of the source will be sent to the specified coordinates.
13427
13428 The expressions can use the following variables:
13429
13430 @table @option
13431 @item W
13432 @item H
13433 the width and height of video frame.
13434 @item in
13435 Input frame count.
13436 @item on
13437 Output frame count.
13438 @end table
13439
13440 @item interpolation
13441 Set interpolation for perspective correction.
13442
13443 It accepts the following values:
13444 @table @samp
13445 @item linear
13446 @item cubic
13447 @end table
13448
13449 Default value is @samp{linear}.
13450
13451 @item sense
13452 Set interpretation of coordinate options.
13453
13454 It accepts the following values:
13455 @table @samp
13456 @item 0, source
13457
13458 Send point in the source specified by the given coordinates to
13459 the corners of the destination.
13460
13461 @item 1, destination
13462
13463 Send the corners of the source to the point in the destination specified
13464 by the given coordinates.
13465
13466 Default value is @samp{source}.
13467 @end table
13468
13469 @item eval
13470 Set when the expressions for coordinates @option{x0,y0,...x3,y3} are evaluated.
13471
13472 It accepts the following values:
13473 @table @samp
13474 @item init
13475 only evaluate expressions once during the filter initialization or
13476 when a command is processed
13477
13478 @item frame
13479 evaluate expressions for each incoming frame
13480 @end table
13481
13482 Default value is @samp{init}.
13483 @end table
13484
13485 @section phase
13486
13487 Delay interlaced video by one field time so that the field order changes.
13488
13489 The intended use is to fix PAL movies that have been captured with the
13490 opposite field order to the film-to-video transfer.
13491
13492 A description of the accepted parameters follows.
13493
13494 @table @option
13495 @item mode
13496 Set phase mode.
13497
13498 It accepts the following values:
13499 @table @samp
13500 @item t
13501 Capture field order top-first, transfer bottom-first.
13502 Filter will delay the bottom field.
13503
13504 @item b
13505 Capture field order bottom-first, transfer top-first.
13506 Filter will delay the top field.
13507
13508 @item p
13509 Capture and transfer with the same field order. This mode only exists
13510 for the documentation of the other options to refer to, but if you
13511 actually select it, the filter will faithfully do nothing.
13512
13513 @item a
13514 Capture field order determined automatically by field flags, transfer
13515 opposite.
13516 Filter selects among @samp{t} and @samp{b} modes on a frame by frame
13517 basis using field flags. If no field information is available,
13518 then this works just like @samp{u}.
13519
13520 @item u
13521 Capture unknown or varying, transfer opposite.
13522 Filter selects among @samp{t} and @samp{b} on a frame by frame basis by
13523 analyzing the images and selecting the alternative that produces best
13524 match between the fields.
13525
13526 @item T
13527 Capture top-first, transfer unknown or varying.
13528 Filter selects among @samp{t} and @samp{p} using image analysis.
13529
13530 @item B
13531 Capture bottom-first, transfer unknown or varying.
13532 Filter selects among @samp{b} and @samp{p} using image analysis.
13533
13534 @item A
13535 Capture determined by field flags, transfer unknown or varying.
13536 Filter selects among @samp{t}, @samp{b} and @samp{p} using field flags and
13537 image analysis. If no field information is available, then this works just
13538 like @samp{U}. This is the default mode.
13539
13540 @item U
13541 Both capture and transfer unknown or varying.
13542 Filter selects among @samp{t}, @samp{b} and @samp{p} using image analysis only.
13543 @end table
13544 @end table
13545
13546 @section pixdesctest
13547
13548 Pixel format descriptor test filter, mainly useful for internal
13549 testing. The output video should be equal to the input video.
13550
13551 For example:
13552 @example
13553 format=monow, pixdesctest
13554 @end example
13555
13556 can be used to test the monowhite pixel format descriptor definition.
13557
13558 @section pixscope
13559
13560 Display sample values of color channels. Mainly useful for checking color
13561 and levels. Minimum supported resolution is 640x480.
13562
13563 The filters accept the following options:
13564
13565 @table @option
13566 @item x
13567 Set scope X position, relative offset on X axis.
13568
13569 @item y
13570 Set scope Y position, relative offset on Y axis.
13571
13572 @item w
13573 Set scope width.
13574
13575 @item h
13576 Set scope height.
13577
13578 @item o
13579 Set window opacity. This window also holds statistics about pixel area.
13580
13581 @item wx
13582 Set window X position, relative offset on X axis.
13583
13584 @item wy
13585 Set window Y position, relative offset on Y axis.
13586 @end table
13587
13588 @section pp
13589
13590 Enable the specified chain of postprocessing subfilters using libpostproc. This
13591 library should be automatically selected with a GPL build (@code{--enable-gpl}).
13592 Subfilters must be separated by '/' and can be disabled by prepending a '-'.
13593 Each subfilter and some options have a short and a long name that can be used
13594 interchangeably, i.e. dr/dering are the same.
13595
13596 The filters accept the following options:
13597
13598 @table @option
13599 @item subfilters
13600 Set postprocessing subfilters string.
13601 @end table
13602
13603 All subfilters share common options to determine their scope:
13604
13605 @table @option
13606 @item a/autoq
13607 Honor the quality commands for this subfilter.
13608
13609 @item c/chrom
13610 Do chrominance filtering, too (default).
13611
13612 @item y/nochrom
13613 Do luminance filtering only (no chrominance).
13614
13615 @item n/noluma
13616 Do chrominance filtering only (no luminance).
13617 @end table
13618
13619 These options can be appended after the subfilter name, separated by a '|'.
13620
13621 Available subfilters are:
13622
13623 @table @option
13624 @item hb/hdeblock[|difference[|flatness]]
13625 Horizontal deblocking filter
13626 @table @option
13627 @item difference
13628 Difference factor where higher values mean more deblocking (default: @code{32}).
13629 @item flatness
13630 Flatness threshold where lower values mean more deblocking (default: @code{39}).
13631 @end table
13632
13633 @item vb/vdeblock[|difference[|flatness]]
13634 Vertical deblocking filter
13635 @table @option
13636 @item difference
13637 Difference factor where higher values mean more deblocking (default: @code{32}).
13638 @item flatness
13639 Flatness threshold where lower values mean more deblocking (default: @code{39}).
13640 @end table
13641
13642 @item ha/hadeblock[|difference[|flatness]]
13643 Accurate horizontal deblocking filter
13644 @table @option
13645 @item difference
13646 Difference factor where higher values mean more deblocking (default: @code{32}).
13647 @item flatness
13648 Flatness threshold where lower values mean more deblocking (default: @code{39}).
13649 @end table
13650
13651 @item va/vadeblock[|difference[|flatness]]
13652 Accurate vertical deblocking filter
13653 @table @option
13654 @item difference
13655 Difference factor where higher values mean more deblocking (default: @code{32}).
13656 @item flatness
13657 Flatness threshold where lower values mean more deblocking (default: @code{39}).
13658 @end table
13659 @end table
13660
13661 The horizontal and vertical deblocking filters share the difference and
13662 flatness values so you cannot set different horizontal and vertical
13663 thresholds.
13664
13665 @table @option
13666 @item h1/x1hdeblock
13667 Experimental horizontal deblocking filter
13668
13669 @item v1/x1vdeblock
13670 Experimental vertical deblocking filter
13671
13672 @item dr/dering
13673 Deringing filter
13674
13675 @item tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer
13676 @table @option
13677 @item threshold1
13678 larger -> stronger filtering
13679 @item threshold2
13680 larger -> stronger filtering
13681 @item threshold3
13682 larger -> stronger filtering
13683 @end table
13684
13685 @item al/autolevels[:f/fullyrange], automatic brightness / contrast correction
13686 @table @option
13687 @item f/fullyrange
13688 Stretch luminance to @code{0-255}.
13689 @end table
13690
13691 @item lb/linblenddeint
13692 Linear blend deinterlacing filter that deinterlaces the given block by
13693 filtering all lines with a @code{(1 2 1)} filter.
13694
13695 @item li/linipoldeint
13696 Linear interpolating deinterlacing filter that deinterlaces the given block by
13697 linearly interpolating every second line.
13698
13699 @item ci/cubicipoldeint
13700 Cubic interpolating deinterlacing filter deinterlaces the given block by
13701 cubically interpolating every second line.
13702
13703 @item md/mediandeint
13704 Median deinterlacing filter that deinterlaces the given block by applying a
13705 median filter to every second line.
13706
13707 @item fd/ffmpegdeint
13708 FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
13709 second line with a @code{(-1 4 2 4 -1)} filter.
13710
13711 @item l5/lowpass5
13712 Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
13713 block by filtering all lines with a @code{(-1 2 6 2 -1)} filter.
13714
13715 @item fq/forceQuant[|quantizer]
13716 Overrides the quantizer table from the input with the constant quantizer you
13717 specify.
13718 @table @option
13719 @item quantizer
13720 Quantizer to use
13721 @end table
13722
13723 @item de/default
13724 Default pp filter combination (@code{hb|a,vb|a,dr|a})
13725
13726 @item fa/fast
13727 Fast pp filter combination (@code{h1|a,v1|a,dr|a})
13728
13729 @item ac
13730 High quality pp filter combination (@code{ha|a|128|7,va|a,dr|a})
13731 @end table
13732
13733 @subsection Examples
13734
13735 @itemize
13736 @item
13737 Apply horizontal and vertical deblocking, deringing and automatic
13738 brightness/contrast:
13739 @example
13740 pp=hb/vb/dr/al
13741 @end example
13742
13743 @item
13744 Apply default filters without brightness/contrast correction:
13745 @example
13746 pp=de/-al
13747 @end example
13748
13749 @item
13750 Apply default filters and temporal denoiser:
13751 @example
13752 pp=default/tmpnoise|1|2|3
13753 @end example
13754
13755 @item
13756 Apply deblocking on luminance only, and switch vertical deblocking on or off
13757 automatically depending on available CPU time:
13758 @example
13759 pp=hb|y/vb|a
13760 @end example
13761 @end itemize
13762
13763 @section pp7
13764 Apply Postprocessing filter 7. It is variant of the @ref{spp} filter,
13765 similar to spp = 6 with 7 point DCT, where only the center sample is
13766 used after IDCT.
13767
13768 The filter accepts the following options:
13769
13770 @table @option
13771 @item qp
13772 Force a constant quantization parameter. It accepts an integer in range
13773 0 to 63. If not set, the filter will use the QP from the video stream
13774 (if available).
13775
13776 @item mode
13777 Set thresholding mode. Available modes are:
13778
13779 @table @samp
13780 @item hard
13781 Set hard thresholding.
13782 @item soft
13783 Set soft thresholding (better de-ringing effect, but likely blurrier).
13784 @item medium
13785 Set medium thresholding (good results, default).
13786 @end table
13787 @end table
13788
13789 @section premultiply
13790 Apply alpha premultiply effect to input video stream using first plane
13791 of second stream as alpha.
13792
13793 Both streams must have same dimensions and same pixel format.
13794
13795 The filter accepts the following option:
13796
13797 @table @option
13798 @item planes
13799 Set which planes will be processed, unprocessed planes will be copied.
13800 By default value 0xf, all planes will be processed.
13801
13802 @item inplace
13803 Do not require 2nd input for processing, instead use alpha plane from input stream.
13804 @end table
13805
13806 @section prewitt
13807 Apply prewitt operator to input video stream.
13808
13809 The filter accepts the following option:
13810
13811 @table @option
13812 @item planes
13813 Set which planes will be processed, unprocessed planes will be copied.
13814 By default value 0xf, all planes will be processed.
13815
13816 @item scale
13817 Set value which will be multiplied with filtered result.
13818
13819 @item delta
13820 Set value which will be added to filtered result.
13821 @end table
13822
13823 @anchor{program_opencl}
13824 @section program_opencl
13825
13826 Filter video using an OpenCL program.
13827
13828 @table @option
13829
13830 @item source
13831 OpenCL program source file.
13832
13833 @item kernel
13834 Kernel name in program.
13835
13836 @item inputs
13837 Number of inputs to the filter.  Defaults to 1.
13838
13839 @item size, s
13840 Size of output frames.  Defaults to the same as the first input.
13841
13842 @end table
13843
13844 The program source file must contain a kernel function with the given name,
13845 which will be run once for each plane of the output.  Each run on a plane
13846 gets enqueued as a separate 2D global NDRange with one work-item for each
13847 pixel to be generated.  The global ID offset for each work-item is therefore
13848 the coordinates of a pixel in the destination image.
13849
13850 The kernel function needs to take the following arguments:
13851 @itemize
13852 @item
13853 Destination image, @var{__write_only image2d_t}.
13854
13855 This image will become the output; the kernel should write all of it.
13856 @item
13857 Frame index, @var{unsigned int}.
13858
13859 This is a counter starting from zero and increasing by one for each frame.
13860 @item
13861 Source images, @var{__read_only image2d_t}.
13862
13863 These are the most recent images on each input.  The kernel may read from
13864 them to generate the output, but they can't be written to.
13865 @end itemize
13866
13867 Example programs:
13868
13869 @itemize
13870 @item
13871 Copy the input to the output (output must be the same size as the input).
13872 @verbatim
13873 __kernel void copy(__write_only image2d_t destination,
13874                    unsigned int index,
13875                    __read_only  image2d_t source)
13876 {
13877     const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE;
13878
13879     int2 location = (int2)(get_global_id(0), get_global_id(1));
13880
13881     float4 value = read_imagef(source, sampler, location);
13882
13883     write_imagef(destination, location, value);
13884 }
13885 @end verbatim
13886
13887 @item
13888 Apply a simple transformation, rotating the input by an amount increasing
13889 with the index counter.  Pixel values are linearly interpolated by the
13890 sampler, and the output need not have the same dimensions as the input.
13891 @verbatim
13892 __kernel void rotate_image(__write_only image2d_t dst,
13893                            unsigned int index,
13894                            __read_only  image2d_t src)
13895 {
13896     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
13897                                CLK_FILTER_LINEAR);
13898
13899     float angle = (float)index / 100.0f;
13900
13901     float2 dst_dim = convert_float2(get_image_dim(dst));
13902     float2 src_dim = convert_float2(get_image_dim(src));
13903
13904     float2 dst_cen = dst_dim / 2.0f;
13905     float2 src_cen = src_dim / 2.0f;
13906
13907     int2   dst_loc = (int2)(get_global_id(0), get_global_id(1));
13908
13909     float2 dst_pos = convert_float2(dst_loc) - dst_cen;
13910     float2 src_pos = {
13911         cos(angle) * dst_pos.x - sin(angle) * dst_pos.y,
13912         sin(angle) * dst_pos.x + cos(angle) * dst_pos.y
13913     };
13914     src_pos = src_pos * src_dim / dst_dim;
13915
13916     float2 src_loc = src_pos + src_cen;
13917
13918     if (src_loc.x < 0.0f      || src_loc.y < 0.0f ||
13919         src_loc.x > src_dim.x || src_loc.y > src_dim.y)
13920         write_imagef(dst, dst_loc, 0.5f);
13921     else
13922         write_imagef(dst, dst_loc, read_imagef(src, sampler, src_loc));
13923 }
13924 @end verbatim
13925
13926 @item
13927 Blend two inputs together, with the amount of each input used varying
13928 with the index counter.
13929 @verbatim
13930 __kernel void blend_images(__write_only image2d_t dst,
13931                            unsigned int index,
13932                            __read_only  image2d_t src1,
13933                            __read_only  image2d_t src2)
13934 {
13935     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
13936                                CLK_FILTER_LINEAR);
13937
13938     float blend = (cos((float)index / 50.0f) + 1.0f) / 2.0f;
13939
13940     int2  dst_loc = (int2)(get_global_id(0), get_global_id(1));
13941     int2 src1_loc = dst_loc * get_image_dim(src1) / get_image_dim(dst);
13942     int2 src2_loc = dst_loc * get_image_dim(src2) / get_image_dim(dst);
13943
13944     float4 val1 = read_imagef(src1, sampler, src1_loc);
13945     float4 val2 = read_imagef(src2, sampler, src2_loc);
13946
13947     write_imagef(dst, dst_loc, val1 * blend + val2 * (1.0f - blend));
13948 }
13949 @end verbatim
13950
13951 @end itemize
13952
13953 @section pseudocolor
13954
13955 Alter frame colors in video with pseudocolors.
13956
13957 This filter accept the following options:
13958
13959 @table @option
13960 @item c0
13961 set pixel first component expression
13962
13963 @item c1
13964 set pixel second component expression
13965
13966 @item c2
13967 set pixel third component expression
13968
13969 @item c3
13970 set pixel fourth component expression, corresponds to the alpha component
13971
13972 @item i
13973 set component to use as base for altering colors
13974 @end table
13975
13976 Each of them specifies the expression to use for computing the lookup table for
13977 the corresponding pixel component values.
13978
13979 The expressions can contain the following constants and functions:
13980
13981 @table @option
13982 @item w
13983 @item h
13984 The input width and height.
13985
13986 @item val
13987 The input value for the pixel component.
13988
13989 @item ymin, umin, vmin, amin
13990 The minimum allowed component value.
13991
13992 @item ymax, umax, vmax, amax
13993 The maximum allowed component value.
13994 @end table
13995
13996 All expressions default to "val".
13997
13998 @subsection Examples
13999
14000 @itemize
14001 @item
14002 Change too high luma values to gradient:
14003 @example
14004 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'"
14005 @end example
14006 @end itemize
14007
14008 @section psnr
14009
14010 Obtain the average, maximum and minimum PSNR (Peak Signal to Noise
14011 Ratio) between two input videos.
14012
14013 This filter takes in input two input videos, the first input is
14014 considered the "main" source and is passed unchanged to the
14015 output. The second input is used as a "reference" video for computing
14016 the PSNR.
14017
14018 Both video inputs must have the same resolution and pixel format for
14019 this filter to work correctly. Also it assumes that both inputs
14020 have the same number of frames, which are compared one by one.
14021
14022 The obtained average PSNR is printed through the logging system.
14023
14024 The filter stores the accumulated MSE (mean squared error) of each
14025 frame, and at the end of the processing it is averaged across all frames
14026 equally, and the following formula is applied to obtain the PSNR:
14027
14028 @example
14029 PSNR = 10*log10(MAX^2/MSE)
14030 @end example
14031
14032 Where MAX is the average of the maximum values of each component of the
14033 image.
14034
14035 The description of the accepted parameters follows.
14036
14037 @table @option
14038 @item stats_file, f
14039 If specified the filter will use the named file to save the PSNR of
14040 each individual frame. When filename equals "-" the data is sent to
14041 standard output.
14042
14043 @item stats_version
14044 Specifies which version of the stats file format to use. Details of
14045 each format are written below.
14046 Default value is 1.
14047
14048 @item stats_add_max
14049 Determines whether the max value is output to the stats log.
14050 Default value is 0.
14051 Requires stats_version >= 2. If this is set and stats_version < 2,
14052 the filter will return an error.
14053 @end table
14054
14055 This filter also supports the @ref{framesync} options.
14056
14057 The file printed if @var{stats_file} is selected, contains a sequence of
14058 key/value pairs of the form @var{key}:@var{value} for each compared
14059 couple of frames.
14060
14061 If a @var{stats_version} greater than 1 is specified, a header line precedes
14062 the list of per-frame-pair stats, with key value pairs following the frame
14063 format with the following parameters:
14064
14065 @table @option
14066 @item psnr_log_version
14067 The version of the log file format. Will match @var{stats_version}.
14068
14069 @item fields
14070 A comma separated list of the per-frame-pair parameters included in
14071 the log.
14072 @end table
14073
14074 A description of each shown per-frame-pair parameter follows:
14075
14076 @table @option
14077 @item n
14078 sequential number of the input frame, starting from 1
14079
14080 @item mse_avg
14081 Mean Square Error pixel-by-pixel average difference of the compared
14082 frames, averaged over all the image components.
14083
14084 @item mse_y, mse_u, mse_v, mse_r, mse_g, mse_b, mse_a
14085 Mean Square Error pixel-by-pixel average difference of the compared
14086 frames for the component specified by the suffix.
14087
14088 @item psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a
14089 Peak Signal to Noise ratio of the compared frames for the component
14090 specified by the suffix.
14091
14092 @item max_avg, max_y, max_u, max_v
14093 Maximum allowed value for each channel, and average over all
14094 channels.
14095 @end table
14096
14097 For example:
14098 @example
14099 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
14100 [main][ref] psnr="stats_file=stats.log" [out]
14101 @end example
14102
14103 On this example the input file being processed is compared with the
14104 reference file @file{ref_movie.mpg}. The PSNR of each individual frame
14105 is stored in @file{stats.log}.
14106
14107 @anchor{pullup}
14108 @section pullup
14109
14110 Pulldown reversal (inverse telecine) filter, capable of handling mixed
14111 hard-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
14112 content.
14113
14114 The pullup filter is designed to take advantage of future context in making
14115 its decisions. This filter is stateless in the sense that it does not lock
14116 onto a pattern to follow, but it instead looks forward to the following
14117 fields in order to identify matches and rebuild progressive frames.
14118
14119 To produce content with an even framerate, insert the fps filter after
14120 pullup, use @code{fps=24000/1001} if the input frame rate is 29.97fps,
14121 @code{fps=24} for 30fps and the (rare) telecined 25fps input.
14122
14123 The filter accepts the following options:
14124
14125 @table @option
14126 @item jl
14127 @item jr
14128 @item jt
14129 @item jb
14130 These options set the amount of "junk" to ignore at the left, right, top, and
14131 bottom of the image, respectively. Left and right are in units of 8 pixels,
14132 while top and bottom are in units of 2 lines.
14133 The default is 8 pixels on each side.
14134
14135 @item sb
14136 Set the strict breaks. Setting this option to 1 will reduce the chances of
14137 filter generating an occasional mismatched frame, but it may also cause an
14138 excessive number of frames to be dropped during high motion sequences.
14139 Conversely, setting it to -1 will make filter match fields more easily.
14140 This may help processing of video where there is slight blurring between
14141 the fields, but may also cause there to be interlaced frames in the output.
14142 Default value is @code{0}.
14143
14144 @item mp
14145 Set the metric plane to use. It accepts the following values:
14146 @table @samp
14147 @item l
14148 Use luma plane.
14149
14150 @item u
14151 Use chroma blue plane.
14152
14153 @item v
14154 Use chroma red plane.
14155 @end table
14156
14157 This option may be set to use chroma plane instead of the default luma plane
14158 for doing filter's computations. This may improve accuracy on very clean
14159 source material, but more likely will decrease accuracy, especially if there
14160 is chroma noise (rainbow effect) or any grayscale video.
14161 The main purpose of setting @option{mp} to a chroma plane is to reduce CPU
14162 load and make pullup usable in realtime on slow machines.
14163 @end table
14164
14165 For best results (without duplicated frames in the output file) it is
14166 necessary to change the output frame rate. For example, to inverse
14167 telecine NTSC input:
14168 @example
14169 ffmpeg -i input -vf pullup -r 24000/1001 ...
14170 @end example
14171
14172 @section qp
14173
14174 Change video quantization parameters (QP).
14175
14176 The filter accepts the following option:
14177
14178 @table @option
14179 @item qp
14180 Set expression for quantization parameter.
14181 @end table
14182
14183 The expression is evaluated through the eval API and can contain, among others,
14184 the following constants:
14185
14186 @table @var
14187 @item known
14188 1 if index is not 129, 0 otherwise.
14189
14190 @item qp
14191 Sequential index starting from -129 to 128.
14192 @end table
14193
14194 @subsection Examples
14195
14196 @itemize
14197 @item
14198 Some equation like:
14199 @example
14200 qp=2+2*sin(PI*qp)
14201 @end example
14202 @end itemize
14203
14204 @section random
14205
14206 Flush video frames from internal cache of frames into a random order.
14207 No frame is discarded.
14208 Inspired by @ref{frei0r} nervous filter.
14209
14210 @table @option
14211 @item frames
14212 Set size in number of frames of internal cache, in range from @code{2} to
14213 @code{512}. Default is @code{30}.
14214
14215 @item seed
14216 Set seed for random number generator, must be an integer included between
14217 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
14218 less than @code{0}, the filter will try to use a good random seed on a
14219 best effort basis.
14220 @end table
14221
14222 @section readeia608
14223
14224 Read closed captioning (EIA-608) information from the top lines of a video frame.
14225
14226 This filter adds frame metadata for @code{lavfi.readeia608.X.cc} and
14227 @code{lavfi.readeia608.X.line}, where @code{X} is the number of the identified line
14228 with EIA-608 data (starting from 0). A description of each metadata value follows:
14229
14230 @table @option
14231 @item lavfi.readeia608.X.cc
14232 The two bytes stored as EIA-608 data (printed in hexadecimal).
14233
14234 @item lavfi.readeia608.X.line
14235 The number of the line on which the EIA-608 data was identified and read.
14236 @end table
14237
14238 This filter accepts the following options:
14239
14240 @table @option
14241 @item scan_min
14242 Set the line to start scanning for EIA-608 data. Default is @code{0}.
14243
14244 @item scan_max
14245 Set the line to end scanning for EIA-608 data. Default is @code{29}.
14246
14247 @item mac
14248 Set minimal acceptable amplitude change for sync codes detection.
14249 Default is @code{0.2}. Allowed range is @code{[0.001 - 1]}.
14250
14251 @item spw
14252 Set the ratio of width reserved for sync code detection.
14253 Default is @code{0.27}. Allowed range is @code{[0.01 - 0.7]}.
14254
14255 @item mhd
14256 Set the max peaks height difference for sync code detection.
14257 Default is @code{0.1}. Allowed range is @code{[0.0 - 0.5]}.
14258
14259 @item mpd
14260 Set max peaks period difference for sync code detection.
14261 Default is @code{0.1}. Allowed range is @code{[0.0 - 0.5]}.
14262
14263 @item msd
14264 Set the first two max start code bits differences.
14265 Default is @code{0.02}. Allowed range is @code{[0.0 - 0.5]}.
14266
14267 @item bhd
14268 Set the minimum ratio of bits height compared to 3rd start code bit.
14269 Default is @code{0.75}. Allowed range is @code{[0.01 - 1]}.
14270
14271 @item th_w
14272 Set the white color threshold. Default is @code{0.35}. Allowed range is @code{[0.1 - 1]}.
14273
14274 @item th_b
14275 Set the black color threshold. Default is @code{0.15}. Allowed range is @code{[0.0 - 0.5]}.
14276
14277 @item chp
14278 Enable checking the parity bit. In the event of a parity error, the filter will output
14279 @code{0x00} for that character. Default is false.
14280 @end table
14281
14282 @subsection Examples
14283
14284 @itemize
14285 @item
14286 Output a csv with presentation time and the first two lines of identified EIA-608 captioning data.
14287 @example
14288 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
14289 @end example
14290 @end itemize
14291
14292 @section readvitc
14293
14294 Read vertical interval timecode (VITC) information from the top lines of a
14295 video frame.
14296
14297 The filter adds frame metadata key @code{lavfi.readvitc.tc_str} with the
14298 timecode value, if a valid timecode has been detected. Further metadata key
14299 @code{lavfi.readvitc.found} is set to 0/1 depending on whether
14300 timecode data has been found or not.
14301
14302 This filter accepts the following options:
14303
14304 @table @option
14305 @item scan_max
14306 Set the maximum number of lines to scan for VITC data. If the value is set to
14307 @code{-1} the full video frame is scanned. Default is @code{45}.
14308
14309 @item thr_b
14310 Set the luma threshold for black. Accepts float numbers in the range [0.0,1.0],
14311 default value is @code{0.2}. The value must be equal or less than @code{thr_w}.
14312
14313 @item thr_w
14314 Set the luma threshold for white. Accepts float numbers in the range [0.0,1.0],
14315 default value is @code{0.6}. The value must be equal or greater than @code{thr_b}.
14316 @end table
14317
14318 @subsection Examples
14319
14320 @itemize
14321 @item
14322 Detect and draw VITC data onto the video frame; if no valid VITC is detected,
14323 draw @code{--:--:--:--} as a placeholder:
14324 @example
14325 ffmpeg -i input.avi -filter:v 'readvitc,drawtext=fontfile=FreeMono.ttf:text=%@{metadata\\:lavfi.readvitc.tc_str\\:--\\\\\\:--\\\\\\:--\\\\\\:--@}:x=(w-tw)/2:y=400-ascent'
14326 @end example
14327 @end itemize
14328
14329 @section remap
14330
14331 Remap pixels using 2nd: Xmap and 3rd: Ymap input video stream.
14332
14333 Destination pixel at position (X, Y) will be picked from source (x, y) position
14334 where x = Xmap(X, Y) and y = Ymap(X, Y). If mapping values are out of range, zero
14335 value for pixel will be used for destination pixel.
14336
14337 Xmap and Ymap input video streams must be of same dimensions. Output video stream
14338 will have Xmap/Ymap video stream dimensions.
14339 Xmap and Ymap input video streams are 16bit depth, single channel.
14340
14341 @section removegrain
14342
14343 The removegrain filter is a spatial denoiser for progressive video.
14344
14345 @table @option
14346 @item m0
14347 Set mode for the first plane.
14348
14349 @item m1
14350 Set mode for the second plane.
14351
14352 @item m2
14353 Set mode for the third plane.
14354
14355 @item m3
14356 Set mode for the fourth plane.
14357 @end table
14358
14359 Range of mode is from 0 to 24. Description of each mode follows:
14360
14361 @table @var
14362 @item 0
14363 Leave input plane unchanged. Default.
14364
14365 @item 1
14366 Clips the pixel with the minimum and maximum of the 8 neighbour pixels.
14367
14368 @item 2
14369 Clips the pixel with the second minimum and maximum of the 8 neighbour pixels.
14370
14371 @item 3
14372 Clips the pixel with the third minimum and maximum of the 8 neighbour pixels.
14373
14374 @item 4
14375 Clips the pixel with the fourth minimum and maximum of the 8 neighbour pixels.
14376 This is equivalent to a median filter.
14377
14378 @item 5
14379 Line-sensitive clipping giving the minimal change.
14380
14381 @item 6
14382 Line-sensitive clipping, intermediate.
14383
14384 @item 7
14385 Line-sensitive clipping, intermediate.
14386
14387 @item 8
14388 Line-sensitive clipping, intermediate.
14389
14390 @item 9
14391 Line-sensitive clipping on a line where the neighbours pixels are the closest.
14392
14393 @item 10
14394 Replaces the target pixel with the closest neighbour.
14395
14396 @item 11
14397 [1 2 1] horizontal and vertical kernel blur.
14398
14399 @item 12
14400 Same as mode 11.
14401
14402 @item 13
14403 Bob mode, interpolates top field from the line where the neighbours
14404 pixels are the closest.
14405
14406 @item 14
14407 Bob mode, interpolates bottom field from the line where the neighbours
14408 pixels are the closest.
14409
14410 @item 15
14411 Bob mode, interpolates top field. Same as 13 but with a more complicated
14412 interpolation formula.
14413
14414 @item 16
14415 Bob mode, interpolates bottom field. Same as 14 but with a more complicated
14416 interpolation formula.
14417
14418 @item 17
14419 Clips the pixel with the minimum and maximum of respectively the maximum and
14420 minimum of each pair of opposite neighbour pixels.
14421
14422 @item 18
14423 Line-sensitive clipping using opposite neighbours whose greatest distance from
14424 the current pixel is minimal.
14425
14426 @item 19
14427 Replaces the pixel with the average of its 8 neighbours.
14428
14429 @item 20
14430 Averages the 9 pixels ([1 1 1] horizontal and vertical blur).
14431
14432 @item 21
14433 Clips pixels using the averages of opposite neighbour.
14434
14435 @item 22
14436 Same as mode 21 but simpler and faster.
14437
14438 @item 23
14439 Small edge and halo removal, but reputed useless.
14440
14441 @item 24
14442 Similar as 23.
14443 @end table
14444
14445 @section removelogo
14446
14447 Suppress a TV station logo, using an image file to determine which
14448 pixels comprise the logo. It works by filling in the pixels that
14449 comprise the logo with neighboring pixels.
14450
14451 The filter accepts the following options:
14452
14453 @table @option
14454 @item filename, f
14455 Set the filter bitmap file, which can be any image format supported by
14456 libavformat. The width and height of the image file must match those of the
14457 video stream being processed.
14458 @end table
14459
14460 Pixels in the provided bitmap image with a value of zero are not
14461 considered part of the logo, non-zero pixels are considered part of
14462 the logo. If you use white (255) for the logo and black (0) for the
14463 rest, you will be safe. For making the filter bitmap, it is
14464 recommended to take a screen capture of a black frame with the logo
14465 visible, and then using a threshold filter followed by the erode
14466 filter once or twice.
14467
14468 If needed, little splotches can be fixed manually. Remember that if
14469 logo pixels are not covered, the filter quality will be much
14470 reduced. Marking too many pixels as part of the logo does not hurt as
14471 much, but it will increase the amount of blurring needed to cover over
14472 the image and will destroy more information than necessary, and extra
14473 pixels will slow things down on a large logo.
14474
14475 @section repeatfields
14476
14477 This filter uses the repeat_field flag from the Video ES headers and hard repeats
14478 fields based on its value.
14479
14480 @section reverse
14481
14482 Reverse a video clip.
14483
14484 Warning: This filter requires memory to buffer the entire clip, so trimming
14485 is suggested.
14486
14487 @subsection Examples
14488
14489 @itemize
14490 @item
14491 Take the first 5 seconds of a clip, and reverse it.
14492 @example
14493 trim=end=5,reverse
14494 @end example
14495 @end itemize
14496
14497 @section rgbashift
14498 Shift R/G/B/A pixels horizontally and/or vertically.
14499
14500 The filter accepts the following options:
14501 @table @option
14502 @item rh
14503 Set amount to shift red horizontally.
14504 @item rv
14505 Set amount to shift red vertically.
14506 @item gh
14507 Set amount to shift green horizontally.
14508 @item gv
14509 Set amount to shift green vertically.
14510 @item bh
14511 Set amount to shift blue horizontally.
14512 @item bv
14513 Set amount to shift blue vertically.
14514 @item ah
14515 Set amount to shift alpha horizontally.
14516 @item av
14517 Set amount to shift alpha vertically.
14518 @item edge
14519 Set edge mode, can be @var{smear}, default, or @var{warp}.
14520 @end table
14521
14522 @section roberts
14523 Apply roberts cross operator to input video stream.
14524
14525 The filter accepts the following option:
14526
14527 @table @option
14528 @item planes
14529 Set which planes will be processed, unprocessed planes will be copied.
14530 By default value 0xf, all planes will be processed.
14531
14532 @item scale
14533 Set value which will be multiplied with filtered result.
14534
14535 @item delta
14536 Set value which will be added to filtered result.
14537 @end table
14538
14539 @section rotate
14540
14541 Rotate video by an arbitrary angle expressed in radians.
14542
14543 The filter accepts the following options:
14544
14545 A description of the optional parameters follows.
14546 @table @option
14547 @item angle, a
14548 Set an expression for the angle by which to rotate the input video
14549 clockwise, expressed as a number of radians. A negative value will
14550 result in a counter-clockwise rotation. By default it is set to "0".
14551
14552 This expression is evaluated for each frame.
14553
14554 @item out_w, ow
14555 Set the output width expression, default value is "iw".
14556 This expression is evaluated just once during configuration.
14557
14558 @item out_h, oh
14559 Set the output height expression, default value is "ih".
14560 This expression is evaluated just once during configuration.
14561
14562 @item bilinear
14563 Enable bilinear interpolation if set to 1, a value of 0 disables
14564 it. Default value is 1.
14565
14566 @item fillcolor, c
14567 Set the color used to fill the output area not covered by the rotated
14568 image. For the general syntax of this option, check the
14569 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
14570 If the special value "none" is selected then no
14571 background is printed (useful for example if the background is never shown).
14572
14573 Default value is "black".
14574 @end table
14575
14576 The expressions for the angle and the output size can contain the
14577 following constants and functions:
14578
14579 @table @option
14580 @item n
14581 sequential number of the input frame, starting from 0. It is always NAN
14582 before the first frame is filtered.
14583
14584 @item t
14585 time in seconds of the input frame, it is set to 0 when the filter is
14586 configured. It is always NAN before the first frame is filtered.
14587
14588 @item hsub
14589 @item vsub
14590 horizontal and vertical chroma subsample values. For example for the
14591 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
14592
14593 @item in_w, iw
14594 @item in_h, ih
14595 the input video width and height
14596
14597 @item out_w, ow
14598 @item out_h, oh
14599 the output width and height, that is the size of the padded area as
14600 specified by the @var{width} and @var{height} expressions
14601
14602 @item rotw(a)
14603 @item roth(a)
14604 the minimal width/height required for completely containing the input
14605 video rotated by @var{a} radians.
14606
14607 These are only available when computing the @option{out_w} and
14608 @option{out_h} expressions.
14609 @end table
14610
14611 @subsection Examples
14612
14613 @itemize
14614 @item
14615 Rotate the input by PI/6 radians clockwise:
14616 @example
14617 rotate=PI/6
14618 @end example
14619
14620 @item
14621 Rotate the input by PI/6 radians counter-clockwise:
14622 @example
14623 rotate=-PI/6
14624 @end example
14625
14626 @item
14627 Rotate the input by 45 degrees clockwise:
14628 @example
14629 rotate=45*PI/180
14630 @end example
14631
14632 @item
14633 Apply a constant rotation with period T, starting from an angle of PI/3:
14634 @example
14635 rotate=PI/3+2*PI*t/T
14636 @end example
14637
14638 @item
14639 Make the input video rotation oscillating with a period of T
14640 seconds and an amplitude of A radians:
14641 @example
14642 rotate=A*sin(2*PI/T*t)
14643 @end example
14644
14645 @item
14646 Rotate the video, output size is chosen so that the whole rotating
14647 input video is always completely contained in the output:
14648 @example
14649 rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
14650 @end example
14651
14652 @item
14653 Rotate the video, reduce the output size so that no background is ever
14654 shown:
14655 @example
14656 rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
14657 @end example
14658 @end itemize
14659
14660 @subsection Commands
14661
14662 The filter supports the following commands:
14663
14664 @table @option
14665 @item a, angle
14666 Set the angle expression.
14667 The command accepts the same syntax of the corresponding option.
14668
14669 If the specified expression is not valid, it is kept at its current
14670 value.
14671 @end table
14672
14673 @section sab
14674
14675 Apply Shape Adaptive Blur.
14676
14677 The filter accepts the following options:
14678
14679 @table @option
14680 @item luma_radius, lr
14681 Set luma blur filter strength, must be a value in range 0.1-4.0, default
14682 value is 1.0. A greater value will result in a more blurred image, and
14683 in slower processing.
14684
14685 @item luma_pre_filter_radius, lpfr
14686 Set luma pre-filter radius, must be a value in the 0.1-2.0 range, default
14687 value is 1.0.
14688
14689 @item luma_strength, ls
14690 Set luma maximum difference between pixels to still be considered, must
14691 be a value in the 0.1-100.0 range, default value is 1.0.
14692
14693 @item chroma_radius, cr
14694 Set chroma blur filter strength, must be a value in range -0.9-4.0. A
14695 greater value will result in a more blurred image, and in slower
14696 processing.
14697
14698 @item chroma_pre_filter_radius, cpfr
14699 Set chroma pre-filter radius, must be a value in the -0.9-2.0 range.
14700
14701 @item chroma_strength, cs
14702 Set chroma maximum difference between pixels to still be considered,
14703 must be a value in the -0.9-100.0 range.
14704 @end table
14705
14706 Each chroma option value, if not explicitly specified, is set to the
14707 corresponding luma option value.
14708
14709 @anchor{scale}
14710 @section scale
14711
14712 Scale (resize) the input video, using the libswscale library.
14713
14714 The scale filter forces the output display aspect ratio to be the same
14715 of the input, by changing the output sample aspect ratio.
14716
14717 If the input image format is different from the format requested by
14718 the next filter, the scale filter will convert the input to the
14719 requested format.
14720
14721 @subsection Options
14722 The filter accepts the following options, or any of the options
14723 supported by the libswscale scaler.
14724
14725 See @ref{scaler_options,,the ffmpeg-scaler manual,ffmpeg-scaler} for
14726 the complete list of scaler options.
14727
14728 @table @option
14729 @item width, w
14730 @item height, h
14731 Set the output video dimension expression. Default value is the input
14732 dimension.
14733
14734 If the @var{width} or @var{w} value is 0, the input width is used for
14735 the output. If the @var{height} or @var{h} value is 0, the input height
14736 is used for the output.
14737
14738 If one and only one of the values is -n with n >= 1, the scale filter
14739 will use a value that maintains the aspect ratio of the input image,
14740 calculated from the other specified dimension. After that it will,
14741 however, make sure that the calculated dimension is divisible by n and
14742 adjust the value if necessary.
14743
14744 If both values are -n with n >= 1, the behavior will be identical to
14745 both values being set to 0 as previously detailed.
14746
14747 See below for the list of accepted constants for use in the dimension
14748 expression.
14749
14750 @item eval
14751 Specify when to evaluate @var{width} and @var{height} expression. It accepts the following values:
14752
14753 @table @samp
14754 @item init
14755 Only evaluate expressions once during the filter initialization or when a command is processed.
14756
14757 @item frame
14758 Evaluate expressions for each incoming frame.
14759
14760 @end table
14761
14762 Default value is @samp{init}.
14763
14764
14765 @item interl
14766 Set the interlacing mode. It accepts the following values:
14767
14768 @table @samp
14769 @item 1
14770 Force interlaced aware scaling.
14771
14772 @item 0
14773 Do not apply interlaced scaling.
14774
14775 @item -1
14776 Select interlaced aware scaling depending on whether the source frames
14777 are flagged as interlaced or not.
14778 @end table
14779
14780 Default value is @samp{0}.
14781
14782 @item flags
14783 Set libswscale scaling flags. See
14784 @ref{sws_flags,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
14785 complete list of values. If not explicitly specified the filter applies
14786 the default flags.
14787
14788
14789 @item param0, param1
14790 Set libswscale input parameters for scaling algorithms that need them. See
14791 @ref{sws_params,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
14792 complete documentation. If not explicitly specified the filter applies
14793 empty parameters.
14794
14795
14796
14797 @item size, s
14798 Set the video size. For the syntax of this option, check the
14799 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
14800
14801 @item in_color_matrix
14802 @item out_color_matrix
14803 Set in/output YCbCr color space type.
14804
14805 This allows the autodetected value to be overridden as well as allows forcing
14806 a specific value used for the output and encoder.
14807
14808 If not specified, the color space type depends on the pixel format.
14809
14810 Possible values:
14811
14812 @table @samp
14813 @item auto
14814 Choose automatically.
14815
14816 @item bt709
14817 Format conforming to International Telecommunication Union (ITU)
14818 Recommendation BT.709.
14819
14820 @item fcc
14821 Set color space conforming to the United States Federal Communications
14822 Commission (FCC) Code of Federal Regulations (CFR) Title 47 (2003) 73.682 (a).
14823
14824 @item bt601
14825 Set color space conforming to:
14826
14827 @itemize
14828 @item
14829 ITU Radiocommunication Sector (ITU-R) Recommendation BT.601
14830
14831 @item
14832 ITU-R Rec. BT.470-6 (1998) Systems B, B1, and G
14833
14834 @item
14835 Society of Motion Picture and Television Engineers (SMPTE) ST 170:2004
14836
14837 @end itemize
14838
14839 @item smpte240m
14840 Set color space conforming to SMPTE ST 240:1999.
14841 @end table
14842
14843 @item in_range
14844 @item out_range
14845 Set in/output YCbCr sample range.
14846
14847 This allows the autodetected value to be overridden as well as allows forcing
14848 a specific value used for the output and encoder. If not specified, the
14849 range depends on the pixel format. Possible values:
14850
14851 @table @samp
14852 @item auto/unknown
14853 Choose automatically.
14854
14855 @item jpeg/full/pc
14856 Set full range (0-255 in case of 8-bit luma).
14857
14858 @item mpeg/limited/tv
14859 Set "MPEG" range (16-235 in case of 8-bit luma).
14860 @end table
14861
14862 @item force_original_aspect_ratio
14863 Enable decreasing or increasing output video width or height if necessary to
14864 keep the original aspect ratio. Possible values:
14865
14866 @table @samp
14867 @item disable
14868 Scale the video as specified and disable this feature.
14869
14870 @item decrease
14871 The output video dimensions will automatically be decreased if needed.
14872
14873 @item increase
14874 The output video dimensions will automatically be increased if needed.
14875
14876 @end table
14877
14878 One useful instance of this option is that when you know a specific device's
14879 maximum allowed resolution, you can use this to limit the output video to
14880 that, while retaining the aspect ratio. For example, device A allows
14881 1280x720 playback, and your video is 1920x800. Using this option (set it to
14882 decrease) and specifying 1280x720 to the command line makes the output
14883 1280x533.
14884
14885 Please note that this is a different thing than specifying -1 for @option{w}
14886 or @option{h}, you still need to specify the output resolution for this option
14887 to work.
14888
14889 @end table
14890
14891 The values of the @option{w} and @option{h} options are expressions
14892 containing the following constants:
14893
14894 @table @var
14895 @item in_w
14896 @item in_h
14897 The input width and height
14898
14899 @item iw
14900 @item ih
14901 These are the same as @var{in_w} and @var{in_h}.
14902
14903 @item out_w
14904 @item out_h
14905 The output (scaled) width and height
14906
14907 @item ow
14908 @item oh
14909 These are the same as @var{out_w} and @var{out_h}
14910
14911 @item a
14912 The same as @var{iw} / @var{ih}
14913
14914 @item sar
14915 input sample aspect ratio
14916
14917 @item dar
14918 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
14919
14920 @item hsub
14921 @item vsub
14922 horizontal and vertical input chroma subsample values. For example for the
14923 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
14924
14925 @item ohsub
14926 @item ovsub
14927 horizontal and vertical output chroma subsample values. For example for the
14928 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
14929 @end table
14930
14931 @subsection Examples
14932
14933 @itemize
14934 @item
14935 Scale the input video to a size of 200x100
14936 @example
14937 scale=w=200:h=100
14938 @end example
14939
14940 This is equivalent to:
14941 @example
14942 scale=200:100
14943 @end example
14944
14945 or:
14946 @example
14947 scale=200x100
14948 @end example
14949
14950 @item
14951 Specify a size abbreviation for the output size:
14952 @example
14953 scale=qcif
14954 @end example
14955
14956 which can also be written as:
14957 @example
14958 scale=size=qcif
14959 @end example
14960
14961 @item
14962 Scale the input to 2x:
14963 @example
14964 scale=w=2*iw:h=2*ih
14965 @end example
14966
14967 @item
14968 The above is the same as:
14969 @example
14970 scale=2*in_w:2*in_h
14971 @end example
14972
14973 @item
14974 Scale the input to 2x with forced interlaced scaling:
14975 @example
14976 scale=2*iw:2*ih:interl=1
14977 @end example
14978
14979 @item
14980 Scale the input to half size:
14981 @example
14982 scale=w=iw/2:h=ih/2
14983 @end example
14984
14985 @item
14986 Increase the width, and set the height to the same size:
14987 @example
14988 scale=3/2*iw:ow
14989 @end example
14990
14991 @item
14992 Seek Greek harmony:
14993 @example
14994 scale=iw:1/PHI*iw
14995 scale=ih*PHI:ih
14996 @end example
14997
14998 @item
14999 Increase the height, and set the width to 3/2 of the height:
15000 @example
15001 scale=w=3/2*oh:h=3/5*ih
15002 @end example
15003
15004 @item
15005 Increase the size, making the size a multiple of the chroma
15006 subsample values:
15007 @example
15008 scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
15009 @end example
15010
15011 @item
15012 Increase the width to a maximum of 500 pixels,
15013 keeping the same aspect ratio as the input:
15014 @example
15015 scale=w='min(500\, iw*3/2):h=-1'
15016 @end example
15017
15018 @item
15019 Make pixels square by combining scale and setsar:
15020 @example
15021 scale='trunc(ih*dar):ih',setsar=1/1
15022 @end example
15023
15024 @item
15025 Make pixels square by combining scale and setsar,
15026 making sure the resulting resolution is even (required by some codecs):
15027 @example
15028 scale='trunc(ih*dar/2)*2:trunc(ih/2)*2',setsar=1/1
15029 @end example
15030 @end itemize
15031
15032 @subsection Commands
15033
15034 This filter supports the following commands:
15035 @table @option
15036 @item width, w
15037 @item height, h
15038 Set the output video dimension expression.
15039 The command accepts the same syntax of the corresponding option.
15040
15041 If the specified expression is not valid, it is kept at its current
15042 value.
15043 @end table
15044
15045 @section scale_npp
15046
15047 Use the NVIDIA Performance Primitives (libnpp) to perform scaling and/or pixel
15048 format conversion on CUDA video frames. Setting the output width and height
15049 works in the same way as for the @var{scale} filter.
15050
15051 The following additional options are accepted:
15052 @table @option
15053 @item format
15054 The pixel format of the output CUDA frames. If set to the string "same" (the
15055 default), the input format will be kept. Note that automatic format negotiation
15056 and conversion is not yet supported for hardware frames
15057
15058 @item interp_algo
15059 The interpolation algorithm used for resizing. One of the following:
15060 @table @option
15061 @item nn
15062 Nearest neighbour.
15063
15064 @item linear
15065 @item cubic
15066 @item cubic2p_bspline
15067 2-parameter cubic (B=1, C=0)
15068
15069 @item cubic2p_catmullrom
15070 2-parameter cubic (B=0, C=1/2)
15071
15072 @item cubic2p_b05c03
15073 2-parameter cubic (B=1/2, C=3/10)
15074
15075 @item super
15076 Supersampling
15077
15078 @item lanczos
15079 @end table
15080
15081 @end table
15082
15083 @section scale2ref
15084
15085 Scale (resize) the input video, based on a reference video.
15086
15087 See the scale filter for available options, scale2ref supports the same but
15088 uses the reference video instead of the main input as basis. scale2ref also
15089 supports the following additional constants for the @option{w} and
15090 @option{h} options:
15091
15092 @table @var
15093 @item main_w
15094 @item main_h
15095 The main input video's width and height
15096
15097 @item main_a
15098 The same as @var{main_w} / @var{main_h}
15099
15100 @item main_sar
15101 The main input video's sample aspect ratio
15102
15103 @item main_dar, mdar
15104 The main input video's display aspect ratio. Calculated from
15105 @code{(main_w / main_h) * main_sar}.
15106
15107 @item main_hsub
15108 @item main_vsub
15109 The main input video's horizontal and vertical chroma subsample values.
15110 For example for the pixel format "yuv422p" @var{hsub} is 2 and @var{vsub}
15111 is 1.
15112 @end table
15113
15114 @subsection Examples
15115
15116 @itemize
15117 @item
15118 Scale a subtitle stream (b) to match the main video (a) in size before overlaying
15119 @example
15120 'scale2ref[b][a];[a][b]overlay'
15121 @end example
15122 @end itemize
15123
15124 @anchor{selectivecolor}
15125 @section selectivecolor
15126
15127 Adjust cyan, magenta, yellow and black (CMYK) to certain ranges of colors (such
15128 as "reds", "yellows", "greens", "cyans", ...). The adjustment range is defined
15129 by the "purity" of the color (that is, how saturated it already is).
15130
15131 This filter is similar to the Adobe Photoshop Selective Color tool.
15132
15133 The filter accepts the following options:
15134
15135 @table @option
15136 @item correction_method
15137 Select color correction method.
15138
15139 Available values are:
15140 @table @samp
15141 @item absolute
15142 Specified adjustments are applied "as-is" (added/subtracted to original pixel
15143 component value).
15144 @item relative
15145 Specified adjustments are relative to the original component value.
15146 @end table
15147 Default is @code{absolute}.
15148 @item reds
15149 Adjustments for red pixels (pixels where the red component is the maximum)
15150 @item yellows
15151 Adjustments for yellow pixels (pixels where the blue component is the minimum)
15152 @item greens
15153 Adjustments for green pixels (pixels where the green component is the maximum)
15154 @item cyans
15155 Adjustments for cyan pixels (pixels where the red component is the minimum)
15156 @item blues
15157 Adjustments for blue pixels (pixels where the blue component is the maximum)
15158 @item magentas
15159 Adjustments for magenta pixels (pixels where the green component is the minimum)
15160 @item whites
15161 Adjustments for white pixels (pixels where all components are greater than 128)
15162 @item neutrals
15163 Adjustments for all pixels except pure black and pure white
15164 @item blacks
15165 Adjustments for black pixels (pixels where all components are lesser than 128)
15166 @item psfile
15167 Specify a Photoshop selective color file (@code{.asv}) to import the settings from.
15168 @end table
15169
15170 All the adjustment settings (@option{reds}, @option{yellows}, ...) accept up to
15171 4 space separated floating point adjustment values in the [-1,1] range,
15172 respectively to adjust the amount of cyan, magenta, yellow and black for the
15173 pixels of its range.
15174
15175 @subsection Examples
15176
15177 @itemize
15178 @item
15179 Increase cyan by 50% and reduce yellow by 33% in every green areas, and
15180 increase magenta by 27% in blue areas:
15181 @example
15182 selectivecolor=greens=.5 0 -.33 0:blues=0 .27
15183 @end example
15184
15185 @item
15186 Use a Photoshop selective color preset:
15187 @example
15188 selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
15189 @end example
15190 @end itemize
15191
15192 @anchor{separatefields}
15193 @section separatefields
15194
15195 The @code{separatefields} takes a frame-based video input and splits
15196 each frame into its components fields, producing a new half height clip
15197 with twice the frame rate and twice the frame count.
15198
15199 This filter use field-dominance information in frame to decide which
15200 of each pair of fields to place first in the output.
15201 If it gets it wrong use @ref{setfield} filter before @code{separatefields} filter.
15202
15203 @section setdar, setsar
15204
15205 The @code{setdar} filter sets the Display Aspect Ratio for the filter
15206 output video.
15207
15208 This is done by changing the specified Sample (aka Pixel) Aspect
15209 Ratio, according to the following equation:
15210 @example
15211 @var{DAR} = @var{HORIZONTAL_RESOLUTION} / @var{VERTICAL_RESOLUTION} * @var{SAR}
15212 @end example
15213
15214 Keep in mind that the @code{setdar} filter does not modify the pixel
15215 dimensions of the video frame. Also, the display aspect ratio set by
15216 this filter may be changed by later filters in the filterchain,
15217 e.g. in case of scaling or if another "setdar" or a "setsar" filter is
15218 applied.
15219
15220 The @code{setsar} filter sets the Sample (aka Pixel) Aspect Ratio for
15221 the filter output video.
15222
15223 Note that as a consequence of the application of this filter, the
15224 output display aspect ratio will change according to the equation
15225 above.
15226
15227 Keep in mind that the sample aspect ratio set by the @code{setsar}
15228 filter may be changed by later filters in the filterchain, e.g. if
15229 another "setsar" or a "setdar" filter is applied.
15230
15231 It accepts the following parameters:
15232
15233 @table @option
15234 @item r, ratio, dar (@code{setdar} only), sar (@code{setsar} only)
15235 Set the aspect ratio used by the filter.
15236
15237 The parameter can be a floating point number string, an expression, or
15238 a string of the form @var{num}:@var{den}, where @var{num} and
15239 @var{den} are the numerator and denominator of the aspect ratio. If
15240 the parameter is not specified, it is assumed the value "0".
15241 In case the form "@var{num}:@var{den}" is used, the @code{:} character
15242 should be escaped.
15243
15244 @item max
15245 Set the maximum integer value to use for expressing numerator and
15246 denominator when reducing the expressed aspect ratio to a rational.
15247 Default value is @code{100}.
15248
15249 @end table
15250
15251 The parameter @var{sar} is an expression containing
15252 the following constants:
15253
15254 @table @option
15255 @item E, PI, PHI
15256 These are approximated values for the mathematical constants e
15257 (Euler's number), pi (Greek pi), and phi (the golden ratio).
15258
15259 @item w, h
15260 The input width and height.
15261
15262 @item a
15263 These are the same as @var{w} / @var{h}.
15264
15265 @item sar
15266 The input sample aspect ratio.
15267
15268 @item dar
15269 The input display aspect ratio. It is the same as
15270 (@var{w} / @var{h}) * @var{sar}.
15271
15272 @item hsub, vsub
15273 Horizontal and vertical chroma subsample values. For example, for the
15274 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
15275 @end table
15276
15277 @subsection Examples
15278
15279 @itemize
15280
15281 @item
15282 To change the display aspect ratio to 16:9, specify one of the following:
15283 @example
15284 setdar=dar=1.77777
15285 setdar=dar=16/9
15286 @end example
15287
15288 @item
15289 To change the sample aspect ratio to 10:11, specify:
15290 @example
15291 setsar=sar=10/11
15292 @end example
15293
15294 @item
15295 To set a display aspect ratio of 16:9, and specify a maximum integer value of
15296 1000 in the aspect ratio reduction, use the command:
15297 @example
15298 setdar=ratio=16/9:max=1000
15299 @end example
15300
15301 @end itemize
15302
15303 @anchor{setfield}
15304 @section setfield
15305
15306 Force field for the output video frame.
15307
15308 The @code{setfield} filter marks the interlace type field for the
15309 output frames. It does not change the input frame, but only sets the
15310 corresponding property, which affects how the frame is treated by
15311 following filters (e.g. @code{fieldorder} or @code{yadif}).
15312
15313 The filter accepts the following options:
15314
15315 @table @option
15316
15317 @item mode
15318 Available values are:
15319
15320 @table @samp
15321 @item auto
15322 Keep the same field property.
15323
15324 @item bff
15325 Mark the frame as bottom-field-first.
15326
15327 @item tff
15328 Mark the frame as top-field-first.
15329
15330 @item prog
15331 Mark the frame as progressive.
15332 @end table
15333 @end table
15334
15335 @anchor{setparams}
15336 @section setparams
15337
15338 Force frame parameter for the output video frame.
15339
15340 The @code{setparams} filter marks interlace and color range for the
15341 output frames. It does not change the input frame, but only sets the
15342 corresponding property, which affects how the frame is treated by
15343 filters/encoders.
15344
15345 @table @option
15346 @item field_mode
15347 Available values are:
15348
15349 @table @samp
15350 @item auto
15351 Keep the same field property (default).
15352
15353 @item bff
15354 Mark the frame as bottom-field-first.
15355
15356 @item tff
15357 Mark the frame as top-field-first.
15358
15359 @item prog
15360 Mark the frame as progressive.
15361 @end table
15362
15363 @item range
15364 Available values are:
15365
15366 @table @samp
15367 @item auto
15368 Keep the same color range property (default).
15369
15370 @item unspecified, unknown
15371 Mark the frame as unspecified color range.
15372
15373 @item limited, tv, mpeg
15374 Mark the frame as limited range.
15375
15376 @item full, pc, jpeg
15377 Mark the frame as full range.
15378 @end table
15379
15380 @item color_primaries
15381 Set the color primaries.
15382 Available values are:
15383
15384 @table @samp
15385 @item auto
15386 Keep the same color primaries property (default).
15387
15388 @item bt709
15389 @item unknown
15390 @item bt470m
15391 @item bt470bg
15392 @item smpte170m
15393 @item smpte240m
15394 @item film
15395 @item bt2020
15396 @item smpte428
15397 @item smpte431
15398 @item smpte432
15399 @item jedec-p22
15400 @end table
15401
15402 @item color_trc
15403 Set the color transfer.
15404 Available values are:
15405
15406 @table @samp
15407 @item auto
15408 Keep the same color trc property (default).
15409
15410 @item bt709
15411 @item unknown
15412 @item bt470m
15413 @item bt470bg
15414 @item smpte170m
15415 @item smpte240m
15416 @item linear
15417 @item log100
15418 @item log316
15419 @item iec61966-2-4
15420 @item bt1361e
15421 @item iec61966-2-1
15422 @item bt2020-10
15423 @item bt2020-12
15424 @item smpte2084
15425 @item smpte428
15426 @item arib-std-b67
15427 @end table
15428
15429 @item colorspace
15430 Set the colorspace.
15431 Available values are:
15432
15433 @table @samp
15434 @item auto
15435 Keep the same colorspace property (default).
15436
15437 @item gbr
15438 @item bt709
15439 @item unknown
15440 @item fcc
15441 @item bt470bg
15442 @item smpte170m
15443 @item smpte240m
15444 @item ycgco
15445 @item bt2020nc
15446 @item bt2020c
15447 @item smpte2085
15448 @item chroma-derived-nc
15449 @item chroma-derived-c
15450 @item ictcp
15451 @end table
15452 @end table
15453
15454 @section showinfo
15455
15456 Show a line containing various information for each input video frame.
15457 The input video is not modified.
15458
15459 This filter supports the following options:
15460
15461 @table @option
15462 @item checksum
15463 Calculate checksums of each plane. By default enabled.
15464 @end table
15465
15466 The shown line contains a sequence of key/value pairs of the form
15467 @var{key}:@var{value}.
15468
15469 The following values are shown in the output:
15470
15471 @table @option
15472 @item n
15473 The (sequential) number of the input frame, starting from 0.
15474
15475 @item pts
15476 The Presentation TimeStamp of the input frame, expressed as a number of
15477 time base units. The time base unit depends on the filter input pad.
15478
15479 @item pts_time
15480 The Presentation TimeStamp of the input frame, expressed as a number of
15481 seconds.
15482
15483 @item pos
15484 The position of the frame in the input stream, or -1 if this information is
15485 unavailable and/or meaningless (for example in case of synthetic video).
15486
15487 @item fmt
15488 The pixel format name.
15489
15490 @item sar
15491 The sample aspect ratio of the input frame, expressed in the form
15492 @var{num}/@var{den}.
15493
15494 @item s
15495 The size of the input frame. For the syntax of this option, check the
15496 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
15497
15498 @item i
15499 The type of interlaced mode ("P" for "progressive", "T" for top field first, "B"
15500 for bottom field first).
15501
15502 @item iskey
15503 This is 1 if the frame is a key frame, 0 otherwise.
15504
15505 @item type
15506 The picture type of the input frame ("I" for an I-frame, "P" for a
15507 P-frame, "B" for a B-frame, or "?" for an unknown type).
15508 Also refer to the documentation of the @code{AVPictureType} enum and of
15509 the @code{av_get_picture_type_char} function defined in
15510 @file{libavutil/avutil.h}.
15511
15512 @item checksum
15513 The Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame.
15514
15515 @item plane_checksum
15516 The Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
15517 expressed in the form "[@var{c0} @var{c1} @var{c2} @var{c3}]".
15518 @end table
15519
15520 @section showpalette
15521
15522 Displays the 256 colors palette of each frame. This filter is only relevant for
15523 @var{pal8} pixel format frames.
15524
15525 It accepts the following option:
15526
15527 @table @option
15528 @item s
15529 Set the size of the box used to represent one palette color entry. Default is
15530 @code{30} (for a @code{30x30} pixel box).
15531 @end table
15532
15533 @section shuffleframes
15534
15535 Reorder and/or duplicate and/or drop video frames.
15536
15537 It accepts the following parameters:
15538
15539 @table @option
15540 @item mapping
15541 Set the destination indexes of input frames.
15542 This is space or '|' separated list of indexes that maps input frames to output
15543 frames. Number of indexes also sets maximal value that each index may have.
15544 '-1' index have special meaning and that is to drop frame.
15545 @end table
15546
15547 The first frame has the index 0. The default is to keep the input unchanged.
15548
15549 @subsection Examples
15550
15551 @itemize
15552 @item
15553 Swap second and third frame of every three frames of the input:
15554 @example
15555 ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
15556 @end example
15557
15558 @item
15559 Swap 10th and 1st frame of every ten frames of the input:
15560 @example
15561 ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
15562 @end example
15563 @end itemize
15564
15565 @section shuffleplanes
15566
15567 Reorder and/or duplicate video planes.
15568
15569 It accepts the following parameters:
15570
15571 @table @option
15572
15573 @item map0
15574 The index of the input plane to be used as the first output plane.
15575
15576 @item map1
15577 The index of the input plane to be used as the second output plane.
15578
15579 @item map2
15580 The index of the input plane to be used as the third output plane.
15581
15582 @item map3
15583 The index of the input plane to be used as the fourth output plane.
15584
15585 @end table
15586
15587 The first plane has the index 0. The default is to keep the input unchanged.
15588
15589 @subsection Examples
15590
15591 @itemize
15592 @item
15593 Swap the second and third planes of the input:
15594 @example
15595 ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
15596 @end example
15597 @end itemize
15598
15599 @anchor{signalstats}
15600 @section signalstats
15601 Evaluate various visual metrics that assist in determining issues associated
15602 with the digitization of analog video media.
15603
15604 By default the filter will log these metadata values:
15605
15606 @table @option
15607 @item YMIN
15608 Display the minimal Y value contained within the input frame. Expressed in
15609 range of [0-255].
15610
15611 @item YLOW
15612 Display the Y value at the 10% percentile within the input frame. Expressed in
15613 range of [0-255].
15614
15615 @item YAVG
15616 Display the average Y value within the input frame. Expressed in range of
15617 [0-255].
15618
15619 @item YHIGH
15620 Display the Y value at the 90% percentile within the input frame. Expressed in
15621 range of [0-255].
15622
15623 @item YMAX
15624 Display the maximum Y value contained within the input frame. Expressed in
15625 range of [0-255].
15626
15627 @item UMIN
15628 Display the minimal U value contained within the input frame. Expressed in
15629 range of [0-255].
15630
15631 @item ULOW
15632 Display the U value at the 10% percentile within the input frame. Expressed in
15633 range of [0-255].
15634
15635 @item UAVG
15636 Display the average U value within the input frame. Expressed in range of
15637 [0-255].
15638
15639 @item UHIGH
15640 Display the U value at the 90% percentile within the input frame. Expressed in
15641 range of [0-255].
15642
15643 @item UMAX
15644 Display the maximum U value contained within the input frame. Expressed in
15645 range of [0-255].
15646
15647 @item VMIN
15648 Display the minimal V value contained within the input frame. Expressed in
15649 range of [0-255].
15650
15651 @item VLOW
15652 Display the V value at the 10% percentile within the input frame. Expressed in
15653 range of [0-255].
15654
15655 @item VAVG
15656 Display the average V value within the input frame. Expressed in range of
15657 [0-255].
15658
15659 @item VHIGH
15660 Display the V value at the 90% percentile within the input frame. Expressed in
15661 range of [0-255].
15662
15663 @item VMAX
15664 Display the maximum V value contained within the input frame. Expressed in
15665 range of [0-255].
15666
15667 @item SATMIN
15668 Display the minimal saturation value contained within the input frame.
15669 Expressed in range of [0-~181.02].
15670
15671 @item SATLOW
15672 Display the saturation value at the 10% percentile within the input frame.
15673 Expressed in range of [0-~181.02].
15674
15675 @item SATAVG
15676 Display the average saturation value within the input frame. Expressed in range
15677 of [0-~181.02].
15678
15679 @item SATHIGH
15680 Display the saturation value at the 90% percentile within the input frame.
15681 Expressed in range of [0-~181.02].
15682
15683 @item SATMAX
15684 Display the maximum saturation value contained within the input frame.
15685 Expressed in range of [0-~181.02].
15686
15687 @item HUEMED
15688 Display the median value for hue within the input frame. Expressed in range of
15689 [0-360].
15690
15691 @item HUEAVG
15692 Display the average value for hue within the input frame. Expressed in range of
15693 [0-360].
15694
15695 @item YDIF
15696 Display the average of sample value difference between all values of the Y
15697 plane in the current frame and corresponding values of the previous input frame.
15698 Expressed in range of [0-255].
15699
15700 @item UDIF
15701 Display the average of sample value difference between all values of the U
15702 plane in the current frame and corresponding values of the previous input frame.
15703 Expressed in range of [0-255].
15704
15705 @item VDIF
15706 Display the average of sample value difference between all values of the V
15707 plane in the current frame and corresponding values of the previous input frame.
15708 Expressed in range of [0-255].
15709
15710 @item YBITDEPTH
15711 Display bit depth of Y plane in current frame.
15712 Expressed in range of [0-16].
15713
15714 @item UBITDEPTH
15715 Display bit depth of U plane in current frame.
15716 Expressed in range of [0-16].
15717
15718 @item VBITDEPTH
15719 Display bit depth of V plane in current frame.
15720 Expressed in range of [0-16].
15721 @end table
15722
15723 The filter accepts the following options:
15724
15725 @table @option
15726 @item stat
15727 @item out
15728
15729 @option{stat} specify an additional form of image analysis.
15730 @option{out} output video with the specified type of pixel highlighted.
15731
15732 Both options accept the following values:
15733
15734 @table @samp
15735 @item tout
15736 Identify @var{temporal outliers} pixels. A @var{temporal outlier} is a pixel
15737 unlike the neighboring pixels of the same field. Examples of temporal outliers
15738 include the results of video dropouts, head clogs, or tape tracking issues.
15739
15740 @item vrep
15741 Identify @var{vertical line repetition}. Vertical line repetition includes
15742 similar rows of pixels within a frame. In born-digital video vertical line
15743 repetition is common, but this pattern is uncommon in video digitized from an
15744 analog source. When it occurs in video that results from the digitization of an
15745 analog source it can indicate concealment from a dropout compensator.
15746
15747 @item brng
15748 Identify pixels that fall outside of legal broadcast range.
15749 @end table
15750
15751 @item color, c
15752 Set the highlight color for the @option{out} option. The default color is
15753 yellow.
15754 @end table
15755
15756 @subsection Examples
15757
15758 @itemize
15759 @item
15760 Output data of various video metrics:
15761 @example
15762 ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
15763 @end example
15764
15765 @item
15766 Output specific data about the minimum and maximum values of the Y plane per frame:
15767 @example
15768 ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
15769 @end example
15770
15771 @item
15772 Playback video while highlighting pixels that are outside of broadcast range in red.
15773 @example
15774 ffplay example.mov -vf signalstats="out=brng:color=red"
15775 @end example
15776
15777 @item
15778 Playback video with signalstats metadata drawn over the frame.
15779 @example
15780 ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
15781 @end example
15782
15783 The contents of signalstat_drawtext.txt used in the command are:
15784 @example
15785 time %@{pts:hms@}
15786 Y (%@{metadata:lavfi.signalstats.YMIN@}-%@{metadata:lavfi.signalstats.YMAX@})
15787 U (%@{metadata:lavfi.signalstats.UMIN@}-%@{metadata:lavfi.signalstats.UMAX@})
15788 V (%@{metadata:lavfi.signalstats.VMIN@}-%@{metadata:lavfi.signalstats.VMAX@})
15789 saturation maximum: %@{metadata:lavfi.signalstats.SATMAX@}
15790
15791 @end example
15792 @end itemize
15793
15794 @anchor{signature}
15795 @section signature
15796
15797 Calculates the MPEG-7 Video Signature. The filter can handle more than one
15798 input. In this case the matching between the inputs can be calculated additionally.
15799 The filter always passes through the first input. The signature of each stream can
15800 be written into a file.
15801
15802 It accepts the following options:
15803
15804 @table @option
15805 @item detectmode
15806 Enable or disable the matching process.
15807
15808 Available values are:
15809
15810 @table @samp
15811 @item off
15812 Disable the calculation of a matching (default).
15813 @item full
15814 Calculate the matching for the whole video and output whether the whole video
15815 matches or only parts.
15816 @item fast
15817 Calculate only until a matching is found or the video ends. Should be faster in
15818 some cases.
15819 @end table
15820
15821 @item nb_inputs
15822 Set the number of inputs. The option value must be a non negative integer.
15823 Default value is 1.
15824
15825 @item filename
15826 Set the path to which the output is written. If there is more than one input,
15827 the path must be a prototype, i.e. must contain %d or %0nd (where n is a positive
15828 integer), that will be replaced with the input number. If no filename is
15829 specified, no output will be written. This is the default.
15830
15831 @item format
15832 Choose the output format.
15833
15834 Available values are:
15835
15836 @table @samp
15837 @item binary
15838 Use the specified binary representation (default).
15839 @item xml
15840 Use the specified xml representation.
15841 @end table
15842
15843 @item th_d
15844 Set threshold to detect one word as similar. The option value must be an integer
15845 greater than zero. The default value is 9000.
15846
15847 @item th_dc
15848 Set threshold to detect all words as similar. The option value must be an integer
15849 greater than zero. The default value is 60000.
15850
15851 @item th_xh
15852 Set threshold to detect frames as similar. The option value must be an integer
15853 greater than zero. The default value is 116.
15854
15855 @item th_di
15856 Set the minimum length of a sequence in frames to recognize it as matching
15857 sequence. The option value must be a non negative integer value.
15858 The default value is 0.
15859
15860 @item th_it
15861 Set the minimum relation, that matching frames to all frames must have.
15862 The option value must be a double value between 0 and 1. The default value is 0.5.
15863 @end table
15864
15865 @subsection Examples
15866
15867 @itemize
15868 @item
15869 To calculate the signature of an input video and store it in signature.bin:
15870 @example
15871 ffmpeg -i input.mkv -vf signature=filename=signature.bin -map 0:v -f null -
15872 @end example
15873
15874 @item
15875 To detect whether two videos match and store the signatures in XML format in
15876 signature0.xml and signature1.xml:
15877 @example
15878 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 -
15879 @end example
15880
15881 @end itemize
15882
15883 @anchor{smartblur}
15884 @section smartblur
15885
15886 Blur the input video without impacting the outlines.
15887
15888 It accepts the following options:
15889
15890 @table @option
15891 @item luma_radius, lr
15892 Set the luma radius. The option value must be a float number in
15893 the range [0.1,5.0] that specifies the variance of the gaussian filter
15894 used to blur the image (slower if larger). Default value is 1.0.
15895
15896 @item luma_strength, ls
15897 Set the luma strength. The option value must be a float number
15898 in the range [-1.0,1.0] that configures the blurring. A value included
15899 in [0.0,1.0] will blur the image whereas a value included in
15900 [-1.0,0.0] will sharpen the image. Default value is 1.0.
15901
15902 @item luma_threshold, lt
15903 Set the luma threshold used as a coefficient to determine
15904 whether a pixel should be blurred or not. The option value must be an
15905 integer in the range [-30,30]. A value of 0 will filter all the image,
15906 a value included in [0,30] will filter flat areas and a value included
15907 in [-30,0] will filter edges. Default value is 0.
15908
15909 @item chroma_radius, cr
15910 Set the chroma radius. The option value must be a float number in
15911 the range [0.1,5.0] that specifies the variance of the gaussian filter
15912 used to blur the image (slower if larger). Default value is @option{luma_radius}.
15913
15914 @item chroma_strength, cs
15915 Set the chroma strength. The option value must be a float number
15916 in the range [-1.0,1.0] that configures the blurring. A value included
15917 in [0.0,1.0] will blur the image whereas a value included in
15918 [-1.0,0.0] will sharpen the image. Default value is @option{luma_strength}.
15919
15920 @item chroma_threshold, ct
15921 Set the chroma threshold used as a coefficient to determine
15922 whether a pixel should be blurred or not. The option value must be an
15923 integer in the range [-30,30]. A value of 0 will filter all the image,
15924 a value included in [0,30] will filter flat areas and a value included
15925 in [-30,0] will filter edges. Default value is @option{luma_threshold}.
15926 @end table
15927
15928 If a chroma option is not explicitly set, the corresponding luma value
15929 is set.
15930
15931 @section ssim
15932
15933 Obtain the SSIM (Structural SImilarity Metric) between two input videos.
15934
15935 This filter takes in input two input videos, the first input is
15936 considered the "main" source and is passed unchanged to the
15937 output. The second input is used as a "reference" video for computing
15938 the SSIM.
15939
15940 Both video inputs must have the same resolution and pixel format for
15941 this filter to work correctly. Also it assumes that both inputs
15942 have the same number of frames, which are compared one by one.
15943
15944 The filter stores the calculated SSIM of each frame.
15945
15946 The description of the accepted parameters follows.
15947
15948 @table @option
15949 @item stats_file, f
15950 If specified the filter will use the named file to save the SSIM of
15951 each individual frame. When filename equals "-" the data is sent to
15952 standard output.
15953 @end table
15954
15955 The file printed if @var{stats_file} is selected, contains a sequence of
15956 key/value pairs of the form @var{key}:@var{value} for each compared
15957 couple of frames.
15958
15959 A description of each shown parameter follows:
15960
15961 @table @option
15962 @item n
15963 sequential number of the input frame, starting from 1
15964
15965 @item Y, U, V, R, G, B
15966 SSIM of the compared frames for the component specified by the suffix.
15967
15968 @item All
15969 SSIM of the compared frames for the whole frame.
15970
15971 @item dB
15972 Same as above but in dB representation.
15973 @end table
15974
15975 This filter also supports the @ref{framesync} options.
15976
15977 For example:
15978 @example
15979 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
15980 [main][ref] ssim="stats_file=stats.log" [out]
15981 @end example
15982
15983 On this example the input file being processed is compared with the
15984 reference file @file{ref_movie.mpg}. The SSIM of each individual frame
15985 is stored in @file{stats.log}.
15986
15987 Another example with both psnr and ssim at same time:
15988 @example
15989 ffmpeg -i main.mpg -i ref.mpg -lavfi  "ssim;[0:v][1:v]psnr" -f null -
15990 @end example
15991
15992 @section stereo3d
15993
15994 Convert between different stereoscopic image formats.
15995
15996 The filters accept the following options:
15997
15998 @table @option
15999 @item in
16000 Set stereoscopic image format of input.
16001
16002 Available values for input image formats are:
16003 @table @samp
16004 @item sbsl
16005 side by side parallel (left eye left, right eye right)
16006
16007 @item sbsr
16008 side by side crosseye (right eye left, left eye right)
16009
16010 @item sbs2l
16011 side by side parallel with half width resolution
16012 (left eye left, right eye right)
16013
16014 @item sbs2r
16015 side by side crosseye with half width resolution
16016 (right eye left, left eye right)
16017
16018 @item abl
16019 above-below (left eye above, right eye below)
16020
16021 @item abr
16022 above-below (right eye above, left eye below)
16023
16024 @item ab2l
16025 above-below with half height resolution
16026 (left eye above, right eye below)
16027
16028 @item ab2r
16029 above-below with half height resolution
16030 (right eye above, left eye below)
16031
16032 @item al
16033 alternating frames (left eye first, right eye second)
16034
16035 @item ar
16036 alternating frames (right eye first, left eye second)
16037
16038 @item irl
16039 interleaved rows (left eye has top row, right eye starts on next row)
16040
16041 @item irr
16042 interleaved rows (right eye has top row, left eye starts on next row)
16043
16044 @item icl
16045 interleaved columns, left eye first
16046
16047 @item icr
16048 interleaved columns, right eye first
16049
16050 Default value is @samp{sbsl}.
16051 @end table
16052
16053 @item out
16054 Set stereoscopic image format of output.
16055
16056 @table @samp
16057 @item sbsl
16058 side by side parallel (left eye left, right eye right)
16059
16060 @item sbsr
16061 side by side crosseye (right eye left, left eye right)
16062
16063 @item sbs2l
16064 side by side parallel with half width resolution
16065 (left eye left, right eye right)
16066
16067 @item sbs2r
16068 side by side crosseye with half width resolution
16069 (right eye left, left eye right)
16070
16071 @item abl
16072 above-below (left eye above, right eye below)
16073
16074 @item abr
16075 above-below (right eye above, left eye below)
16076
16077 @item ab2l
16078 above-below with half height resolution
16079 (left eye above, right eye below)
16080
16081 @item ab2r
16082 above-below with half height resolution
16083 (right eye above, left eye below)
16084
16085 @item al
16086 alternating frames (left eye first, right eye second)
16087
16088 @item ar
16089 alternating frames (right eye first, left eye second)
16090
16091 @item irl
16092 interleaved rows (left eye has top row, right eye starts on next row)
16093
16094 @item irr
16095 interleaved rows (right eye has top row, left eye starts on next row)
16096
16097 @item arbg
16098 anaglyph red/blue gray
16099 (red filter on left eye, blue filter on right eye)
16100
16101 @item argg
16102 anaglyph red/green gray
16103 (red filter on left eye, green filter on right eye)
16104
16105 @item arcg
16106 anaglyph red/cyan gray
16107 (red filter on left eye, cyan filter on right eye)
16108
16109 @item arch
16110 anaglyph red/cyan half colored
16111 (red filter on left eye, cyan filter on right eye)
16112
16113 @item arcc
16114 anaglyph red/cyan color
16115 (red filter on left eye, cyan filter on right eye)
16116
16117 @item arcd
16118 anaglyph red/cyan color optimized with the least squares projection of dubois
16119 (red filter on left eye, cyan filter on right eye)
16120
16121 @item agmg
16122 anaglyph green/magenta gray
16123 (green filter on left eye, magenta filter on right eye)
16124
16125 @item agmh
16126 anaglyph green/magenta half colored
16127 (green filter on left eye, magenta filter on right eye)
16128
16129 @item agmc
16130 anaglyph green/magenta colored
16131 (green filter on left eye, magenta filter on right eye)
16132
16133 @item agmd
16134 anaglyph green/magenta color optimized with the least squares projection of dubois
16135 (green filter on left eye, magenta filter on right eye)
16136
16137 @item aybg
16138 anaglyph yellow/blue gray
16139 (yellow filter on left eye, blue filter on right eye)
16140
16141 @item aybh
16142 anaglyph yellow/blue half colored
16143 (yellow filter on left eye, blue filter on right eye)
16144
16145 @item aybc
16146 anaglyph yellow/blue colored
16147 (yellow filter on left eye, blue filter on right eye)
16148
16149 @item aybd
16150 anaglyph yellow/blue color optimized with the least squares projection of dubois
16151 (yellow filter on left eye, blue filter on right eye)
16152
16153 @item ml
16154 mono output (left eye only)
16155
16156 @item mr
16157 mono output (right eye only)
16158
16159 @item chl
16160 checkerboard, left eye first
16161
16162 @item chr
16163 checkerboard, right eye first
16164
16165 @item icl
16166 interleaved columns, left eye first
16167
16168 @item icr
16169 interleaved columns, right eye first
16170
16171 @item hdmi
16172 HDMI frame pack
16173 @end table
16174
16175 Default value is @samp{arcd}.
16176 @end table
16177
16178 @subsection Examples
16179
16180 @itemize
16181 @item
16182 Convert input video from side by side parallel to anaglyph yellow/blue dubois:
16183 @example
16184 stereo3d=sbsl:aybd
16185 @end example
16186
16187 @item
16188 Convert input video from above below (left eye above, right eye below) to side by side crosseye.
16189 @example
16190 stereo3d=abl:sbsr
16191 @end example
16192 @end itemize
16193
16194 @section streamselect, astreamselect
16195 Select video or audio streams.
16196
16197 The filter accepts the following options:
16198
16199 @table @option
16200 @item inputs
16201 Set number of inputs. Default is 2.
16202
16203 @item map
16204 Set input indexes to remap to outputs.
16205 @end table
16206
16207 @subsection Commands
16208
16209 The @code{streamselect} and @code{astreamselect} filter supports the following
16210 commands:
16211
16212 @table @option
16213 @item map
16214 Set input indexes to remap to outputs.
16215 @end table
16216
16217 @subsection Examples
16218
16219 @itemize
16220 @item
16221 Select first 5 seconds 1st stream and rest of time 2nd stream:
16222 @example
16223 sendcmd='5.0 streamselect map 1',streamselect=inputs=2:map=0
16224 @end example
16225
16226 @item
16227 Same as above, but for audio:
16228 @example
16229 asendcmd='5.0 astreamselect map 1',astreamselect=inputs=2:map=0
16230 @end example
16231 @end itemize
16232
16233 @section sobel
16234 Apply sobel operator to input video stream.
16235
16236 The filter accepts the following option:
16237
16238 @table @option
16239 @item planes
16240 Set which planes will be processed, unprocessed planes will be copied.
16241 By default value 0xf, all planes will be processed.
16242
16243 @item scale
16244 Set value which will be multiplied with filtered result.
16245
16246 @item delta
16247 Set value which will be added to filtered result.
16248 @end table
16249
16250 @anchor{spp}
16251 @section spp
16252
16253 Apply a simple postprocessing filter that compresses and decompresses the image
16254 at several (or - in the case of @option{quality} level @code{6} - all) shifts
16255 and average the results.
16256
16257 The filter accepts the following options:
16258
16259 @table @option
16260 @item quality
16261 Set quality. This option defines the number of levels for averaging. It accepts
16262 an integer in the range 0-6. If set to @code{0}, the filter will have no
16263 effect. A value of @code{6} means the higher quality. For each increment of
16264 that value the speed drops by a factor of approximately 2.  Default value is
16265 @code{3}.
16266
16267 @item qp
16268 Force a constant quantization parameter. If not set, the filter will use the QP
16269 from the video stream (if available).
16270
16271 @item mode
16272 Set thresholding mode. Available modes are:
16273
16274 @table @samp
16275 @item hard
16276 Set hard thresholding (default).
16277 @item soft
16278 Set soft thresholding (better de-ringing effect, but likely blurrier).
16279 @end table
16280
16281 @item use_bframe_qp
16282 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
16283 option may cause flicker since the B-Frames have often larger QP. Default is
16284 @code{0} (not enabled).
16285 @end table
16286
16287 @section sr
16288
16289 Scale the input by applying one of the super-resolution methods based on
16290 convolutional neural networks. Supported models:
16291
16292 @itemize
16293 @item
16294 Super-Resolution Convolutional Neural Network model (SRCNN).
16295 See @url{https://arxiv.org/abs/1501.00092}.
16296
16297 @item
16298 Efficient Sub-Pixel Convolutional Neural Network model (ESPCN).
16299 See @url{https://arxiv.org/abs/1609.05158}.
16300 @end itemize
16301
16302 Training scripts as well as scripts for model generation are provided in
16303 the repository at @url{https://github.com/HighVoltageRocknRoll/sr.git}.
16304
16305 The filter accepts the following options:
16306
16307 @table @option
16308 @item dnn_backend
16309 Specify which DNN backend to use for model loading and execution. This option accepts
16310 the following values:
16311
16312 @table @samp
16313 @item native
16314 Native implementation of DNN loading and execution.
16315
16316 @item tensorflow
16317 TensorFlow backend. To enable this backend you
16318 need to install the TensorFlow for C library (see
16319 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
16320 @code{--enable-libtensorflow}
16321 @end table
16322
16323 Default value is @samp{native}.
16324
16325 @item model
16326 Set path to model file specifying network architecture and its parameters.
16327 Note that different backends use different file formats. TensorFlow backend
16328 can load files for both formats, while native backend can load files for only
16329 its format.
16330
16331 @item scale_factor
16332 Set scale factor for SRCNN model. Allowed values are @code{2}, @code{3} and @code{4}.
16333 Default value is @code{2}. Scale factor is necessary for SRCNN model, because it accepts
16334 input upscaled using bicubic upscaling with proper scale factor.
16335 @end table
16336
16337 @anchor{subtitles}
16338 @section subtitles
16339
16340 Draw subtitles on top of input video using the libass library.
16341
16342 To enable compilation of this filter you need to configure FFmpeg with
16343 @code{--enable-libass}. This filter also requires a build with libavcodec and
16344 libavformat to convert the passed subtitles file to ASS (Advanced Substation
16345 Alpha) subtitles format.
16346
16347 The filter accepts the following options:
16348
16349 @table @option
16350 @item filename, f
16351 Set the filename of the subtitle file to read. It must be specified.
16352
16353 @item original_size
16354 Specify the size of the original video, the video for which the ASS file
16355 was composed. For the syntax of this option, check the
16356 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
16357 Due to a misdesign in ASS aspect ratio arithmetic, this is necessary to
16358 correctly scale the fonts if the aspect ratio has been changed.
16359
16360 @item fontsdir
16361 Set a directory path containing fonts that can be used by the filter.
16362 These fonts will be used in addition to whatever the font provider uses.
16363
16364 @item alpha
16365 Process alpha channel, by default alpha channel is untouched.
16366
16367 @item charenc
16368 Set subtitles input character encoding. @code{subtitles} filter only. Only
16369 useful if not UTF-8.
16370
16371 @item stream_index, si
16372 Set subtitles stream index. @code{subtitles} filter only.
16373
16374 @item force_style
16375 Override default style or script info parameters of the subtitles. It accepts a
16376 string containing ASS style format @code{KEY=VALUE} couples separated by ",".
16377 @end table
16378
16379 If the first key is not specified, it is assumed that the first value
16380 specifies the @option{filename}.
16381
16382 For example, to render the file @file{sub.srt} on top of the input
16383 video, use the command:
16384 @example
16385 subtitles=sub.srt
16386 @end example
16387
16388 which is equivalent to:
16389 @example
16390 subtitles=filename=sub.srt
16391 @end example
16392
16393 To render the default subtitles stream from file @file{video.mkv}, use:
16394 @example
16395 subtitles=video.mkv
16396 @end example
16397
16398 To render the second subtitles stream from that file, use:
16399 @example
16400 subtitles=video.mkv:si=1
16401 @end example
16402
16403 To make the subtitles stream from @file{sub.srt} appear in 80% transparent blue
16404 @code{DejaVu Serif}, use:
16405 @example
16406 subtitles=sub.srt:force_style='FontName=DejaVu Serif,PrimaryColour=&HCCFF0000'
16407 @end example
16408
16409 @section super2xsai
16410
16411 Scale the input by 2x and smooth using the Super2xSaI (Scale and
16412 Interpolate) pixel art scaling algorithm.
16413
16414 Useful for enlarging pixel art images without reducing sharpness.
16415
16416 @section swaprect
16417
16418 Swap two rectangular objects in video.
16419
16420 This filter accepts the following options:
16421
16422 @table @option
16423 @item w
16424 Set object width.
16425
16426 @item h
16427 Set object height.
16428
16429 @item x1
16430 Set 1st rect x coordinate.
16431
16432 @item y1
16433 Set 1st rect y coordinate.
16434
16435 @item x2
16436 Set 2nd rect x coordinate.
16437
16438 @item y2
16439 Set 2nd rect y coordinate.
16440
16441 All expressions are evaluated once for each frame.
16442 @end table
16443
16444 The all options are expressions containing the following constants:
16445
16446 @table @option
16447 @item w
16448 @item h
16449 The input width and height.
16450
16451 @item a
16452 same as @var{w} / @var{h}
16453
16454 @item sar
16455 input sample aspect ratio
16456
16457 @item dar
16458 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
16459
16460 @item n
16461 The number of the input frame, starting from 0.
16462
16463 @item t
16464 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
16465
16466 @item pos
16467 the position in the file of the input frame, NAN if unknown
16468 @end table
16469
16470 @section swapuv
16471 Swap U & V plane.
16472
16473 @section telecine
16474
16475 Apply telecine process to the video.
16476
16477 This filter accepts the following options:
16478
16479 @table @option
16480 @item first_field
16481 @table @samp
16482 @item top, t
16483 top field first
16484 @item bottom, b
16485 bottom field first
16486 The default value is @code{top}.
16487 @end table
16488
16489 @item pattern
16490 A string of numbers representing the pulldown pattern you wish to apply.
16491 The default value is @code{23}.
16492 @end table
16493
16494 @example
16495 Some typical patterns:
16496
16497 NTSC output (30i):
16498 27.5p: 32222
16499 24p: 23 (classic)
16500 24p: 2332 (preferred)
16501 20p: 33
16502 18p: 334
16503 16p: 3444
16504
16505 PAL output (25i):
16506 27.5p: 12222
16507 24p: 222222222223 ("Euro pulldown")
16508 16.67p: 33
16509 16p: 33333334
16510 @end example
16511
16512 @section threshold
16513
16514 Apply threshold effect to video stream.
16515
16516 This filter needs four video streams to perform thresholding.
16517 First stream is stream we are filtering.
16518 Second stream is holding threshold values, third stream is holding min values,
16519 and last, fourth stream is holding max values.
16520
16521 The filter accepts the following option:
16522
16523 @table @option
16524 @item planes
16525 Set which planes will be processed, unprocessed planes will be copied.
16526 By default value 0xf, all planes will be processed.
16527 @end table
16528
16529 For example if first stream pixel's component value is less then threshold value
16530 of pixel component from 2nd threshold stream, third stream value will picked,
16531 otherwise fourth stream pixel component value will be picked.
16532
16533 Using color source filter one can perform various types of thresholding:
16534
16535 @subsection Examples
16536
16537 @itemize
16538 @item
16539 Binary threshold, using gray color as threshold:
16540 @example
16541 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=black -f lavfi -i color=white -lavfi threshold output.avi
16542 @end example
16543
16544 @item
16545 Inverted binary threshold, using gray color as threshold:
16546 @example
16547 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -f lavfi -i color=black -lavfi threshold output.avi
16548 @end example
16549
16550 @item
16551 Truncate binary threshold, using gray color as threshold:
16552 @example
16553 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=gray -lavfi threshold output.avi
16554 @end example
16555
16556 @item
16557 Threshold to zero, using gray color as threshold:
16558 @example
16559 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -i 320x240.avi -lavfi threshold output.avi
16560 @end example
16561
16562 @item
16563 Inverted threshold to zero, using gray color as threshold:
16564 @example
16565 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=white -lavfi threshold output.avi
16566 @end example
16567 @end itemize
16568
16569 @section thumbnail
16570 Select the most representative frame in a given sequence of consecutive frames.
16571
16572 The filter accepts the following options:
16573
16574 @table @option
16575 @item n
16576 Set the frames batch size to analyze; in a set of @var{n} frames, the filter
16577 will pick one of them, and then handle the next batch of @var{n} frames until
16578 the end. Default is @code{100}.
16579 @end table
16580
16581 Since the filter keeps track of the whole frames sequence, a bigger @var{n}
16582 value will result in a higher memory usage, so a high value is not recommended.
16583
16584 @subsection Examples
16585
16586 @itemize
16587 @item
16588 Extract one picture each 50 frames:
16589 @example
16590 thumbnail=50
16591 @end example
16592
16593 @item
16594 Complete example of a thumbnail creation with @command{ffmpeg}:
16595 @example
16596 ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
16597 @end example
16598 @end itemize
16599
16600 @section tile
16601
16602 Tile several successive frames together.
16603
16604 The filter accepts the following options:
16605
16606 @table @option
16607
16608 @item layout
16609 Set the grid size (i.e. the number of lines and columns). For the syntax of
16610 this option, check the
16611 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
16612
16613 @item nb_frames
16614 Set the maximum number of frames to render in the given area. It must be less
16615 than or equal to @var{w}x@var{h}. The default value is @code{0}, meaning all
16616 the area will be used.
16617
16618 @item margin
16619 Set the outer border margin in pixels.
16620
16621 @item padding
16622 Set the inner border thickness (i.e. the number of pixels between frames). For
16623 more advanced padding options (such as having different values for the edges),
16624 refer to the pad video filter.
16625
16626 @item color
16627 Specify the color of the unused area. For the syntax of this option, check the
16628 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
16629 The default value of @var{color} is "black".
16630
16631 @item overlap
16632 Set the number of frames to overlap when tiling several successive frames together.
16633 The value must be between @code{0} and @var{nb_frames - 1}.
16634
16635 @item init_padding
16636 Set the number of frames to initially be empty before displaying first output frame.
16637 This controls how soon will one get first output frame.
16638 The value must be between @code{0} and @var{nb_frames - 1}.
16639 @end table
16640
16641 @subsection Examples
16642
16643 @itemize
16644 @item
16645 Produce 8x8 PNG tiles of all keyframes (@option{-skip_frame nokey}) in a movie:
16646 @example
16647 ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
16648 @end example
16649 The @option{-vsync 0} is necessary to prevent @command{ffmpeg} from
16650 duplicating each output frame to accommodate the originally detected frame
16651 rate.
16652
16653 @item
16654 Display @code{5} pictures in an area of @code{3x2} frames,
16655 with @code{7} pixels between them, and @code{2} pixels of initial margin, using
16656 mixed flat and named options:
16657 @example
16658 tile=3x2:nb_frames=5:padding=7:margin=2
16659 @end example
16660 @end itemize
16661
16662 @section tinterlace
16663
16664 Perform various types of temporal field interlacing.
16665
16666 Frames are counted starting from 1, so the first input frame is
16667 considered odd.
16668
16669 The filter accepts the following options:
16670
16671 @table @option
16672
16673 @item mode
16674 Specify the mode of the interlacing. This option can also be specified
16675 as a value alone. See below for a list of values for this option.
16676
16677 Available values are:
16678
16679 @table @samp
16680 @item merge, 0
16681 Move odd frames into the upper field, even into the lower field,
16682 generating a double height frame at half frame rate.
16683 @example
16684  ------> time
16685 Input:
16686 Frame 1         Frame 2         Frame 3         Frame 4
16687
16688 11111           22222           33333           44444
16689 11111           22222           33333           44444
16690 11111           22222           33333           44444
16691 11111           22222           33333           44444
16692
16693 Output:
16694 11111                           33333
16695 22222                           44444
16696 11111                           33333
16697 22222                           44444
16698 11111                           33333
16699 22222                           44444
16700 11111                           33333
16701 22222                           44444
16702 @end example
16703
16704 @item drop_even, 1
16705 Only output odd frames, even frames are dropped, generating a frame with
16706 unchanged height at half frame rate.
16707
16708 @example
16709  ------> time
16710 Input:
16711 Frame 1         Frame 2         Frame 3         Frame 4
16712
16713 11111           22222           33333           44444
16714 11111           22222           33333           44444
16715 11111           22222           33333           44444
16716 11111           22222           33333           44444
16717
16718 Output:
16719 11111                           33333
16720 11111                           33333
16721 11111                           33333
16722 11111                           33333
16723 @end example
16724
16725 @item drop_odd, 2
16726 Only output even frames, odd frames are dropped, generating a frame with
16727 unchanged height at half frame rate.
16728
16729 @example
16730  ------> time
16731 Input:
16732 Frame 1         Frame 2         Frame 3         Frame 4
16733
16734 11111           22222           33333           44444
16735 11111           22222           33333           44444
16736 11111           22222           33333           44444
16737 11111           22222           33333           44444
16738
16739 Output:
16740                 22222                           44444
16741                 22222                           44444
16742                 22222                           44444
16743                 22222                           44444
16744 @end example
16745
16746 @item pad, 3
16747 Expand each frame to full height, but pad alternate lines with black,
16748 generating a frame with double height at the same input frame rate.
16749
16750 @example
16751  ------> time
16752 Input:
16753 Frame 1         Frame 2         Frame 3         Frame 4
16754
16755 11111           22222           33333           44444
16756 11111           22222           33333           44444
16757 11111           22222           33333           44444
16758 11111           22222           33333           44444
16759
16760 Output:
16761 11111           .....           33333           .....
16762 .....           22222           .....           44444
16763 11111           .....           33333           .....
16764 .....           22222           .....           44444
16765 11111           .....           33333           .....
16766 .....           22222           .....           44444
16767 11111           .....           33333           .....
16768 .....           22222           .....           44444
16769 @end example
16770
16771
16772 @item interleave_top, 4
16773 Interleave the upper field from odd frames with the lower field from
16774 even frames, generating a frame with unchanged height at half frame rate.
16775
16776 @example
16777  ------> time
16778 Input:
16779 Frame 1         Frame 2         Frame 3         Frame 4
16780
16781 11111<-         22222           33333<-         44444
16782 11111           22222<-         33333           44444<-
16783 11111<-         22222           33333<-         44444
16784 11111           22222<-         33333           44444<-
16785
16786 Output:
16787 11111                           33333
16788 22222                           44444
16789 11111                           33333
16790 22222                           44444
16791 @end example
16792
16793
16794 @item interleave_bottom, 5
16795 Interleave the lower field from odd frames with the upper field from
16796 even frames, generating a frame with unchanged height at half frame rate.
16797
16798 @example
16799  ------> time
16800 Input:
16801 Frame 1         Frame 2         Frame 3         Frame 4
16802
16803 11111           22222<-         33333           44444<-
16804 11111<-         22222           33333<-         44444
16805 11111           22222<-         33333           44444<-
16806 11111<-         22222           33333<-         44444
16807
16808 Output:
16809 22222                           44444
16810 11111                           33333
16811 22222                           44444
16812 11111                           33333
16813 @end example
16814
16815
16816 @item interlacex2, 6
16817 Double frame rate with unchanged height. Frames are inserted each
16818 containing the second temporal field from the previous input frame and
16819 the first temporal field from the next input frame. This mode relies on
16820 the top_field_first flag. Useful for interlaced video displays with no
16821 field synchronisation.
16822
16823 @example
16824  ------> time
16825 Input:
16826 Frame 1         Frame 2         Frame 3         Frame 4
16827
16828 11111           22222           33333           44444
16829  11111           22222           33333           44444
16830 11111           22222           33333           44444
16831  11111           22222           33333           44444
16832
16833 Output:
16834 11111   22222   22222   33333   33333   44444   44444
16835  11111   11111   22222   22222   33333   33333   44444
16836 11111   22222   22222   33333   33333   44444   44444
16837  11111   11111   22222   22222   33333   33333   44444
16838 @end example
16839
16840
16841 @item mergex2, 7
16842 Move odd frames into the upper field, even into the lower field,
16843 generating a double height frame at same frame rate.
16844
16845 @example
16846  ------> time
16847 Input:
16848 Frame 1         Frame 2         Frame 3         Frame 4
16849
16850 11111           22222           33333           44444
16851 11111           22222           33333           44444
16852 11111           22222           33333           44444
16853 11111           22222           33333           44444
16854
16855 Output:
16856 11111           33333           33333           55555
16857 22222           22222           44444           44444
16858 11111           33333           33333           55555
16859 22222           22222           44444           44444
16860 11111           33333           33333           55555
16861 22222           22222           44444           44444
16862 11111           33333           33333           55555
16863 22222           22222           44444           44444
16864 @end example
16865
16866 @end table
16867
16868 Numeric values are deprecated but are accepted for backward
16869 compatibility reasons.
16870
16871 Default mode is @code{merge}.
16872
16873 @item flags
16874 Specify flags influencing the filter process.
16875
16876 Available value for @var{flags} is:
16877
16878 @table @option
16879 @item low_pass_filter, vlfp
16880 Enable linear vertical low-pass filtering in the filter.
16881 Vertical low-pass filtering is required when creating an interlaced
16882 destination from a progressive source which contains high-frequency
16883 vertical detail. Filtering will reduce interlace 'twitter' and Moire
16884 patterning.
16885
16886 @item complex_filter, cvlfp
16887 Enable complex vertical low-pass filtering.
16888 This will slightly less reduce interlace 'twitter' and Moire
16889 patterning but better retain detail and subjective sharpness impression.
16890
16891 @end table
16892
16893 Vertical low-pass filtering can only be enabled for @option{mode}
16894 @var{interleave_top} and @var{interleave_bottom}.
16895
16896 @end table
16897
16898 @section tmix
16899
16900 Mix successive video frames.
16901
16902 A description of the accepted options follows.
16903
16904 @table @option
16905 @item frames
16906 The number of successive frames to mix. If unspecified, it defaults to 3.
16907
16908 @item weights
16909 Specify weight of each input video frame.
16910 Each weight is separated by space. If number of weights is smaller than
16911 number of @var{frames} last specified weight will be used for all remaining
16912 unset weights.
16913
16914 @item scale
16915 Specify scale, if it is set it will be multiplied with sum
16916 of each weight multiplied with pixel values to give final destination
16917 pixel value. By default @var{scale} is auto scaled to sum of weights.
16918 @end table
16919
16920 @subsection Examples
16921
16922 @itemize
16923 @item
16924 Average 7 successive frames:
16925 @example
16926 tmix=frames=7:weights="1 1 1 1 1 1 1"
16927 @end example
16928
16929 @item
16930 Apply simple temporal convolution:
16931 @example
16932 tmix=frames=3:weights="-1 3 -1"
16933 @end example
16934
16935 @item
16936 Similar as above but only showing temporal differences:
16937 @example
16938 tmix=frames=3:weights="-1 2 -1":scale=1
16939 @end example
16940 @end itemize
16941
16942 @anchor{tonemap}
16943 @section tonemap
16944 Tone map colors from different dynamic ranges.
16945
16946 This filter expects data in single precision floating point, as it needs to
16947 operate on (and can output) out-of-range values. Another filter, such as
16948 @ref{zscale}, is needed to convert the resulting frame to a usable format.
16949
16950 The tonemapping algorithms implemented only work on linear light, so input
16951 data should be linearized beforehand (and possibly correctly tagged).
16952
16953 @example
16954 ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT
16955 @end example
16956
16957 @subsection Options
16958 The filter accepts the following options.
16959
16960 @table @option
16961 @item tonemap
16962 Set the tone map algorithm to use.
16963
16964 Possible values are:
16965 @table @var
16966 @item none
16967 Do not apply any tone map, only desaturate overbright pixels.
16968
16969 @item clip
16970 Hard-clip any out-of-range values. Use it for perfect color accuracy for
16971 in-range values, while distorting out-of-range values.
16972
16973 @item linear
16974 Stretch the entire reference gamut to a linear multiple of the display.
16975
16976 @item gamma
16977 Fit a logarithmic transfer between the tone curves.
16978
16979 @item reinhard
16980 Preserve overall image brightness with a simple curve, using nonlinear
16981 contrast, which results in flattening details and degrading color accuracy.
16982
16983 @item hable
16984 Preserve both dark and bright details better than @var{reinhard}, at the cost
16985 of slightly darkening everything. Use it when detail preservation is more
16986 important than color and brightness accuracy.
16987
16988 @item mobius
16989 Smoothly map out-of-range values, while retaining contrast and colors for
16990 in-range material as much as possible. Use it when color accuracy is more
16991 important than detail preservation.
16992 @end table
16993
16994 Default is none.
16995
16996 @item param
16997 Tune the tone mapping algorithm.
16998
16999 This affects the following algorithms:
17000 @table @var
17001 @item none
17002 Ignored.
17003
17004 @item linear
17005 Specifies the scale factor to use while stretching.
17006 Default to 1.0.
17007
17008 @item gamma
17009 Specifies the exponent of the function.
17010 Default to 1.8.
17011
17012 @item clip
17013 Specify an extra linear coefficient to multiply into the signal before clipping.
17014 Default to 1.0.
17015
17016 @item reinhard
17017 Specify the local contrast coefficient at the display peak.
17018 Default to 0.5, which means that in-gamut values will be about half as bright
17019 as when clipping.
17020
17021 @item hable
17022 Ignored.
17023
17024 @item mobius
17025 Specify the transition point from linear to mobius transform. Every value
17026 below this point is guaranteed to be mapped 1:1. The higher the value, the
17027 more accurate the result will be, at the cost of losing bright details.
17028 Default to 0.3, which due to the steep initial slope still preserves in-range
17029 colors fairly accurately.
17030 @end table
17031
17032 @item desat
17033 Apply desaturation for highlights that exceed this level of brightness. The
17034 higher the parameter, the more color information will be preserved. This
17035 setting helps prevent unnaturally blown-out colors for super-highlights, by
17036 (smoothly) turning into white instead. This makes images feel more natural,
17037 at the cost of reducing information about out-of-range colors.
17038
17039 The default of 2.0 is somewhat conservative and will mostly just apply to
17040 skies or directly sunlit surfaces. A setting of 0.0 disables this option.
17041
17042 This option works only if the input frame has a supported color tag.
17043
17044 @item peak
17045 Override signal/nominal/reference peak with this value. Useful when the
17046 embedded peak information in display metadata is not reliable or when tone
17047 mapping from a lower range to a higher range.
17048 @end table
17049
17050 @section tpad
17051
17052 Temporarily pad video frames.
17053
17054 The filter accepts the following options:
17055
17056 @table @option
17057 @item start
17058 Specify number of delay frames before input video stream.
17059
17060 @item stop
17061 Specify number of padding frames after input video stream.
17062 Set to -1 to pad indefinitely.
17063
17064 @item start_mode
17065 Set kind of frames added to beginning of stream.
17066 Can be either @var{add} or @var{clone}.
17067 With @var{add} frames of solid-color are added.
17068 With @var{clone} frames are clones of first frame.
17069
17070 @item stop_mode
17071 Set kind of frames added to end of stream.
17072 Can be either @var{add} or @var{clone}.
17073 With @var{add} frames of solid-color are added.
17074 With @var{clone} frames are clones of last frame.
17075
17076 @item start_duration, stop_duration
17077 Specify the duration of the start/stop delay. See
17078 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
17079 for the accepted syntax.
17080 These options override @var{start} and @var{stop}.
17081
17082 @item color
17083 Specify the color of the padded area. For the syntax of this option,
17084 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
17085 manual,ffmpeg-utils}.
17086
17087 The default value of @var{color} is "black".
17088 @end table
17089
17090 @anchor{transpose}
17091 @section transpose
17092
17093 Transpose rows with columns in the input video and optionally flip it.
17094
17095 It accepts the following parameters:
17096
17097 @table @option
17098
17099 @item dir
17100 Specify the transposition direction.
17101
17102 Can assume the following values:
17103 @table @samp
17104 @item 0, 4, cclock_flip
17105 Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
17106 @example
17107 L.R     L.l
17108 . . ->  . .
17109 l.r     R.r
17110 @end example
17111
17112 @item 1, 5, clock
17113 Rotate by 90 degrees clockwise, that is:
17114 @example
17115 L.R     l.L
17116 . . ->  . .
17117 l.r     r.R
17118 @end example
17119
17120 @item 2, 6, cclock
17121 Rotate by 90 degrees counterclockwise, that is:
17122 @example
17123 L.R     R.r
17124 . . ->  . .
17125 l.r     L.l
17126 @end example
17127
17128 @item 3, 7, clock_flip
17129 Rotate by 90 degrees clockwise and vertically flip, that is:
17130 @example
17131 L.R     r.R
17132 . . ->  . .
17133 l.r     l.L
17134 @end example
17135 @end table
17136
17137 For values between 4-7, the transposition is only done if the input
17138 video geometry is portrait and not landscape. These values are
17139 deprecated, the @code{passthrough} option should be used instead.
17140
17141 Numerical values are deprecated, and should be dropped in favor of
17142 symbolic constants.
17143
17144 @item passthrough
17145 Do not apply the transposition if the input geometry matches the one
17146 specified by the specified value. It accepts the following values:
17147 @table @samp
17148 @item none
17149 Always apply transposition.
17150 @item portrait
17151 Preserve portrait geometry (when @var{height} >= @var{width}).
17152 @item landscape
17153 Preserve landscape geometry (when @var{width} >= @var{height}).
17154 @end table
17155
17156 Default value is @code{none}.
17157 @end table
17158
17159 For example to rotate by 90 degrees clockwise and preserve portrait
17160 layout:
17161 @example
17162 transpose=dir=1:passthrough=portrait
17163 @end example
17164
17165 The command above can also be specified as:
17166 @example
17167 transpose=1:portrait
17168 @end example
17169
17170 @section transpose_npp
17171
17172 Transpose rows with columns in the input video and optionally flip it.
17173 For more in depth examples see the @ref{transpose} video filter, which shares mostly the same options.
17174
17175 It accepts the following parameters:
17176
17177 @table @option
17178
17179 @item dir
17180 Specify the transposition direction.
17181
17182 Can assume the following values:
17183 @table @samp
17184 @item cclock_flip
17185 Rotate by 90 degrees counterclockwise and vertically flip. (default)
17186
17187 @item clock
17188 Rotate by 90 degrees clockwise.
17189
17190 @item cclock
17191 Rotate by 90 degrees counterclockwise.
17192
17193 @item clock_flip
17194 Rotate by 90 degrees clockwise and vertically flip.
17195 @end table
17196
17197 @item passthrough
17198 Do not apply the transposition if the input geometry matches the one
17199 specified by the specified value. It accepts the following values:
17200 @table @samp
17201 @item none
17202 Always apply transposition. (default)
17203 @item portrait
17204 Preserve portrait geometry (when @var{height} >= @var{width}).
17205 @item landscape
17206 Preserve landscape geometry (when @var{width} >= @var{height}).
17207 @end table
17208
17209 @end table
17210
17211 @section trim
17212 Trim the input so that the output contains one continuous subpart of the input.
17213
17214 It accepts the following parameters:
17215 @table @option
17216 @item start
17217 Specify the time of the start of the kept section, i.e. the frame with the
17218 timestamp @var{start} will be the first frame in the output.
17219
17220 @item end
17221 Specify the time of the first frame that will be dropped, i.e. the frame
17222 immediately preceding the one with the timestamp @var{end} will be the last
17223 frame in the output.
17224
17225 @item start_pts
17226 This is the same as @var{start}, except this option sets the start timestamp
17227 in timebase units instead of seconds.
17228
17229 @item end_pts
17230 This is the same as @var{end}, except this option sets the end timestamp
17231 in timebase units instead of seconds.
17232
17233 @item duration
17234 The maximum duration of the output in seconds.
17235
17236 @item start_frame
17237 The number of the first frame that should be passed to the output.
17238
17239 @item end_frame
17240 The number of the first frame that should be dropped.
17241 @end table
17242
17243 @option{start}, @option{end}, and @option{duration} are expressed as time
17244 duration specifications; see
17245 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
17246 for the accepted syntax.
17247
17248 Note that the first two sets of the start/end options and the @option{duration}
17249 option look at the frame timestamp, while the _frame variants simply count the
17250 frames that pass through the filter. Also note that this filter does not modify
17251 the timestamps. If you wish for the output timestamps to start at zero, insert a
17252 setpts filter after the trim filter.
17253
17254 If multiple start or end options are set, this filter tries to be greedy and
17255 keep all the frames that match at least one of the specified constraints. To keep
17256 only the part that matches all the constraints at once, chain multiple trim
17257 filters.
17258
17259 The defaults are such that all the input is kept. So it is possible to set e.g.
17260 just the end values to keep everything before the specified time.
17261
17262 Examples:
17263 @itemize
17264 @item
17265 Drop everything except the second minute of input:
17266 @example
17267 ffmpeg -i INPUT -vf trim=60:120
17268 @end example
17269
17270 @item
17271 Keep only the first second:
17272 @example
17273 ffmpeg -i INPUT -vf trim=duration=1
17274 @end example
17275
17276 @end itemize
17277
17278 @section unpremultiply
17279 Apply alpha unpremultiply effect to input video stream using first plane
17280 of second stream as alpha.
17281
17282 Both streams must have same dimensions and same pixel format.
17283
17284 The filter accepts the following option:
17285
17286 @table @option
17287 @item planes
17288 Set which planes will be processed, unprocessed planes will be copied.
17289 By default value 0xf, all planes will be processed.
17290
17291 If the format has 1 or 2 components, then luma is bit 0.
17292 If the format has 3 or 4 components:
17293 for RGB formats bit 0 is green, bit 1 is blue and bit 2 is red;
17294 for YUV formats bit 0 is luma, bit 1 is chroma-U and bit 2 is chroma-V.
17295 If present, the alpha channel is always the last bit.
17296
17297 @item inplace
17298 Do not require 2nd input for processing, instead use alpha plane from input stream.
17299 @end table
17300
17301 @anchor{unsharp}
17302 @section unsharp
17303
17304 Sharpen or blur the input video.
17305
17306 It accepts the following parameters:
17307
17308 @table @option
17309 @item luma_msize_x, lx
17310 Set the luma matrix horizontal size. It must be an odd integer between
17311 3 and 23. The default value is 5.
17312
17313 @item luma_msize_y, ly
17314 Set the luma matrix vertical size. It must be an odd integer between 3
17315 and 23. The default value is 5.
17316
17317 @item luma_amount, la
17318 Set the luma effect strength. It must be a floating point number, reasonable
17319 values lay between -1.5 and 1.5.
17320
17321 Negative values will blur the input video, while positive values will
17322 sharpen it, a value of zero will disable the effect.
17323
17324 Default value is 1.0.
17325
17326 @item chroma_msize_x, cx
17327 Set the chroma matrix horizontal size. It must be an odd integer
17328 between 3 and 23. The default value is 5.
17329
17330 @item chroma_msize_y, cy
17331 Set the chroma matrix vertical size. It must be an odd integer
17332 between 3 and 23. The default value is 5.
17333
17334 @item chroma_amount, ca
17335 Set the chroma effect strength. It must be a floating point number, reasonable
17336 values lay between -1.5 and 1.5.
17337
17338 Negative values will blur the input video, while positive values will
17339 sharpen it, a value of zero will disable the effect.
17340
17341 Default value is 0.0.
17342
17343 @end table
17344
17345 All parameters are optional and default to the equivalent of the
17346 string '5:5:1.0:5:5:0.0'.
17347
17348 @subsection Examples
17349
17350 @itemize
17351 @item
17352 Apply strong luma sharpen effect:
17353 @example
17354 unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
17355 @end example
17356
17357 @item
17358 Apply a strong blur of both luma and chroma parameters:
17359 @example
17360 unsharp=7:7:-2:7:7:-2
17361 @end example
17362 @end itemize
17363
17364 @section uspp
17365
17366 Apply ultra slow/simple postprocessing filter that compresses and decompresses
17367 the image at several (or - in the case of @option{quality} level @code{8} - all)
17368 shifts and average the results.
17369
17370 The way this differs from the behavior of spp is that uspp actually encodes &
17371 decodes each case with libavcodec Snow, whereas spp uses a simplified intra only 8x8
17372 DCT similar to MJPEG.
17373
17374 The filter accepts the following options:
17375
17376 @table @option
17377 @item quality
17378 Set quality. This option defines the number of levels for averaging. It accepts
17379 an integer in the range 0-8. If set to @code{0}, the filter will have no
17380 effect. A value of @code{8} means the higher quality. For each increment of
17381 that value the speed drops by a factor of approximately 2.  Default value is
17382 @code{3}.
17383
17384 @item qp
17385 Force a constant quantization parameter. If not set, the filter will use the QP
17386 from the video stream (if available).
17387 @end table
17388
17389 @section vaguedenoiser
17390
17391 Apply a wavelet based denoiser.
17392
17393 It transforms each frame from the video input into the wavelet domain,
17394 using Cohen-Daubechies-Feauveau 9/7. Then it applies some filtering to
17395 the obtained coefficients. It does an inverse wavelet transform after.
17396 Due to wavelet properties, it should give a nice smoothed result, and
17397 reduced noise, without blurring picture features.
17398
17399 This filter accepts the following options:
17400
17401 @table @option
17402 @item threshold
17403 The filtering strength. The higher, the more filtered the video will be.
17404 Hard thresholding can use a higher threshold than soft thresholding
17405 before the video looks overfiltered. Default value is 2.
17406
17407 @item method
17408 The filtering method the filter will use.
17409
17410 It accepts the following values:
17411 @table @samp
17412 @item hard
17413 All values under the threshold will be zeroed.
17414
17415 @item soft
17416 All values under the threshold will be zeroed. All values above will be
17417 reduced by the threshold.
17418
17419 @item garrote
17420 Scales or nullifies coefficients - intermediary between (more) soft and
17421 (less) hard thresholding.
17422 @end table
17423
17424 Default is garrote.
17425
17426 @item nsteps
17427 Number of times, the wavelet will decompose the picture. Picture can't
17428 be decomposed beyond a particular point (typically, 8 for a 640x480
17429 frame - as 2^9 = 512 > 480). Valid values are integers between 1 and 32. Default value is 6.
17430
17431 @item percent
17432 Partial of full denoising (limited coefficients shrinking), from 0 to 100. Default value is 85.
17433
17434 @item planes
17435 A list of the planes to process. By default all planes are processed.
17436 @end table
17437
17438 @section vectorscope
17439
17440 Display 2 color component values in the two dimensional graph (which is called
17441 a vectorscope).
17442
17443 This filter accepts the following options:
17444
17445 @table @option
17446 @item mode, m
17447 Set vectorscope mode.
17448
17449 It accepts the following values:
17450 @table @samp
17451 @item gray
17452 Gray values are displayed on graph, higher brightness means more pixels have
17453 same component color value on location in graph. This is the default mode.
17454
17455 @item color
17456 Gray values are displayed on graph. Surrounding pixels values which are not
17457 present in video frame are drawn in gradient of 2 color components which are
17458 set by option @code{x} and @code{y}. The 3rd color component is static.
17459
17460 @item color2
17461 Actual color components values present in video frame are displayed on graph.
17462
17463 @item color3
17464 Similar as color2 but higher frequency of same values @code{x} and @code{y}
17465 on graph increases value of another color component, which is luminance by
17466 default values of @code{x} and @code{y}.
17467
17468 @item color4
17469 Actual colors present in video frame are displayed on graph. If two different
17470 colors map to same position on graph then color with higher value of component
17471 not present in graph is picked.
17472
17473 @item color5
17474 Gray values are displayed on graph. Similar to @code{color} but with 3rd color
17475 component picked from radial gradient.
17476 @end table
17477
17478 @item x
17479 Set which color component will be represented on X-axis. Default is @code{1}.
17480
17481 @item y
17482 Set which color component will be represented on Y-axis. Default is @code{2}.
17483
17484 @item intensity, i
17485 Set intensity, used by modes: gray, color, color3 and color5 for increasing brightness
17486 of color component which represents frequency of (X, Y) location in graph.
17487
17488 @item envelope, e
17489 @table @samp
17490 @item none
17491 No envelope, this is default.
17492
17493 @item instant
17494 Instant envelope, even darkest single pixel will be clearly highlighted.
17495
17496 @item peak
17497 Hold maximum and minimum values presented in graph over time. This way you
17498 can still spot out of range values without constantly looking at vectorscope.
17499
17500 @item peak+instant
17501 Peak and instant envelope combined together.
17502 @end table
17503
17504 @item graticule, g
17505 Set what kind of graticule to draw.
17506 @table @samp
17507 @item none
17508 @item green
17509 @item color
17510 @end table
17511
17512 @item opacity, o
17513 Set graticule opacity.
17514
17515 @item flags, f
17516 Set graticule flags.
17517
17518 @table @samp
17519 @item white
17520 Draw graticule for white point.
17521
17522 @item black
17523 Draw graticule for black point.
17524
17525 @item name
17526 Draw color points short names.
17527 @end table
17528
17529 @item bgopacity, b
17530 Set background opacity.
17531
17532 @item lthreshold, l
17533 Set low threshold for color component not represented on X or Y axis.
17534 Values lower than this value will be ignored. Default is 0.
17535 Note this value is multiplied with actual max possible value one pixel component
17536 can have. So for 8-bit input and low threshold value of 0.1 actual threshold
17537 is 0.1 * 255 = 25.
17538
17539 @item hthreshold, h
17540 Set high threshold for color component not represented on X or Y axis.
17541 Values higher than this value will be ignored. Default is 1.
17542 Note this value is multiplied with actual max possible value one pixel component
17543 can have. So for 8-bit input and high threshold value of 0.9 actual threshold
17544 is 0.9 * 255 = 230.
17545
17546 @item colorspace, c
17547 Set what kind of colorspace to use when drawing graticule.
17548 @table @samp
17549 @item auto
17550 @item 601
17551 @item 709
17552 @end table
17553 Default is auto.
17554 @end table
17555
17556 @anchor{vidstabdetect}
17557 @section vidstabdetect
17558
17559 Analyze video stabilization/deshaking. Perform pass 1 of 2, see
17560 @ref{vidstabtransform} for pass 2.
17561
17562 This filter generates a file with relative translation and rotation
17563 transform information about subsequent frames, which is then used by
17564 the @ref{vidstabtransform} filter.
17565
17566 To enable compilation of this filter you need to configure FFmpeg with
17567 @code{--enable-libvidstab}.
17568
17569 This filter accepts the following options:
17570
17571 @table @option
17572 @item result
17573 Set the path to the file used to write the transforms information.
17574 Default value is @file{transforms.trf}.
17575
17576 @item shakiness
17577 Set how shaky the video is and how quick the camera is. It accepts an
17578 integer in the range 1-10, a value of 1 means little shakiness, a
17579 value of 10 means strong shakiness. Default value is 5.
17580
17581 @item accuracy
17582 Set the accuracy of the detection process. It must be a value in the
17583 range 1-15. A value of 1 means low accuracy, a value of 15 means high
17584 accuracy. Default value is 15.
17585
17586 @item stepsize
17587 Set stepsize of the search process. The region around minimum is
17588 scanned with 1 pixel resolution. Default value is 6.
17589
17590 @item mincontrast
17591 Set minimum contrast. Below this value a local measurement field is
17592 discarded. Must be a floating point value in the range 0-1. Default
17593 value is 0.3.
17594
17595 @item tripod
17596 Set reference frame number for tripod mode.
17597
17598 If enabled, the motion of the frames is compared to a reference frame
17599 in the filtered stream, identified by the specified number. The idea
17600 is to compensate all movements in a more-or-less static scene and keep
17601 the camera view absolutely still.
17602
17603 If set to 0, it is disabled. The frames are counted starting from 1.
17604
17605 @item show
17606 Show fields and transforms in the resulting frames. It accepts an
17607 integer in the range 0-2. Default value is 0, which disables any
17608 visualization.
17609 @end table
17610
17611 @subsection Examples
17612
17613 @itemize
17614 @item
17615 Use default values:
17616 @example
17617 vidstabdetect
17618 @end example
17619
17620 @item
17621 Analyze strongly shaky movie and put the results in file
17622 @file{mytransforms.trf}:
17623 @example
17624 vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
17625 @end example
17626
17627 @item
17628 Visualize the result of internal transformations in the resulting
17629 video:
17630 @example
17631 vidstabdetect=show=1
17632 @end example
17633
17634 @item
17635 Analyze a video with medium shakiness using @command{ffmpeg}:
17636 @example
17637 ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
17638 @end example
17639 @end itemize
17640
17641 @anchor{vidstabtransform}
17642 @section vidstabtransform
17643
17644 Video stabilization/deshaking: pass 2 of 2,
17645 see @ref{vidstabdetect} for pass 1.
17646
17647 Read a file with transform information for each frame and
17648 apply/compensate them. Together with the @ref{vidstabdetect}
17649 filter this can be used to deshake videos. See also
17650 @url{http://public.hronopik.de/vid.stab}. It is important to also use
17651 the @ref{unsharp} filter, see below.
17652
17653 To enable compilation of this filter you need to configure FFmpeg with
17654 @code{--enable-libvidstab}.
17655
17656 @subsection Options
17657
17658 @table @option
17659 @item input
17660 Set path to the file used to read the transforms. Default value is
17661 @file{transforms.trf}.
17662
17663 @item smoothing
17664 Set the number of frames (value*2 + 1) used for lowpass filtering the
17665 camera movements. Default value is 10.
17666
17667 For example a number of 10 means that 21 frames are used (10 in the
17668 past and 10 in the future) to smoothen the motion in the video. A
17669 larger value leads to a smoother video, but limits the acceleration of
17670 the camera (pan/tilt movements). 0 is a special case where a static
17671 camera is simulated.
17672
17673 @item optalgo
17674 Set the camera path optimization algorithm.
17675
17676 Accepted values are:
17677 @table @samp
17678 @item gauss
17679 gaussian kernel low-pass filter on camera motion (default)
17680 @item avg
17681 averaging on transformations
17682 @end table
17683
17684 @item maxshift
17685 Set maximal number of pixels to translate frames. Default value is -1,
17686 meaning no limit.
17687
17688 @item maxangle
17689 Set maximal angle in radians (degree*PI/180) to rotate frames. Default
17690 value is -1, meaning no limit.
17691
17692 @item crop
17693 Specify how to deal with borders that may be visible due to movement
17694 compensation.
17695
17696 Available values are:
17697 @table @samp
17698 @item keep
17699 keep image information from previous frame (default)
17700 @item black
17701 fill the border black
17702 @end table
17703
17704 @item invert
17705 Invert transforms if set to 1. Default value is 0.
17706
17707 @item relative
17708 Consider transforms as relative to previous frame if set to 1,
17709 absolute if set to 0. Default value is 0.
17710
17711 @item zoom
17712 Set percentage to zoom. A positive value will result in a zoom-in
17713 effect, a negative value in a zoom-out effect. Default value is 0 (no
17714 zoom).
17715
17716 @item optzoom
17717 Set optimal zooming to avoid borders.
17718
17719 Accepted values are:
17720 @table @samp
17721 @item 0
17722 disabled
17723 @item 1
17724 optimal static zoom value is determined (only very strong movements
17725 will lead to visible borders) (default)
17726 @item 2
17727 optimal adaptive zoom value is determined (no borders will be
17728 visible), see @option{zoomspeed}
17729 @end table
17730
17731 Note that the value given at zoom is added to the one calculated here.
17732
17733 @item zoomspeed
17734 Set percent to zoom maximally each frame (enabled when
17735 @option{optzoom} is set to 2). Range is from 0 to 5, default value is
17736 0.25.
17737
17738 @item interpol
17739 Specify type of interpolation.
17740
17741 Available values are:
17742 @table @samp
17743 @item no
17744 no interpolation
17745 @item linear
17746 linear only horizontal
17747 @item bilinear
17748 linear in both directions (default)
17749 @item bicubic
17750 cubic in both directions (slow)
17751 @end table
17752
17753 @item tripod
17754 Enable virtual tripod mode if set to 1, which is equivalent to
17755 @code{relative=0:smoothing=0}. Default value is 0.
17756
17757 Use also @code{tripod} option of @ref{vidstabdetect}.
17758
17759 @item debug
17760 Increase log verbosity if set to 1. Also the detected global motions
17761 are written to the temporary file @file{global_motions.trf}. Default
17762 value is 0.
17763 @end table
17764
17765 @subsection Examples
17766
17767 @itemize
17768 @item
17769 Use @command{ffmpeg} for a typical stabilization with default values:
17770 @example
17771 ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
17772 @end example
17773
17774 Note the use of the @ref{unsharp} filter which is always recommended.
17775
17776 @item
17777 Zoom in a bit more and load transform data from a given file:
17778 @example
17779 vidstabtransform=zoom=5:input="mytransforms.trf"
17780 @end example
17781
17782 @item
17783 Smoothen the video even more:
17784 @example
17785 vidstabtransform=smoothing=30
17786 @end example
17787 @end itemize
17788
17789 @section vflip
17790
17791 Flip the input video vertically.
17792
17793 For example, to vertically flip a video with @command{ffmpeg}:
17794 @example
17795 ffmpeg -i in.avi -vf "vflip" out.avi
17796 @end example
17797
17798 @section vfrdet
17799
17800 Detect variable frame rate video.
17801
17802 This filter tries to detect if the input is variable or constant frame rate.
17803
17804 At end it will output number of frames detected as having variable delta pts,
17805 and ones with constant delta pts.
17806 If there was frames with variable delta, than it will also show min and max delta
17807 encountered.
17808
17809 @section vibrance
17810
17811 Boost or alter saturation.
17812
17813 The filter accepts the following options:
17814 @table @option
17815 @item intensity
17816 Set strength of boost if positive value or strength of alter if negative value.
17817 Default is 0. Allowed range is from -2 to 2.
17818
17819 @item rbal
17820 Set the red balance. Default is 1. Allowed range is from -10 to 10.
17821
17822 @item gbal
17823 Set the green balance. Default is 1. Allowed range is from -10 to 10.
17824
17825 @item bbal
17826 Set the blue balance. Default is 1. Allowed range is from -10 to 10.
17827
17828 @item rlum
17829 Set the red luma coefficient.
17830
17831 @item glum
17832 Set the green luma coefficient.
17833
17834 @item blum
17835 Set the blue luma coefficient.
17836 @end table
17837
17838 @anchor{vignette}
17839 @section vignette
17840
17841 Make or reverse a natural vignetting effect.
17842
17843 The filter accepts the following options:
17844
17845 @table @option
17846 @item angle, a
17847 Set lens angle expression as a number of radians.
17848
17849 The value is clipped in the @code{[0,PI/2]} range.
17850
17851 Default value: @code{"PI/5"}
17852
17853 @item x0
17854 @item y0
17855 Set center coordinates expressions. Respectively @code{"w/2"} and @code{"h/2"}
17856 by default.
17857
17858 @item mode
17859 Set forward/backward mode.
17860
17861 Available modes are:
17862 @table @samp
17863 @item forward
17864 The larger the distance from the central point, the darker the image becomes.
17865
17866 @item backward
17867 The larger the distance from the central point, the brighter the image becomes.
17868 This can be used to reverse a vignette effect, though there is no automatic
17869 detection to extract the lens @option{angle} and other settings (yet). It can
17870 also be used to create a burning effect.
17871 @end table
17872
17873 Default value is @samp{forward}.
17874
17875 @item eval
17876 Set evaluation mode for the expressions (@option{angle}, @option{x0}, @option{y0}).
17877
17878 It accepts the following values:
17879 @table @samp
17880 @item init
17881 Evaluate expressions only once during the filter initialization.
17882
17883 @item frame
17884 Evaluate expressions for each incoming frame. This is way slower than the
17885 @samp{init} mode since it requires all the scalers to be re-computed, but it
17886 allows advanced dynamic expressions.
17887 @end table
17888
17889 Default value is @samp{init}.
17890
17891 @item dither
17892 Set dithering to reduce the circular banding effects. Default is @code{1}
17893 (enabled).
17894
17895 @item aspect
17896 Set vignette aspect. This setting allows one to adjust the shape of the vignette.
17897 Setting this value to the SAR of the input will make a rectangular vignetting
17898 following the dimensions of the video.
17899
17900 Default is @code{1/1}.
17901 @end table
17902
17903 @subsection Expressions
17904
17905 The @option{alpha}, @option{x0} and @option{y0} expressions can contain the
17906 following parameters.
17907
17908 @table @option
17909 @item w
17910 @item h
17911 input width and height
17912
17913 @item n
17914 the number of input frame, starting from 0
17915
17916 @item pts
17917 the PTS (Presentation TimeStamp) time of the filtered video frame, expressed in
17918 @var{TB} units, NAN if undefined
17919
17920 @item r
17921 frame rate of the input video, NAN if the input frame rate is unknown
17922
17923 @item t
17924 the PTS (Presentation TimeStamp) of the filtered video frame,
17925 expressed in seconds, NAN if undefined
17926
17927 @item tb
17928 time base of the input video
17929 @end table
17930
17931
17932 @subsection Examples
17933
17934 @itemize
17935 @item
17936 Apply simple strong vignetting effect:
17937 @example
17938 vignette=PI/4
17939 @end example
17940
17941 @item
17942 Make a flickering vignetting:
17943 @example
17944 vignette='PI/4+random(1)*PI/50':eval=frame
17945 @end example
17946
17947 @end itemize
17948
17949 @section vmafmotion
17950
17951 Obtain the average vmaf motion score of a video.
17952 It is one of the component filters of VMAF.
17953
17954 The obtained average motion score is printed through the logging system.
17955
17956 In the below example the input file @file{ref.mpg} is being processed and score
17957 is computed.
17958
17959 @example
17960 ffmpeg -i ref.mpg -lavfi vmafmotion -f null -
17961 @end example
17962
17963 @section vstack
17964 Stack input videos vertically.
17965
17966 All streams must be of same pixel format and of same width.
17967
17968 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
17969 to create same output.
17970
17971 The filter accept the following option:
17972
17973 @table @option
17974 @item inputs
17975 Set number of input streams. Default is 2.
17976
17977 @item shortest
17978 If set to 1, force the output to terminate when the shortest input
17979 terminates. Default value is 0.
17980 @end table
17981
17982 @section w3fdif
17983
17984 Deinterlace the input video ("w3fdif" stands for "Weston 3 Field
17985 Deinterlacing Filter").
17986
17987 Based on the process described by Martin Weston for BBC R&D, and
17988 implemented based on the de-interlace algorithm written by Jim
17989 Easterbrook for BBC R&D, the Weston 3 field deinterlacing filter
17990 uses filter coefficients calculated by BBC R&D.
17991
17992 There are two sets of filter coefficients, so called "simple":
17993 and "complex". Which set of filter coefficients is used can
17994 be set by passing an optional parameter:
17995
17996 @table @option
17997 @item filter
17998 Set the interlacing filter coefficients. Accepts one of the following values:
17999
18000 @table @samp
18001 @item simple
18002 Simple filter coefficient set.
18003 @item complex
18004 More-complex filter coefficient set.
18005 @end table
18006 Default value is @samp{complex}.
18007
18008 @item deint
18009 Specify which frames to deinterlace. Accept one of the following values:
18010
18011 @table @samp
18012 @item all
18013 Deinterlace all frames,
18014 @item interlaced
18015 Only deinterlace frames marked as interlaced.
18016 @end table
18017
18018 Default value is @samp{all}.
18019 @end table
18020
18021 @section waveform
18022 Video waveform monitor.
18023
18024 The waveform monitor plots color component intensity. By default luminance
18025 only. Each column of the waveform corresponds to a column of pixels in the
18026 source video.
18027
18028 It accepts the following options:
18029
18030 @table @option
18031 @item mode, m
18032 Can be either @code{row}, or @code{column}. Default is @code{column}.
18033 In row mode, the graph on the left side represents color component value 0 and
18034 the right side represents value = 255. In column mode, the top side represents
18035 color component value = 0 and bottom side represents value = 255.
18036
18037 @item intensity, i
18038 Set intensity. Smaller values are useful to find out how many values of the same
18039 luminance are distributed across input rows/columns.
18040 Default value is @code{0.04}. Allowed range is [0, 1].
18041
18042 @item mirror, r
18043 Set mirroring mode. @code{0} means unmirrored, @code{1} means mirrored.
18044 In mirrored mode, higher values will be represented on the left
18045 side for @code{row} mode and at the top for @code{column} mode. Default is
18046 @code{1} (mirrored).
18047
18048 @item display, d
18049 Set display mode.
18050 It accepts the following values:
18051 @table @samp
18052 @item overlay
18053 Presents information identical to that in the @code{parade}, except
18054 that the graphs representing color components are superimposed directly
18055 over one another.
18056
18057 This display mode makes it easier to spot relative differences or similarities
18058 in overlapping areas of the color components that are supposed to be identical,
18059 such as neutral whites, grays, or blacks.
18060
18061 @item stack
18062 Display separate graph for the color components side by side in
18063 @code{row} mode or one below the other in @code{column} mode.
18064
18065 @item parade
18066 Display separate graph for the color components side by side in
18067 @code{column} mode or one below the other in @code{row} mode.
18068
18069 Using this display mode makes it easy to spot color casts in the highlights
18070 and shadows of an image, by comparing the contours of the top and the bottom
18071 graphs of each waveform. Since whites, grays, and blacks are characterized
18072 by exactly equal amounts of red, green, and blue, neutral areas of the picture
18073 should display three waveforms of roughly equal width/height. If not, the
18074 correction is easy to perform by making level adjustments the three waveforms.
18075 @end table
18076 Default is @code{stack}.
18077
18078 @item components, c
18079 Set which color components to display. Default is 1, which means only luminance
18080 or red color component if input is in RGB colorspace. If is set for example to
18081 7 it will display all 3 (if) available color components.
18082
18083 @item envelope, e
18084 @table @samp
18085 @item none
18086 No envelope, this is default.
18087
18088 @item instant
18089 Instant envelope, minimum and maximum values presented in graph will be easily
18090 visible even with small @code{step} value.
18091
18092 @item peak
18093 Hold minimum and maximum values presented in graph across time. This way you
18094 can still spot out of range values without constantly looking at waveforms.
18095
18096 @item peak+instant
18097 Peak and instant envelope combined together.
18098 @end table
18099
18100 @item filter, f
18101 @table @samp
18102 @item lowpass
18103 No filtering, this is default.
18104
18105 @item flat
18106 Luma and chroma combined together.
18107
18108 @item aflat
18109 Similar as above, but shows difference between blue and red chroma.
18110
18111 @item xflat
18112 Similar as above, but use different colors.
18113
18114 @item chroma
18115 Displays only chroma.
18116
18117 @item color
18118 Displays actual color value on waveform.
18119
18120 @item acolor
18121 Similar as above, but with luma showing frequency of chroma values.
18122 @end table
18123
18124 @item graticule, g
18125 Set which graticule to display.
18126
18127 @table @samp
18128 @item none
18129 Do not display graticule.
18130
18131 @item green
18132 Display green graticule showing legal broadcast ranges.
18133
18134 @item orange
18135 Display orange graticule showing legal broadcast ranges.
18136 @end table
18137
18138 @item opacity, o
18139 Set graticule opacity.
18140
18141 @item flags, fl
18142 Set graticule flags.
18143
18144 @table @samp
18145 @item numbers
18146 Draw numbers above lines. By default enabled.
18147
18148 @item dots
18149 Draw dots instead of lines.
18150 @end table
18151
18152 @item scale, s
18153 Set scale used for displaying graticule.
18154
18155 @table @samp
18156 @item digital
18157 @item millivolts
18158 @item ire
18159 @end table
18160 Default is digital.
18161
18162 @item bgopacity, b
18163 Set background opacity.
18164 @end table
18165
18166 @section weave, doubleweave
18167
18168 The @code{weave} takes a field-based video input and join
18169 each two sequential fields into single frame, producing a new double
18170 height clip with half the frame rate and half the frame count.
18171
18172 The @code{doubleweave} works same as @code{weave} but without
18173 halving frame rate and frame count.
18174
18175 It accepts the following option:
18176
18177 @table @option
18178 @item first_field
18179 Set first field. Available values are:
18180
18181 @table @samp
18182 @item top, t
18183 Set the frame as top-field-first.
18184
18185 @item bottom, b
18186 Set the frame as bottom-field-first.
18187 @end table
18188 @end table
18189
18190 @subsection Examples
18191
18192 @itemize
18193 @item
18194 Interlace video using @ref{select} and @ref{separatefields} filter:
18195 @example
18196 separatefields,select=eq(mod(n,4),0)+eq(mod(n,4),3),weave
18197 @end example
18198 @end itemize
18199
18200 @section xbr
18201 Apply the xBR high-quality magnification filter which is designed for pixel
18202 art. It follows a set of edge-detection rules, see
18203 @url{https://forums.libretro.com/t/xbr-algorithm-tutorial/123}.
18204
18205 It accepts the following option:
18206
18207 @table @option
18208 @item n
18209 Set the scaling dimension: @code{2} for @code{2xBR}, @code{3} for
18210 @code{3xBR} and @code{4} for @code{4xBR}.
18211 Default is @code{3}.
18212 @end table
18213
18214 @section xstack
18215 Stack video inputs into custom layout.
18216
18217 All streams must be of same pixel format.
18218
18219 The filter accept the following option:
18220
18221 @table @option
18222 @item inputs
18223 Set number of input streams. Default is 2.
18224
18225 @item layout
18226 Specify layout of inputs.
18227 This option requires the desired layout configuration to be explicitly set by the user.
18228 This sets position of each video input in output. Each input
18229 is separated by '|'.
18230 The first number represents the column, and the second number represents the row.
18231 Numbers start at 0 and are separated by '_'. Optionally one can use wX and hX,
18232 where X is video input from which to take width or height.
18233 Multiple values can be used when separated by '+'. In such
18234 case values are summed together.
18235
18236 @item shortest
18237 If set to 1, force the output to terminate when the shortest input
18238 terminates. Default value is 0.
18239 @end table
18240
18241 @subsection Examples
18242
18243 @itemize
18244 @item
18245 Display 4 inputs into 2x2 grid,
18246 note that if inputs are of different sizes unused gaps might appear,
18247 as not all of output video is used.
18248 @example
18249 xstack=inputs=4:layout=0_0|0_h0|w0_0|w0_h0
18250 @end example
18251
18252 @item
18253 Display 4 inputs into 1x4 grid,
18254 note that if inputs are of different sizes unused gaps might appear,
18255 as not all of output video is used.
18256 @example
18257 xstack=inputs=4:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2
18258 @end example
18259
18260 @item
18261 Display 9 inputs into 3x3 grid,
18262 note that if inputs are of different sizes unused gaps might appear,
18263 as not all of output video is used.
18264 @example
18265 xstack=inputs=9:layout=w3_0|w3_h0+h2|w3_h0|0_h4|0_0|w3+w1_0|0_h1+h2|w3+w1_h0|w3+w1_h1+h2
18266 @end example
18267 @end itemize
18268
18269 @anchor{yadif}
18270 @section yadif
18271
18272 Deinterlace the input video ("yadif" means "yet another deinterlacing
18273 filter").
18274
18275 It accepts the following parameters:
18276
18277
18278 @table @option
18279
18280 @item mode
18281 The interlacing mode to adopt. It accepts one of the following values:
18282
18283 @table @option
18284 @item 0, send_frame
18285 Output one frame for each frame.
18286 @item 1, send_field
18287 Output one frame for each field.
18288 @item 2, send_frame_nospatial
18289 Like @code{send_frame}, but it skips the spatial interlacing check.
18290 @item 3, send_field_nospatial
18291 Like @code{send_field}, but it skips the spatial interlacing check.
18292 @end table
18293
18294 The default value is @code{send_frame}.
18295
18296 @item parity
18297 The picture field parity assumed for the input interlaced video. It accepts one
18298 of the following values:
18299
18300 @table @option
18301 @item 0, tff
18302 Assume the top field is first.
18303 @item 1, bff
18304 Assume the bottom field is first.
18305 @item -1, auto
18306 Enable automatic detection of field parity.
18307 @end table
18308
18309 The default value is @code{auto}.
18310 If the interlacing is unknown or the decoder does not export this information,
18311 top field first will be assumed.
18312
18313 @item deint
18314 Specify which frames to deinterlace. Accept one of the following
18315 values:
18316
18317 @table @option
18318 @item 0, all
18319 Deinterlace all frames.
18320 @item 1, interlaced
18321 Only deinterlace frames marked as interlaced.
18322 @end table
18323
18324 The default value is @code{all}.
18325 @end table
18326
18327 @section yadif_cuda
18328
18329 Deinterlace the input video using the @ref{yadif} algorithm, but implemented
18330 in CUDA so that it can work as part of a GPU accelerated pipeline with nvdec
18331 and/or nvenc.
18332
18333 It accepts the following parameters:
18334
18335
18336 @table @option
18337
18338 @item mode
18339 The interlacing mode to adopt. It accepts one of the following values:
18340
18341 @table @option
18342 @item 0, send_frame
18343 Output one frame for each frame.
18344 @item 1, send_field
18345 Output one frame for each field.
18346 @item 2, send_frame_nospatial
18347 Like @code{send_frame}, but it skips the spatial interlacing check.
18348 @item 3, send_field_nospatial
18349 Like @code{send_field}, but it skips the spatial interlacing check.
18350 @end table
18351
18352 The default value is @code{send_frame}.
18353
18354 @item parity
18355 The picture field parity assumed for the input interlaced video. It accepts one
18356 of the following values:
18357
18358 @table @option
18359 @item 0, tff
18360 Assume the top field is first.
18361 @item 1, bff
18362 Assume the bottom field is first.
18363 @item -1, auto
18364 Enable automatic detection of field parity.
18365 @end table
18366
18367 The default value is @code{auto}.
18368 If the interlacing is unknown or the decoder does not export this information,
18369 top field first will be assumed.
18370
18371 @item deint
18372 Specify which frames to deinterlace. Accept one of the following
18373 values:
18374
18375 @table @option
18376 @item 0, all
18377 Deinterlace all frames.
18378 @item 1, interlaced
18379 Only deinterlace frames marked as interlaced.
18380 @end table
18381
18382 The default value is @code{all}.
18383 @end table
18384
18385 @section zoompan
18386
18387 Apply Zoom & Pan effect.
18388
18389 This filter accepts the following options:
18390
18391 @table @option
18392 @item zoom, z
18393 Set the zoom expression. Range is 1-10. Default is 1.
18394
18395 @item x
18396 @item y
18397 Set the x and y expression. Default is 0.
18398
18399 @item d
18400 Set the duration expression in number of frames.
18401 This sets for how many number of frames effect will last for
18402 single input image.
18403
18404 @item s
18405 Set the output image size, default is 'hd720'.
18406
18407 @item fps
18408 Set the output frame rate, default is '25'.
18409 @end table
18410
18411 Each expression can contain the following constants:
18412
18413 @table @option
18414 @item in_w, iw
18415 Input width.
18416
18417 @item in_h, ih
18418 Input height.
18419
18420 @item out_w, ow
18421 Output width.
18422
18423 @item out_h, oh
18424 Output height.
18425
18426 @item in
18427 Input frame count.
18428
18429 @item on
18430 Output frame count.
18431
18432 @item x
18433 @item y
18434 Last calculated 'x' and 'y' position from 'x' and 'y' expression
18435 for current input frame.
18436
18437 @item px
18438 @item py
18439 'x' and 'y' of last output frame of previous input frame or 0 when there was
18440 not yet such frame (first input frame).
18441
18442 @item zoom
18443 Last calculated zoom from 'z' expression for current input frame.
18444
18445 @item pzoom
18446 Last calculated zoom of last output frame of previous input frame.
18447
18448 @item duration
18449 Number of output frames for current input frame. Calculated from 'd' expression
18450 for each input frame.
18451
18452 @item pduration
18453 number of output frames created for previous input frame
18454
18455 @item a
18456 Rational number: input width / input height
18457
18458 @item sar
18459 sample aspect ratio
18460
18461 @item dar
18462 display aspect ratio
18463
18464 @end table
18465
18466 @subsection Examples
18467
18468 @itemize
18469 @item
18470 Zoom-in up to 1.5 and pan at same time to some spot near center of picture:
18471 @example
18472 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
18473 @end example
18474
18475 @item
18476 Zoom-in up to 1.5 and pan always at center of picture:
18477 @example
18478 zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
18479 @end example
18480
18481 @item
18482 Same as above but without pausing:
18483 @example
18484 zoompan=z='min(max(zoom,pzoom)+0.0015,1.5)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
18485 @end example
18486 @end itemize
18487
18488 @anchor{zscale}
18489 @section zscale
18490 Scale (resize) the input video, using the z.lib library:
18491 @url{https://github.com/sekrit-twc/zimg}. To enable compilation of this
18492 filter, you need to configure FFmpeg with @code{--enable-libzimg}.
18493
18494 The zscale filter forces the output display aspect ratio to be the same
18495 as the input, by changing the output sample aspect ratio.
18496
18497 If the input image format is different from the format requested by
18498 the next filter, the zscale filter will convert the input to the
18499 requested format.
18500
18501 @subsection Options
18502 The filter accepts the following options.
18503
18504 @table @option
18505 @item width, w
18506 @item height, h
18507 Set the output video dimension expression. Default value is the input
18508 dimension.
18509
18510 If the @var{width} or @var{w} value is 0, the input width is used for
18511 the output. If the @var{height} or @var{h} value is 0, the input height
18512 is used for the output.
18513
18514 If one and only one of the values is -n with n >= 1, the zscale filter
18515 will use a value that maintains the aspect ratio of the input image,
18516 calculated from the other specified dimension. After that it will,
18517 however, make sure that the calculated dimension is divisible by n and
18518 adjust the value if necessary.
18519
18520 If both values are -n with n >= 1, the behavior will be identical to
18521 both values being set to 0 as previously detailed.
18522
18523 See below for the list of accepted constants for use in the dimension
18524 expression.
18525
18526 @item size, s
18527 Set the video size. For the syntax of this option, check the
18528 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18529
18530 @item dither, d
18531 Set the dither type.
18532
18533 Possible values are:
18534 @table @var
18535 @item none
18536 @item ordered
18537 @item random
18538 @item error_diffusion
18539 @end table
18540
18541 Default is none.
18542
18543 @item filter, f
18544 Set the resize filter type.
18545
18546 Possible values are:
18547 @table @var
18548 @item point
18549 @item bilinear
18550 @item bicubic
18551 @item spline16
18552 @item spline36
18553 @item lanczos
18554 @end table
18555
18556 Default is bilinear.
18557
18558 @item range, r
18559 Set the color range.
18560
18561 Possible values are:
18562 @table @var
18563 @item input
18564 @item limited
18565 @item full
18566 @end table
18567
18568 Default is same as input.
18569
18570 @item primaries, p
18571 Set the color primaries.
18572
18573 Possible values are:
18574 @table @var
18575 @item input
18576 @item 709
18577 @item unspecified
18578 @item 170m
18579 @item 240m
18580 @item 2020
18581 @end table
18582
18583 Default is same as input.
18584
18585 @item transfer, t
18586 Set the transfer characteristics.
18587
18588 Possible values are:
18589 @table @var
18590 @item input
18591 @item 709
18592 @item unspecified
18593 @item 601
18594 @item linear
18595 @item 2020_10
18596 @item 2020_12
18597 @item smpte2084
18598 @item iec61966-2-1
18599 @item arib-std-b67
18600 @end table
18601
18602 Default is same as input.
18603
18604 @item matrix, m
18605 Set the colorspace matrix.
18606
18607 Possible value are:
18608 @table @var
18609 @item input
18610 @item 709
18611 @item unspecified
18612 @item 470bg
18613 @item 170m
18614 @item 2020_ncl
18615 @item 2020_cl
18616 @end table
18617
18618 Default is same as input.
18619
18620 @item rangein, rin
18621 Set the input color range.
18622
18623 Possible values are:
18624 @table @var
18625 @item input
18626 @item limited
18627 @item full
18628 @end table
18629
18630 Default is same as input.
18631
18632 @item primariesin, pin
18633 Set the input color primaries.
18634
18635 Possible values are:
18636 @table @var
18637 @item input
18638 @item 709
18639 @item unspecified
18640 @item 170m
18641 @item 240m
18642 @item 2020
18643 @end table
18644
18645 Default is same as input.
18646
18647 @item transferin, tin
18648 Set the input transfer characteristics.
18649
18650 Possible values are:
18651 @table @var
18652 @item input
18653 @item 709
18654 @item unspecified
18655 @item 601
18656 @item linear
18657 @item 2020_10
18658 @item 2020_12
18659 @end table
18660
18661 Default is same as input.
18662
18663 @item matrixin, min
18664 Set the input colorspace matrix.
18665
18666 Possible value are:
18667 @table @var
18668 @item input
18669 @item 709
18670 @item unspecified
18671 @item 470bg
18672 @item 170m
18673 @item 2020_ncl
18674 @item 2020_cl
18675 @end table
18676
18677 @item chromal, c
18678 Set the output chroma location.
18679
18680 Possible values are:
18681 @table @var
18682 @item input
18683 @item left
18684 @item center
18685 @item topleft
18686 @item top
18687 @item bottomleft
18688 @item bottom
18689 @end table
18690
18691 @item chromalin, cin
18692 Set the input chroma location.
18693
18694 Possible values are:
18695 @table @var
18696 @item input
18697 @item left
18698 @item center
18699 @item topleft
18700 @item top
18701 @item bottomleft
18702 @item bottom
18703 @end table
18704
18705 @item npl
18706 Set the nominal peak luminance.
18707 @end table
18708
18709 The values of the @option{w} and @option{h} options are expressions
18710 containing the following constants:
18711
18712 @table @var
18713 @item in_w
18714 @item in_h
18715 The input width and height
18716
18717 @item iw
18718 @item ih
18719 These are the same as @var{in_w} and @var{in_h}.
18720
18721 @item out_w
18722 @item out_h
18723 The output (scaled) width and height
18724
18725 @item ow
18726 @item oh
18727 These are the same as @var{out_w} and @var{out_h}
18728
18729 @item a
18730 The same as @var{iw} / @var{ih}
18731
18732 @item sar
18733 input sample aspect ratio
18734
18735 @item dar
18736 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
18737
18738 @item hsub
18739 @item vsub
18740 horizontal and vertical input chroma subsample values. For example for the
18741 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
18742
18743 @item ohsub
18744 @item ovsub
18745 horizontal and vertical output chroma subsample values. For example for the
18746 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
18747 @end table
18748
18749 @table @option
18750 @end table
18751
18752 @c man end VIDEO FILTERS
18753
18754 @chapter OpenCL Video Filters
18755 @c man begin OPENCL VIDEO FILTERS
18756
18757 Below is a description of the currently available OpenCL video filters.
18758
18759 To enable compilation of these filters you need to configure FFmpeg with
18760 @code{--enable-opencl}.
18761
18762 Running OpenCL filters requires you to initialize a hardware device and to pass that device to all filters in any filter graph.
18763 @table @option
18764
18765 @item -init_hw_device opencl[=@var{name}][:@var{device}[,@var{key=value}...]]
18766 Initialise a new hardware device of type @var{opencl} called @var{name}, using the
18767 given device parameters.
18768
18769 @item -filter_hw_device @var{name}
18770 Pass the hardware device called @var{name} to all filters in any filter graph.
18771
18772 @end table
18773
18774 For more detailed information see @url{https://www.ffmpeg.org/ffmpeg.html#Advanced-Video-options}
18775
18776 @itemize
18777 @item
18778 Example of choosing the first device on the second platform and running avgblur_opencl filter with default parameters on it.
18779 @example
18780 -init_hw_device opencl=gpu:1.0 -filter_hw_device gpu -i INPUT -vf "hwupload, avgblur_opencl, hwdownload" OUTPUT
18781 @end example
18782 @end itemize
18783
18784 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.
18785
18786 @section avgblur_opencl
18787
18788 Apply average blur filter.
18789
18790 The filter accepts the following options:
18791
18792 @table @option
18793 @item sizeX
18794 Set horizontal radius size.
18795 Range is @code{[1, 1024]} and default value is @code{1}.
18796
18797 @item planes
18798 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
18799
18800 @item sizeY
18801 Set vertical radius size. Range is @code{[1, 1024]} and default value is @code{0}. If zero, @code{sizeX} value will be used.
18802 @end table
18803
18804 @subsection Example
18805
18806 @itemize
18807 @item
18808 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.
18809 @example
18810 -i INPUT -vf "hwupload, avgblur_opencl=3, hwdownload" OUTPUT
18811 @end example
18812 @end itemize
18813
18814 @section boxblur_opencl
18815
18816 Apply a boxblur algorithm to the input video.
18817
18818 It accepts the following parameters:
18819
18820 @table @option
18821
18822 @item luma_radius, lr
18823 @item luma_power, lp
18824 @item chroma_radius, cr
18825 @item chroma_power, cp
18826 @item alpha_radius, ar
18827 @item alpha_power, ap
18828
18829 @end table
18830
18831 A description of the accepted options follows.
18832
18833 @table @option
18834 @item luma_radius, lr
18835 @item chroma_radius, cr
18836 @item alpha_radius, ar
18837 Set an expression for the box radius in pixels used for blurring the
18838 corresponding input plane.
18839
18840 The radius value must be a non-negative number, and must not be
18841 greater than the value of the expression @code{min(w,h)/2} for the
18842 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
18843 planes.
18844
18845 Default value for @option{luma_radius} is "2". If not specified,
18846 @option{chroma_radius} and @option{alpha_radius} default to the
18847 corresponding value set for @option{luma_radius}.
18848
18849 The expressions can contain the following constants:
18850 @table @option
18851 @item w
18852 @item h
18853 The input width and height in pixels.
18854
18855 @item cw
18856 @item ch
18857 The input chroma image width and height in pixels.
18858
18859 @item hsub
18860 @item vsub
18861 The horizontal and vertical chroma subsample values. For example, for the
18862 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
18863 @end table
18864
18865 @item luma_power, lp
18866 @item chroma_power, cp
18867 @item alpha_power, ap
18868 Specify how many times the boxblur filter is applied to the
18869 corresponding plane.
18870
18871 Default value for @option{luma_power} is 2. If not specified,
18872 @option{chroma_power} and @option{alpha_power} default to the
18873 corresponding value set for @option{luma_power}.
18874
18875 A value of 0 will disable the effect.
18876 @end table
18877
18878 @subsection Examples
18879
18880 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.
18881
18882 @itemize
18883 @item
18884 Apply a boxblur filter with the luma, chroma, and alpha radius
18885 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.
18886 @example
18887 -i INPUT -vf "hwupload, boxblur_opencl=luma_radius=2:luma_power=3, hwdownload" OUTPUT
18888 -i INPUT -vf "hwupload, boxblur_opencl=2:3, hwdownload" OUTPUT
18889 @end example
18890
18891 @item
18892 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.
18893
18894 For the luma plane, a 2x2 box radius will be run once.
18895
18896 For the chroma plane, a 4x4 box radius will be run 5 times.
18897
18898 For the alpha plane, a 3x3 box radius will be run 7 times.
18899 @example
18900 -i INPUT -vf "hwupload, boxblur_opencl=2:1:4:5:3:7, hwdownload" OUTPUT
18901 @end example
18902 @end itemize
18903
18904 @section convolution_opencl
18905
18906 Apply convolution of 3x3, 5x5, 7x7 matrix.
18907
18908 The filter accepts the following options:
18909
18910 @table @option
18911 @item 0m
18912 @item 1m
18913 @item 2m
18914 @item 3m
18915 Set matrix for each plane.
18916 Matrix is sequence of 9, 25 or 49 signed numbers.
18917 Default value for each plane is @code{0 0 0 0 1 0 0 0 0}.
18918
18919 @item 0rdiv
18920 @item 1rdiv
18921 @item 2rdiv
18922 @item 3rdiv
18923 Set multiplier for calculated value for each plane.
18924 If unset or 0, it will be sum of all matrix elements.
18925 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{1.0}.
18926
18927 @item 0bias
18928 @item 1bias
18929 @item 2bias
18930 @item 3bias
18931 Set bias for each plane. This value is added to the result of the multiplication.
18932 Useful for making the overall image brighter or darker.
18933 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{0.0}.
18934
18935 @end table
18936
18937 @subsection Examples
18938
18939 @itemize
18940 @item
18941 Apply sharpen:
18942 @example
18943 -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
18944 @end example
18945
18946 @item
18947 Apply blur:
18948 @example
18949 -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
18950 @end example
18951
18952 @item
18953 Apply edge enhance:
18954 @example
18955 -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
18956 @end example
18957
18958 @item
18959 Apply edge detect:
18960 @example
18961 -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
18962 @end example
18963
18964 @item
18965 Apply laplacian edge detector which includes diagonals:
18966 @example
18967 -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
18968 @end example
18969
18970 @item
18971 Apply emboss:
18972 @example
18973 -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
18974 @end example
18975 @end itemize
18976
18977 @section dilation_opencl
18978
18979 Apply dilation effect to the video.
18980
18981 This filter replaces the pixel by the local(3x3) maximum.
18982
18983 It accepts the following options:
18984
18985 @table @option
18986 @item threshold0
18987 @item threshold1
18988 @item threshold2
18989 @item threshold3
18990 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
18991 If @code{0}, plane will remain unchanged.
18992
18993 @item coordinates
18994 Flag which specifies the pixel to refer to.
18995 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
18996
18997 Flags to local 3x3 coordinates region centered on @code{x}:
18998
18999     1 2 3
19000
19001     4 x 5
19002
19003     6 7 8
19004 @end table
19005
19006 @subsection Example
19007
19008 @itemize
19009 @item
19010 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.
19011 @example
19012 -i INPUT -vf "hwupload, dilation_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
19013 @end example
19014 @end itemize
19015
19016 @section erosion_opencl
19017
19018 Apply erosion effect to the video.
19019
19020 This filter replaces the pixel by the local(3x3) minimum.
19021
19022 It accepts the following options:
19023
19024 @table @option
19025 @item threshold0
19026 @item threshold1
19027 @item threshold2
19028 @item threshold3
19029 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
19030 If @code{0}, plane will remain unchanged.
19031
19032 @item coordinates
19033 Flag which specifies the pixel to refer to.
19034 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
19035
19036 Flags to local 3x3 coordinates region centered on @code{x}:
19037
19038     1 2 3
19039
19040     4 x 5
19041
19042     6 7 8
19043 @end table
19044
19045 @subsection Example
19046
19047 @itemize
19048 @item
19049 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.
19050 @example
19051 -i INPUT -vf "hwupload, erosion_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
19052 @end example
19053 @end itemize
19054
19055 @section overlay_opencl
19056
19057 Overlay one video on top of another.
19058
19059 It takes two inputs and has one output. The first input is the "main" video on which the second input is overlaid.
19060 This filter requires same memory layout for all the inputs. So, format conversion may be needed.
19061
19062 The filter accepts the following options:
19063
19064 @table @option
19065
19066 @item x
19067 Set the x coordinate of the overlaid video on the main video.
19068 Default value is @code{0}.
19069
19070 @item y
19071 Set the x coordinate of the overlaid video on the main video.
19072 Default value is @code{0}.
19073
19074 @end table
19075
19076 @subsection Examples
19077
19078 @itemize
19079 @item
19080 Overlay an image LOGO at the top-left corner of the INPUT video. Both inputs are yuv420p format.
19081 @example
19082 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuv420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
19083 @end example
19084 @item
19085 The inputs have same memory layout for color channels , the overlay has additional alpha plane, like INPUT is yuv420p, and the LOGO is yuva420p.
19086 @example
19087 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuva420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
19088 @end example
19089
19090 @end itemize
19091
19092 @section prewitt_opencl
19093
19094 Apply the Prewitt operator (@url{https://en.wikipedia.org/wiki/Prewitt_operator}) to input video stream.
19095
19096 The filter accepts the following option:
19097
19098 @table @option
19099 @item planes
19100 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
19101
19102 @item scale
19103 Set value which will be multiplied with filtered result.
19104 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
19105
19106 @item delta
19107 Set value which will be added to filtered result.
19108 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
19109 @end table
19110
19111 @subsection Example
19112
19113 @itemize
19114 @item
19115 Apply the Prewitt operator with scale set to 2 and delta set to 10.
19116 @example
19117 -i INPUT -vf "hwupload, prewitt_opencl=scale=2:delta=10, hwdownload" OUTPUT
19118 @end example
19119 @end itemize
19120
19121 @section roberts_opencl
19122 Apply the Roberts cross operator (@url{https://en.wikipedia.org/wiki/Roberts_cross}) to input video stream.
19123
19124 The filter accepts the following option:
19125
19126 @table @option
19127 @item planes
19128 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
19129
19130 @item scale
19131 Set value which will be multiplied with filtered result.
19132 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
19133
19134 @item delta
19135 Set value which will be added to filtered result.
19136 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
19137 @end table
19138
19139 @subsection Example
19140
19141 @itemize
19142 @item
19143 Apply the Roberts cross operator with scale set to 2 and delta set to 10
19144 @example
19145 -i INPUT -vf "hwupload, roberts_opencl=scale=2:delta=10, hwdownload" OUTPUT
19146 @end example
19147 @end itemize
19148
19149 @section sobel_opencl
19150
19151 Apply the Sobel operator (@url{https://en.wikipedia.org/wiki/Sobel_operator}) to input video stream.
19152
19153 The filter accepts the following option:
19154
19155 @table @option
19156 @item planes
19157 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
19158
19159 @item scale
19160 Set value which will be multiplied with filtered result.
19161 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
19162
19163 @item delta
19164 Set value which will be added to filtered result.
19165 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
19166 @end table
19167
19168 @subsection Example
19169
19170 @itemize
19171 @item
19172 Apply sobel operator with scale set to 2 and delta set to 10
19173 @example
19174 -i INPUT -vf "hwupload, sobel_opencl=scale=2:delta=10, hwdownload" OUTPUT
19175 @end example
19176 @end itemize
19177
19178 @section tonemap_opencl
19179
19180 Perform HDR(PQ/HLG) to SDR conversion with tone-mapping.
19181
19182 It accepts the following parameters:
19183
19184 @table @option
19185 @item tonemap
19186 Specify the tone-mapping operator to be used. Same as tonemap option in @ref{tonemap}.
19187
19188 @item param
19189 Tune the tone mapping algorithm. same as param option in @ref{tonemap}.
19190
19191 @item desat
19192 Apply desaturation for highlights that exceed this level of brightness. The
19193 higher the parameter, the more color information will be preserved. This
19194 setting helps prevent unnaturally blown-out colors for super-highlights, by
19195 (smoothly) turning into white instead. This makes images feel more natural,
19196 at the cost of reducing information about out-of-range colors.
19197
19198 The default value is 0.5, and the algorithm here is a little different from
19199 the cpu version tonemap currently. A setting of 0.0 disables this option.
19200
19201 @item threshold
19202 The tonemapping algorithm parameters is fine-tuned per each scene. And a threshold
19203 is used to detect whether the scene has changed or not. If the distance between
19204 the current frame average brightness and the current running average exceeds
19205 a threshold value, we would re-calculate scene average and peak brightness.
19206 The default value is 0.2.
19207
19208 @item format
19209 Specify the output pixel format.
19210
19211 Currently supported formats are:
19212 @table @var
19213 @item p010
19214 @item nv12
19215 @end table
19216
19217 @item range, r
19218 Set the output color range.
19219
19220 Possible values are:
19221 @table @var
19222 @item tv/mpeg
19223 @item pc/jpeg
19224 @end table
19225
19226 Default is same as input.
19227
19228 @item primaries, p
19229 Set the output color primaries.
19230
19231 Possible values are:
19232 @table @var
19233 @item bt709
19234 @item bt2020
19235 @end table
19236
19237 Default is same as input.
19238
19239 @item transfer, t
19240 Set the output transfer characteristics.
19241
19242 Possible values are:
19243 @table @var
19244 @item bt709
19245 @item bt2020
19246 @end table
19247
19248 Default is bt709.
19249
19250 @item matrix, m
19251 Set the output colorspace matrix.
19252
19253 Possible value are:
19254 @table @var
19255 @item bt709
19256 @item bt2020
19257 @end table
19258
19259 Default is same as input.
19260
19261 @end table
19262
19263 @subsection Example
19264
19265 @itemize
19266 @item
19267 Convert HDR(PQ/HLG) video to bt2020-transfer-characteristic p010 format using linear operator.
19268 @example
19269 -i INPUT -vf "format=p010,hwupload,tonemap_opencl=t=bt2020:tonemap=linear:format=p010,hwdownload,format=p010" OUTPUT
19270 @end example
19271 @end itemize
19272
19273 @section unsharp_opencl
19274
19275 Sharpen or blur the input video.
19276
19277 It accepts the following parameters:
19278
19279 @table @option
19280 @item luma_msize_x, lx
19281 Set the luma matrix horizontal size.
19282 Range is @code{[1, 23]} and default value is @code{5}.
19283
19284 @item luma_msize_y, ly
19285 Set the luma matrix vertical size.
19286 Range is @code{[1, 23]} and default value is @code{5}.
19287
19288 @item luma_amount, la
19289 Set the luma effect strength.
19290 Range is @code{[-10, 10]} and default value is @code{1.0}.
19291
19292 Negative values will blur the input video, while positive values will
19293 sharpen it, a value of zero will disable the effect.
19294
19295 @item chroma_msize_x, cx
19296 Set the chroma matrix horizontal size.
19297 Range is @code{[1, 23]} and default value is @code{5}.
19298
19299 @item chroma_msize_y, cy
19300 Set the chroma matrix vertical size.
19301 Range is @code{[1, 23]} and default value is @code{5}.
19302
19303 @item chroma_amount, ca
19304 Set the chroma effect strength.
19305 Range is @code{[-10, 10]} and default value is @code{0.0}.
19306
19307 Negative values will blur the input video, while positive values will
19308 sharpen it, a value of zero will disable the effect.
19309
19310 @end table
19311
19312 All parameters are optional and default to the equivalent of the
19313 string '5:5:1.0:5:5:0.0'.
19314
19315 @subsection Examples
19316
19317 @itemize
19318 @item
19319 Apply strong luma sharpen effect:
19320 @example
19321 -i INPUT -vf "hwupload, unsharp_opencl=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5, hwdownload" OUTPUT
19322 @end example
19323
19324 @item
19325 Apply a strong blur of both luma and chroma parameters:
19326 @example
19327 -i INPUT -vf "hwupload, unsharp_opencl=7:7:-2:7:7:-2, hwdownload" OUTPUT
19328 @end example
19329 @end itemize
19330
19331 @c man end OPENCL VIDEO FILTERS
19332
19333 @chapter Video Sources
19334 @c man begin VIDEO SOURCES
19335
19336 Below is a description of the currently available video sources.
19337
19338 @section buffer
19339
19340 Buffer video frames, and make them available to the filter chain.
19341
19342 This source is mainly intended for a programmatic use, in particular
19343 through the interface defined in @file{libavfilter/vsrc_buffer.h}.
19344
19345 It accepts the following parameters:
19346
19347 @table @option
19348
19349 @item video_size
19350 Specify the size (width and height) of the buffered video frames. For the
19351 syntax of this option, check the
19352 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19353
19354 @item width
19355 The input video width.
19356
19357 @item height
19358 The input video height.
19359
19360 @item pix_fmt
19361 A string representing the pixel format of the buffered video frames.
19362 It may be a number corresponding to a pixel format, or a pixel format
19363 name.
19364
19365 @item time_base
19366 Specify the timebase assumed by the timestamps of the buffered frames.
19367
19368 @item frame_rate
19369 Specify the frame rate expected for the video stream.
19370
19371 @item pixel_aspect, sar
19372 The sample (pixel) aspect ratio of the input video.
19373
19374 @item sws_param
19375 Specify the optional parameters to be used for the scale filter which
19376 is automatically inserted when an input change is detected in the
19377 input size or format.
19378
19379 @item hw_frames_ctx
19380 When using a hardware pixel format, this should be a reference to an
19381 AVHWFramesContext describing input frames.
19382 @end table
19383
19384 For example:
19385 @example
19386 buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
19387 @end example
19388
19389 will instruct the source to accept video frames with size 320x240 and
19390 with format "yuv410p", assuming 1/24 as the timestamps timebase and
19391 square pixels (1:1 sample aspect ratio).
19392 Since the pixel format with name "yuv410p" corresponds to the number 6
19393 (check the enum AVPixelFormat definition in @file{libavutil/pixfmt.h}),
19394 this example corresponds to:
19395 @example
19396 buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
19397 @end example
19398
19399 Alternatively, the options can be specified as a flat string, but this
19400 syntax is deprecated:
19401
19402 @var{width}:@var{height}:@var{pix_fmt}:@var{time_base.num}:@var{time_base.den}:@var{pixel_aspect.num}:@var{pixel_aspect.den}[:@var{sws_param}]
19403
19404 @section cellauto
19405
19406 Create a pattern generated by an elementary cellular automaton.
19407
19408 The initial state of the cellular automaton can be defined through the
19409 @option{filename} and @option{pattern} options. If such options are
19410 not specified an initial state is created randomly.
19411
19412 At each new frame a new row in the video is filled with the result of
19413 the cellular automaton next generation. The behavior when the whole
19414 frame is filled is defined by the @option{scroll} option.
19415
19416 This source accepts the following options:
19417
19418 @table @option
19419 @item filename, f
19420 Read the initial cellular automaton state, i.e. the starting row, from
19421 the specified file.
19422 In the file, each non-whitespace character is considered an alive
19423 cell, a newline will terminate the row, and further characters in the
19424 file will be ignored.
19425
19426 @item pattern, p
19427 Read the initial cellular automaton state, i.e. the starting row, from
19428 the specified string.
19429
19430 Each non-whitespace character in the string is considered an alive
19431 cell, a newline will terminate the row, and further characters in the
19432 string will be ignored.
19433
19434 @item rate, r
19435 Set the video rate, that is the number of frames generated per second.
19436 Default is 25.
19437
19438 @item random_fill_ratio, ratio
19439 Set the random fill ratio for the initial cellular automaton row. It
19440 is a floating point number value ranging from 0 to 1, defaults to
19441 1/PHI.
19442
19443 This option is ignored when a file or a pattern is specified.
19444
19445 @item random_seed, seed
19446 Set the seed for filling randomly the initial row, must be an integer
19447 included between 0 and UINT32_MAX. If not specified, or if explicitly
19448 set to -1, the filter will try to use a good random seed on a best
19449 effort basis.
19450
19451 @item rule
19452 Set the cellular automaton rule, it is a number ranging from 0 to 255.
19453 Default value is 110.
19454
19455 @item size, s
19456 Set the size of the output video. For the syntax of this option, check the
19457 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19458
19459 If @option{filename} or @option{pattern} is specified, the size is set
19460 by default to the width of the specified initial state row, and the
19461 height is set to @var{width} * PHI.
19462
19463 If @option{size} is set, it must contain the width of the specified
19464 pattern string, and the specified pattern will be centered in the
19465 larger row.
19466
19467 If a filename or a pattern string is not specified, the size value
19468 defaults to "320x518" (used for a randomly generated initial state).
19469
19470 @item scroll
19471 If set to 1, scroll the output upward when all the rows in the output
19472 have been already filled. If set to 0, the new generated row will be
19473 written over the top row just after the bottom row is filled.
19474 Defaults to 1.
19475
19476 @item start_full, full
19477 If set to 1, completely fill the output with generated rows before
19478 outputting the first frame.
19479 This is the default behavior, for disabling set the value to 0.
19480
19481 @item stitch
19482 If set to 1, stitch the left and right row edges together.
19483 This is the default behavior, for disabling set the value to 0.
19484 @end table
19485
19486 @subsection Examples
19487
19488 @itemize
19489 @item
19490 Read the initial state from @file{pattern}, and specify an output of
19491 size 200x400.
19492 @example
19493 cellauto=f=pattern:s=200x400
19494 @end example
19495
19496 @item
19497 Generate a random initial row with a width of 200 cells, with a fill
19498 ratio of 2/3:
19499 @example
19500 cellauto=ratio=2/3:s=200x200
19501 @end example
19502
19503 @item
19504 Create a pattern generated by rule 18 starting by a single alive cell
19505 centered on an initial row with width 100:
19506 @example
19507 cellauto=p=@@:s=100x400:full=0:rule=18
19508 @end example
19509
19510 @item
19511 Specify a more elaborated initial pattern:
19512 @example
19513 cellauto=p='@@@@ @@ @@@@':s=100x400:full=0:rule=18
19514 @end example
19515
19516 @end itemize
19517
19518 @anchor{coreimagesrc}
19519 @section coreimagesrc
19520 Video source generated on GPU using Apple's CoreImage API on OSX.
19521
19522 This video source is a specialized version of the @ref{coreimage} video filter.
19523 Use a core image generator at the beginning of the applied filterchain to
19524 generate the content.
19525
19526 The coreimagesrc video source accepts the following options:
19527 @table @option
19528 @item list_generators
19529 List all available generators along with all their respective options as well as
19530 possible minimum and maximum values along with the default values.
19531 @example
19532 list_generators=true
19533 @end example
19534
19535 @item size, s
19536 Specify the size of the sourced video. For the syntax of this option, check the
19537 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19538 The default value is @code{320x240}.
19539
19540 @item rate, r
19541 Specify the frame rate of the sourced video, as the number of frames
19542 generated per second. It has to be a string in the format
19543 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
19544 number or a valid video frame rate abbreviation. The default value is
19545 "25".
19546
19547 @item sar
19548 Set the sample aspect ratio of the sourced video.
19549
19550 @item duration, d
19551 Set the duration of the sourced video. See
19552 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
19553 for the accepted syntax.
19554
19555 If not specified, or the expressed duration is negative, the video is
19556 supposed to be generated forever.
19557 @end table
19558
19559 Additionally, all options of the @ref{coreimage} video filter are accepted.
19560 A complete filterchain can be used for further processing of the
19561 generated input without CPU-HOST transfer. See @ref{coreimage} documentation
19562 and examples for details.
19563
19564 @subsection Examples
19565
19566 @itemize
19567
19568 @item
19569 Use CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
19570 given as complete and escaped command-line for Apple's standard bash shell:
19571 @example
19572 ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
19573 @end example
19574 This example is equivalent to the QRCode example of @ref{coreimage} without the
19575 need for a nullsrc video source.
19576 @end itemize
19577
19578
19579 @section mandelbrot
19580
19581 Generate a Mandelbrot set fractal, and progressively zoom towards the
19582 point specified with @var{start_x} and @var{start_y}.
19583
19584 This source accepts the following options:
19585
19586 @table @option
19587
19588 @item end_pts
19589 Set the terminal pts value. Default value is 400.
19590
19591 @item end_scale
19592 Set the terminal scale value.
19593 Must be a floating point value. Default value is 0.3.
19594
19595 @item inner
19596 Set the inner coloring mode, that is the algorithm used to draw the
19597 Mandelbrot fractal internal region.
19598
19599 It shall assume one of the following values:
19600 @table @option
19601 @item black
19602 Set black mode.
19603 @item convergence
19604 Show time until convergence.
19605 @item mincol
19606 Set color based on point closest to the origin of the iterations.
19607 @item period
19608 Set period mode.
19609 @end table
19610
19611 Default value is @var{mincol}.
19612
19613 @item bailout
19614 Set the bailout value. Default value is 10.0.
19615
19616 @item maxiter
19617 Set the maximum of iterations performed by the rendering
19618 algorithm. Default value is 7189.
19619
19620 @item outer
19621 Set outer coloring mode.
19622 It shall assume one of following values:
19623 @table @option
19624 @item iteration_count
19625 Set iteration count mode.
19626 @item normalized_iteration_count
19627 set normalized iteration count mode.
19628 @end table
19629 Default value is @var{normalized_iteration_count}.
19630
19631 @item rate, r
19632 Set frame rate, expressed as number of frames per second. Default
19633 value is "25".
19634
19635 @item size, s
19636 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
19637 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
19638
19639 @item start_scale
19640 Set the initial scale value. Default value is 3.0.
19641
19642 @item start_x
19643 Set the initial x position. Must be a floating point value between
19644 -100 and 100. Default value is -0.743643887037158704752191506114774.
19645
19646 @item start_y
19647 Set the initial y position. Must be a floating point value between
19648 -100 and 100. Default value is -0.131825904205311970493132056385139.
19649 @end table
19650
19651 @section mptestsrc
19652
19653 Generate various test patterns, as generated by the MPlayer test filter.
19654
19655 The size of the generated video is fixed, and is 256x256.
19656 This source is useful in particular for testing encoding features.
19657
19658 This source accepts the following options:
19659
19660 @table @option
19661
19662 @item rate, r
19663 Specify the frame rate of the sourced video, as the number of frames
19664 generated per second. It has to be a string in the format
19665 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
19666 number or a valid video frame rate abbreviation. The default value is
19667 "25".
19668
19669 @item duration, d
19670 Set the duration of the sourced video. See
19671 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
19672 for the accepted syntax.
19673
19674 If not specified, or the expressed duration is negative, the video is
19675 supposed to be generated forever.
19676
19677 @item test, t
19678
19679 Set the number or the name of the test to perform. Supported tests are:
19680 @table @option
19681 @item dc_luma
19682 @item dc_chroma
19683 @item freq_luma
19684 @item freq_chroma
19685 @item amp_luma
19686 @item amp_chroma
19687 @item cbp
19688 @item mv
19689 @item ring1
19690 @item ring2
19691 @item all
19692
19693 @end table
19694
19695 Default value is "all", which will cycle through the list of all tests.
19696 @end table
19697
19698 Some examples:
19699 @example
19700 mptestsrc=t=dc_luma
19701 @end example
19702
19703 will generate a "dc_luma" test pattern.
19704
19705 @section frei0r_src
19706
19707 Provide a frei0r source.
19708
19709 To enable compilation of this filter you need to install the frei0r
19710 header and configure FFmpeg with @code{--enable-frei0r}.
19711
19712 This source accepts the following parameters:
19713
19714 @table @option
19715
19716 @item size
19717 The size of the video to generate. For the syntax of this option, check the
19718 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19719
19720 @item framerate
19721 The framerate of the generated video. It may be a string of the form
19722 @var{num}/@var{den} or a frame rate abbreviation.
19723
19724 @item filter_name
19725 The name to the frei0r source to load. For more information regarding frei0r and
19726 how to set the parameters, read the @ref{frei0r} section in the video filters
19727 documentation.
19728
19729 @item filter_params
19730 A '|'-separated list of parameters to pass to the frei0r source.
19731
19732 @end table
19733
19734 For example, to generate a frei0r partik0l source with size 200x200
19735 and frame rate 10 which is overlaid on the overlay filter main input:
19736 @example
19737 frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
19738 @end example
19739
19740 @section life
19741
19742 Generate a life pattern.
19743
19744 This source is based on a generalization of John Conway's life game.
19745
19746 The sourced input represents a life grid, each pixel represents a cell
19747 which can be in one of two possible states, alive or dead. Every cell
19748 interacts with its eight neighbours, which are the cells that are
19749 horizontally, vertically, or diagonally adjacent.
19750
19751 At each interaction the grid evolves according to the adopted rule,
19752 which specifies the number of neighbor alive cells which will make a
19753 cell stay alive or born. The @option{rule} option allows one to specify
19754 the rule to adopt.
19755
19756 This source accepts the following options:
19757
19758 @table @option
19759 @item filename, f
19760 Set the file from which to read the initial grid state. In the file,
19761 each non-whitespace character is considered an alive cell, and newline
19762 is used to delimit the end of each row.
19763
19764 If this option is not specified, the initial grid is generated
19765 randomly.
19766
19767 @item rate, r
19768 Set the video rate, that is the number of frames generated per second.
19769 Default is 25.
19770
19771 @item random_fill_ratio, ratio
19772 Set the random fill ratio for the initial random grid. It is a
19773 floating point number value ranging from 0 to 1, defaults to 1/PHI.
19774 It is ignored when a file is specified.
19775
19776 @item random_seed, seed
19777 Set the seed for filling the initial random grid, must be an integer
19778 included between 0 and UINT32_MAX. If not specified, or if explicitly
19779 set to -1, the filter will try to use a good random seed on a best
19780 effort basis.
19781
19782 @item rule
19783 Set the life rule.
19784
19785 A rule can be specified with a code of the kind "S@var{NS}/B@var{NB}",
19786 where @var{NS} and @var{NB} are sequences of numbers in the range 0-8,
19787 @var{NS} specifies the number of alive neighbor cells which make a
19788 live cell stay alive, and @var{NB} the number of alive neighbor cells
19789 which make a dead cell to become alive (i.e. to "born").
19790 "s" and "b" can be used in place of "S" and "B", respectively.
19791
19792 Alternatively a rule can be specified by an 18-bits integer. The 9
19793 high order bits are used to encode the next cell state if it is alive
19794 for each number of neighbor alive cells, the low order bits specify
19795 the rule for "borning" new cells. Higher order bits encode for an
19796 higher number of neighbor cells.
19797 For example the number 6153 = @code{(12<<9)+9} specifies a stay alive
19798 rule of 12 and a born rule of 9, which corresponds to "S23/B03".
19799
19800 Default value is "S23/B3", which is the original Conway's game of life
19801 rule, and will keep a cell alive if it has 2 or 3 neighbor alive
19802 cells, and will born a new cell if there are three alive cells around
19803 a dead cell.
19804
19805 @item size, s
19806 Set the size of the output video. For the syntax of this option, check the
19807 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19808
19809 If @option{filename} is specified, the size is set by default to the
19810 same size of the input file. If @option{size} is set, it must contain
19811 the size specified in the input file, and the initial grid defined in
19812 that file is centered in the larger resulting area.
19813
19814 If a filename is not specified, the size value defaults to "320x240"
19815 (used for a randomly generated initial grid).
19816
19817 @item stitch
19818 If set to 1, stitch the left and right grid edges together, and the
19819 top and bottom edges also. Defaults to 1.
19820
19821 @item mold
19822 Set cell mold speed. If set, a dead cell will go from @option{death_color} to
19823 @option{mold_color} with a step of @option{mold}. @option{mold} can have a
19824 value from 0 to 255.
19825
19826 @item life_color
19827 Set the color of living (or new born) cells.
19828
19829 @item death_color
19830 Set the color of dead cells. If @option{mold} is set, this is the first color
19831 used to represent a dead cell.
19832
19833 @item mold_color
19834 Set mold color, for definitely dead and moldy cells.
19835
19836 For the syntax of these 3 color options, check the @ref{color syntax,,"Color" section in the
19837 ffmpeg-utils manual,ffmpeg-utils}.
19838 @end table
19839
19840 @subsection Examples
19841
19842 @itemize
19843 @item
19844 Read a grid from @file{pattern}, and center it on a grid of size
19845 300x300 pixels:
19846 @example
19847 life=f=pattern:s=300x300
19848 @end example
19849
19850 @item
19851 Generate a random grid of size 200x200, with a fill ratio of 2/3:
19852 @example
19853 life=ratio=2/3:s=200x200
19854 @end example
19855
19856 @item
19857 Specify a custom rule for evolving a randomly generated grid:
19858 @example
19859 life=rule=S14/B34
19860 @end example
19861
19862 @item
19863 Full example with slow death effect (mold) using @command{ffplay}:
19864 @example
19865 ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
19866 @end example
19867 @end itemize
19868
19869 @anchor{allrgb}
19870 @anchor{allyuv}
19871 @anchor{color}
19872 @anchor{haldclutsrc}
19873 @anchor{nullsrc}
19874 @anchor{pal75bars}
19875 @anchor{pal100bars}
19876 @anchor{rgbtestsrc}
19877 @anchor{smptebars}
19878 @anchor{smptehdbars}
19879 @anchor{testsrc}
19880 @anchor{testsrc2}
19881 @anchor{yuvtestsrc}
19882 @section allrgb, allyuv, color, haldclutsrc, nullsrc, pal75bars, pal100bars, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc
19883
19884 The @code{allrgb} source returns frames of size 4096x4096 of all rgb colors.
19885
19886 The @code{allyuv} source returns frames of size 4096x4096 of all yuv colors.
19887
19888 The @code{color} source provides an uniformly colored input.
19889
19890 The @code{haldclutsrc} source provides an identity Hald CLUT. See also
19891 @ref{haldclut} filter.
19892
19893 The @code{nullsrc} source returns unprocessed video frames. It is
19894 mainly useful to be employed in analysis / debugging tools, or as the
19895 source for filters which ignore the input data.
19896
19897 The @code{pal75bars} source generates a color bars pattern, based on
19898 EBU PAL recommendations with 75% color levels.
19899
19900 The @code{pal100bars} source generates a color bars pattern, based on
19901 EBU PAL recommendations with 100% color levels.
19902
19903 The @code{rgbtestsrc} source generates an RGB test pattern useful for
19904 detecting RGB vs BGR issues. You should see a red, green and blue
19905 stripe from top to bottom.
19906
19907 The @code{smptebars} source generates a color bars pattern, based on
19908 the SMPTE Engineering Guideline EG 1-1990.
19909
19910 The @code{smptehdbars} source generates a color bars pattern, based on
19911 the SMPTE RP 219-2002.
19912
19913 The @code{testsrc} source generates a test video pattern, showing a
19914 color pattern, a scrolling gradient and a timestamp. This is mainly
19915 intended for testing purposes.
19916
19917 The @code{testsrc2} source is similar to testsrc, but supports more
19918 pixel formats instead of just @code{rgb24}. This allows using it as an
19919 input for other tests without requiring a format conversion.
19920
19921 The @code{yuvtestsrc} source generates an YUV test pattern. You should
19922 see a y, cb and cr stripe from top to bottom.
19923
19924 The sources accept the following parameters:
19925
19926 @table @option
19927
19928 @item level
19929 Specify the level of the Hald CLUT, only available in the @code{haldclutsrc}
19930 source. A level of @code{N} generates a picture of @code{N*N*N} by @code{N*N*N}
19931 pixels to be used as identity matrix for 3D lookup tables. Each component is
19932 coded on a @code{1/(N*N)} scale.
19933
19934 @item color, c
19935 Specify the color of the source, only available in the @code{color}
19936 source. For the syntax of this option, check the
19937 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
19938
19939 @item size, s
19940 Specify the size of the sourced video. For the syntax of this option, check the
19941 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19942 The default value is @code{320x240}.
19943
19944 This option is not available with the @code{allrgb}, @code{allyuv}, and
19945 @code{haldclutsrc} filters.
19946
19947 @item rate, r
19948 Specify the frame rate of the sourced video, as the number of frames
19949 generated per second. It has to be a string in the format
19950 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
19951 number or a valid video frame rate abbreviation. The default value is
19952 "25".
19953
19954 @item duration, d
19955 Set the duration of the sourced video. See
19956 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
19957 for the accepted syntax.
19958
19959 If not specified, or the expressed duration is negative, the video is
19960 supposed to be generated forever.
19961
19962 @item sar
19963 Set the sample aspect ratio of the sourced video.
19964
19965 @item alpha
19966 Specify the alpha (opacity) of the background, only available in the
19967 @code{testsrc2} source. The value must be between 0 (fully transparent) and
19968 255 (fully opaque, the default).
19969
19970 @item decimals, n
19971 Set the number of decimals to show in the timestamp, only available in the
19972 @code{testsrc} source.
19973
19974 The displayed timestamp value will correspond to the original
19975 timestamp value multiplied by the power of 10 of the specified
19976 value. Default value is 0.
19977 @end table
19978
19979 @subsection Examples
19980
19981 @itemize
19982 @item
19983 Generate a video with a duration of 5.3 seconds, with size
19984 176x144 and a frame rate of 10 frames per second:
19985 @example
19986 testsrc=duration=5.3:size=qcif:rate=10
19987 @end example
19988
19989 @item
19990 The following graph description will generate a red source
19991 with an opacity of 0.2, with size "qcif" and a frame rate of 10
19992 frames per second:
19993 @example
19994 color=c=red@@0.2:s=qcif:r=10
19995 @end example
19996
19997 @item
19998 If the input content is to be ignored, @code{nullsrc} can be used. The
19999 following command generates noise in the luminance plane by employing
20000 the @code{geq} filter:
20001 @example
20002 nullsrc=s=256x256, geq=random(1)*255:128:128
20003 @end example
20004 @end itemize
20005
20006 @subsection Commands
20007
20008 The @code{color} source supports the following commands:
20009
20010 @table @option
20011 @item c, color
20012 Set the color of the created image. Accepts the same syntax of the
20013 corresponding @option{color} option.
20014 @end table
20015
20016 @section openclsrc
20017
20018 Generate video using an OpenCL program.
20019
20020 @table @option
20021
20022 @item source
20023 OpenCL program source file.
20024
20025 @item kernel
20026 Kernel name in program.
20027
20028 @item size, s
20029 Size of frames to generate.  This must be set.
20030
20031 @item format
20032 Pixel format to use for the generated frames.  This must be set.
20033
20034 @item rate, r
20035 Number of frames generated every second.  Default value is '25'.
20036
20037 @end table
20038
20039 For details of how the program loading works, see the @ref{program_opencl}
20040 filter.
20041
20042 Example programs:
20043
20044 @itemize
20045 @item
20046 Generate a colour ramp by setting pixel values from the position of the pixel
20047 in the output image.  (Note that this will work with all pixel formats, but
20048 the generated output will not be the same.)
20049 @verbatim
20050 __kernel void ramp(__write_only image2d_t dst,
20051                    unsigned int index)
20052 {
20053     int2 loc = (int2)(get_global_id(0), get_global_id(1));
20054
20055     float4 val;
20056     val.xy = val.zw = convert_float2(loc) / convert_float2(get_image_dim(dst));
20057
20058     write_imagef(dst, loc, val);
20059 }
20060 @end verbatim
20061
20062 @item
20063 Generate a Sierpinski carpet pattern, panning by a single pixel each frame.
20064 @verbatim
20065 __kernel void sierpinski_carpet(__write_only image2d_t dst,
20066                                 unsigned int index)
20067 {
20068     int2 loc = (int2)(get_global_id(0), get_global_id(1));
20069
20070     float4 value = 0.0f;
20071     int x = loc.x + index;
20072     int y = loc.y + index;
20073     while (x > 0 || y > 0) {
20074         if (x % 3 == 1 && y % 3 == 1) {
20075             value = 1.0f;
20076             break;
20077         }
20078         x /= 3;
20079         y /= 3;
20080     }
20081
20082     write_imagef(dst, loc, value);
20083 }
20084 @end verbatim
20085
20086 @end itemize
20087
20088 @c man end VIDEO SOURCES
20089
20090 @chapter Video Sinks
20091 @c man begin VIDEO SINKS
20092
20093 Below is a description of the currently available video sinks.
20094
20095 @section buffersink
20096
20097 Buffer video frames, and make them available to the end of the filter
20098 graph.
20099
20100 This sink is mainly intended for programmatic use, in particular
20101 through the interface defined in @file{libavfilter/buffersink.h}
20102 or the options system.
20103
20104 It accepts a pointer to an AVBufferSinkContext structure, which
20105 defines the incoming buffers' formats, to be passed as the opaque
20106 parameter to @code{avfilter_init_filter} for initialization.
20107
20108 @section nullsink
20109
20110 Null video sink: do absolutely nothing with the input video. It is
20111 mainly useful as a template and for use in analysis / debugging
20112 tools.
20113
20114 @c man end VIDEO SINKS
20115
20116 @chapter Multimedia Filters
20117 @c man begin MULTIMEDIA FILTERS
20118
20119 Below is a description of the currently available multimedia filters.
20120
20121 @section abitscope
20122
20123 Convert input audio to a video output, displaying the audio bit scope.
20124
20125 The filter accepts the following options:
20126
20127 @table @option
20128 @item rate, r
20129 Set frame rate, expressed as number of frames per second. Default
20130 value is "25".
20131
20132 @item size, s
20133 Specify the video size for the output. For the syntax of this option, check the
20134 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20135 Default value is @code{1024x256}.
20136
20137 @item colors
20138 Specify list of colors separated by space or by '|' which will be used to
20139 draw channels. Unrecognized or missing colors will be replaced
20140 by white color.
20141 @end table
20142
20143 @section ahistogram
20144
20145 Convert input audio to a video output, displaying the volume histogram.
20146
20147 The filter accepts the following options:
20148
20149 @table @option
20150 @item dmode
20151 Specify how histogram is calculated.
20152
20153 It accepts the following values:
20154 @table @samp
20155 @item single
20156 Use single histogram for all channels.
20157 @item separate
20158 Use separate histogram for each channel.
20159 @end table
20160 Default is @code{single}.
20161
20162 @item rate, r
20163 Set frame rate, expressed as number of frames per second. Default
20164 value is "25".
20165
20166 @item size, s
20167 Specify the video size for the output. For the syntax of this option, check the
20168 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20169 Default value is @code{hd720}.
20170
20171 @item scale
20172 Set display scale.
20173
20174 It accepts the following values:
20175 @table @samp
20176 @item log
20177 logarithmic
20178 @item sqrt
20179 square root
20180 @item cbrt
20181 cubic root
20182 @item lin
20183 linear
20184 @item rlog
20185 reverse logarithmic
20186 @end table
20187 Default is @code{log}.
20188
20189 @item ascale
20190 Set amplitude scale.
20191
20192 It accepts the following values:
20193 @table @samp
20194 @item log
20195 logarithmic
20196 @item lin
20197 linear
20198 @end table
20199 Default is @code{log}.
20200
20201 @item acount
20202 Set how much frames to accumulate in histogram.
20203 Default is 1. Setting this to -1 accumulates all frames.
20204
20205 @item rheight
20206 Set histogram ratio of window height.
20207
20208 @item slide
20209 Set sonogram sliding.
20210
20211 It accepts the following values:
20212 @table @samp
20213 @item replace
20214 replace old rows with new ones.
20215 @item scroll
20216 scroll from top to bottom.
20217 @end table
20218 Default is @code{replace}.
20219 @end table
20220
20221 @section aphasemeter
20222
20223 Measures phase of input audio, which is exported as metadata @code{lavfi.aphasemeter.phase},
20224 representing mean phase of current audio frame. A video output can also be produced and is
20225 enabled by default. The audio is passed through as first output.
20226
20227 Audio will be rematrixed to stereo if it has a different channel layout. Phase value is in
20228 range @code{[-1, 1]} where @code{-1} means left and right channels are completely out of phase
20229 and @code{1} means channels are in phase.
20230
20231 The filter accepts the following options, all related to its video output:
20232
20233 @table @option
20234 @item rate, r
20235 Set the output frame rate. Default value is @code{25}.
20236
20237 @item size, s
20238 Set the video size for the output. For the syntax of this option, check the
20239 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20240 Default value is @code{800x400}.
20241
20242 @item rc
20243 @item gc
20244 @item bc
20245 Specify the red, green, blue contrast. Default values are @code{2},
20246 @code{7} and @code{1}.
20247 Allowed range is @code{[0, 255]}.
20248
20249 @item mpc
20250 Set color which will be used for drawing median phase. If color is
20251 @code{none} which is default, no median phase value will be drawn.
20252
20253 @item video
20254 Enable video output. Default is enabled.
20255 @end table
20256
20257 @section avectorscope
20258
20259 Convert input audio to a video output, representing the audio vector
20260 scope.
20261
20262 The filter is used to measure the difference between channels of stereo
20263 audio stream. A monoaural signal, consisting of identical left and right
20264 signal, results in straight vertical line. Any stereo separation is visible
20265 as a deviation from this line, creating a Lissajous figure.
20266 If the straight (or deviation from it) but horizontal line appears this
20267 indicates that the left and right channels are out of phase.
20268
20269 The filter accepts the following options:
20270
20271 @table @option
20272 @item mode, m
20273 Set the vectorscope mode.
20274
20275 Available values are:
20276 @table @samp
20277 @item lissajous
20278 Lissajous rotated by 45 degrees.
20279
20280 @item lissajous_xy
20281 Same as above but not rotated.
20282
20283 @item polar
20284 Shape resembling half of circle.
20285 @end table
20286
20287 Default value is @samp{lissajous}.
20288
20289 @item size, s
20290 Set the video size for the output. For the syntax of this option, check the
20291 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20292 Default value is @code{400x400}.
20293
20294 @item rate, r
20295 Set the output frame rate. Default value is @code{25}.
20296
20297 @item rc
20298 @item gc
20299 @item bc
20300 @item ac
20301 Specify the red, green, blue and alpha contrast. Default values are @code{40},
20302 @code{160}, @code{80} and @code{255}.
20303 Allowed range is @code{[0, 255]}.
20304
20305 @item rf
20306 @item gf
20307 @item bf
20308 @item af
20309 Specify the red, green, blue and alpha fade. Default values are @code{15},
20310 @code{10}, @code{5} and @code{5}.
20311 Allowed range is @code{[0, 255]}.
20312
20313 @item zoom
20314 Set the zoom factor. Default value is @code{1}. Allowed range is @code{[0, 10]}.
20315 Values lower than @var{1} will auto adjust zoom factor to maximal possible value.
20316
20317 @item draw
20318 Set the vectorscope drawing mode.
20319
20320 Available values are:
20321 @table @samp
20322 @item dot
20323 Draw dot for each sample.
20324
20325 @item line
20326 Draw line between previous and current sample.
20327 @end table
20328
20329 Default value is @samp{dot}.
20330
20331 @item scale
20332 Specify amplitude scale of audio samples.
20333
20334 Available values are:
20335 @table @samp
20336 @item lin
20337 Linear.
20338
20339 @item sqrt
20340 Square root.
20341
20342 @item cbrt
20343 Cubic root.
20344
20345 @item log
20346 Logarithmic.
20347 @end table
20348
20349 @item swap
20350 Swap left channel axis with right channel axis.
20351
20352 @item mirror
20353 Mirror axis.
20354
20355 @table @samp
20356 @item none
20357 No mirror.
20358
20359 @item x
20360 Mirror only x axis.
20361
20362 @item y
20363 Mirror only y axis.
20364
20365 @item xy
20366 Mirror both axis.
20367 @end table
20368
20369 @end table
20370
20371 @subsection Examples
20372
20373 @itemize
20374 @item
20375 Complete example using @command{ffplay}:
20376 @example
20377 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
20378              [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
20379 @end example
20380 @end itemize
20381
20382 @section bench, abench
20383
20384 Benchmark part of a filtergraph.
20385
20386 The filter accepts the following options:
20387
20388 @table @option
20389 @item action
20390 Start or stop a timer.
20391
20392 Available values are:
20393 @table @samp
20394 @item start
20395 Get the current time, set it as frame metadata (using the key
20396 @code{lavfi.bench.start_time}), and forward the frame to the next filter.
20397
20398 @item stop
20399 Get the current time and fetch the @code{lavfi.bench.start_time} metadata from
20400 the input frame metadata to get the time difference. Time difference, average,
20401 maximum and minimum time (respectively @code{t}, @code{avg}, @code{max} and
20402 @code{min}) are then printed. The timestamps are expressed in seconds.
20403 @end table
20404 @end table
20405
20406 @subsection Examples
20407
20408 @itemize
20409 @item
20410 Benchmark @ref{selectivecolor} filter:
20411 @example
20412 bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
20413 @end example
20414 @end itemize
20415
20416 @section concat
20417
20418 Concatenate audio and video streams, joining them together one after the
20419 other.
20420
20421 The filter works on segments of synchronized video and audio streams. All
20422 segments must have the same number of streams of each type, and that will
20423 also be the number of streams at output.
20424
20425 The filter accepts the following options:
20426
20427 @table @option
20428
20429 @item n
20430 Set the number of segments. Default is 2.
20431
20432 @item v
20433 Set the number of output video streams, that is also the number of video
20434 streams in each segment. Default is 1.
20435
20436 @item a
20437 Set the number of output audio streams, that is also the number of audio
20438 streams in each segment. Default is 0.
20439
20440 @item unsafe
20441 Activate unsafe mode: do not fail if segments have a different format.
20442
20443 @end table
20444
20445 The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then
20446 @var{a} audio outputs.
20447
20448 There are @var{n}x(@var{v}+@var{a}) inputs: first the inputs for the first
20449 segment, in the same order as the outputs, then the inputs for the second
20450 segment, etc.
20451
20452 Related streams do not always have exactly the same duration, for various
20453 reasons including codec frame size or sloppy authoring. For that reason,
20454 related synchronized streams (e.g. a video and its audio track) should be
20455 concatenated at once. The concat filter will use the duration of the longest
20456 stream in each segment (except the last one), and if necessary pad shorter
20457 audio streams with silence.
20458
20459 For this filter to work correctly, all segments must start at timestamp 0.
20460
20461 All corresponding streams must have the same parameters in all segments; the
20462 filtering system will automatically select a common pixel format for video
20463 streams, and a common sample format, sample rate and channel layout for
20464 audio streams, but other settings, such as resolution, must be converted
20465 explicitly by the user.
20466
20467 Different frame rates are acceptable but will result in variable frame rate
20468 at output; be sure to configure the output file to handle it.
20469
20470 @subsection Examples
20471
20472 @itemize
20473 @item
20474 Concatenate an opening, an episode and an ending, all in bilingual version
20475 (video in stream 0, audio in streams 1 and 2):
20476 @example
20477 ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
20478   '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
20479    concat=n=3:v=1:a=2 [v] [a1] [a2]' \
20480   -map '[v]' -map '[a1]' -map '[a2]' output.mkv
20481 @end example
20482
20483 @item
20484 Concatenate two parts, handling audio and video separately, using the
20485 (a)movie sources, and adjusting the resolution:
20486 @example
20487 movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
20488 movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
20489 [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
20490 @end example
20491 Note that a desync will happen at the stitch if the audio and video streams
20492 do not have exactly the same duration in the first file.
20493
20494 @end itemize
20495
20496 @subsection Commands
20497
20498 This filter supports the following commands:
20499 @table @option
20500 @item next
20501 Close the current segment and step to the next one
20502 @end table
20503
20504 @section drawgraph, adrawgraph
20505
20506 Draw a graph using input video or audio metadata.
20507
20508 It accepts the following parameters:
20509
20510 @table @option
20511 @item m1
20512 Set 1st frame metadata key from which metadata values will be used to draw a graph.
20513
20514 @item fg1
20515 Set 1st foreground color expression.
20516
20517 @item m2
20518 Set 2nd frame metadata key from which metadata values will be used to draw a graph.
20519
20520 @item fg2
20521 Set 2nd foreground color expression.
20522
20523 @item m3
20524 Set 3rd frame metadata key from which metadata values will be used to draw a graph.
20525
20526 @item fg3
20527 Set 3rd foreground color expression.
20528
20529 @item m4
20530 Set 4th frame metadata key from which metadata values will be used to draw a graph.
20531
20532 @item fg4
20533 Set 4th foreground color expression.
20534
20535 @item min
20536 Set minimal value of metadata value.
20537
20538 @item max
20539 Set maximal value of metadata value.
20540
20541 @item bg
20542 Set graph background color. Default is white.
20543
20544 @item mode
20545 Set graph mode.
20546
20547 Available values for mode is:
20548 @table @samp
20549 @item bar
20550 @item dot
20551 @item line
20552 @end table
20553
20554 Default is @code{line}.
20555
20556 @item slide
20557 Set slide mode.
20558
20559 Available values for slide is:
20560 @table @samp
20561 @item frame
20562 Draw new frame when right border is reached.
20563
20564 @item replace
20565 Replace old columns with new ones.
20566
20567 @item scroll
20568 Scroll from right to left.
20569
20570 @item rscroll
20571 Scroll from left to right.
20572
20573 @item picture
20574 Draw single picture.
20575 @end table
20576
20577 Default is @code{frame}.
20578
20579 @item size
20580 Set size of graph video. For the syntax of this option, check the
20581 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20582 The default value is @code{900x256}.
20583
20584 The foreground color expressions can use the following variables:
20585 @table @option
20586 @item MIN
20587 Minimal value of metadata value.
20588
20589 @item MAX
20590 Maximal value of metadata value.
20591
20592 @item VAL
20593 Current metadata key value.
20594 @end table
20595
20596 The color is defined as 0xAABBGGRR.
20597 @end table
20598
20599 Example using metadata from @ref{signalstats} filter:
20600 @example
20601 signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255
20602 @end example
20603
20604 Example using metadata from @ref{ebur128} filter:
20605 @example
20606 ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-120:max=5
20607 @end example
20608
20609 @anchor{ebur128}
20610 @section ebur128
20611
20612 EBU R128 scanner filter. This filter takes an audio stream and analyzes its loudness
20613 level. By default, it logs a message at a frequency of 10Hz with the
20614 Momentary loudness (identified by @code{M}), Short-term loudness (@code{S}),
20615 Integrated loudness (@code{I}) and Loudness Range (@code{LRA}).
20616
20617 The filter can only analyze streams which have a sampling rate of 48000 Hz and whose
20618 sample format is double-precision floating point. The input stream will be converted to
20619 this specification, if needed. Users may need to insert aformat and/or aresample filters
20620 after this filter to obtain the original parameters.
20621
20622 The filter also has a video output (see the @var{video} option) with a real
20623 time graph to observe the loudness evolution. The graphic contains the logged
20624 message mentioned above, so it is not printed anymore when this option is set,
20625 unless the verbose logging is set. The main graphing area contains the
20626 short-term loudness (3 seconds of analysis), and the gauge on the right is for
20627 the momentary loudness (400 milliseconds), but can optionally be configured
20628 to instead display short-term loudness (see @var{gauge}).
20629
20630 The green area marks a  +/- 1LU target range around the target loudness
20631 (-23LUFS by default, unless modified through @var{target}).
20632
20633 More information about the Loudness Recommendation EBU R128 on
20634 @url{http://tech.ebu.ch/loudness}.
20635
20636 The filter accepts the following options:
20637
20638 @table @option
20639
20640 @item video
20641 Activate the video output. The audio stream is passed unchanged whether this
20642 option is set or no. The video stream will be the first output stream if
20643 activated. Default is @code{0}.
20644
20645 @item size
20646 Set the video size. This option is for video only. For the syntax of this
20647 option, check the
20648 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20649 Default and minimum resolution is @code{640x480}.
20650
20651 @item meter
20652 Set the EBU scale meter. Default is @code{9}. Common values are @code{9} and
20653 @code{18}, respectively for EBU scale meter +9 and EBU scale meter +18. Any
20654 other integer value between this range is allowed.
20655
20656 @item metadata
20657 Set metadata injection. If set to @code{1}, the audio input will be segmented
20658 into 100ms output frames, each of them containing various loudness information
20659 in metadata.  All the metadata keys are prefixed with @code{lavfi.r128.}.
20660
20661 Default is @code{0}.
20662
20663 @item framelog
20664 Force the frame logging level.
20665
20666 Available values are:
20667 @table @samp
20668 @item info
20669 information logging level
20670 @item verbose
20671 verbose logging level
20672 @end table
20673
20674 By default, the logging level is set to @var{info}. If the @option{video} or
20675 the @option{metadata} options are set, it switches to @var{verbose}.
20676
20677 @item peak
20678 Set peak mode(s).
20679
20680 Available modes can be cumulated (the option is a @code{flag} type). Possible
20681 values are:
20682 @table @samp
20683 @item none
20684 Disable any peak mode (default).
20685 @item sample
20686 Enable sample-peak mode.
20687
20688 Simple peak mode looking for the higher sample value. It logs a message
20689 for sample-peak (identified by @code{SPK}).
20690 @item true
20691 Enable true-peak mode.
20692
20693 If enabled, the peak lookup is done on an over-sampled version of the input
20694 stream for better peak accuracy. It logs a message for true-peak.
20695 (identified by @code{TPK}) and true-peak per frame (identified by @code{FTPK}).
20696 This mode requires a build with @code{libswresample}.
20697 @end table
20698
20699 @item dualmono
20700 Treat mono input files as "dual mono". If a mono file is intended for playback
20701 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
20702 If set to @code{true}, this option will compensate for this effect.
20703 Multi-channel input files are not affected by this option.
20704
20705 @item panlaw
20706 Set a specific pan law to be used for the measurement of dual mono files.
20707 This parameter is optional, and has a default value of -3.01dB.
20708
20709 @item target
20710 Set a specific target level (in LUFS) used as relative zero in the visualization.
20711 This parameter is optional and has a default value of -23LUFS as specified
20712 by EBU R128. However, material published online may prefer a level of -16LUFS
20713 (e.g. for use with podcasts or video platforms).
20714
20715 @item gauge
20716 Set the value displayed by the gauge. Valid values are @code{momentary} and s
20717 @code{shortterm}. By default the momentary value will be used, but in certain
20718 scenarios it may be more useful to observe the short term value instead (e.g.
20719 live mixing).
20720
20721 @item scale
20722 Sets the display scale for the loudness. Valid parameters are @code{absolute}
20723 (in LUFS) or @code{relative} (LU) relative to the target. This only affects the
20724 video output, not the summary or continuous log output.
20725 @end table
20726
20727 @subsection Examples
20728
20729 @itemize
20730 @item
20731 Real-time graph using @command{ffplay}, with a EBU scale meter +18:
20732 @example
20733 ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
20734 @end example
20735
20736 @item
20737 Run an analysis with @command{ffmpeg}:
20738 @example
20739 ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
20740 @end example
20741 @end itemize
20742
20743 @section interleave, ainterleave
20744
20745 Temporally interleave frames from several inputs.
20746
20747 @code{interleave} works with video inputs, @code{ainterleave} with audio.
20748
20749 These filters read frames from several inputs and send the oldest
20750 queued frame to the output.
20751
20752 Input streams must have well defined, monotonically increasing frame
20753 timestamp values.
20754
20755 In order to submit one frame to output, these filters need to enqueue
20756 at least one frame for each input, so they cannot work in case one
20757 input is not yet terminated and will not receive incoming frames.
20758
20759 For example consider the case when one input is a @code{select} filter
20760 which always drops input frames. The @code{interleave} filter will keep
20761 reading from that input, but it will never be able to send new frames
20762 to output until the input sends an end-of-stream signal.
20763
20764 Also, depending on inputs synchronization, the filters will drop
20765 frames in case one input receives more frames than the other ones, and
20766 the queue is already filled.
20767
20768 These filters accept the following options:
20769
20770 @table @option
20771 @item nb_inputs, n
20772 Set the number of different inputs, it is 2 by default.
20773 @end table
20774
20775 @subsection Examples
20776
20777 @itemize
20778 @item
20779 Interleave frames belonging to different streams using @command{ffmpeg}:
20780 @example
20781 ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
20782 @end example
20783
20784 @item
20785 Add flickering blur effect:
20786 @example
20787 select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
20788 @end example
20789 @end itemize
20790
20791 @section metadata, ametadata
20792
20793 Manipulate frame metadata.
20794
20795 This filter accepts the following options:
20796
20797 @table @option
20798 @item mode
20799 Set mode of operation of the filter.
20800
20801 Can be one of the following:
20802
20803 @table @samp
20804 @item select
20805 If both @code{value} and @code{key} is set, select frames
20806 which have such metadata. If only @code{key} is set, select
20807 every frame that has such key in metadata.
20808
20809 @item add
20810 Add new metadata @code{key} and @code{value}. If key is already available
20811 do nothing.
20812
20813 @item modify
20814 Modify value of already present key.
20815
20816 @item delete
20817 If @code{value} is set, delete only keys that have such value.
20818 Otherwise, delete key. If @code{key} is not set, delete all metadata values in
20819 the frame.
20820
20821 @item print
20822 Print key and its value if metadata was found. If @code{key} is not set print all
20823 metadata values available in frame.
20824 @end table
20825
20826 @item key
20827 Set key used with all modes. Must be set for all modes except @code{print} and @code{delete}.
20828
20829 @item value
20830 Set metadata value which will be used. This option is mandatory for
20831 @code{modify} and @code{add} mode.
20832
20833 @item function
20834 Which function to use when comparing metadata value and @code{value}.
20835
20836 Can be one of following:
20837
20838 @table @samp
20839 @item same_str
20840 Values are interpreted as strings, returns true if metadata value is same as @code{value}.
20841
20842 @item starts_with
20843 Values are interpreted as strings, returns true if metadata value starts with
20844 the @code{value} option string.
20845
20846 @item less
20847 Values are interpreted as floats, returns true if metadata value is less than @code{value}.
20848
20849 @item equal
20850 Values are interpreted as floats, returns true if @code{value} is equal with metadata value.
20851
20852 @item greater
20853 Values are interpreted as floats, returns true if metadata value is greater than @code{value}.
20854
20855 @item expr
20856 Values are interpreted as floats, returns true if expression from option @code{expr}
20857 evaluates to true.
20858 @end table
20859
20860 @item expr
20861 Set expression which is used when @code{function} is set to @code{expr}.
20862 The expression is evaluated through the eval API and can contain the following
20863 constants:
20864
20865 @table @option
20866 @item VALUE1
20867 Float representation of @code{value} from metadata key.
20868
20869 @item VALUE2
20870 Float representation of @code{value} as supplied by user in @code{value} option.
20871 @end table
20872
20873 @item file
20874 If specified in @code{print} mode, output is written to the named file. Instead of
20875 plain filename any writable url can be specified. Filename ``-'' is a shorthand
20876 for standard output. If @code{file} option is not set, output is written to the log
20877 with AV_LOG_INFO loglevel.
20878
20879 @end table
20880
20881 @subsection Examples
20882
20883 @itemize
20884 @item
20885 Print all metadata values for frames with key @code{lavfi.signalstats.YDIF} with values
20886 between 0 and 1.
20887 @example
20888 signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
20889 @end example
20890 @item
20891 Print silencedetect output to file @file{metadata.txt}.
20892 @example
20893 silencedetect,ametadata=mode=print:file=metadata.txt
20894 @end example
20895 @item
20896 Direct all metadata to a pipe with file descriptor 4.
20897 @example
20898 metadata=mode=print:file='pipe\:4'
20899 @end example
20900 @end itemize
20901
20902 @section perms, aperms
20903
20904 Set read/write permissions for the output frames.
20905
20906 These filters are mainly aimed at developers to test direct path in the
20907 following filter in the filtergraph.
20908
20909 The filters accept the following options:
20910
20911 @table @option
20912 @item mode
20913 Select the permissions mode.
20914
20915 It accepts the following values:
20916 @table @samp
20917 @item none
20918 Do nothing. This is the default.
20919 @item ro
20920 Set all the output frames read-only.
20921 @item rw
20922 Set all the output frames directly writable.
20923 @item toggle
20924 Make the frame read-only if writable, and writable if read-only.
20925 @item random
20926 Set each output frame read-only or writable randomly.
20927 @end table
20928
20929 @item seed
20930 Set the seed for the @var{random} mode, must be an integer included between
20931 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
20932 @code{-1}, the filter will try to use a good random seed on a best effort
20933 basis.
20934 @end table
20935
20936 Note: in case of auto-inserted filter between the permission filter and the
20937 following one, the permission might not be received as expected in that
20938 following filter. Inserting a @ref{format} or @ref{aformat} filter before the
20939 perms/aperms filter can avoid this problem.
20940
20941 @section realtime, arealtime
20942
20943 Slow down filtering to match real time approximately.
20944
20945 These filters will pause the filtering for a variable amount of time to
20946 match the output rate with the input timestamps.
20947 They are similar to the @option{re} option to @code{ffmpeg}.
20948
20949 They accept the following options:
20950
20951 @table @option
20952 @item limit
20953 Time limit for the pauses. Any pause longer than that will be considered
20954 a timestamp discontinuity and reset the timer. Default is 2 seconds.
20955 @end table
20956
20957 @anchor{select}
20958 @section select, aselect
20959
20960 Select frames to pass in output.
20961
20962 This filter accepts the following options:
20963
20964 @table @option
20965
20966 @item expr, e
20967 Set expression, which is evaluated for each input frame.
20968
20969 If the expression is evaluated to zero, the frame is discarded.
20970
20971 If the evaluation result is negative or NaN, the frame is sent to the
20972 first output; otherwise it is sent to the output with index
20973 @code{ceil(val)-1}, assuming that the input index starts from 0.
20974
20975 For example a value of @code{1.2} corresponds to the output with index
20976 @code{ceil(1.2)-1 = 2-1 = 1}, that is the second output.
20977
20978 @item outputs, n
20979 Set the number of outputs. The output to which to send the selected
20980 frame is based on the result of the evaluation. Default value is 1.
20981 @end table
20982
20983 The expression can contain the following constants:
20984
20985 @table @option
20986 @item n
20987 The (sequential) number of the filtered frame, starting from 0.
20988
20989 @item selected_n
20990 The (sequential) number of the selected frame, starting from 0.
20991
20992 @item prev_selected_n
20993 The sequential number of the last selected frame. It's NAN if undefined.
20994
20995 @item TB
20996 The timebase of the input timestamps.
20997
20998 @item pts
20999 The PTS (Presentation TimeStamp) of the filtered video frame,
21000 expressed in @var{TB} units. It's NAN if undefined.
21001
21002 @item t
21003 The PTS of the filtered video frame,
21004 expressed in seconds. It's NAN if undefined.
21005
21006 @item prev_pts
21007 The PTS of the previously filtered video frame. It's NAN if undefined.
21008
21009 @item prev_selected_pts
21010 The PTS of the last previously filtered video frame. It's NAN if undefined.
21011
21012 @item prev_selected_t
21013 The PTS of the last previously selected video frame, expressed in seconds. It's NAN if undefined.
21014
21015 @item start_pts
21016 The PTS of the first video frame in the video. It's NAN if undefined.
21017
21018 @item start_t
21019 The time of the first video frame in the video. It's NAN if undefined.
21020
21021 @item pict_type @emph{(video only)}
21022 The type of the filtered frame. It can assume one of the following
21023 values:
21024 @table @option
21025 @item I
21026 @item P
21027 @item B
21028 @item S
21029 @item SI
21030 @item SP
21031 @item BI
21032 @end table
21033
21034 @item interlace_type @emph{(video only)}
21035 The frame interlace type. It can assume one of the following values:
21036 @table @option
21037 @item PROGRESSIVE
21038 The frame is progressive (not interlaced).
21039 @item TOPFIRST
21040 The frame is top-field-first.
21041 @item BOTTOMFIRST
21042 The frame is bottom-field-first.
21043 @end table
21044
21045 @item consumed_sample_n @emph{(audio only)}
21046 the number of selected samples before the current frame
21047
21048 @item samples_n @emph{(audio only)}
21049 the number of samples in the current frame
21050
21051 @item sample_rate @emph{(audio only)}
21052 the input sample rate
21053
21054 @item key
21055 This is 1 if the filtered frame is a key-frame, 0 otherwise.
21056
21057 @item pos
21058 the position in the file of the filtered frame, -1 if the information
21059 is not available (e.g. for synthetic video)
21060
21061 @item scene @emph{(video only)}
21062 value between 0 and 1 to indicate a new scene; a low value reflects a low
21063 probability for the current frame to introduce a new scene, while a higher
21064 value means the current frame is more likely to be one (see the example below)
21065
21066 @item concatdec_select
21067 The concat demuxer can select only part of a concat input file by setting an
21068 inpoint and an outpoint, but the output packets may not be entirely contained
21069 in the selected interval. By using this variable, it is possible to skip frames
21070 generated by the concat demuxer which are not exactly contained in the selected
21071 interval.
21072
21073 This works by comparing the frame pts against the @var{lavf.concat.start_time}
21074 and the @var{lavf.concat.duration} packet metadata values which are also
21075 present in the decoded frames.
21076
21077 The @var{concatdec_select} variable is -1 if the frame pts is at least
21078 start_time and either the duration metadata is missing or the frame pts is less
21079 than start_time + duration, 0 otherwise, and NaN if the start_time metadata is
21080 missing.
21081
21082 That basically means that an input frame is selected if its pts is within the
21083 interval set by the concat demuxer.
21084
21085 @end table
21086
21087 The default value of the select expression is "1".
21088
21089 @subsection Examples
21090
21091 @itemize
21092 @item
21093 Select all frames in input:
21094 @example
21095 select
21096 @end example
21097
21098 The example above is the same as:
21099 @example
21100 select=1
21101 @end example
21102
21103 @item
21104 Skip all frames:
21105 @example
21106 select=0
21107 @end example
21108
21109 @item
21110 Select only I-frames:
21111 @example
21112 select='eq(pict_type\,I)'
21113 @end example
21114
21115 @item
21116 Select one frame every 100:
21117 @example
21118 select='not(mod(n\,100))'
21119 @end example
21120
21121 @item
21122 Select only frames contained in the 10-20 time interval:
21123 @example
21124 select=between(t\,10\,20)
21125 @end example
21126
21127 @item
21128 Select only I-frames contained in the 10-20 time interval:
21129 @example
21130 select=between(t\,10\,20)*eq(pict_type\,I)
21131 @end example
21132
21133 @item
21134 Select frames with a minimum distance of 10 seconds:
21135 @example
21136 select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
21137 @end example
21138
21139 @item
21140 Use aselect to select only audio frames with samples number > 100:
21141 @example
21142 aselect='gt(samples_n\,100)'
21143 @end example
21144
21145 @item
21146 Create a mosaic of the first scenes:
21147 @example
21148 ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
21149 @end example
21150
21151 Comparing @var{scene} against a value between 0.3 and 0.5 is generally a sane
21152 choice.
21153
21154 @item
21155 Send even and odd frames to separate outputs, and compose them:
21156 @example
21157 select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
21158 @end example
21159
21160 @item
21161 Select useful frames from an ffconcat file which is using inpoints and
21162 outpoints but where the source files are not intra frame only.
21163 @example
21164 ffmpeg -copyts -vsync 0 -segment_time_metadata 1 -i input.ffconcat -vf select=concatdec_select -af aselect=concatdec_select output.avi
21165 @end example
21166 @end itemize
21167
21168 @section sendcmd, asendcmd
21169
21170 Send commands to filters in the filtergraph.
21171
21172 These filters read commands to be sent to other filters in the
21173 filtergraph.
21174
21175 @code{sendcmd} must be inserted between two video filters,
21176 @code{asendcmd} must be inserted between two audio filters, but apart
21177 from that they act the same way.
21178
21179 The specification of commands can be provided in the filter arguments
21180 with the @var{commands} option, or in a file specified by the
21181 @var{filename} option.
21182
21183 These filters accept the following options:
21184 @table @option
21185 @item commands, c
21186 Set the commands to be read and sent to the other filters.
21187 @item filename, f
21188 Set the filename of the commands to be read and sent to the other
21189 filters.
21190 @end table
21191
21192 @subsection Commands syntax
21193
21194 A commands description consists of a sequence of interval
21195 specifications, comprising a list of commands to be executed when a
21196 particular event related to that interval occurs. The occurring event
21197 is typically the current frame time entering or leaving a given time
21198 interval.
21199
21200 An interval is specified by the following syntax:
21201 @example
21202 @var{START}[-@var{END}] @var{COMMANDS};
21203 @end example
21204
21205 The time interval is specified by the @var{START} and @var{END} times.
21206 @var{END} is optional and defaults to the maximum time.
21207
21208 The current frame time is considered within the specified interval if
21209 it is included in the interval [@var{START}, @var{END}), that is when
21210 the time is greater or equal to @var{START} and is lesser than
21211 @var{END}.
21212
21213 @var{COMMANDS} consists of a sequence of one or more command
21214 specifications, separated by ",", relating to that interval.  The
21215 syntax of a command specification is given by:
21216 @example
21217 [@var{FLAGS}] @var{TARGET} @var{COMMAND} @var{ARG}
21218 @end example
21219
21220 @var{FLAGS} is optional and specifies the type of events relating to
21221 the time interval which enable sending the specified command, and must
21222 be a non-null sequence of identifier flags separated by "+" or "|" and
21223 enclosed between "[" and "]".
21224
21225 The following flags are recognized:
21226 @table @option
21227 @item enter
21228 The command is sent when the current frame timestamp enters the
21229 specified interval. In other words, the command is sent when the
21230 previous frame timestamp was not in the given interval, and the
21231 current is.
21232
21233 @item leave
21234 The command is sent when the current frame timestamp leaves the
21235 specified interval. In other words, the command is sent when the
21236 previous frame timestamp was in the given interval, and the
21237 current is not.
21238 @end table
21239
21240 If @var{FLAGS} is not specified, a default value of @code{[enter]} is
21241 assumed.
21242
21243 @var{TARGET} specifies the target of the command, usually the name of
21244 the filter class or a specific filter instance name.
21245
21246 @var{COMMAND} specifies the name of the command for the target filter.
21247
21248 @var{ARG} is optional and specifies the optional list of argument for
21249 the given @var{COMMAND}.
21250
21251 Between one interval specification and another, whitespaces, or
21252 sequences of characters starting with @code{#} until the end of line,
21253 are ignored and can be used to annotate comments.
21254
21255 A simplified BNF description of the commands specification syntax
21256 follows:
21257 @example
21258 @var{COMMAND_FLAG}  ::= "enter" | "leave"
21259 @var{COMMAND_FLAGS} ::= @var{COMMAND_FLAG} [(+|"|")@var{COMMAND_FLAG}]
21260 @var{COMMAND}       ::= ["[" @var{COMMAND_FLAGS} "]"] @var{TARGET} @var{COMMAND} [@var{ARG}]
21261 @var{COMMANDS}      ::= @var{COMMAND} [,@var{COMMANDS}]
21262 @var{INTERVAL}      ::= @var{START}[-@var{END}] @var{COMMANDS}
21263 @var{INTERVALS}     ::= @var{INTERVAL}[;@var{INTERVALS}]
21264 @end example
21265
21266 @subsection Examples
21267
21268 @itemize
21269 @item
21270 Specify audio tempo change at second 4:
21271 @example
21272 asendcmd=c='4.0 atempo tempo 1.5',atempo
21273 @end example
21274
21275 @item
21276 Target a specific filter instance:
21277 @example
21278 asendcmd=c='4.0 atempo@@my tempo 1.5',atempo@@my
21279 @end example
21280
21281 @item
21282 Specify a list of drawtext and hue commands in a file.
21283 @example
21284 # show text in the interval 5-10
21285 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
21286          [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
21287
21288 # desaturate the image in the interval 15-20
21289 15.0-20.0 [enter] hue s 0,
21290           [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
21291           [leave] hue s 1,
21292           [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
21293
21294 # apply an exponential saturation fade-out effect, starting from time 25
21295 25 [enter] hue s exp(25-t)
21296 @end example
21297
21298 A filtergraph allowing to read and process the above command list
21299 stored in a file @file{test.cmd}, can be specified with:
21300 @example
21301 sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
21302 @end example
21303 @end itemize
21304
21305 @anchor{setpts}
21306 @section setpts, asetpts
21307
21308 Change the PTS (presentation timestamp) of the input frames.
21309
21310 @code{setpts} works on video frames, @code{asetpts} on audio frames.
21311
21312 This filter accepts the following options:
21313
21314 @table @option
21315
21316 @item expr
21317 The expression which is evaluated for each frame to construct its timestamp.
21318
21319 @end table
21320
21321 The expression is evaluated through the eval API and can contain the following
21322 constants:
21323
21324 @table @option
21325 @item FRAME_RATE, FR
21326 frame rate, only defined for constant frame-rate video
21327
21328 @item PTS
21329 The presentation timestamp in input
21330
21331 @item N
21332 The count of the input frame for video or the number of consumed samples,
21333 not including the current frame for audio, starting from 0.
21334
21335 @item NB_CONSUMED_SAMPLES
21336 The number of consumed samples, not including the current frame (only
21337 audio)
21338
21339 @item NB_SAMPLES, S
21340 The number of samples in the current frame (only audio)
21341
21342 @item SAMPLE_RATE, SR
21343 The audio sample rate.
21344
21345 @item STARTPTS
21346 The PTS of the first frame.
21347
21348 @item STARTT
21349 the time in seconds of the first frame
21350
21351 @item INTERLACED
21352 State whether the current frame is interlaced.
21353
21354 @item T
21355 the time in seconds of the current frame
21356
21357 @item POS
21358 original position in the file of the frame, or undefined if undefined
21359 for the current frame
21360
21361 @item PREV_INPTS
21362 The previous input PTS.
21363
21364 @item PREV_INT
21365 previous input time in seconds
21366
21367 @item PREV_OUTPTS
21368 The previous output PTS.
21369
21370 @item PREV_OUTT
21371 previous output time in seconds
21372
21373 @item RTCTIME
21374 The wallclock (RTC) time in microseconds. This is deprecated, use time(0)
21375 instead.
21376
21377 @item RTCSTART
21378 The wallclock (RTC) time at the start of the movie in microseconds.
21379
21380 @item TB
21381 The timebase of the input timestamps.
21382
21383 @end table
21384
21385 @subsection Examples
21386
21387 @itemize
21388 @item
21389 Start counting PTS from zero
21390 @example
21391 setpts=PTS-STARTPTS
21392 @end example
21393
21394 @item
21395 Apply fast motion effect:
21396 @example
21397 setpts=0.5*PTS
21398 @end example
21399
21400 @item
21401 Apply slow motion effect:
21402 @example
21403 setpts=2.0*PTS
21404 @end example
21405
21406 @item
21407 Set fixed rate of 25 frames per second:
21408 @example
21409 setpts=N/(25*TB)
21410 @end example
21411
21412 @item
21413 Set fixed rate 25 fps with some jitter:
21414 @example
21415 setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
21416 @end example
21417
21418 @item
21419 Apply an offset of 10 seconds to the input PTS:
21420 @example
21421 setpts=PTS+10/TB
21422 @end example
21423
21424 @item
21425 Generate timestamps from a "live source" and rebase onto the current timebase:
21426 @example
21427 setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
21428 @end example
21429
21430 @item
21431 Generate timestamps by counting samples:
21432 @example
21433 asetpts=N/SR/TB
21434 @end example
21435
21436 @end itemize
21437
21438 @section setrange
21439
21440 Force color range for the output video frame.
21441
21442 The @code{setrange} filter marks the color range property for the
21443 output frames. It does not change the input frame, but only sets the
21444 corresponding property, which affects how the frame is treated by
21445 following filters.
21446
21447 The filter accepts the following options:
21448
21449 @table @option
21450
21451 @item range
21452 Available values are:
21453
21454 @table @samp
21455 @item auto
21456 Keep the same color range property.
21457
21458 @item unspecified, unknown
21459 Set the color range as unspecified.
21460
21461 @item limited, tv, mpeg
21462 Set the color range as limited.
21463
21464 @item full, pc, jpeg
21465 Set the color range as full.
21466 @end table
21467 @end table
21468
21469 @section settb, asettb
21470
21471 Set the timebase to use for the output frames timestamps.
21472 It is mainly useful for testing timebase configuration.
21473
21474 It accepts the following parameters:
21475
21476 @table @option
21477
21478 @item expr, tb
21479 The expression which is evaluated into the output timebase.
21480
21481 @end table
21482
21483 The value for @option{tb} is an arithmetic expression representing a
21484 rational. The expression can contain the constants "AVTB" (the default
21485 timebase), "intb" (the input timebase) and "sr" (the sample rate,
21486 audio only). Default value is "intb".
21487
21488 @subsection Examples
21489
21490 @itemize
21491 @item
21492 Set the timebase to 1/25:
21493 @example
21494 settb=expr=1/25
21495 @end example
21496
21497 @item
21498 Set the timebase to 1/10:
21499 @example
21500 settb=expr=0.1
21501 @end example
21502
21503 @item
21504 Set the timebase to 1001/1000:
21505 @example
21506 settb=1+0.001
21507 @end example
21508
21509 @item
21510 Set the timebase to 2*intb:
21511 @example
21512 settb=2*intb
21513 @end example
21514
21515 @item
21516 Set the default timebase value:
21517 @example
21518 settb=AVTB
21519 @end example
21520 @end itemize
21521
21522 @section showcqt
21523 Convert input audio to a video output representing frequency spectrum
21524 logarithmically using Brown-Puckette constant Q transform algorithm with
21525 direct frequency domain coefficient calculation (but the transform itself
21526 is not really constant Q, instead the Q factor is actually variable/clamped),
21527 with musical tone scale, from E0 to D#10.
21528
21529 The filter accepts the following options:
21530
21531 @table @option
21532 @item size, s
21533 Specify the video size for the output. It must be even. For the syntax of this option,
21534 check the @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21535 Default value is @code{1920x1080}.
21536
21537 @item fps, rate, r
21538 Set the output frame rate. Default value is @code{25}.
21539
21540 @item bar_h
21541 Set the bargraph height. It must be even. Default value is @code{-1} which
21542 computes the bargraph height automatically.
21543
21544 @item axis_h
21545 Set the axis height. It must be even. Default value is @code{-1} which computes
21546 the axis height automatically.
21547
21548 @item sono_h
21549 Set the sonogram height. It must be even. Default value is @code{-1} which
21550 computes the sonogram height automatically.
21551
21552 @item fullhd
21553 Set the fullhd resolution. This option is deprecated, use @var{size}, @var{s}
21554 instead. Default value is @code{1}.
21555
21556 @item sono_v, volume
21557 Specify the sonogram volume expression. It can contain variables:
21558 @table @option
21559 @item bar_v
21560 the @var{bar_v} evaluated expression
21561 @item frequency, freq, f
21562 the frequency where it is evaluated
21563 @item timeclamp, tc
21564 the value of @var{timeclamp} option
21565 @end table
21566 and functions:
21567 @table @option
21568 @item a_weighting(f)
21569 A-weighting of equal loudness
21570 @item b_weighting(f)
21571 B-weighting of equal loudness
21572 @item c_weighting(f)
21573 C-weighting of equal loudness.
21574 @end table
21575 Default value is @code{16}.
21576
21577 @item bar_v, volume2
21578 Specify the bargraph volume expression. It can contain variables:
21579 @table @option
21580 @item sono_v
21581 the @var{sono_v} evaluated expression
21582 @item frequency, freq, f
21583 the frequency where it is evaluated
21584 @item timeclamp, tc
21585 the value of @var{timeclamp} option
21586 @end table
21587 and functions:
21588 @table @option
21589 @item a_weighting(f)
21590 A-weighting of equal loudness
21591 @item b_weighting(f)
21592 B-weighting of equal loudness
21593 @item c_weighting(f)
21594 C-weighting of equal loudness.
21595 @end table
21596 Default value is @code{sono_v}.
21597
21598 @item sono_g, gamma
21599 Specify the sonogram gamma. Lower gamma makes the spectrum more contrast,
21600 higher gamma makes the spectrum having more range. Default value is @code{3}.
21601 Acceptable range is @code{[1, 7]}.
21602
21603 @item bar_g, gamma2
21604 Specify the bargraph gamma. Default value is @code{1}. Acceptable range is
21605 @code{[1, 7]}.
21606
21607 @item bar_t
21608 Specify the bargraph transparency level. Lower value makes the bargraph sharper.
21609 Default value is @code{1}. Acceptable range is @code{[0, 1]}.
21610
21611 @item timeclamp, tc
21612 Specify the transform timeclamp. At low frequency, there is trade-off between
21613 accuracy in time domain and frequency domain. If timeclamp is lower,
21614 event in time domain is represented more accurately (such as fast bass drum),
21615 otherwise event in frequency domain is represented more accurately
21616 (such as bass guitar). Acceptable range is @code{[0.002, 1]}. Default value is @code{0.17}.
21617
21618 @item attack
21619 Set attack time in seconds. The default is @code{0} (disabled). Otherwise, it
21620 limits future samples by applying asymmetric windowing in time domain, useful
21621 when low latency is required. Accepted range is @code{[0, 1]}.
21622
21623 @item basefreq
21624 Specify the transform base frequency. Default value is @code{20.01523126408007475},
21625 which is frequency 50 cents below E0. Acceptable range is @code{[10, 100000]}.
21626
21627 @item endfreq
21628 Specify the transform end frequency. Default value is @code{20495.59681441799654},
21629 which is frequency 50 cents above D#10. Acceptable range is @code{[10, 100000]}.
21630
21631 @item coeffclamp
21632 This option is deprecated and ignored.
21633
21634 @item tlength
21635 Specify the transform length in time domain. Use this option to control accuracy
21636 trade-off between time domain and frequency domain at every frequency sample.
21637 It can contain variables:
21638 @table @option
21639 @item frequency, freq, f
21640 the frequency where it is evaluated
21641 @item timeclamp, tc
21642 the value of @var{timeclamp} option.
21643 @end table
21644 Default value is @code{384*tc/(384+tc*f)}.
21645
21646 @item count
21647 Specify the transform count for every video frame. Default value is @code{6}.
21648 Acceptable range is @code{[1, 30]}.
21649
21650 @item fcount
21651 Specify the transform count for every single pixel. Default value is @code{0},
21652 which makes it computed automatically. Acceptable range is @code{[0, 10]}.
21653
21654 @item fontfile
21655 Specify font file for use with freetype to draw the axis. If not specified,
21656 use embedded font. Note that drawing with font file or embedded font is not
21657 implemented with custom @var{basefreq} and @var{endfreq}, use @var{axisfile}
21658 option instead.
21659
21660 @item font
21661 Specify fontconfig pattern. This has lower priority than @var{fontfile}.
21662 The : in the pattern may be replaced by | to avoid unnecessary escaping.
21663
21664 @item fontcolor
21665 Specify font color expression. This is arithmetic expression that should return
21666 integer value 0xRRGGBB. It can contain variables:
21667 @table @option
21668 @item frequency, freq, f
21669 the frequency where it is evaluated
21670 @item timeclamp, tc
21671 the value of @var{timeclamp} option
21672 @end table
21673 and functions:
21674 @table @option
21675 @item midi(f)
21676 midi number of frequency f, some midi numbers: E0(16), C1(24), C2(36), A4(69)
21677 @item r(x), g(x), b(x)
21678 red, green, and blue value of intensity x.
21679 @end table
21680 Default value is @code{st(0, (midi(f)-59.5)/12);
21681 st(1, if(between(ld(0),0,1), 0.5-0.5*cos(2*PI*ld(0)), 0));
21682 r(1-ld(1)) + b(ld(1))}.
21683
21684 @item axisfile
21685 Specify image file to draw the axis. This option override @var{fontfile} and
21686 @var{fontcolor} option.
21687
21688 @item axis, text
21689 Enable/disable drawing text to the axis. If it is set to @code{0}, drawing to
21690 the axis is disabled, ignoring @var{fontfile} and @var{axisfile} option.
21691 Default value is @code{1}.
21692
21693 @item csp
21694 Set colorspace. The accepted values are:
21695 @table @samp
21696 @item unspecified
21697 Unspecified (default)
21698
21699 @item bt709
21700 BT.709
21701
21702 @item fcc
21703 FCC
21704
21705 @item bt470bg
21706 BT.470BG or BT.601-6 625
21707
21708 @item smpte170m
21709 SMPTE-170M or BT.601-6 525
21710
21711 @item smpte240m
21712 SMPTE-240M
21713
21714 @item bt2020ncl
21715 BT.2020 with non-constant luminance
21716
21717 @end table
21718
21719 @item cscheme
21720 Set spectrogram color scheme. This is list of floating point values with format
21721 @code{left_r|left_g|left_b|right_r|right_g|right_b}.
21722 The default is @code{1|0.5|0|0|0.5|1}.
21723
21724 @end table
21725
21726 @subsection Examples
21727
21728 @itemize
21729 @item
21730 Playing audio while showing the spectrum:
21731 @example
21732 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
21733 @end example
21734
21735 @item
21736 Same as above, but with frame rate 30 fps:
21737 @example
21738 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
21739 @end example
21740
21741 @item
21742 Playing at 1280x720:
21743 @example
21744 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
21745 @end example
21746
21747 @item
21748 Disable sonogram display:
21749 @example
21750 sono_h=0
21751 @end example
21752
21753 @item
21754 A1 and its harmonics: A1, A2, (near)E3, A3:
21755 @example
21756 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),
21757                  asplit[a][out1]; [a] showcqt [out0]'
21758 @end example
21759
21760 @item
21761 Same as above, but with more accuracy in frequency domain:
21762 @example
21763 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),
21764                  asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]'
21765 @end example
21766
21767 @item
21768 Custom volume:
21769 @example
21770 bar_v=10:sono_v=bar_v*a_weighting(f)
21771 @end example
21772
21773 @item
21774 Custom gamma, now spectrum is linear to the amplitude.
21775 @example
21776 bar_g=2:sono_g=2
21777 @end example
21778
21779 @item
21780 Custom tlength equation:
21781 @example
21782 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)))'
21783 @end example
21784
21785 @item
21786 Custom fontcolor and fontfile, C-note is colored green, others are colored blue:
21787 @example
21788 fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
21789 @end example
21790
21791 @item
21792 Custom font using fontconfig:
21793 @example
21794 font='Courier New,Monospace,mono|bold'
21795 @end example
21796
21797 @item
21798 Custom frequency range with custom axis using image file:
21799 @example
21800 axisfile=myaxis.png:basefreq=40:endfreq=10000
21801 @end example
21802 @end itemize
21803
21804 @section showfreqs
21805
21806 Convert input audio to video output representing the audio power spectrum.
21807 Audio amplitude is on Y-axis while frequency is on X-axis.
21808
21809 The filter accepts the following options:
21810
21811 @table @option
21812 @item size, s
21813 Specify size of video. For the syntax of this option, check the
21814 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21815 Default is @code{1024x512}.
21816
21817 @item mode
21818 Set display mode.
21819 This set how each frequency bin will be represented.
21820
21821 It accepts the following values:
21822 @table @samp
21823 @item line
21824 @item bar
21825 @item dot
21826 @end table
21827 Default is @code{bar}.
21828
21829 @item ascale
21830 Set amplitude scale.
21831
21832 It accepts the following values:
21833 @table @samp
21834 @item lin
21835 Linear scale.
21836
21837 @item sqrt
21838 Square root scale.
21839
21840 @item cbrt
21841 Cubic root scale.
21842
21843 @item log
21844 Logarithmic scale.
21845 @end table
21846 Default is @code{log}.
21847
21848 @item fscale
21849 Set frequency scale.
21850
21851 It accepts the following values:
21852 @table @samp
21853 @item lin
21854 Linear scale.
21855
21856 @item log
21857 Logarithmic scale.
21858
21859 @item rlog
21860 Reverse logarithmic scale.
21861 @end table
21862 Default is @code{lin}.
21863
21864 @item win_size
21865 Set window size.
21866
21867 It accepts the following values:
21868 @table @samp
21869 @item w16
21870 @item w32
21871 @item w64
21872 @item w128
21873 @item w256
21874 @item w512
21875 @item w1024
21876 @item w2048
21877 @item w4096
21878 @item w8192
21879 @item w16384
21880 @item w32768
21881 @item w65536
21882 @end table
21883 Default is @code{w2048}
21884
21885 @item win_func
21886 Set windowing function.
21887
21888 It accepts the following values:
21889 @table @samp
21890 @item rect
21891 @item bartlett
21892 @item hanning
21893 @item hamming
21894 @item blackman
21895 @item welch
21896 @item flattop
21897 @item bharris
21898 @item bnuttall
21899 @item bhann
21900 @item sine
21901 @item nuttall
21902 @item lanczos
21903 @item gauss
21904 @item tukey
21905 @item dolph
21906 @item cauchy
21907 @item parzen
21908 @item poisson
21909 @item bohman
21910 @end table
21911 Default is @code{hanning}.
21912
21913 @item overlap
21914 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
21915 which means optimal overlap for selected window function will be picked.
21916
21917 @item averaging
21918 Set time averaging. Setting this to 0 will display current maximal peaks.
21919 Default is @code{1}, which means time averaging is disabled.
21920
21921 @item colors
21922 Specify list of colors separated by space or by '|' which will be used to
21923 draw channel frequencies. Unrecognized or missing colors will be replaced
21924 by white color.
21925
21926 @item cmode
21927 Set channel display mode.
21928
21929 It accepts the following values:
21930 @table @samp
21931 @item combined
21932 @item separate
21933 @end table
21934 Default is @code{combined}.
21935
21936 @item minamp
21937 Set minimum amplitude used in @code{log} amplitude scaler.
21938
21939 @end table
21940
21941 @anchor{showspectrum}
21942 @section showspectrum
21943
21944 Convert input audio to a video output, representing the audio frequency
21945 spectrum.
21946
21947 The filter accepts the following options:
21948
21949 @table @option
21950 @item size, s
21951 Specify the video size for the output. For the syntax of this option, check the
21952 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21953 Default value is @code{640x512}.
21954
21955 @item slide
21956 Specify how the spectrum should slide along the window.
21957
21958 It accepts the following values:
21959 @table @samp
21960 @item replace
21961 the samples start again on the left when they reach the right
21962 @item scroll
21963 the samples scroll from right to left
21964 @item fullframe
21965 frames are only produced when the samples reach the right
21966 @item rscroll
21967 the samples scroll from left to right
21968 @end table
21969
21970 Default value is @code{replace}.
21971
21972 @item mode
21973 Specify display mode.
21974
21975 It accepts the following values:
21976 @table @samp
21977 @item combined
21978 all channels are displayed in the same row
21979 @item separate
21980 all channels are displayed in separate rows
21981 @end table
21982
21983 Default value is @samp{combined}.
21984
21985 @item color
21986 Specify display color mode.
21987
21988 It accepts the following values:
21989 @table @samp
21990 @item channel
21991 each channel is displayed in a separate color
21992 @item intensity
21993 each channel is displayed using the same color scheme
21994 @item rainbow
21995 each channel is displayed using the rainbow color scheme
21996 @item moreland
21997 each channel is displayed using the moreland color scheme
21998 @item nebulae
21999 each channel is displayed using the nebulae color scheme
22000 @item fire
22001 each channel is displayed using the fire color scheme
22002 @item fiery
22003 each channel is displayed using the fiery color scheme
22004 @item fruit
22005 each channel is displayed using the fruit color scheme
22006 @item cool
22007 each channel is displayed using the cool color scheme
22008 @item magma
22009 each channel is displayed using the magma color scheme
22010 @item green
22011 each channel is displayed using the green color scheme
22012 @item viridis
22013 each channel is displayed using the viridis color scheme
22014 @item plasma
22015 each channel is displayed using the plasma color scheme
22016 @item cividis
22017 each channel is displayed using the cividis color scheme
22018 @item terrain
22019 each channel is displayed using the terrain color scheme
22020 @end table
22021
22022 Default value is @samp{channel}.
22023
22024 @item scale
22025 Specify scale used for calculating intensity color values.
22026
22027 It accepts the following values:
22028 @table @samp
22029 @item lin
22030 linear
22031 @item sqrt
22032 square root, default
22033 @item cbrt
22034 cubic root
22035 @item log
22036 logarithmic
22037 @item 4thrt
22038 4th root
22039 @item 5thrt
22040 5th root
22041 @end table
22042
22043 Default value is @samp{sqrt}.
22044
22045 @item saturation
22046 Set saturation modifier for displayed colors. Negative values provide
22047 alternative color scheme. @code{0} is no saturation at all.
22048 Saturation must be in [-10.0, 10.0] range.
22049 Default value is @code{1}.
22050
22051 @item win_func
22052 Set window function.
22053
22054 It accepts the following values:
22055 @table @samp
22056 @item rect
22057 @item bartlett
22058 @item hann
22059 @item hanning
22060 @item hamming
22061 @item blackman
22062 @item welch
22063 @item flattop
22064 @item bharris
22065 @item bnuttall
22066 @item bhann
22067 @item sine
22068 @item nuttall
22069 @item lanczos
22070 @item gauss
22071 @item tukey
22072 @item dolph
22073 @item cauchy
22074 @item parzen
22075 @item poisson
22076 @item bohman
22077 @end table
22078
22079 Default value is @code{hann}.
22080
22081 @item orientation
22082 Set orientation of time vs frequency axis. Can be @code{vertical} or
22083 @code{horizontal}. Default is @code{vertical}.
22084
22085 @item overlap
22086 Set ratio of overlap window. Default value is @code{0}.
22087 When value is @code{1} overlap is set to recommended size for specific
22088 window function currently used.
22089
22090 @item gain
22091 Set scale gain for calculating intensity color values.
22092 Default value is @code{1}.
22093
22094 @item data
22095 Set which data to display. Can be @code{magnitude}, default or @code{phase}.
22096
22097 @item rotation
22098 Set color rotation, must be in [-1.0, 1.0] range.
22099 Default value is @code{0}.
22100
22101 @item start
22102 Set start frequency from which to display spectrogram. Default is @code{0}.
22103
22104 @item stop
22105 Set stop frequency to which to display spectrogram. Default is @code{0}.
22106
22107 @item fps
22108 Set upper frame rate limit. Default is @code{auto}, unlimited.
22109
22110 @item legend
22111 Draw time and frequency axes and legends. Default is disabled.
22112 @end table
22113
22114 The usage is very similar to the showwaves filter; see the examples in that
22115 section.
22116
22117 @subsection Examples
22118
22119 @itemize
22120 @item
22121 Large window with logarithmic color scaling:
22122 @example
22123 showspectrum=s=1280x480:scale=log
22124 @end example
22125
22126 @item
22127 Complete example for a colored and sliding spectrum per channel using @command{ffplay}:
22128 @example
22129 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
22130              [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
22131 @end example
22132 @end itemize
22133
22134 @section showspectrumpic
22135
22136 Convert input audio to a single video frame, representing the audio frequency
22137 spectrum.
22138
22139 The filter accepts the following options:
22140
22141 @table @option
22142 @item size, s
22143 Specify the video size for the output. For the syntax of this option, check the
22144 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22145 Default value is @code{4096x2048}.
22146
22147 @item mode
22148 Specify display mode.
22149
22150 It accepts the following values:
22151 @table @samp
22152 @item combined
22153 all channels are displayed in the same row
22154 @item separate
22155 all channels are displayed in separate rows
22156 @end table
22157 Default value is @samp{combined}.
22158
22159 @item color
22160 Specify display color mode.
22161
22162 It accepts the following values:
22163 @table @samp
22164 @item channel
22165 each channel is displayed in a separate color
22166 @item intensity
22167 each channel is displayed using the same color scheme
22168 @item rainbow
22169 each channel is displayed using the rainbow color scheme
22170 @item moreland
22171 each channel is displayed using the moreland color scheme
22172 @item nebulae
22173 each channel is displayed using the nebulae color scheme
22174 @item fire
22175 each channel is displayed using the fire color scheme
22176 @item fiery
22177 each channel is displayed using the fiery color scheme
22178 @item fruit
22179 each channel is displayed using the fruit color scheme
22180 @item cool
22181 each channel is displayed using the cool color scheme
22182 @item magma
22183 each channel is displayed using the magma color scheme
22184 @item green
22185 each channel is displayed using the green color scheme
22186 @item viridis
22187 each channel is displayed using the viridis color scheme
22188 @item plasma
22189 each channel is displayed using the plasma color scheme
22190 @item cividis
22191 each channel is displayed using the cividis color scheme
22192 @item terrain
22193 each channel is displayed using the terrain color scheme
22194 @end table
22195 Default value is @samp{intensity}.
22196
22197 @item scale
22198 Specify scale used for calculating intensity color values.
22199
22200 It accepts the following values:
22201 @table @samp
22202 @item lin
22203 linear
22204 @item sqrt
22205 square root, default
22206 @item cbrt
22207 cubic root
22208 @item log
22209 logarithmic
22210 @item 4thrt
22211 4th root
22212 @item 5thrt
22213 5th root
22214 @end table
22215 Default value is @samp{log}.
22216
22217 @item saturation
22218 Set saturation modifier for displayed colors. Negative values provide
22219 alternative color scheme. @code{0} is no saturation at all.
22220 Saturation must be in [-10.0, 10.0] range.
22221 Default value is @code{1}.
22222
22223 @item win_func
22224 Set window function.
22225
22226 It accepts the following values:
22227 @table @samp
22228 @item rect
22229 @item bartlett
22230 @item hann
22231 @item hanning
22232 @item hamming
22233 @item blackman
22234 @item welch
22235 @item flattop
22236 @item bharris
22237 @item bnuttall
22238 @item bhann
22239 @item sine
22240 @item nuttall
22241 @item lanczos
22242 @item gauss
22243 @item tukey
22244 @item dolph
22245 @item cauchy
22246 @item parzen
22247 @item poisson
22248 @item bohman
22249 @end table
22250 Default value is @code{hann}.
22251
22252 @item orientation
22253 Set orientation of time vs frequency axis. Can be @code{vertical} or
22254 @code{horizontal}. Default is @code{vertical}.
22255
22256 @item gain
22257 Set scale gain for calculating intensity color values.
22258 Default value is @code{1}.
22259
22260 @item legend
22261 Draw time and frequency axes and legends. Default is enabled.
22262
22263 @item rotation
22264 Set color rotation, must be in [-1.0, 1.0] range.
22265 Default value is @code{0}.
22266
22267 @item start
22268 Set start frequency from which to display spectrogram. Default is @code{0}.
22269
22270 @item stop
22271 Set stop frequency to which to display spectrogram. Default is @code{0}.
22272 @end table
22273
22274 @subsection Examples
22275
22276 @itemize
22277 @item
22278 Extract an audio spectrogram of a whole audio track
22279 in a 1024x1024 picture using @command{ffmpeg}:
22280 @example
22281 ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
22282 @end example
22283 @end itemize
22284
22285 @section showvolume
22286
22287 Convert input audio volume to a video output.
22288
22289 The filter accepts the following options:
22290
22291 @table @option
22292 @item rate, r
22293 Set video rate.
22294
22295 @item b
22296 Set border width, allowed range is [0, 5]. Default is 1.
22297
22298 @item w
22299 Set channel width, allowed range is [80, 8192]. Default is 400.
22300
22301 @item h
22302 Set channel height, allowed range is [1, 900]. Default is 20.
22303
22304 @item f
22305 Set fade, allowed range is [0, 1]. Default is 0.95.
22306
22307 @item c
22308 Set volume color expression.
22309
22310 The expression can use the following variables:
22311
22312 @table @option
22313 @item VOLUME
22314 Current max volume of channel in dB.
22315
22316 @item PEAK
22317 Current peak.
22318
22319 @item CHANNEL
22320 Current channel number, starting from 0.
22321 @end table
22322
22323 @item t
22324 If set, displays channel names. Default is enabled.
22325
22326 @item v
22327 If set, displays volume values. Default is enabled.
22328
22329 @item o
22330 Set orientation, can be horizontal: @code{h} or vertical: @code{v},
22331 default is @code{h}.
22332
22333 @item s
22334 Set step size, allowed range is [0, 5]. Default is 0, which means
22335 step is disabled.
22336
22337 @item p
22338 Set background opacity, allowed range is [0, 1]. Default is 0.
22339
22340 @item m
22341 Set metering mode, can be peak: @code{p} or rms: @code{r},
22342 default is @code{p}.
22343
22344 @item ds
22345 Set display scale, can be linear: @code{lin} or log: @code{log},
22346 default is @code{lin}.
22347
22348 @item dm
22349 In second.
22350 If set to > 0., display a line for the max level
22351 in the previous seconds.
22352 default is disabled: @code{0.}
22353
22354 @item dmc
22355 The color of the max line. Use when @code{dm} option is set to > 0.
22356 default is: @code{orange}
22357 @end table
22358
22359 @section showwaves
22360
22361 Convert input audio to a video output, representing the samples waves.
22362
22363 The filter accepts the following options:
22364
22365 @table @option
22366 @item size, s
22367 Specify the video size for the output. For the syntax of this option, check the
22368 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22369 Default value is @code{600x240}.
22370
22371 @item mode
22372 Set display mode.
22373
22374 Available values are:
22375 @table @samp
22376 @item point
22377 Draw a point for each sample.
22378
22379 @item line
22380 Draw a vertical line for each sample.
22381
22382 @item p2p
22383 Draw a point for each sample and a line between them.
22384
22385 @item cline
22386 Draw a centered vertical line for each sample.
22387 @end table
22388
22389 Default value is @code{point}.
22390
22391 @item n
22392 Set the number of samples which are printed on the same column. A
22393 larger value will decrease the frame rate. Must be a positive
22394 integer. This option can be set only if the value for @var{rate}
22395 is not explicitly specified.
22396
22397 @item rate, r
22398 Set the (approximate) output frame rate. This is done by setting the
22399 option @var{n}. Default value is "25".
22400
22401 @item split_channels
22402 Set if channels should be drawn separately or overlap. Default value is 0.
22403
22404 @item colors
22405 Set colors separated by '|' which are going to be used for drawing of each channel.
22406
22407 @item scale
22408 Set amplitude scale.
22409
22410 Available values are:
22411 @table @samp
22412 @item lin
22413 Linear.
22414
22415 @item log
22416 Logarithmic.
22417
22418 @item sqrt
22419 Square root.
22420
22421 @item cbrt
22422 Cubic root.
22423 @end table
22424
22425 Default is linear.
22426
22427 @item draw
22428 Set the draw mode. This is mostly useful to set for high @var{n}.
22429
22430 Available values are:
22431 @table @samp
22432 @item scale
22433 Scale pixel values for each drawn sample.
22434
22435 @item full
22436 Draw every sample directly.
22437 @end table
22438
22439 Default value is @code{scale}.
22440 @end table
22441
22442 @subsection Examples
22443
22444 @itemize
22445 @item
22446 Output the input file audio and the corresponding video representation
22447 at the same time:
22448 @example
22449 amovie=a.mp3,asplit[out0],showwaves[out1]
22450 @end example
22451
22452 @item
22453 Create a synthetic signal and show it with showwaves, forcing a
22454 frame rate of 30 frames per second:
22455 @example
22456 aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
22457 @end example
22458 @end itemize
22459
22460 @section showwavespic
22461
22462 Convert input audio to a single video frame, representing the samples waves.
22463
22464 The filter accepts the following options:
22465
22466 @table @option
22467 @item size, s
22468 Specify the video size for the output. For the syntax of this option, check the
22469 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22470 Default value is @code{600x240}.
22471
22472 @item split_channels
22473 Set if channels should be drawn separately or overlap. Default value is 0.
22474
22475 @item colors
22476 Set colors separated by '|' which are going to be used for drawing of each channel.
22477
22478 @item scale
22479 Set amplitude scale.
22480
22481 Available values are:
22482 @table @samp
22483 @item lin
22484 Linear.
22485
22486 @item log
22487 Logarithmic.
22488
22489 @item sqrt
22490 Square root.
22491
22492 @item cbrt
22493 Cubic root.
22494 @end table
22495
22496 Default is linear.
22497 @end table
22498
22499 @subsection Examples
22500
22501 @itemize
22502 @item
22503 Extract a channel split representation of the wave form of a whole audio track
22504 in a 1024x800 picture using @command{ffmpeg}:
22505 @example
22506 ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
22507 @end example
22508 @end itemize
22509
22510 @section sidedata, asidedata
22511
22512 Delete frame side data, or select frames based on it.
22513
22514 This filter accepts the following options:
22515
22516 @table @option
22517 @item mode
22518 Set mode of operation of the filter.
22519
22520 Can be one of the following:
22521
22522 @table @samp
22523 @item select
22524 Select every frame with side data of @code{type}.
22525
22526 @item delete
22527 Delete side data of @code{type}. If @code{type} is not set, delete all side
22528 data in the frame.
22529
22530 @end table
22531
22532 @item type
22533 Set side data type used with all modes. Must be set for @code{select} mode. For
22534 the list of frame side data types, refer to the @code{AVFrameSideDataType} enum
22535 in @file{libavutil/frame.h}. For example, to choose
22536 @code{AV_FRAME_DATA_PANSCAN} side data, you must specify @code{PANSCAN}.
22537
22538 @end table
22539
22540 @section spectrumsynth
22541
22542 Sythesize audio from 2 input video spectrums, first input stream represents
22543 magnitude across time and second represents phase across time.
22544 The filter will transform from frequency domain as displayed in videos back
22545 to time domain as presented in audio output.
22546
22547 This filter is primarily created for reversing processed @ref{showspectrum}
22548 filter outputs, but can synthesize sound from other spectrograms too.
22549 But in such case results are going to be poor if the phase data is not
22550 available, because in such cases phase data need to be recreated, usually
22551 it's just recreated from random noise.
22552 For best results use gray only output (@code{channel} color mode in
22553 @ref{showspectrum} filter) and @code{log} scale for magnitude video and
22554 @code{lin} scale for phase video. To produce phase, for 2nd video, use
22555 @code{data} option. Inputs videos should generally use @code{fullframe}
22556 slide mode as that saves resources needed for decoding video.
22557
22558 The filter accepts the following options:
22559
22560 @table @option
22561 @item sample_rate
22562 Specify sample rate of output audio, the sample rate of audio from which
22563 spectrum was generated may differ.
22564
22565 @item channels
22566 Set number of channels represented in input video spectrums.
22567
22568 @item scale
22569 Set scale which was used when generating magnitude input spectrum.
22570 Can be @code{lin} or @code{log}. Default is @code{log}.
22571
22572 @item slide
22573 Set slide which was used when generating inputs spectrums.
22574 Can be @code{replace}, @code{scroll}, @code{fullframe} or @code{rscroll}.
22575 Default is @code{fullframe}.
22576
22577 @item win_func
22578 Set window function used for resynthesis.
22579
22580 @item overlap
22581 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
22582 which means optimal overlap for selected window function will be picked.
22583
22584 @item orientation
22585 Set orientation of input videos. Can be @code{vertical} or @code{horizontal}.
22586 Default is @code{vertical}.
22587 @end table
22588
22589 @subsection Examples
22590
22591 @itemize
22592 @item
22593 First create magnitude and phase videos from audio, assuming audio is stereo with 44100 sample rate,
22594 then resynthesize videos back to audio with spectrumsynth:
22595 @example
22596 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
22597 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
22598 ffmpeg -i magnitude.nut -i phase.nut -lavfi spectrumsynth=channels=2:sample_rate=44100:win_func=hann:overlap=0.875:slide=fullframe output.flac
22599 @end example
22600 @end itemize
22601
22602 @section split, asplit
22603
22604 Split input into several identical outputs.
22605
22606 @code{asplit} works with audio input, @code{split} with video.
22607
22608 The filter accepts a single parameter which specifies the number of outputs. If
22609 unspecified, it defaults to 2.
22610
22611 @subsection Examples
22612
22613 @itemize
22614 @item
22615 Create two separate outputs from the same input:
22616 @example
22617 [in] split [out0][out1]
22618 @end example
22619
22620 @item
22621 To create 3 or more outputs, you need to specify the number of
22622 outputs, like in:
22623 @example
22624 [in] asplit=3 [out0][out1][out2]
22625 @end example
22626
22627 @item
22628 Create two separate outputs from the same input, one cropped and
22629 one padded:
22630 @example
22631 [in] split [splitout1][splitout2];
22632 [splitout1] crop=100:100:0:0    [cropout];
22633 [splitout2] pad=200:200:100:100 [padout];
22634 @end example
22635
22636 @item
22637 Create 5 copies of the input audio with @command{ffmpeg}:
22638 @example
22639 ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
22640 @end example
22641 @end itemize
22642
22643 @section zmq, azmq
22644
22645 Receive commands sent through a libzmq client, and forward them to
22646 filters in the filtergraph.
22647
22648 @code{zmq} and @code{azmq} work as a pass-through filters. @code{zmq}
22649 must be inserted between two video filters, @code{azmq} between two
22650 audio filters. Both are capable to send messages to any filter type.
22651
22652 To enable these filters you need to install the libzmq library and
22653 headers and configure FFmpeg with @code{--enable-libzmq}.
22654
22655 For more information about libzmq see:
22656 @url{http://www.zeromq.org/}
22657
22658 The @code{zmq} and @code{azmq} filters work as a libzmq server, which
22659 receives messages sent through a network interface defined by the
22660 @option{bind_address} (or the abbreviation "@option{b}") option.
22661 Default value of this option is @file{tcp://localhost:5555}. You may
22662 want to alter this value to your needs, but do not forget to escape any
22663 ':' signs (see @ref{filtergraph escaping}).
22664
22665 The received message must be in the form:
22666 @example
22667 @var{TARGET} @var{COMMAND} [@var{ARG}]
22668 @end example
22669
22670 @var{TARGET} specifies the target of the command, usually the name of
22671 the filter class or a specific filter instance name. The default
22672 filter instance name uses the pattern @samp{Parsed_<filter_name>_<index>},
22673 but you can override this by using the @samp{filter_name@@id} syntax
22674 (see @ref{Filtergraph syntax}).
22675
22676 @var{COMMAND} specifies the name of the command for the target filter.
22677
22678 @var{ARG} is optional and specifies the optional argument list for the
22679 given @var{COMMAND}.
22680
22681 Upon reception, the message is processed and the corresponding command
22682 is injected into the filtergraph. Depending on the result, the filter
22683 will send a reply to the client, adopting the format:
22684 @example
22685 @var{ERROR_CODE} @var{ERROR_REASON}
22686 @var{MESSAGE}
22687 @end example
22688
22689 @var{MESSAGE} is optional.
22690
22691 @subsection Examples
22692
22693 Look at @file{tools/zmqsend} for an example of a zmq client which can
22694 be used to send commands processed by these filters.
22695
22696 Consider the following filtergraph generated by @command{ffplay}.
22697 In this example the last overlay filter has an instance name. All other
22698 filters will have default instance names.
22699
22700 @example
22701 ffplay -dumpgraph 1 -f lavfi "
22702 color=s=100x100:c=red  [l];
22703 color=s=100x100:c=blue [r];
22704 nullsrc=s=200x100, zmq [bg];
22705 [bg][l]   overlay     [bg+l];
22706 [bg+l][r] overlay@@my=x=100 "
22707 @end example
22708
22709 To change the color of the left side of the video, the following
22710 command can be used:
22711 @example
22712 echo Parsed_color_0 c yellow | tools/zmqsend
22713 @end example
22714
22715 To change the right side:
22716 @example
22717 echo Parsed_color_1 c pink | tools/zmqsend
22718 @end example
22719
22720 To change the position of the right side:
22721 @example
22722 echo overlay@@my x 150 | tools/zmqsend
22723 @end example
22724
22725
22726 @c man end MULTIMEDIA FILTERS
22727
22728 @chapter Multimedia Sources
22729 @c man begin MULTIMEDIA SOURCES
22730
22731 Below is a description of the currently available multimedia sources.
22732
22733 @section amovie
22734
22735 This is the same as @ref{movie} source, except it selects an audio
22736 stream by default.
22737
22738 @anchor{movie}
22739 @section movie
22740
22741 Read audio and/or video stream(s) from a movie container.
22742
22743 It accepts the following parameters:
22744
22745 @table @option
22746 @item filename
22747 The name of the resource to read (not necessarily a file; it can also be a
22748 device or a stream accessed through some protocol).
22749
22750 @item format_name, f
22751 Specifies the format assumed for the movie to read, and can be either
22752 the name of a container or an input device. If not specified, the
22753 format is guessed from @var{movie_name} or by probing.
22754
22755 @item seek_point, sp
22756 Specifies the seek point in seconds. The frames will be output
22757 starting from this seek point. The parameter is evaluated with
22758 @code{av_strtod}, so the numerical value may be suffixed by an IS
22759 postfix. The default value is "0".
22760
22761 @item streams, s
22762 Specifies the streams to read. Several streams can be specified,
22763 separated by "+". The source will then have as many outputs, in the
22764 same order. The syntax is explained in the @ref{Stream specifiers,,"Stream specifiers"
22765 section in the ffmpeg manual,ffmpeg}. Two special names, "dv" and "da" specify
22766 respectively the default (best suited) video and audio stream. Default
22767 is "dv", or "da" if the filter is called as "amovie".
22768
22769 @item stream_index, si
22770 Specifies the index of the video stream to read. If the value is -1,
22771 the most suitable video stream will be automatically selected. The default
22772 value is "-1". Deprecated. If the filter is called "amovie", it will select
22773 audio instead of video.
22774
22775 @item loop
22776 Specifies how many times to read the stream in sequence.
22777 If the value is 0, the stream will be looped infinitely.
22778 Default value is "1".
22779
22780 Note that when the movie is looped the source timestamps are not
22781 changed, so it will generate non monotonically increasing timestamps.
22782
22783 @item discontinuity
22784 Specifies the time difference between frames above which the point is
22785 considered a timestamp discontinuity which is removed by adjusting the later
22786 timestamps.
22787 @end table
22788
22789 It allows overlaying a second video on top of the main input of
22790 a filtergraph, as shown in this graph:
22791 @example
22792 input -----------> deltapts0 --> overlay --> output
22793                                     ^
22794                                     |
22795 movie --> scale--> deltapts1 -------+
22796 @end example
22797 @subsection Examples
22798
22799 @itemize
22800 @item
22801 Skip 3.2 seconds from the start of the AVI file in.avi, and overlay it
22802 on top of the input labelled "in":
22803 @example
22804 movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
22805 [in] setpts=PTS-STARTPTS [main];
22806 [main][over] overlay=16:16 [out]
22807 @end example
22808
22809 @item
22810 Read from a video4linux2 device, and overlay it on top of the input
22811 labelled "in":
22812 @example
22813 movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
22814 [in] setpts=PTS-STARTPTS [main];
22815 [main][over] overlay=16:16 [out]
22816 @end example
22817
22818 @item
22819 Read the first video stream and the audio stream with id 0x81 from
22820 dvd.vob; the video is connected to the pad named "video" and the audio is
22821 connected to the pad named "audio":
22822 @example
22823 movie=dvd.vob:s=v:0+#0x81 [video] [audio]
22824 @end example
22825 @end itemize
22826
22827 @subsection Commands
22828
22829 Both movie and amovie support the following commands:
22830 @table @option
22831 @item seek
22832 Perform seek using "av_seek_frame".
22833 The syntax is: seek @var{stream_index}|@var{timestamp}|@var{flags}
22834 @itemize
22835 @item
22836 @var{stream_index}: If stream_index is -1, a default
22837 stream is selected, and @var{timestamp} is automatically converted
22838 from AV_TIME_BASE units to the stream specific time_base.
22839 @item
22840 @var{timestamp}: Timestamp in AVStream.time_base units
22841 or, if no stream is specified, in AV_TIME_BASE units.
22842 @item
22843 @var{flags}: Flags which select direction and seeking mode.
22844 @end itemize
22845
22846 @item get_duration
22847 Get movie duration in AV_TIME_BASE units.
22848
22849 @end table
22850
22851 @c man end MULTIMEDIA SOURCES