]> git.sesse.net Git - ffmpeg/blob - doc/filters.texi
Merge commit '0676de935b1e81bc5b5698fef3e7d48ff2ea77ff'
[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 threshold
394 If a signal of stream rises above this level it will affect the gain
395 reduction.
396 By default it is 0.125. Range is between 0.00097563 and 1.
397
398 @item ratio
399 Set a ratio by which the signal is reduced. 1:2 means that if the level
400 rose 4dB above the threshold, it will be only 2dB above after the reduction.
401 Default is 2. Range is between 1 and 20.
402
403 @item attack
404 Amount of milliseconds the signal has to rise above the threshold before gain
405 reduction starts. Default is 20. Range is between 0.01 and 2000.
406
407 @item release
408 Amount of milliseconds the signal has to fall below the threshold before
409 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
410
411 @item makeup
412 Set the amount by how much signal will be amplified after processing.
413 Default is 1. Range is from 1 to 64.
414
415 @item knee
416 Curve the sharp knee around the threshold to enter gain reduction more softly.
417 Default is 2.82843. Range is between 1 and 8.
418
419 @item link
420 Choose if the @code{average} level between all channels of input stream
421 or the louder(@code{maximum}) channel of input stream affects the
422 reduction. Default is @code{average}.
423
424 @item detection
425 Should the exact signal be taken in case of @code{peak} or an RMS one in case
426 of @code{rms}. Default is @code{rms} which is mostly smoother.
427
428 @item mix
429 How much to use compressed signal in output. Default is 1.
430 Range is between 0 and 1.
431 @end table
432
433 @section acontrast
434 Simple audio dynamic range compression/expansion filter.
435
436 The filter accepts the following options:
437
438 @table @option
439 @item contrast
440 Set contrast. Default is 33. Allowed range is between 0 and 100.
441 @end table
442
443 @section acopy
444
445 Copy the input audio source unchanged to the output. This is mainly useful for
446 testing purposes.
447
448 @section acrossfade
449
450 Apply cross fade from one input audio stream to another input audio stream.
451 The cross fade is applied for specified duration near the end of first stream.
452
453 The filter accepts the following options:
454
455 @table @option
456 @item nb_samples, ns
457 Specify the number of samples for which the cross fade effect has to last.
458 At the end of the cross fade effect the first input audio will be completely
459 silent. Default is 44100.
460
461 @item duration, d
462 Specify the duration of the cross fade effect. See
463 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
464 for the accepted syntax.
465 By default the duration is determined by @var{nb_samples}.
466 If set this option is used instead of @var{nb_samples}.
467
468 @item overlap, o
469 Should first stream end overlap with second stream start. Default is enabled.
470
471 @item curve1
472 Set curve for cross fade transition for first stream.
473
474 @item curve2
475 Set curve for cross fade transition for second stream.
476
477 For description of available curve types see @ref{afade} filter description.
478 @end table
479
480 @subsection Examples
481
482 @itemize
483 @item
484 Cross fade from one input to another:
485 @example
486 ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:c1=exp:c2=exp output.flac
487 @end example
488
489 @item
490 Cross fade from one input to another but without overlapping:
491 @example
492 ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:o=0:c1=exp:c2=exp output.flac
493 @end example
494 @end itemize
495
496 @section acrossover
497 Split audio stream into several bands.
498
499 This filter splits audio stream into two or more frequency ranges.
500 Summing all streams back will give flat output.
501
502 The filter accepts the following options:
503
504 @table @option
505 @item split
506 Set split frequencies. Those must be positive and increasing.
507
508 @item order
509 Set filter order, can be @var{2nd}, @var{4th} or @var{8th}.
510 Default is @var{4th}.
511 @end table
512
513 @section acrusher
514
515 Reduce audio bit resolution.
516
517 This filter is bit crusher with enhanced functionality. A bit crusher
518 is used to audibly reduce number of bits an audio signal is sampled
519 with. This doesn't change the bit depth at all, it just produces the
520 effect. Material reduced in bit depth sounds more harsh and "digital".
521 This filter is able to even round to continuous values instead of discrete
522 bit depths.
523 Additionally it has a D/C offset which results in different crushing of
524 the lower and the upper half of the signal.
525 An Anti-Aliasing setting is able to produce "softer" crushing sounds.
526
527 Another feature of this filter is the logarithmic mode.
528 This setting switches from linear distances between bits to logarithmic ones.
529 The result is a much more "natural" sounding crusher which doesn't gate low
530 signals for example. The human ear has a logarithmic perception,
531 so this kind of crushing is much more pleasant.
532 Logarithmic crushing is also able to get anti-aliased.
533
534 The filter accepts the following options:
535
536 @table @option
537 @item level_in
538 Set level in.
539
540 @item level_out
541 Set level out.
542
543 @item bits
544 Set bit reduction.
545
546 @item mix
547 Set mixing amount.
548
549 @item mode
550 Can be linear: @code{lin} or logarithmic: @code{log}.
551
552 @item dc
553 Set DC.
554
555 @item aa
556 Set anti-aliasing.
557
558 @item samples
559 Set sample reduction.
560
561 @item lfo
562 Enable LFO. By default disabled.
563
564 @item lforange
565 Set LFO range.
566
567 @item lforate
568 Set LFO rate.
569 @end table
570
571 @section acue
572
573 Delay audio filtering until a given wallclock timestamp. See the @ref{cue}
574 filter.
575
576 @section adeclick
577 Remove impulsive noise from input audio.
578
579 Samples detected as impulsive noise are replaced by interpolated samples using
580 autoregressive modelling.
581
582 @table @option
583 @item w
584 Set window size, in milliseconds. Allowed range is from @code{10} to
585 @code{100}. Default value is @code{55} milliseconds.
586 This sets size of window which will be processed at once.
587
588 @item o
589 Set window overlap, in percentage of window size. Allowed range is from
590 @code{50} to @code{95}. Default value is @code{75} percent.
591 Setting this to a very high value increases impulsive noise removal but makes
592 whole process much slower.
593
594 @item a
595 Set autoregression order, in percentage of window size. Allowed range is from
596 @code{0} to @code{25}. Default value is @code{2} percent. This option also
597 controls quality of interpolated samples using neighbour good samples.
598
599 @item t
600 Set threshold value. Allowed range is from @code{1} to @code{100}.
601 Default value is @code{2}.
602 This controls the strength of impulsive noise which is going to be removed.
603 The lower value, the more samples will be detected as impulsive noise.
604
605 @item b
606 Set burst fusion, in percentage of window size. Allowed range is @code{0} to
607 @code{10}. Default value is @code{2}.
608 If any two samples detected as noise are spaced less than this value then any
609 sample between those two samples will be also detected as noise.
610
611 @item m
612 Set overlap method.
613
614 It accepts the following values:
615 @table @option
616 @item a
617 Select overlap-add method. Even not interpolated samples are slightly
618 changed with this method.
619
620 @item s
621 Select overlap-save method. Not interpolated samples remain unchanged.
622 @end table
623
624 Default value is @code{a}.
625 @end table
626
627 @section adeclip
628 Remove clipped samples from input audio.
629
630 Samples detected as clipped are replaced by interpolated samples using
631 autoregressive modelling.
632
633 @table @option
634 @item w
635 Set window size, in milliseconds. Allowed range is from @code{10} to @code{100}.
636 Default value is @code{55} milliseconds.
637 This sets size of window which will be processed at once.
638
639 @item o
640 Set window overlap, in percentage of window size. Allowed range is from @code{50}
641 to @code{95}. Default value is @code{75} percent.
642
643 @item a
644 Set autoregression order, in percentage of window size. Allowed range is from
645 @code{0} to @code{25}. Default value is @code{8} percent. This option also controls
646 quality of interpolated samples using neighbour good samples.
647
648 @item t
649 Set threshold value. Allowed range is from @code{1} to @code{100}.
650 Default value is @code{10}. Higher values make clip detection less aggressive.
651
652 @item n
653 Set size of histogram used to detect clips. Allowed range is from @code{100} to @code{9999}.
654 Default value is @code{1000}. Higher values make clip detection less aggressive.
655
656 @item m
657 Set overlap method.
658
659 It accepts the following values:
660 @table @option
661 @item a
662 Select overlap-add method. Even not interpolated samples are slightly changed
663 with this method.
664
665 @item s
666 Select overlap-save method. Not interpolated samples remain unchanged.
667 @end table
668
669 Default value is @code{a}.
670 @end table
671
672 @section adelay
673
674 Delay one or more audio channels.
675
676 Samples in delayed channel are filled with silence.
677
678 The filter accepts the following option:
679
680 @table @option
681 @item delays
682 Set list of delays in milliseconds for each channel separated by '|'.
683 Unused delays will be silently ignored. If number of given delays is
684 smaller than number of channels all remaining channels will not be delayed.
685 If you want to delay exact number of samples, append 'S' to number.
686 If you want instead to delay in seconds, append 's' to number.
687 @end table
688
689 @subsection Examples
690
691 @itemize
692 @item
693 Delay first channel by 1.5 seconds, the third channel by 0.5 seconds and leave
694 the second channel (and any other channels that may be present) unchanged.
695 @example
696 adelay=1500|0|500
697 @end example
698
699 @item
700 Delay second channel by 500 samples, the third channel by 700 samples and leave
701 the first channel (and any other channels that may be present) unchanged.
702 @example
703 adelay=0|500S|700S
704 @end example
705 @end itemize
706
707 @section aderivative, aintegral
708
709 Compute derivative/integral of audio stream.
710
711 Applying both filters one after another produces original audio.
712
713 @section aecho
714
715 Apply echoing to the input audio.
716
717 Echoes are reflected sound and can occur naturally amongst mountains
718 (and sometimes large buildings) when talking or shouting; digital echo
719 effects emulate this behaviour and are often used to help fill out the
720 sound of a single instrument or vocal. The time difference between the
721 original signal and the reflection is the @code{delay}, and the
722 loudness of the reflected signal is the @code{decay}.
723 Multiple echoes can have different delays and decays.
724
725 A description of the accepted parameters follows.
726
727 @table @option
728 @item in_gain
729 Set input gain of reflected signal. Default is @code{0.6}.
730
731 @item out_gain
732 Set output gain of reflected signal. Default is @code{0.3}.
733
734 @item delays
735 Set list of time intervals in milliseconds between original signal and reflections
736 separated by '|'. Allowed range for each @code{delay} is @code{(0 - 90000.0]}.
737 Default is @code{1000}.
738
739 @item decays
740 Set list of loudness of reflected signals separated by '|'.
741 Allowed range for each @code{decay} is @code{(0 - 1.0]}.
742 Default is @code{0.5}.
743 @end table
744
745 @subsection Examples
746
747 @itemize
748 @item
749 Make it sound as if there are twice as many instruments as are actually playing:
750 @example
751 aecho=0.8:0.88:60:0.4
752 @end example
753
754 @item
755 If delay is very short, then it sound like a (metallic) robot playing music:
756 @example
757 aecho=0.8:0.88:6:0.4
758 @end example
759
760 @item
761 A longer delay will sound like an open air concert in the mountains:
762 @example
763 aecho=0.8:0.9:1000:0.3
764 @end example
765
766 @item
767 Same as above but with one more mountain:
768 @example
769 aecho=0.8:0.9:1000|1800:0.3|0.25
770 @end example
771 @end itemize
772
773 @section aemphasis
774 Audio emphasis filter creates or restores material directly taken from LPs or
775 emphased CDs with different filter curves. E.g. to store music on vinyl the
776 signal has to be altered by a filter first to even out the disadvantages of
777 this recording medium.
778 Once the material is played back the inverse filter has to be applied to
779 restore the distortion of the frequency response.
780
781 The filter accepts the following options:
782
783 @table @option
784 @item level_in
785 Set input gain.
786
787 @item level_out
788 Set output gain.
789
790 @item mode
791 Set filter mode. For restoring material use @code{reproduction} mode, otherwise
792 use @code{production} mode. Default is @code{reproduction} mode.
793
794 @item type
795 Set filter type. Selects medium. Can be one of the following:
796
797 @table @option
798 @item col
799 select Columbia.
800 @item emi
801 select EMI.
802 @item bsi
803 select BSI (78RPM).
804 @item riaa
805 select RIAA.
806 @item cd
807 select Compact Disc (CD).
808 @item 50fm
809 select 50µs (FM).
810 @item 75fm
811 select 75µs (FM).
812 @item 50kf
813 select 50µs (FM-KF).
814 @item 75kf
815 select 75µs (FM-KF).
816 @end table
817 @end table
818
819 @section aeval
820
821 Modify an audio signal according to the specified expressions.
822
823 This filter accepts one or more expressions (one for each channel),
824 which are evaluated and used to modify a corresponding audio signal.
825
826 It accepts the following parameters:
827
828 @table @option
829 @item exprs
830 Set the '|'-separated expressions list for each separate channel. If
831 the number of input channels is greater than the number of
832 expressions, the last specified expression is used for the remaining
833 output channels.
834
835 @item channel_layout, c
836 Set output channel layout. If not specified, the channel layout is
837 specified by the number of expressions. If set to @samp{same}, it will
838 use by default the same input channel layout.
839 @end table
840
841 Each expression in @var{exprs} can contain the following constants and functions:
842
843 @table @option
844 @item ch
845 channel number of the current expression
846
847 @item n
848 number of the evaluated sample, starting from 0
849
850 @item s
851 sample rate
852
853 @item t
854 time of the evaluated sample expressed in seconds
855
856 @item nb_in_channels
857 @item nb_out_channels
858 input and output number of channels
859
860 @item val(CH)
861 the value of input channel with number @var{CH}
862 @end table
863
864 Note: this filter is slow. For faster processing you should use a
865 dedicated filter.
866
867 @subsection Examples
868
869 @itemize
870 @item
871 Half volume:
872 @example
873 aeval=val(ch)/2:c=same
874 @end example
875
876 @item
877 Invert phase of the second channel:
878 @example
879 aeval=val(0)|-val(1)
880 @end example
881 @end itemize
882
883 @anchor{afade}
884 @section afade
885
886 Apply fade-in/out effect to input audio.
887
888 A description of the accepted parameters follows.
889
890 @table @option
891 @item type, t
892 Specify the effect type, can be either @code{in} for fade-in, or
893 @code{out} for a fade-out effect. Default is @code{in}.
894
895 @item start_sample, ss
896 Specify the number of the start sample for starting to apply the fade
897 effect. Default is 0.
898
899 @item nb_samples, ns
900 Specify the number of samples for which the fade effect has to last. At
901 the end of the fade-in effect the output audio will have the same
902 volume as the input audio, at the end of the fade-out transition
903 the output audio will be silence. Default is 44100.
904
905 @item start_time, st
906 Specify the start time of the fade effect. Default is 0.
907 The value must be specified as a time duration; see
908 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
909 for the accepted syntax.
910 If set this option is used instead of @var{start_sample}.
911
912 @item duration, d
913 Specify the duration of the fade effect. See
914 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
915 for the accepted syntax.
916 At the end of the fade-in effect the output audio will have the same
917 volume as the input audio, at the end of the fade-out transition
918 the output audio will be silence.
919 By default the duration is determined by @var{nb_samples}.
920 If set this option is used instead of @var{nb_samples}.
921
922 @item curve
923 Set curve for fade transition.
924
925 It accepts the following values:
926 @table @option
927 @item tri
928 select triangular, linear slope (default)
929 @item qsin
930 select quarter of sine wave
931 @item hsin
932 select half of sine wave
933 @item esin
934 select exponential sine wave
935 @item log
936 select logarithmic
937 @item ipar
938 select inverted parabola
939 @item qua
940 select quadratic
941 @item cub
942 select cubic
943 @item squ
944 select square root
945 @item cbr
946 select cubic root
947 @item par
948 select parabola
949 @item exp
950 select exponential
951 @item iqsin
952 select inverted quarter of sine wave
953 @item ihsin
954 select inverted half of sine wave
955 @item dese
956 select double-exponential seat
957 @item desi
958 select double-exponential sigmoid
959 @item losi
960 select logistic sigmoid
961 @item nofade
962 no fade applied
963 @end table
964 @end table
965
966 @subsection Examples
967
968 @itemize
969 @item
970 Fade in first 15 seconds of audio:
971 @example
972 afade=t=in:ss=0:d=15
973 @end example
974
975 @item
976 Fade out last 25 seconds of a 900 seconds audio:
977 @example
978 afade=t=out:st=875:d=25
979 @end example
980 @end itemize
981
982 @section afftdn
983 Denoise audio samples with FFT.
984
985 A description of the accepted parameters follows.
986
987 @table @option
988 @item nr
989 Set the noise reduction in dB, allowed range is 0.01 to 97.
990 Default value is 12 dB.
991
992 @item nf
993 Set the noise floor in dB, allowed range is -80 to -20.
994 Default value is -50 dB.
995
996 @item nt
997 Set the noise type.
998
999 It accepts the following values:
1000 @table @option
1001 @item w
1002 Select white noise.
1003
1004 @item v
1005 Select vinyl noise.
1006
1007 @item s
1008 Select shellac noise.
1009
1010 @item c
1011 Select custom noise, defined in @code{bn} option.
1012
1013 Default value is white noise.
1014 @end table
1015
1016 @item bn
1017 Set custom band noise for every one of 15 bands.
1018 Bands are separated by ' ' or '|'.
1019
1020 @item rf
1021 Set the residual floor in dB, allowed range is -80 to -20.
1022 Default value is -38 dB.
1023
1024 @item tn
1025 Enable noise tracking. By default is disabled.
1026 With this enabled, noise floor is automatically adjusted.
1027
1028 @item tr
1029 Enable residual tracking. By default is disabled.
1030
1031 @item om
1032 Set the output mode.
1033
1034 It accepts the following values:
1035 @table @option
1036 @item i
1037 Pass input unchanged.
1038
1039 @item o
1040 Pass noise filtered out.
1041
1042 @item n
1043 Pass only noise.
1044
1045 Default value is @var{o}.
1046 @end table
1047 @end table
1048
1049 @subsection Commands
1050
1051 This filter supports the following commands:
1052 @table @option
1053 @item sample_noise, sn
1054 Start or stop measuring noise profile.
1055 Syntax for the command is : "start" or "stop" string.
1056 After measuring noise profile is stopped it will be
1057 automatically applied in filtering.
1058
1059 @item noise_reduction, nr
1060 Change noise reduction. Argument is single float number.
1061 Syntax for the command is : "@var{noise_reduction}"
1062
1063 @item noise_floor, nf
1064 Change noise floor. Argument is single float number.
1065 Syntax for the command is : "@var{noise_floor}"
1066
1067 @item output_mode, om
1068 Change output mode operation.
1069 Syntax for the command is : "i", "o" or "n" string.
1070 @end table
1071
1072 @section afftfilt
1073 Apply arbitrary expressions to samples in frequency domain.
1074
1075 @table @option
1076 @item real
1077 Set frequency domain real expression for each separate channel separated
1078 by '|'. Default is "re".
1079 If the number of input channels is greater than the number of
1080 expressions, the last specified expression is used for the remaining
1081 output channels.
1082
1083 @item imag
1084 Set frequency domain imaginary expression for each separate channel
1085 separated by '|'. Default is "im".
1086
1087 Each expression in @var{real} and @var{imag} can contain the following
1088 constants and functions:
1089
1090 @table @option
1091 @item sr
1092 sample rate
1093
1094 @item b
1095 current frequency bin number
1096
1097 @item nb
1098 number of available bins
1099
1100 @item ch
1101 channel number of the current expression
1102
1103 @item chs
1104 number of channels
1105
1106 @item pts
1107 current frame pts
1108
1109 @item re
1110 current real part of frequency bin of current channel
1111
1112 @item im
1113 current imaginary part of frequency bin of current channel
1114
1115 @item real(b, ch)
1116 Return the value of real part of frequency bin at location (@var{bin},@var{channel})
1117
1118 @item imag(b, ch)
1119 Return the value of imaginary part of frequency bin at location (@var{bin},@var{channel})
1120 @end table
1121
1122 @item win_size
1123 Set window size.
1124
1125 It accepts the following values:
1126 @table @samp
1127 @item w16
1128 @item w32
1129 @item w64
1130 @item w128
1131 @item w256
1132 @item w512
1133 @item w1024
1134 @item w2048
1135 @item w4096
1136 @item w8192
1137 @item w16384
1138 @item w32768
1139 @item w65536
1140 @end table
1141 Default is @code{w4096}
1142
1143 @item win_func
1144 Set window function. Default is @code{hann}.
1145
1146 @item overlap
1147 Set window overlap. If set to 1, the recommended overlap for selected
1148 window function will be picked. Default is @code{0.75}.
1149 @end table
1150
1151 @subsection Examples
1152
1153 @itemize
1154 @item
1155 Leave almost only low frequencies in audio:
1156 @example
1157 afftfilt="'real=re * (1-clip((b/nb)*b,0,1))':imag='im * (1-clip((b/nb)*b,0,1))'"
1158 @end example
1159 @end itemize
1160
1161 @anchor{afir}
1162 @section afir
1163
1164 Apply an arbitrary Frequency Impulse Response filter.
1165
1166 This filter is designed for applying long FIR filters,
1167 up to 60 seconds long.
1168
1169 It can be used as component for digital crossover filters,
1170 room equalization, cross talk cancellation, wavefield synthesis,
1171 auralization, ambiophonics, ambisonics and spatialization.
1172
1173 This filter uses second stream as FIR coefficients.
1174 If second stream holds single channel, it will be used
1175 for all input channels in first stream, otherwise
1176 number of channels in second stream must be same as
1177 number of channels in first stream.
1178
1179 It accepts the following parameters:
1180
1181 @table @option
1182 @item dry
1183 Set dry gain. This sets input gain.
1184
1185 @item wet
1186 Set wet gain. This sets final output gain.
1187
1188 @item length
1189 Set Impulse Response filter length. Default is 1, which means whole IR is processed.
1190
1191 @item gtype
1192 Enable applying gain measured from power of IR.
1193
1194 Set which approach to use for auto gain measurement.
1195
1196 @table @option
1197 @item none
1198 Do not apply any gain.
1199
1200 @item peak
1201 select peak gain, very conservative approach. This is default value.
1202
1203 @item dc
1204 select DC gain, limited application.
1205
1206 @item gn
1207 select gain to noise approach, this is most popular one.
1208 @end table
1209
1210 @item irgain
1211 Set gain to be applied to IR coefficients before filtering.
1212 Allowed range is 0 to 1. This gain is applied after any gain applied with @var{gtype} option.
1213
1214 @item irfmt
1215 Set format of IR stream. Can be @code{mono} or @code{input}.
1216 Default is @code{input}.
1217
1218 @item maxir
1219 Set max allowed Impulse Response filter duration in seconds. Default is 30 seconds.
1220 Allowed range is 0.1 to 60 seconds.
1221
1222 @item response
1223 Show IR frequency response, magnitude(magenta), phase(green) and group delay(yellow) in additional video stream.
1224 By default it is disabled.
1225
1226 @item channel
1227 Set for which IR channel to display frequency response. By default is first channel
1228 displayed. This option is used only when @var{response} is enabled.
1229
1230 @item size
1231 Set video stream size. This option is used only when @var{response} is enabled.
1232
1233 @item rate
1234 Set video stream frame rate. This option is used only when @var{response} is enabled.
1235
1236 @item minp
1237 Set minimal partition size used for convolution. Default is @var{8192}.
1238 Allowed range is from @var{8} to @var{32768}.
1239 Lower values decreases latency at cost of higher CPU usage.
1240
1241 @item maxp
1242 Set maximal partition size used for convolution. Default is @var{8192}.
1243 Allowed range is from @var{8} to @var{32768}.
1244 Lower values may increase CPU usage.
1245 @end table
1246
1247 @subsection Examples
1248
1249 @itemize
1250 @item
1251 Apply reverb to stream using mono IR file as second input, complete command using ffmpeg:
1252 @example
1253 ffmpeg -i input.wav -i middle_tunnel_1way_mono.wav -lavfi afir output.wav
1254 @end example
1255 @end itemize
1256
1257 @anchor{aformat}
1258 @section aformat
1259
1260 Set output format constraints for the input audio. The framework will
1261 negotiate the most appropriate format to minimize conversions.
1262
1263 It accepts the following parameters:
1264 @table @option
1265
1266 @item sample_fmts
1267 A '|'-separated list of requested sample formats.
1268
1269 @item sample_rates
1270 A '|'-separated list of requested sample rates.
1271
1272 @item channel_layouts
1273 A '|'-separated list of requested channel layouts.
1274
1275 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1276 for the required syntax.
1277 @end table
1278
1279 If a parameter is omitted, all values are allowed.
1280
1281 Force the output to either unsigned 8-bit or signed 16-bit stereo
1282 @example
1283 aformat=sample_fmts=u8|s16:channel_layouts=stereo
1284 @end example
1285
1286 @section agate
1287
1288 A gate is mainly used to reduce lower parts of a signal. This kind of signal
1289 processing reduces disturbing noise between useful signals.
1290
1291 Gating is done by detecting the volume below a chosen level @var{threshold}
1292 and dividing it by the factor set with @var{ratio}. The bottom of the noise
1293 floor is set via @var{range}. Because an exact manipulation of the signal
1294 would cause distortion of the waveform the reduction can be levelled over
1295 time. This is done by setting @var{attack} and @var{release}.
1296
1297 @var{attack} determines how long the signal has to fall below the threshold
1298 before any reduction will occur and @var{release} sets the time the signal
1299 has to rise above the threshold to reduce the reduction again.
1300 Shorter signals than the chosen attack time will be left untouched.
1301
1302 @table @option
1303 @item level_in
1304 Set input level before filtering.
1305 Default is 1. Allowed range is from 0.015625 to 64.
1306
1307 @item range
1308 Set the level of gain reduction when the signal is below the threshold.
1309 Default is 0.06125. Allowed range is from 0 to 1.
1310
1311 @item threshold
1312 If a signal rises above this level the gain reduction is released.
1313 Default is 0.125. Allowed range is from 0 to 1.
1314
1315 @item ratio
1316 Set a ratio by which the signal is reduced.
1317 Default is 2. Allowed range is from 1 to 9000.
1318
1319 @item attack
1320 Amount of milliseconds the signal has to rise above the threshold before gain
1321 reduction stops.
1322 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
1323
1324 @item release
1325 Amount of milliseconds the signal has to fall below the threshold before the
1326 reduction is increased again. Default is 250 milliseconds.
1327 Allowed range is from 0.01 to 9000.
1328
1329 @item makeup
1330 Set amount of amplification of signal after processing.
1331 Default is 1. Allowed range is from 1 to 64.
1332
1333 @item knee
1334 Curve the sharp knee around the threshold to enter gain reduction more softly.
1335 Default is 2.828427125. Allowed range is from 1 to 8.
1336
1337 @item detection
1338 Choose if exact signal should be taken for detection or an RMS like one.
1339 Default is @code{rms}. Can be @code{peak} or @code{rms}.
1340
1341 @item link
1342 Choose if the average level between all channels or the louder channel affects
1343 the reduction.
1344 Default is @code{average}. Can be @code{average} or @code{maximum}.
1345 @end table
1346
1347 @section aiir
1348
1349 Apply an arbitrary Infinite Impulse Response filter.
1350
1351 It accepts the following parameters:
1352
1353 @table @option
1354 @item z
1355 Set numerator/zeros coefficients.
1356
1357 @item p
1358 Set denominator/poles coefficients.
1359
1360 @item k
1361 Set channels gains.
1362
1363 @item dry_gain
1364 Set input gain.
1365
1366 @item wet_gain
1367 Set output gain.
1368
1369 @item f
1370 Set coefficients format.
1371
1372 @table @samp
1373 @item tf
1374 transfer function
1375 @item zp
1376 Z-plane zeros/poles, cartesian (default)
1377 @item pr
1378 Z-plane zeros/poles, polar radians
1379 @item pd
1380 Z-plane zeros/poles, polar degrees
1381 @end table
1382
1383 @item r
1384 Set kind of processing.
1385 Can be @code{d} - direct or @code{s} - serial cascading. Default is @code{s}.
1386
1387 @item e
1388 Set filtering precision.
1389
1390 @table @samp
1391 @item dbl
1392 double-precision floating-point (default)
1393 @item flt
1394 single-precision floating-point
1395 @item i32
1396 32-bit integers
1397 @item i16
1398 16-bit integers
1399 @end table
1400
1401 @item response
1402 Show IR frequency response, magnitude and phase in additional video stream.
1403 By default it is disabled.
1404
1405 @item channel
1406 Set for which IR channel to display frequency response. By default is first channel
1407 displayed. This option is used only when @var{response} is enabled.
1408
1409 @item size
1410 Set video stream size. This option is used only when @var{response} is enabled.
1411 @end table
1412
1413 Coefficients in @code{tf} format are separated by spaces and are in ascending
1414 order.
1415
1416 Coefficients in @code{zp} format are separated by spaces and order of coefficients
1417 doesn't matter. Coefficients in @code{zp} format are complex numbers with @var{i}
1418 imaginary unit.
1419
1420 Different coefficients and gains can be provided for every channel, in such case
1421 use '|' to separate coefficients or gains. Last provided coefficients will be
1422 used for all remaining channels.
1423
1424 @subsection Examples
1425
1426 @itemize
1427 @item
1428 Apply 2 pole elliptic notch at around 5000Hz for 48000 Hz sample rate:
1429 @example
1430 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
1431 @end example
1432
1433 @item
1434 Same as above but in @code{zp} format:
1435 @example
1436 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
1437 @end example
1438 @end itemize
1439
1440 @section alimiter
1441
1442 The limiter prevents an input signal from rising over a desired threshold.
1443 This limiter uses lookahead technology to prevent your signal from distorting.
1444 It means that there is a small delay after the signal is processed. Keep in mind
1445 that the delay it produces is the attack time you set.
1446
1447 The filter accepts the following options:
1448
1449 @table @option
1450 @item level_in
1451 Set input gain. Default is 1.
1452
1453 @item level_out
1454 Set output gain. Default is 1.
1455
1456 @item limit
1457 Don't let signals above this level pass the limiter. Default is 1.
1458
1459 @item attack
1460 The limiter will reach its attenuation level in this amount of time in
1461 milliseconds. Default is 5 milliseconds.
1462
1463 @item release
1464 Come back from limiting to attenuation 1.0 in this amount of milliseconds.
1465 Default is 50 milliseconds.
1466
1467 @item asc
1468 When gain reduction is always needed ASC takes care of releasing to an
1469 average reduction level rather than reaching a reduction of 0 in the release
1470 time.
1471
1472 @item asc_level
1473 Select how much the release time is affected by ASC, 0 means nearly no changes
1474 in release time while 1 produces higher release times.
1475
1476 @item level
1477 Auto level output signal. Default is enabled.
1478 This normalizes audio back to 0dB if enabled.
1479 @end table
1480
1481 Depending on picked setting it is recommended to upsample input 2x or 4x times
1482 with @ref{aresample} before applying this filter.
1483
1484 @section allpass
1485
1486 Apply a two-pole all-pass filter with central frequency (in Hz)
1487 @var{frequency}, and filter-width @var{width}.
1488 An all-pass filter changes the audio's frequency to phase relationship
1489 without changing its frequency to amplitude relationship.
1490
1491 The filter accepts the following options:
1492
1493 @table @option
1494 @item frequency, f
1495 Set frequency in Hz.
1496
1497 @item width_type, t
1498 Set method to specify band-width of filter.
1499 @table @option
1500 @item h
1501 Hz
1502 @item q
1503 Q-Factor
1504 @item o
1505 octave
1506 @item s
1507 slope
1508 @item k
1509 kHz
1510 @end table
1511
1512 @item width, w
1513 Specify the band-width of a filter in width_type units.
1514
1515 @item channels, c
1516 Specify which channels to filter, by default all available are filtered.
1517 @end table
1518
1519 @subsection Commands
1520
1521 This filter supports the following commands:
1522 @table @option
1523 @item frequency, f
1524 Change allpass frequency.
1525 Syntax for the command is : "@var{frequency}"
1526
1527 @item width_type, t
1528 Change allpass width_type.
1529 Syntax for the command is : "@var{width_type}"
1530
1531 @item width, w
1532 Change allpass width.
1533 Syntax for the command is : "@var{width}"
1534 @end table
1535
1536 @section aloop
1537
1538 Loop audio samples.
1539
1540 The filter accepts the following options:
1541
1542 @table @option
1543 @item loop
1544 Set the number of loops. Setting this value to -1 will result in infinite loops.
1545 Default is 0.
1546
1547 @item size
1548 Set maximal number of samples. Default is 0.
1549
1550 @item start
1551 Set first sample of loop. Default is 0.
1552 @end table
1553
1554 @anchor{amerge}
1555 @section amerge
1556
1557 Merge two or more audio streams into a single multi-channel stream.
1558
1559 The filter accepts the following options:
1560
1561 @table @option
1562
1563 @item inputs
1564 Set the number of inputs. Default is 2.
1565
1566 @end table
1567
1568 If the channel layouts of the inputs are disjoint, and therefore compatible,
1569 the channel layout of the output will be set accordingly and the channels
1570 will be reordered as necessary. If the channel layouts of the inputs are not
1571 disjoint, the output will have all the channels of the first input then all
1572 the channels of the second input, in that order, and the channel layout of
1573 the output will be the default value corresponding to the total number of
1574 channels.
1575
1576 For example, if the first input is in 2.1 (FL+FR+LF) and the second input
1577 is FC+BL+BR, then the output will be in 5.1, with the channels in the
1578 following order: a1, a2, b1, a3, b2, b3 (a1 is the first channel of the
1579 first input, b1 is the first channel of the second input).
1580
1581 On the other hand, if both input are in stereo, the output channels will be
1582 in the default order: a1, a2, b1, b2, and the channel layout will be
1583 arbitrarily set to 4.0, which may or may not be the expected value.
1584
1585 All inputs must have the same sample rate, and format.
1586
1587 If inputs do not have the same duration, the output will stop with the
1588 shortest.
1589
1590 @subsection Examples
1591
1592 @itemize
1593 @item
1594 Merge two mono files into a stereo stream:
1595 @example
1596 amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
1597 @end example
1598
1599 @item
1600 Multiple merges assuming 1 video stream and 6 audio streams in @file{input.mkv}:
1601 @example
1602 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
1603 @end example
1604 @end itemize
1605
1606 @section amix
1607
1608 Mixes multiple audio inputs into a single output.
1609
1610 Note that this filter only supports float samples (the @var{amerge}
1611 and @var{pan} audio filters support many formats). If the @var{amix}
1612 input has integer samples then @ref{aresample} will be automatically
1613 inserted to perform the conversion to float samples.
1614
1615 For example
1616 @example
1617 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
1618 @end example
1619 will mix 3 input audio streams to a single output with the same duration as the
1620 first input and a dropout transition time of 3 seconds.
1621
1622 It accepts the following parameters:
1623 @table @option
1624
1625 @item inputs
1626 The number of inputs. If unspecified, it defaults to 2.
1627
1628 @item duration
1629 How to determine the end-of-stream.
1630 @table @option
1631
1632 @item longest
1633 The duration of the longest input. (default)
1634
1635 @item shortest
1636 The duration of the shortest input.
1637
1638 @item first
1639 The duration of the first input.
1640
1641 @end table
1642
1643 @item dropout_transition
1644 The transition time, in seconds, for volume renormalization when an input
1645 stream ends. The default value is 2 seconds.
1646
1647 @item weights
1648 Specify weight of each input audio stream as sequence.
1649 Each weight is separated by space. By default all inputs have same weight.
1650 @end table
1651
1652 @section amultiply
1653
1654 Multiply first audio stream with second audio stream and store result
1655 in output audio stream. Multiplication is done by multiplying each
1656 sample from first stream with sample at same position from second stream.
1657
1658 With this element-wise multiplication one can create amplitude fades and
1659 amplitude modulations.
1660
1661 @section anequalizer
1662
1663 High-order parametric multiband equalizer for each channel.
1664
1665 It accepts the following parameters:
1666 @table @option
1667 @item params
1668
1669 This option string is in format:
1670 "c@var{chn} f=@var{cf} w=@var{w} g=@var{g} t=@var{f} | ..."
1671 Each equalizer band is separated by '|'.
1672
1673 @table @option
1674 @item chn
1675 Set channel number to which equalization will be applied.
1676 If input doesn't have that channel the entry is ignored.
1677
1678 @item f
1679 Set central frequency for band.
1680 If input doesn't have that frequency the entry is ignored.
1681
1682 @item w
1683 Set band width in hertz.
1684
1685 @item g
1686 Set band gain in dB.
1687
1688 @item t
1689 Set filter type for band, optional, can be:
1690
1691 @table @samp
1692 @item 0
1693 Butterworth, this is default.
1694
1695 @item 1
1696 Chebyshev type 1.
1697
1698 @item 2
1699 Chebyshev type 2.
1700 @end table
1701 @end table
1702
1703 @item curves
1704 With this option activated frequency response of anequalizer is displayed
1705 in video stream.
1706
1707 @item size
1708 Set video stream size. Only useful if curves option is activated.
1709
1710 @item mgain
1711 Set max gain that will be displayed. Only useful if curves option is activated.
1712 Setting this to a reasonable value makes it possible to display gain which is derived from
1713 neighbour bands which are too close to each other and thus produce higher gain
1714 when both are activated.
1715
1716 @item fscale
1717 Set frequency scale used to draw frequency response in video output.
1718 Can be linear or logarithmic. Default is logarithmic.
1719
1720 @item colors
1721 Set color for each channel curve which is going to be displayed in video stream.
1722 This is list of color names separated by space or by '|'.
1723 Unrecognised or missing colors will be replaced by white color.
1724 @end table
1725
1726 @subsection Examples
1727
1728 @itemize
1729 @item
1730 Lower gain by 10 of central frequency 200Hz and width 100 Hz
1731 for first 2 channels using Chebyshev type 1 filter:
1732 @example
1733 anequalizer=c0 f=200 w=100 g=-10 t=1|c1 f=200 w=100 g=-10 t=1
1734 @end example
1735 @end itemize
1736
1737 @subsection Commands
1738
1739 This filter supports the following commands:
1740 @table @option
1741 @item change
1742 Alter existing filter parameters.
1743 Syntax for the commands is : "@var{fN}|f=@var{freq}|w=@var{width}|g=@var{gain}"
1744
1745 @var{fN} is existing filter number, starting from 0, if no such filter is available
1746 error is returned.
1747 @var{freq} set new frequency parameter.
1748 @var{width} set new width parameter in herz.
1749 @var{gain} set new gain parameter in dB.
1750
1751 Full filter invocation with asendcmd may look like this:
1752 asendcmd=c='4.0 anequalizer change 0|f=200|w=50|g=1',anequalizer=...
1753 @end table
1754
1755 @section anlmdn
1756
1757 Reduce broadband noise in audio samples using Non-Local Means algorithm.
1758
1759 Each sample is adjusted by looking for other samples with similar contexts. This
1760 context similarity is defined by comparing their surrounding patches of size
1761 @option{p}. Patches are searched in an area of @option{r} around the sample.
1762
1763 The filter accepts the following options.
1764
1765 @table @option
1766 @item s
1767 Set denoising strength. Allowed range is from 0.00001 to 10. Default value is 0.00001.
1768
1769 @item p
1770 Set patch radius duration. Allowed range is from 1 to 100 milliseconds.
1771 Default value is 2 milliseconds.
1772
1773 @item r
1774 Set research radius duration. Allowed range is from 2 to 300 milliseconds.
1775 Default value is 6 milliseconds.
1776
1777 @item o
1778 Set the output mode.
1779
1780 It accepts the following values:
1781 @table @option
1782 @item i
1783 Pass input unchanged.
1784
1785 @item o
1786 Pass noise filtered out.
1787
1788 @item n
1789 Pass only noise.
1790
1791 Default value is @var{o}.
1792 @end table
1793 @end table
1794
1795 @section anull
1796
1797 Pass the audio source unchanged to the output.
1798
1799 @section apad
1800
1801 Pad the end of an audio stream with silence.
1802
1803 This can be used together with @command{ffmpeg} @option{-shortest} to
1804 extend audio streams to the same length as the video stream.
1805
1806 A description of the accepted options follows.
1807
1808 @table @option
1809 @item packet_size
1810 Set silence packet size. Default value is 4096.
1811
1812 @item pad_len
1813 Set the number of samples of silence to add to the end. After the
1814 value is reached, the stream is terminated. This option is mutually
1815 exclusive with @option{whole_len}.
1816
1817 @item whole_len
1818 Set the minimum total number of samples in the output audio stream. If
1819 the value is longer than the input audio length, silence is added to
1820 the end, until the value is reached. This option is mutually exclusive
1821 with @option{pad_len}.
1822
1823 @item pad_dur
1824 Specify the duration of samples of silence to add. See
1825 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1826 for the accepted syntax. Used only if set to non-zero value.
1827
1828 @item whole_dur
1829 Specify the minimum total duration in the output audio stream. See
1830 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
1831 for the accepted syntax. Used only if set to non-zero value. If the value is longer than
1832 the input audio length, silence is added to the end, until the value is reached.
1833 This option is mutually exclusive with @option{pad_dur}
1834 @end table
1835
1836 If neither the @option{pad_len} nor the @option{whole_len} nor @option{pad_dur}
1837 nor @option{whole_dur} option is set, the filter will add silence to the end of
1838 the input stream indefinitely.
1839
1840 @subsection Examples
1841
1842 @itemize
1843 @item
1844 Add 1024 samples of silence to the end of the input:
1845 @example
1846 apad=pad_len=1024
1847 @end example
1848
1849 @item
1850 Make sure the audio output will contain at least 10000 samples, pad
1851 the input with silence if required:
1852 @example
1853 apad=whole_len=10000
1854 @end example
1855
1856 @item
1857 Use @command{ffmpeg} to pad the audio input with silence, so that the
1858 video stream will always result the shortest and will be converted
1859 until the end in the output file when using the @option{shortest}
1860 option:
1861 @example
1862 ffmpeg -i VIDEO -i AUDIO -filter_complex "[1:0]apad" -shortest OUTPUT
1863 @end example
1864 @end itemize
1865
1866 @section aphaser
1867 Add a phasing effect to the input audio.
1868
1869 A phaser filter creates series of peaks and troughs in the frequency spectrum.
1870 The position of the peaks and troughs are modulated so that they vary over time, creating a sweeping effect.
1871
1872 A description of the accepted parameters follows.
1873
1874 @table @option
1875 @item in_gain
1876 Set input gain. Default is 0.4.
1877
1878 @item out_gain
1879 Set output gain. Default is 0.74
1880
1881 @item delay
1882 Set delay in milliseconds. Default is 3.0.
1883
1884 @item decay
1885 Set decay. Default is 0.4.
1886
1887 @item speed
1888 Set modulation speed in Hz. Default is 0.5.
1889
1890 @item type
1891 Set modulation type. Default is triangular.
1892
1893 It accepts the following values:
1894 @table @samp
1895 @item triangular, t
1896 @item sinusoidal, s
1897 @end table
1898 @end table
1899
1900 @section apulsator
1901
1902 Audio pulsator is something between an autopanner and a tremolo.
1903 But it can produce funny stereo effects as well. Pulsator changes the volume
1904 of the left and right channel based on a LFO (low frequency oscillator) with
1905 different waveforms and shifted phases.
1906 This filter have the ability to define an offset between left and right
1907 channel. An offset of 0 means that both LFO shapes match each other.
1908 The left and right channel are altered equally - a conventional tremolo.
1909 An offset of 50% means that the shape of the right channel is exactly shifted
1910 in phase (or moved backwards about half of the frequency) - pulsator acts as
1911 an autopanner. At 1 both curves match again. Every setting in between moves the
1912 phase shift gapless between all stages and produces some "bypassing" sounds with
1913 sine and triangle waveforms. The more you set the offset near 1 (starting from
1914 the 0.5) the faster the signal passes from the left to the right speaker.
1915
1916 The filter accepts the following options:
1917
1918 @table @option
1919 @item level_in
1920 Set input gain. By default it is 1. Range is [0.015625 - 64].
1921
1922 @item level_out
1923 Set output gain. By default it is 1. Range is [0.015625 - 64].
1924
1925 @item mode
1926 Set waveform shape the LFO will use. Can be one of: sine, triangle, square,
1927 sawup or sawdown. Default is sine.
1928
1929 @item amount
1930 Set modulation. Define how much of original signal is affected by the LFO.
1931
1932 @item offset_l
1933 Set left channel offset. Default is 0. Allowed range is [0 - 1].
1934
1935 @item offset_r
1936 Set right channel offset. Default is 0.5. Allowed range is [0 - 1].
1937
1938 @item width
1939 Set pulse width. Default is 1. Allowed range is [0 - 2].
1940
1941 @item timing
1942 Set possible timing mode. Can be one of: bpm, ms or hz. Default is hz.
1943
1944 @item bpm
1945 Set bpm. Default is 120. Allowed range is [30 - 300]. Only used if timing
1946 is set to bpm.
1947
1948 @item ms
1949 Set ms. Default is 500. Allowed range is [10 - 2000]. Only used if timing
1950 is set to ms.
1951
1952 @item hz
1953 Set frequency in Hz. Default is 2. Allowed range is [0.01 - 100]. Only used
1954 if timing is set to hz.
1955 @end table
1956
1957 @anchor{aresample}
1958 @section aresample
1959
1960 Resample the input audio to the specified parameters, using the
1961 libswresample library. If none are specified then the filter will
1962 automatically convert between its input and output.
1963
1964 This filter is also able to stretch/squeeze the audio data to make it match
1965 the timestamps or to inject silence / cut out audio to make it match the
1966 timestamps, do a combination of both or do neither.
1967
1968 The filter accepts the syntax
1969 [@var{sample_rate}:]@var{resampler_options}, where @var{sample_rate}
1970 expresses a sample rate and @var{resampler_options} is a list of
1971 @var{key}=@var{value} pairs, separated by ":". See the
1972 @ref{Resampler Options,,"Resampler Options" section in the
1973 ffmpeg-resampler(1) manual,ffmpeg-resampler}
1974 for the complete list of supported options.
1975
1976 @subsection Examples
1977
1978 @itemize
1979 @item
1980 Resample the input audio to 44100Hz:
1981 @example
1982 aresample=44100
1983 @end example
1984
1985 @item
1986 Stretch/squeeze samples to the given timestamps, with a maximum of 1000
1987 samples per second compensation:
1988 @example
1989 aresample=async=1000
1990 @end example
1991 @end itemize
1992
1993 @section areverse
1994
1995 Reverse an audio clip.
1996
1997 Warning: This filter requires memory to buffer the entire clip, so trimming
1998 is suggested.
1999
2000 @subsection Examples
2001
2002 @itemize
2003 @item
2004 Take the first 5 seconds of a clip, and reverse it.
2005 @example
2006 atrim=end=5,areverse
2007 @end example
2008 @end itemize
2009
2010 @section asetnsamples
2011
2012 Set the number of samples per each output audio frame.
2013
2014 The last output packet may contain a different number of samples, as
2015 the filter will flush all the remaining samples when the input audio
2016 signals its end.
2017
2018 The filter accepts the following options:
2019
2020 @table @option
2021
2022 @item nb_out_samples, n
2023 Set the number of frames per each output audio frame. The number is
2024 intended as the number of samples @emph{per each channel}.
2025 Default value is 1024.
2026
2027 @item pad, p
2028 If set to 1, the filter will pad the last audio frame with zeroes, so
2029 that the last frame will contain the same number of samples as the
2030 previous ones. Default value is 1.
2031 @end table
2032
2033 For example, to set the number of per-frame samples to 1234 and
2034 disable padding for the last frame, use:
2035 @example
2036 asetnsamples=n=1234:p=0
2037 @end example
2038
2039 @section asetrate
2040
2041 Set the sample rate without altering the PCM data.
2042 This will result in a change of speed and pitch.
2043
2044 The filter accepts the following options:
2045
2046 @table @option
2047 @item sample_rate, r
2048 Set the output sample rate. Default is 44100 Hz.
2049 @end table
2050
2051 @section ashowinfo
2052
2053 Show a line containing various information for each input audio frame.
2054 The input audio is not modified.
2055
2056 The shown line contains a sequence of key/value pairs of the form
2057 @var{key}:@var{value}.
2058
2059 The following values are shown in the output:
2060
2061 @table @option
2062 @item n
2063 The (sequential) number of the input frame, starting from 0.
2064
2065 @item pts
2066 The presentation timestamp of the input frame, in time base units; the time base
2067 depends on the filter input pad, and is usually 1/@var{sample_rate}.
2068
2069 @item pts_time
2070 The presentation timestamp of the input frame in seconds.
2071
2072 @item pos
2073 position of the frame in the input stream, -1 if this information in
2074 unavailable and/or meaningless (for example in case of synthetic audio)
2075
2076 @item fmt
2077 The sample format.
2078
2079 @item chlayout
2080 The channel layout.
2081
2082 @item rate
2083 The sample rate for the audio frame.
2084
2085 @item nb_samples
2086 The number of samples (per channel) in the frame.
2087
2088 @item checksum
2089 The Adler-32 checksum (printed in hexadecimal) of the audio data. For planar
2090 audio, the data is treated as if all the planes were concatenated.
2091
2092 @item plane_checksums
2093 A list of Adler-32 checksums for each data plane.
2094 @end table
2095
2096 @anchor{astats}
2097 @section astats
2098
2099 Display time domain statistical information about the audio channels.
2100 Statistics are calculated and displayed for each audio channel and,
2101 where applicable, an overall figure is also given.
2102
2103 It accepts the following option:
2104 @table @option
2105 @item length
2106 Short window length in seconds, used for peak and trough RMS measurement.
2107 Default is @code{0.05} (50 milliseconds). Allowed range is @code{[0.01 - 10]}.
2108
2109 @item metadata
2110
2111 Set metadata injection. All the metadata keys are prefixed with @code{lavfi.astats.X},
2112 where @code{X} is channel number starting from 1 or string @code{Overall}. Default is
2113 disabled.
2114
2115 Available keys for each channel are:
2116 DC_offset
2117 Min_level
2118 Max_level
2119 Min_difference
2120 Max_difference
2121 Mean_difference
2122 RMS_difference
2123 Peak_level
2124 RMS_peak
2125 RMS_trough
2126 Crest_factor
2127 Flat_factor
2128 Peak_count
2129 Bit_depth
2130 Dynamic_range
2131 Zero_crossings
2132 Zero_crossings_rate
2133
2134 and for Overall:
2135 DC_offset
2136 Min_level
2137 Max_level
2138 Min_difference
2139 Max_difference
2140 Mean_difference
2141 RMS_difference
2142 Peak_level
2143 RMS_level
2144 RMS_peak
2145 RMS_trough
2146 Flat_factor
2147 Peak_count
2148 Bit_depth
2149 Number_of_samples
2150
2151 For example full key look like this @code{lavfi.astats.1.DC_offset} or
2152 this @code{lavfi.astats.Overall.Peak_count}.
2153
2154 For description what each key means read below.
2155
2156 @item reset
2157 Set number of frame after which stats are going to be recalculated.
2158 Default is disabled.
2159
2160 @item measure_perchannel
2161 Select the entries which need to be measured per channel. The metadata keys can
2162 be used as flags, default is @option{all} which measures everything.
2163 @option{none} disables all per channel measurement.
2164
2165 @item measure_overall
2166 Select the entries which need to be measured overall. The metadata keys can
2167 be used as flags, default is @option{all} which measures everything.
2168 @option{none} disables all overall measurement.
2169
2170 @end table
2171
2172 A description of each shown parameter follows:
2173
2174 @table @option
2175 @item DC offset
2176 Mean amplitude displacement from zero.
2177
2178 @item Min level
2179 Minimal sample level.
2180
2181 @item Max level
2182 Maximal sample level.
2183
2184 @item Min difference
2185 Minimal difference between two consecutive samples.
2186
2187 @item Max difference
2188 Maximal difference between two consecutive samples.
2189
2190 @item Mean difference
2191 Mean difference between two consecutive samples.
2192 The average of each difference between two consecutive samples.
2193
2194 @item RMS difference
2195 Root Mean Square difference between two consecutive samples.
2196
2197 @item Peak level dB
2198 @item RMS level dB
2199 Standard peak and RMS level measured in dBFS.
2200
2201 @item RMS peak dB
2202 @item RMS trough dB
2203 Peak and trough values for RMS level measured over a short window.
2204
2205 @item Crest factor
2206 Standard ratio of peak to RMS level (note: not in dB).
2207
2208 @item Flat factor
2209 Flatness (i.e. consecutive samples with the same value) of the signal at its peak levels
2210 (i.e. either @var{Min level} or @var{Max level}).
2211
2212 @item Peak count
2213 Number of occasions (not the number of samples) that the signal attained either
2214 @var{Min level} or @var{Max level}.
2215
2216 @item Bit depth
2217 Overall bit depth of audio. Number of bits used for each sample.
2218
2219 @item Dynamic range
2220 Measured dynamic range of audio in dB.
2221
2222 @item Zero crossings
2223 Number of points where the waveform crosses the zero level axis.
2224
2225 @item Zero crossings rate
2226 Rate of Zero crossings and number of audio samples.
2227 @end table
2228
2229 @section atempo
2230
2231 Adjust audio tempo.
2232
2233 The filter accepts exactly one parameter, the audio tempo. If not
2234 specified then the filter will assume nominal 1.0 tempo. Tempo must
2235 be in the [0.5, 100.0] range.
2236
2237 Note that tempo greater than 2 will skip some samples rather than
2238 blend them in.  If for any reason this is a concern it is always
2239 possible to daisy-chain several instances of atempo to achieve the
2240 desired product tempo.
2241
2242 @subsection Examples
2243
2244 @itemize
2245 @item
2246 Slow down audio to 80% tempo:
2247 @example
2248 atempo=0.8
2249 @end example
2250
2251 @item
2252 To speed up audio to 300% tempo:
2253 @example
2254 atempo=3
2255 @end example
2256
2257 @item
2258 To speed up audio to 300% tempo by daisy-chaining two atempo instances:
2259 @example
2260 atempo=sqrt(3),atempo=sqrt(3)
2261 @end example
2262 @end itemize
2263
2264 @section atrim
2265
2266 Trim the input so that the output contains one continuous subpart of the input.
2267
2268 It accepts the following parameters:
2269 @table @option
2270 @item start
2271 Timestamp (in seconds) of the start of the section to keep. I.e. the audio
2272 sample with the timestamp @var{start} will be the first sample in the output.
2273
2274 @item end
2275 Specify time of the first audio sample that will be dropped, i.e. the
2276 audio sample immediately preceding the one with the timestamp @var{end} will be
2277 the last sample in the output.
2278
2279 @item start_pts
2280 Same as @var{start}, except this option sets the start timestamp in samples
2281 instead of seconds.
2282
2283 @item end_pts
2284 Same as @var{end}, except this option sets the end timestamp in samples instead
2285 of seconds.
2286
2287 @item duration
2288 The maximum duration of the output in seconds.
2289
2290 @item start_sample
2291 The number of the first sample that should be output.
2292
2293 @item end_sample
2294 The number of the first sample that should be dropped.
2295 @end table
2296
2297 @option{start}, @option{end}, and @option{duration} are expressed as time
2298 duration specifications; see
2299 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}.
2300
2301 Note that the first two sets of the start/end options and the @option{duration}
2302 option look at the frame timestamp, while the _sample options simply count the
2303 samples that pass through the filter. So start/end_pts and start/end_sample will
2304 give different results when the timestamps are wrong, inexact or do not start at
2305 zero. Also note that this filter does not modify the timestamps. If you wish
2306 to have the output timestamps start at zero, insert the asetpts filter after the
2307 atrim filter.
2308
2309 If multiple start or end options are set, this filter tries to be greedy and
2310 keep all samples that match at least one of the specified constraints. To keep
2311 only the part that matches all the constraints at once, chain multiple atrim
2312 filters.
2313
2314 The defaults are such that all the input is kept. So it is possible to set e.g.
2315 just the end values to keep everything before the specified time.
2316
2317 Examples:
2318 @itemize
2319 @item
2320 Drop everything except the second minute of input:
2321 @example
2322 ffmpeg -i INPUT -af atrim=60:120
2323 @end example
2324
2325 @item
2326 Keep only the first 1000 samples:
2327 @example
2328 ffmpeg -i INPUT -af atrim=end_sample=1000
2329 @end example
2330
2331 @end itemize
2332
2333 @section bandpass
2334
2335 Apply a two-pole Butterworth band-pass filter with central
2336 frequency @var{frequency}, and (3dB-point) band-width width.
2337 The @var{csg} option selects a constant skirt gain (peak gain = Q)
2338 instead of the default: constant 0dB peak gain.
2339 The filter roll off at 6dB per octave (20dB per decade).
2340
2341 The filter accepts the following options:
2342
2343 @table @option
2344 @item frequency, f
2345 Set the filter's central frequency. Default is @code{3000}.
2346
2347 @item csg
2348 Constant skirt gain if set to 1. Defaults to 0.
2349
2350 @item width_type, t
2351 Set method to specify band-width of filter.
2352 @table @option
2353 @item h
2354 Hz
2355 @item q
2356 Q-Factor
2357 @item o
2358 octave
2359 @item s
2360 slope
2361 @item k
2362 kHz
2363 @end table
2364
2365 @item width, w
2366 Specify the band-width of a filter in width_type units.
2367
2368 @item channels, c
2369 Specify which channels to filter, by default all available are filtered.
2370 @end table
2371
2372 @subsection Commands
2373
2374 This filter supports the following commands:
2375 @table @option
2376 @item frequency, f
2377 Change bandpass frequency.
2378 Syntax for the command is : "@var{frequency}"
2379
2380 @item width_type, t
2381 Change bandpass width_type.
2382 Syntax for the command is : "@var{width_type}"
2383
2384 @item width, w
2385 Change bandpass width.
2386 Syntax for the command is : "@var{width}"
2387 @end table
2388
2389 @section bandreject
2390
2391 Apply a two-pole Butterworth band-reject filter with central
2392 frequency @var{frequency}, and (3dB-point) band-width @var{width}.
2393 The filter roll off at 6dB per octave (20dB per decade).
2394
2395 The filter accepts the following options:
2396
2397 @table @option
2398 @item frequency, f
2399 Set the filter's central frequency. Default is @code{3000}.
2400
2401 @item width_type, t
2402 Set method to specify band-width of filter.
2403 @table @option
2404 @item h
2405 Hz
2406 @item q
2407 Q-Factor
2408 @item o
2409 octave
2410 @item s
2411 slope
2412 @item k
2413 kHz
2414 @end table
2415
2416 @item width, w
2417 Specify the band-width of a filter in width_type units.
2418
2419 @item channels, c
2420 Specify which channels to filter, by default all available are filtered.
2421 @end table
2422
2423 @subsection Commands
2424
2425 This filter supports the following commands:
2426 @table @option
2427 @item frequency, f
2428 Change bandreject frequency.
2429 Syntax for the command is : "@var{frequency}"
2430
2431 @item width_type, t
2432 Change bandreject width_type.
2433 Syntax for the command is : "@var{width_type}"
2434
2435 @item width, w
2436 Change bandreject width.
2437 Syntax for the command is : "@var{width}"
2438 @end table
2439
2440 @section bass, lowshelf
2441
2442 Boost or cut the bass (lower) frequencies of the audio using a two-pole
2443 shelving filter with a response similar to that of a standard
2444 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
2445
2446 The filter accepts the following options:
2447
2448 @table @option
2449 @item gain, g
2450 Give the gain at 0 Hz. Its useful range is about -20
2451 (for a large cut) to +20 (for a large boost).
2452 Beware of clipping when using a positive gain.
2453
2454 @item frequency, f
2455 Set the filter's central frequency and so can be used
2456 to extend or reduce the frequency range to be boosted or cut.
2457 The default value is @code{100} Hz.
2458
2459 @item width_type, t
2460 Set method to specify band-width of filter.
2461 @table @option
2462 @item h
2463 Hz
2464 @item q
2465 Q-Factor
2466 @item o
2467 octave
2468 @item s
2469 slope
2470 @item k
2471 kHz
2472 @end table
2473
2474 @item width, w
2475 Determine how steep is the filter's shelf transition.
2476
2477 @item channels, c
2478 Specify which channels to filter, by default all available are filtered.
2479 @end table
2480
2481 @subsection Commands
2482
2483 This filter supports the following commands:
2484 @table @option
2485 @item frequency, f
2486 Change bass frequency.
2487 Syntax for the command is : "@var{frequency}"
2488
2489 @item width_type, t
2490 Change bass width_type.
2491 Syntax for the command is : "@var{width_type}"
2492
2493 @item width, w
2494 Change bass width.
2495 Syntax for the command is : "@var{width}"
2496
2497 @item gain, g
2498 Change bass gain.
2499 Syntax for the command is : "@var{gain}"
2500 @end table
2501
2502 @section biquad
2503
2504 Apply a biquad IIR filter with the given coefficients.
2505 Where @var{b0}, @var{b1}, @var{b2} and @var{a0}, @var{a1}, @var{a2}
2506 are the numerator and denominator coefficients respectively.
2507 and @var{channels}, @var{c} specify which channels to filter, by default all
2508 available are filtered.
2509
2510 @subsection Commands
2511
2512 This filter supports the following commands:
2513 @table @option
2514 @item a0
2515 @item a1
2516 @item a2
2517 @item b0
2518 @item b1
2519 @item b2
2520 Change biquad parameter.
2521 Syntax for the command is : "@var{value}"
2522 @end table
2523
2524 @section bs2b
2525 Bauer stereo to binaural transformation, which improves headphone listening of
2526 stereo audio records.
2527
2528 To enable compilation of this filter you need to configure FFmpeg with
2529 @code{--enable-libbs2b}.
2530
2531 It accepts the following parameters:
2532 @table @option
2533
2534 @item profile
2535 Pre-defined crossfeed level.
2536 @table @option
2537
2538 @item default
2539 Default level (fcut=700, feed=50).
2540
2541 @item cmoy
2542 Chu Moy circuit (fcut=700, feed=60).
2543
2544 @item jmeier
2545 Jan Meier circuit (fcut=650, feed=95).
2546
2547 @end table
2548
2549 @item fcut
2550 Cut frequency (in Hz).
2551
2552 @item feed
2553 Feed level (in Hz).
2554
2555 @end table
2556
2557 @section channelmap
2558
2559 Remap input channels to new locations.
2560
2561 It accepts the following parameters:
2562 @table @option
2563 @item map
2564 Map channels from input to output. The argument is a '|'-separated list of
2565 mappings, each in the @code{@var{in_channel}-@var{out_channel}} or
2566 @var{in_channel} form. @var{in_channel} can be either the name of the input
2567 channel (e.g. FL for front left) or its index in the input channel layout.
2568 @var{out_channel} is the name of the output channel or its index in the output
2569 channel layout. If @var{out_channel} is not given then it is implicitly an
2570 index, starting with zero and increasing by one for each mapping.
2571
2572 @item channel_layout
2573 The channel layout of the output stream.
2574 @end table
2575
2576 If no mapping is present, the filter will implicitly map input channels to
2577 output channels, preserving indices.
2578
2579 @subsection Examples
2580
2581 @itemize
2582 @item
2583 For example, assuming a 5.1+downmix input MOV file,
2584 @example
2585 ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
2586 @end example
2587 will create an output WAV file tagged as stereo from the downmix channels of
2588 the input.
2589
2590 @item
2591 To fix a 5.1 WAV improperly encoded in AAC's native channel order
2592 @example
2593 ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
2594 @end example
2595 @end itemize
2596
2597 @section channelsplit
2598
2599 Split each channel from an input audio stream into a separate output stream.
2600
2601 It accepts the following parameters:
2602 @table @option
2603 @item channel_layout
2604 The channel layout of the input stream. The default is "stereo".
2605 @item channels
2606 A channel layout describing the channels to be extracted as separate output streams
2607 or "all" to extract each input channel as a separate stream. The default is "all".
2608
2609 Choosing channels not present in channel layout in the input will result in an error.
2610 @end table
2611
2612 @subsection Examples
2613
2614 @itemize
2615 @item
2616 For example, assuming a stereo input MP3 file,
2617 @example
2618 ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
2619 @end example
2620 will create an output Matroska file with two audio streams, one containing only
2621 the left channel and the other the right channel.
2622
2623 @item
2624 Split a 5.1 WAV file into per-channel files:
2625 @example
2626 ffmpeg -i in.wav -filter_complex
2627 'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
2628 -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
2629 front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
2630 side_right.wav
2631 @end example
2632
2633 @item
2634 Extract only LFE from a 5.1 WAV file:
2635 @example
2636 ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1:channels=LFE[LFE]'
2637 -map '[LFE]' lfe.wav
2638 @end example
2639 @end itemize
2640
2641 @section chorus
2642 Add a chorus effect to the audio.
2643
2644 Can make a single vocal sound like a chorus, but can also be applied to instrumentation.
2645
2646 Chorus resembles an echo effect with a short delay, but whereas with echo the delay is
2647 constant, with chorus, it is varied using using sinusoidal or triangular modulation.
2648 The modulation depth defines the range the modulated delay is played before or after
2649 the delay. Hence the delayed sound will sound slower or faster, that is the delayed
2650 sound tuned around the original one, like in a chorus where some vocals are slightly
2651 off key.
2652
2653 It accepts the following parameters:
2654 @table @option
2655 @item in_gain
2656 Set input gain. Default is 0.4.
2657
2658 @item out_gain
2659 Set output gain. Default is 0.4.
2660
2661 @item delays
2662 Set delays. A typical delay is around 40ms to 60ms.
2663
2664 @item decays
2665 Set decays.
2666
2667 @item speeds
2668 Set speeds.
2669
2670 @item depths
2671 Set depths.
2672 @end table
2673
2674 @subsection Examples
2675
2676 @itemize
2677 @item
2678 A single delay:
2679 @example
2680 chorus=0.7:0.9:55:0.4:0.25:2
2681 @end example
2682
2683 @item
2684 Two delays:
2685 @example
2686 chorus=0.6:0.9:50|60:0.4|0.32:0.25|0.4:2|1.3
2687 @end example
2688
2689 @item
2690 Fuller sounding chorus with three delays:
2691 @example
2692 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
2693 @end example
2694 @end itemize
2695
2696 @section compand
2697 Compress or expand the audio's dynamic range.
2698
2699 It accepts the following parameters:
2700
2701 @table @option
2702
2703 @item attacks
2704 @item decays
2705 A list of times in seconds for each channel over which the instantaneous level
2706 of the input signal is averaged to determine its volume. @var{attacks} refers to
2707 increase of volume and @var{decays} refers to decrease of volume. For most
2708 situations, the attack time (response to the audio getting louder) should be
2709 shorter than the decay time, because the human ear is more sensitive to sudden
2710 loud audio than sudden soft audio. A typical value for attack is 0.3 seconds and
2711 a typical value for decay is 0.8 seconds.
2712 If specified number of attacks & decays is lower than number of channels, the last
2713 set attack/decay will be used for all remaining channels.
2714
2715 @item points
2716 A list of points for the transfer function, specified in dB relative to the
2717 maximum possible signal amplitude. Each key points list must be defined using
2718 the following syntax: @code{x0/y0|x1/y1|x2/y2|....} or
2719 @code{x0/y0 x1/y1 x2/y2 ....}
2720
2721 The input values must be in strictly increasing order but the transfer function
2722 does not have to be monotonically rising. The point @code{0/0} is assumed but
2723 may be overridden (by @code{0/out-dBn}). Typical values for the transfer
2724 function are @code{-70/-70|-60/-20|1/0}.
2725
2726 @item soft-knee
2727 Set the curve radius in dB for all joints. It defaults to 0.01.
2728
2729 @item gain
2730 Set the additional gain in dB to be applied at all points on the transfer
2731 function. This allows for easy adjustment of the overall gain.
2732 It defaults to 0.
2733
2734 @item volume
2735 Set an initial volume, in dB, to be assumed for each channel when filtering
2736 starts. This permits the user to supply a nominal level initially, so that, for
2737 example, a very large gain is not applied to initial signal levels before the
2738 companding has begun to operate. A typical value for audio which is initially
2739 quiet is -90 dB. It defaults to 0.
2740
2741 @item delay
2742 Set a delay, in seconds. The input audio is analyzed immediately, but audio is
2743 delayed before being fed to the volume adjuster. Specifying a delay
2744 approximately equal to the attack/decay times allows the filter to effectively
2745 operate in predictive rather than reactive mode. It defaults to 0.
2746
2747 @end table
2748
2749 @subsection Examples
2750
2751 @itemize
2752 @item
2753 Make music with both quiet and loud passages suitable for listening to in a
2754 noisy environment:
2755 @example
2756 compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
2757 @end example
2758
2759 Another example for audio with whisper and explosion parts:
2760 @example
2761 compand=0|0:1|1:-90/-900|-70/-70|-30/-9|0/-3:6:0:0:0
2762 @end example
2763
2764 @item
2765 A noise gate for when the noise is at a lower level than the signal:
2766 @example
2767 compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1
2768 @end example
2769
2770 @item
2771 Here is another noise gate, this time for when the noise is at a higher level
2772 than the signal (making it, in some ways, similar to squelch):
2773 @example
2774 compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1
2775 @end example
2776
2777 @item
2778 2:1 compression starting at -6dB:
2779 @example
2780 compand=points=-80/-80|-6/-6|0/-3.8|20/3.5
2781 @end example
2782
2783 @item
2784 2:1 compression starting at -9dB:
2785 @example
2786 compand=points=-80/-80|-9/-9|0/-5.3|20/2.9
2787 @end example
2788
2789 @item
2790 2:1 compression starting at -12dB:
2791 @example
2792 compand=points=-80/-80|-12/-12|0/-6.8|20/1.9
2793 @end example
2794
2795 @item
2796 2:1 compression starting at -18dB:
2797 @example
2798 compand=points=-80/-80|-18/-18|0/-9.8|20/0.7
2799 @end example
2800
2801 @item
2802 3:1 compression starting at -15dB:
2803 @example
2804 compand=points=-80/-80|-15/-15|0/-10.8|20/-5.2
2805 @end example
2806
2807 @item
2808 Compressor/Gate:
2809 @example
2810 compand=points=-80/-105|-62/-80|-15.4/-15.4|0/-12|20/-7.6
2811 @end example
2812
2813 @item
2814 Expander:
2815 @example
2816 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
2817 @end example
2818
2819 @item
2820 Hard limiter at -6dB:
2821 @example
2822 compand=attacks=0:points=-80/-80|-6/-6|20/-6
2823 @end example
2824
2825 @item
2826 Hard limiter at -12dB:
2827 @example
2828 compand=attacks=0:points=-80/-80|-12/-12|20/-12
2829 @end example
2830
2831 @item
2832 Hard noise gate at -35 dB:
2833 @example
2834 compand=attacks=0:points=-80/-115|-35.1/-80|-35/-35|20/20
2835 @end example
2836
2837 @item
2838 Soft limiter:
2839 @example
2840 compand=attacks=0:points=-80/-80|-12.4/-12.4|-6/-8|0/-6.8|20/-2.8
2841 @end example
2842 @end itemize
2843
2844 @section compensationdelay
2845
2846 Compensation Delay Line is a metric based delay to compensate differing
2847 positions of microphones or speakers.
2848
2849 For example, you have recorded guitar with two microphones placed in
2850 different location. Because the front of sound wave has fixed speed in
2851 normal conditions, the phasing of microphones can vary and depends on
2852 their location and interposition. The best sound mix can be achieved when
2853 these microphones are in phase (synchronized). Note that distance of
2854 ~30 cm between microphones makes one microphone to capture signal in
2855 antiphase to another microphone. That makes the final mix sounding moody.
2856 This filter helps to solve phasing problems by adding different delays
2857 to each microphone track and make them synchronized.
2858
2859 The best result can be reached when you take one track as base and
2860 synchronize other tracks one by one with it.
2861 Remember that synchronization/delay tolerance depends on sample rate, too.
2862 Higher sample rates will give more tolerance.
2863
2864 It accepts the following parameters:
2865
2866 @table @option
2867 @item mm
2868 Set millimeters distance. This is compensation distance for fine tuning.
2869 Default is 0.
2870
2871 @item cm
2872 Set cm distance. This is compensation distance for tightening distance setup.
2873 Default is 0.
2874
2875 @item m
2876 Set meters distance. This is compensation distance for hard distance setup.
2877 Default is 0.
2878
2879 @item dry
2880 Set dry amount. Amount of unprocessed (dry) signal.
2881 Default is 0.
2882
2883 @item wet
2884 Set wet amount. Amount of processed (wet) signal.
2885 Default is 1.
2886
2887 @item temp
2888 Set temperature degree in Celsius. This is the temperature of the environment.
2889 Default is 20.
2890 @end table
2891
2892 @section crossfeed
2893 Apply headphone crossfeed filter.
2894
2895 Crossfeed is the process of blending the left and right channels of stereo
2896 audio recording.
2897 It is mainly used to reduce extreme stereo separation of low frequencies.
2898
2899 The intent is to produce more speaker like sound to the listener.
2900
2901 The filter accepts the following options:
2902
2903 @table @option
2904 @item strength
2905 Set strength of crossfeed. Default is 0.2. Allowed range is from 0 to 1.
2906 This sets gain of low shelf filter for side part of stereo image.
2907 Default is -6dB. Max allowed is -30db when strength is set to 1.
2908
2909 @item range
2910 Set soundstage wideness. Default is 0.5. Allowed range is from 0 to 1.
2911 This sets cut off frequency of low shelf filter. Default is cut off near
2912 1550 Hz. With range set to 1 cut off frequency is set to 2100 Hz.
2913
2914 @item level_in
2915 Set input gain. Default is 0.9.
2916
2917 @item level_out
2918 Set output gain. Default is 1.
2919 @end table
2920
2921 @section crystalizer
2922 Simple algorithm to expand audio dynamic range.
2923
2924 The filter accepts the following options:
2925
2926 @table @option
2927 @item i
2928 Sets the intensity of effect (default: 2.0). Must be in range between 0.0
2929 (unchanged sound) to 10.0 (maximum effect).
2930
2931 @item c
2932 Enable clipping. By default is enabled.
2933 @end table
2934
2935 @section dcshift
2936 Apply a DC shift to the audio.
2937
2938 This can be useful to remove a DC offset (caused perhaps by a hardware problem
2939 in the recording chain) from the audio. The effect of a DC offset is reduced
2940 headroom and hence volume. The @ref{astats} filter can be used to determine if
2941 a signal has a DC offset.
2942
2943 @table @option
2944 @item shift
2945 Set the DC shift, allowed range is [-1, 1]. It indicates the amount to shift
2946 the audio.
2947
2948 @item limitergain
2949 Optional. It should have a value much less than 1 (e.g. 0.05 or 0.02) and is
2950 used to prevent clipping.
2951 @end table
2952
2953 @section drmeter
2954 Measure audio dynamic range.
2955
2956 DR values of 14 and higher is found in very dynamic material. DR of 8 to 13
2957 is found in transition material. And anything less that 8 have very poor dynamics
2958 and is very compressed.
2959
2960 The filter accepts the following options:
2961
2962 @table @option
2963 @item length
2964 Set window length in seconds used to split audio into segments of equal length.
2965 Default is 3 seconds.
2966 @end table
2967
2968 @section dynaudnorm
2969 Dynamic Audio Normalizer.
2970
2971 This filter applies a certain amount of gain to the input audio in order
2972 to bring its peak magnitude to a target level (e.g. 0 dBFS). However, in
2973 contrast to more "simple" normalization algorithms, the Dynamic Audio
2974 Normalizer *dynamically* re-adjusts the gain factor to the input audio.
2975 This allows for applying extra gain to the "quiet" sections of the audio
2976 while avoiding distortions or clipping the "loud" sections. In other words:
2977 The Dynamic Audio Normalizer will "even out" the volume of quiet and loud
2978 sections, in the sense that the volume of each section is brought to the
2979 same target level. Note, however, that the Dynamic Audio Normalizer achieves
2980 this goal *without* applying "dynamic range compressing". It will retain 100%
2981 of the dynamic range *within* each section of the audio file.
2982
2983 @table @option
2984 @item f
2985 Set the frame length in milliseconds. In range from 10 to 8000 milliseconds.
2986 Default is 500 milliseconds.
2987 The Dynamic Audio Normalizer processes the input audio in small chunks,
2988 referred to as frames. This is required, because a peak magnitude has no
2989 meaning for just a single sample value. Instead, we need to determine the
2990 peak magnitude for a contiguous sequence of sample values. While a "standard"
2991 normalizer would simply use the peak magnitude of the complete file, the
2992 Dynamic Audio Normalizer determines the peak magnitude individually for each
2993 frame. The length of a frame is specified in milliseconds. By default, the
2994 Dynamic Audio Normalizer uses a frame length of 500 milliseconds, which has
2995 been found to give good results with most files.
2996 Note that the exact frame length, in number of samples, will be determined
2997 automatically, based on the sampling rate of the individual input audio file.
2998
2999 @item g
3000 Set the Gaussian filter window size. In range from 3 to 301, must be odd
3001 number. Default is 31.
3002 Probably the most important parameter of the Dynamic Audio Normalizer is the
3003 @code{window size} of the Gaussian smoothing filter. The filter's window size
3004 is specified in frames, centered around the current frame. For the sake of
3005 simplicity, this must be an odd number. Consequently, the default value of 31
3006 takes into account the current frame, as well as the 15 preceding frames and
3007 the 15 subsequent frames. Using a larger window results in a stronger
3008 smoothing effect and thus in less gain variation, i.e. slower gain
3009 adaptation. Conversely, using a smaller window results in a weaker smoothing
3010 effect and thus in more gain variation, i.e. faster gain adaptation.
3011 In other words, the more you increase this value, the more the Dynamic Audio
3012 Normalizer will behave like a "traditional" normalization filter. On the
3013 contrary, the more you decrease this value, the more the Dynamic Audio
3014 Normalizer will behave like a dynamic range compressor.
3015
3016 @item p
3017 Set the target peak value. This specifies the highest permissible magnitude
3018 level for the normalized audio input. This filter will try to approach the
3019 target peak magnitude as closely as possible, but at the same time it also
3020 makes sure that the normalized signal will never exceed the peak magnitude.
3021 A frame's maximum local gain factor is imposed directly by the target peak
3022 magnitude. The default value is 0.95 and thus leaves a headroom of 5%*.
3023 It is not recommended to go above this value.
3024
3025 @item m
3026 Set the maximum gain factor. In range from 1.0 to 100.0. Default is 10.0.
3027 The Dynamic Audio Normalizer determines the maximum possible (local) gain
3028 factor for each input frame, i.e. the maximum gain factor that does not
3029 result in clipping or distortion. The maximum gain factor is determined by
3030 the frame's highest magnitude sample. However, the Dynamic Audio Normalizer
3031 additionally bounds the frame's maximum gain factor by a predetermined
3032 (global) maximum gain factor. This is done in order to avoid excessive gain
3033 factors in "silent" or almost silent frames. By default, the maximum gain
3034 factor is 10.0, For most inputs the default value should be sufficient and
3035 it usually is not recommended to increase this value. Though, for input
3036 with an extremely low overall volume level, it may be necessary to allow even
3037 higher gain factors. Note, however, that the Dynamic Audio Normalizer does
3038 not simply apply a "hard" threshold (i.e. cut off values above the threshold).
3039 Instead, a "sigmoid" threshold function will be applied. This way, the
3040 gain factors will smoothly approach the threshold value, but never exceed that
3041 value.
3042
3043 @item r
3044 Set the target RMS. In range from 0.0 to 1.0. Default is 0.0 - disabled.
3045 By default, the Dynamic Audio Normalizer performs "peak" normalization.
3046 This means that the maximum local gain factor for each frame is defined
3047 (only) by the frame's highest magnitude sample. This way, the samples can
3048 be amplified as much as possible without exceeding the maximum signal
3049 level, i.e. without clipping. Optionally, however, the Dynamic Audio
3050 Normalizer can also take into account the frame's root mean square,
3051 abbreviated RMS. In electrical engineering, the RMS is commonly used to
3052 determine the power of a time-varying signal. It is therefore considered
3053 that the RMS is a better approximation of the "perceived loudness" than
3054 just looking at the signal's peak magnitude. Consequently, by adjusting all
3055 frames to a constant RMS value, a uniform "perceived loudness" can be
3056 established. If a target RMS value has been specified, a frame's local gain
3057 factor is defined as the factor that would result in exactly that RMS value.
3058 Note, however, that the maximum local gain factor is still restricted by the
3059 frame's highest magnitude sample, in order to prevent clipping.
3060
3061 @item n
3062 Enable channels coupling. By default is enabled.
3063 By default, the Dynamic Audio Normalizer will amplify all channels by the same
3064 amount. This means the same gain factor will be applied to all channels, i.e.
3065 the maximum possible gain factor is determined by the "loudest" channel.
3066 However, in some recordings, it may happen that the volume of the different
3067 channels is uneven, e.g. one channel may be "quieter" than the other one(s).
3068 In this case, this option can be used to disable the channel coupling. This way,
3069 the gain factor will be determined independently for each channel, depending
3070 only on the individual channel's highest magnitude sample. This allows for
3071 harmonizing the volume of the different channels.
3072
3073 @item c
3074 Enable DC bias correction. By default is disabled.
3075 An audio signal (in the time domain) is a sequence of sample values.
3076 In the Dynamic Audio Normalizer these sample values are represented in the
3077 -1.0 to 1.0 range, regardless of the original input format. Normally, the
3078 audio signal, or "waveform", should be centered around the zero point.
3079 That means if we calculate the mean value of all samples in a file, or in a
3080 single frame, then the result should be 0.0 or at least very close to that
3081 value. If, however, there is a significant deviation of the mean value from
3082 0.0, in either positive or negative direction, this is referred to as a
3083 DC bias or DC offset. Since a DC bias is clearly undesirable, the Dynamic
3084 Audio Normalizer provides optional DC bias correction.
3085 With DC bias correction enabled, the Dynamic Audio Normalizer will determine
3086 the mean value, or "DC correction" offset, of each input frame and subtract
3087 that value from all of the frame's sample values which ensures those samples
3088 are centered around 0.0 again. Also, in order to avoid "gaps" at the frame
3089 boundaries, the DC correction offset values will be interpolated smoothly
3090 between neighbouring frames.
3091
3092 @item b
3093 Enable alternative boundary mode. By default is disabled.
3094 The Dynamic Audio Normalizer takes into account a certain neighbourhood
3095 around each frame. This includes the preceding frames as well as the
3096 subsequent frames. However, for the "boundary" frames, located at the very
3097 beginning and at the very end of the audio file, not all neighbouring
3098 frames are available. In particular, for the first few frames in the audio
3099 file, the preceding frames are not known. And, similarly, for the last few
3100 frames in the audio file, the subsequent frames are not known. Thus, the
3101 question arises which gain factors should be assumed for the missing frames
3102 in the "boundary" region. The Dynamic Audio Normalizer implements two modes
3103 to deal with this situation. The default boundary mode assumes a gain factor
3104 of exactly 1.0 for the missing frames, resulting in a smooth "fade in" and
3105 "fade out" at the beginning and at the end of the input, respectively.
3106
3107 @item s
3108 Set the compress factor. In range from 0.0 to 30.0. Default is 0.0.
3109 By default, the Dynamic Audio Normalizer does not apply "traditional"
3110 compression. This means that signal peaks will not be pruned and thus the
3111 full dynamic range will be retained within each local neighbourhood. However,
3112 in some cases it may be desirable to combine the Dynamic Audio Normalizer's
3113 normalization algorithm with a more "traditional" compression.
3114 For this purpose, the Dynamic Audio Normalizer provides an optional compression
3115 (thresholding) function. If (and only if) the compression feature is enabled,
3116 all input frames will be processed by a soft knee thresholding function prior
3117 to the actual normalization process. Put simply, the thresholding function is
3118 going to prune all samples whose magnitude exceeds a certain threshold value.
3119 However, the Dynamic Audio Normalizer does not simply apply a fixed threshold
3120 value. Instead, the threshold value will be adjusted for each individual
3121 frame.
3122 In general, smaller parameters result in stronger compression, and vice versa.
3123 Values below 3.0 are not recommended, because audible distortion may appear.
3124 @end table
3125
3126 @section earwax
3127
3128 Make audio easier to listen to on headphones.
3129
3130 This filter adds `cues' to 44.1kHz stereo (i.e. audio CD format) audio
3131 so that when listened to on headphones the stereo image is moved from
3132 inside your head (standard for headphones) to outside and in front of
3133 the listener (standard for speakers).
3134
3135 Ported from SoX.
3136
3137 @section equalizer
3138
3139 Apply a two-pole peaking equalisation (EQ) filter. With this
3140 filter, the signal-level at and around a selected frequency can
3141 be increased or decreased, whilst (unlike bandpass and bandreject
3142 filters) that at all other frequencies is unchanged.
3143
3144 In order to produce complex equalisation curves, this filter can
3145 be given several times, each with a different central frequency.
3146
3147 The filter accepts the following options:
3148
3149 @table @option
3150 @item frequency, f
3151 Set the filter's central frequency in Hz.
3152
3153 @item width_type, t
3154 Set method to specify band-width of filter.
3155 @table @option
3156 @item h
3157 Hz
3158 @item q
3159 Q-Factor
3160 @item o
3161 octave
3162 @item s
3163 slope
3164 @item k
3165 kHz
3166 @end table
3167
3168 @item width, w
3169 Specify the band-width of a filter in width_type units.
3170
3171 @item gain, g
3172 Set the required gain or attenuation in dB.
3173 Beware of clipping when using a positive gain.
3174
3175 @item channels, c
3176 Specify which channels to filter, by default all available are filtered.
3177 @end table
3178
3179 @subsection Examples
3180 @itemize
3181 @item
3182 Attenuate 10 dB at 1000 Hz, with a bandwidth of 200 Hz:
3183 @example
3184 equalizer=f=1000:t=h:width=200:g=-10
3185 @end example
3186
3187 @item
3188 Apply 2 dB gain at 1000 Hz with Q 1 and attenuate 5 dB at 100 Hz with Q 2:
3189 @example
3190 equalizer=f=1000:t=q:w=1:g=2,equalizer=f=100:t=q:w=2:g=-5
3191 @end example
3192 @end itemize
3193
3194 @subsection Commands
3195
3196 This filter supports the following commands:
3197 @table @option
3198 @item frequency, f
3199 Change equalizer frequency.
3200 Syntax for the command is : "@var{frequency}"
3201
3202 @item width_type, t
3203 Change equalizer width_type.
3204 Syntax for the command is : "@var{width_type}"
3205
3206 @item width, w
3207 Change equalizer width.
3208 Syntax for the command is : "@var{width}"
3209
3210 @item gain, g
3211 Change equalizer gain.
3212 Syntax for the command is : "@var{gain}"
3213 @end table
3214
3215 @section extrastereo
3216
3217 Linearly increases the difference between left and right channels which
3218 adds some sort of "live" effect to playback.
3219
3220 The filter accepts the following options:
3221
3222 @table @option
3223 @item m
3224 Sets the difference coefficient (default: 2.5). 0.0 means mono sound
3225 (average of both channels), with 1.0 sound will be unchanged, with
3226 -1.0 left and right channels will be swapped.
3227
3228 @item c
3229 Enable clipping. By default is enabled.
3230 @end table
3231
3232 @section firequalizer
3233 Apply FIR Equalization using arbitrary frequency response.
3234
3235 The filter accepts the following option:
3236
3237 @table @option
3238 @item gain
3239 Set gain curve equation (in dB). The expression can contain variables:
3240 @table @option
3241 @item f
3242 the evaluated frequency
3243 @item sr
3244 sample rate
3245 @item ch
3246 channel number, set to 0 when multichannels evaluation is disabled
3247 @item chid
3248 channel id, see libavutil/channel_layout.h, set to the first channel id when
3249 multichannels evaluation is disabled
3250 @item chs
3251 number of channels
3252 @item chlayout
3253 channel_layout, see libavutil/channel_layout.h
3254
3255 @end table
3256 and functions:
3257 @table @option
3258 @item gain_interpolate(f)
3259 interpolate gain on frequency f based on gain_entry
3260 @item cubic_interpolate(f)
3261 same as gain_interpolate, but smoother
3262 @end table
3263 This option is also available as command. Default is @code{gain_interpolate(f)}.
3264
3265 @item gain_entry
3266 Set gain entry for gain_interpolate function. The expression can
3267 contain functions:
3268 @table @option
3269 @item entry(f, g)
3270 store gain entry at frequency f with value g
3271 @end table
3272 This option is also available as command.
3273
3274 @item delay
3275 Set filter delay in seconds. Higher value means more accurate.
3276 Default is @code{0.01}.
3277
3278 @item accuracy
3279 Set filter accuracy in Hz. Lower value means more accurate.
3280 Default is @code{5}.
3281
3282 @item wfunc
3283 Set window function. Acceptable values are:
3284 @table @option
3285 @item rectangular
3286 rectangular window, useful when gain curve is already smooth
3287 @item hann
3288 hann window (default)
3289 @item hamming
3290 hamming window
3291 @item blackman
3292 blackman window
3293 @item nuttall3
3294 3-terms continuous 1st derivative nuttall window
3295 @item mnuttall3
3296 minimum 3-terms discontinuous nuttall window
3297 @item nuttall
3298 4-terms continuous 1st derivative nuttall window
3299 @item bnuttall
3300 minimum 4-terms discontinuous nuttall (blackman-nuttall) window
3301 @item bharris
3302 blackman-harris window
3303 @item tukey
3304 tukey window
3305 @end table
3306
3307 @item fixed
3308 If enabled, use fixed number of audio samples. This improves speed when
3309 filtering with large delay. Default is disabled.
3310
3311 @item multi
3312 Enable multichannels evaluation on gain. Default is disabled.
3313
3314 @item zero_phase
3315 Enable zero phase mode by subtracting timestamp to compensate delay.
3316 Default is disabled.
3317
3318 @item scale
3319 Set scale used by gain. Acceptable values are:
3320 @table @option
3321 @item linlin
3322 linear frequency, linear gain
3323 @item linlog
3324 linear frequency, logarithmic (in dB) gain (default)
3325 @item loglin
3326 logarithmic (in octave scale where 20 Hz is 0) frequency, linear gain
3327 @item loglog
3328 logarithmic frequency, logarithmic gain
3329 @end table
3330
3331 @item dumpfile
3332 Set file for dumping, suitable for gnuplot.
3333
3334 @item dumpscale
3335 Set scale for dumpfile. Acceptable values are same with scale option.
3336 Default is linlog.
3337
3338 @item fft2
3339 Enable 2-channel convolution using complex FFT. This improves speed significantly.
3340 Default is disabled.
3341
3342 @item min_phase
3343 Enable minimum phase impulse response. Default is disabled.
3344 @end table
3345
3346 @subsection Examples
3347 @itemize
3348 @item
3349 lowpass at 1000 Hz:
3350 @example
3351 firequalizer=gain='if(lt(f,1000), 0, -INF)'
3352 @end example
3353 @item
3354 lowpass at 1000 Hz with gain_entry:
3355 @example
3356 firequalizer=gain_entry='entry(1000,0); entry(1001, -INF)'
3357 @end example
3358 @item
3359 custom equalization:
3360 @example
3361 firequalizer=gain_entry='entry(100,0); entry(400, -4); entry(1000, -6); entry(2000, 0)'
3362 @end example
3363 @item
3364 higher delay with zero phase to compensate delay:
3365 @example
3366 firequalizer=delay=0.1:fixed=on:zero_phase=on
3367 @end example
3368 @item
3369 lowpass on left channel, highpass on right channel:
3370 @example
3371 firequalizer=gain='if(eq(chid,1), gain_interpolate(f), if(eq(chid,2), gain_interpolate(1e6+f), 0))'
3372 :gain_entry='entry(1000, 0); entry(1001,-INF); entry(1e6+1000,0)':multi=on
3373 @end example
3374 @end itemize
3375
3376 @section flanger
3377 Apply a flanging effect to the audio.
3378
3379 The filter accepts the following options:
3380
3381 @table @option
3382 @item delay
3383 Set base delay in milliseconds. Range from 0 to 30. Default value is 0.
3384
3385 @item depth
3386 Set added sweep delay in milliseconds. Range from 0 to 10. Default value is 2.
3387
3388 @item regen
3389 Set percentage regeneration (delayed signal feedback). Range from -95 to 95.
3390 Default value is 0.
3391
3392 @item width
3393 Set percentage of delayed signal mixed with original. Range from 0 to 100.
3394 Default value is 71.
3395
3396 @item speed
3397 Set sweeps per second (Hz). Range from 0.1 to 10. Default value is 0.5.
3398
3399 @item shape
3400 Set swept wave shape, can be @var{triangular} or @var{sinusoidal}.
3401 Default value is @var{sinusoidal}.
3402
3403 @item phase
3404 Set swept wave percentage-shift for multi channel. Range from 0 to 100.
3405 Default value is 25.
3406
3407 @item interp
3408 Set delay-line interpolation, @var{linear} or @var{quadratic}.
3409 Default is @var{linear}.
3410 @end table
3411
3412 @section haas
3413 Apply Haas effect to audio.
3414
3415 Note that this makes most sense to apply on mono signals.
3416 With this filter applied to mono signals it give some directionality and
3417 stretches its stereo image.
3418
3419 The filter accepts the following options:
3420
3421 @table @option
3422 @item level_in
3423 Set input level. By default is @var{1}, or 0dB
3424
3425 @item level_out
3426 Set output level. By default is @var{1}, or 0dB.
3427
3428 @item side_gain
3429 Set gain applied to side part of signal. By default is @var{1}.
3430
3431 @item middle_source
3432 Set kind of middle source. Can be one of the following:
3433
3434 @table @samp
3435 @item left
3436 Pick left channel.
3437
3438 @item right
3439 Pick right channel.
3440
3441 @item mid
3442 Pick middle part signal of stereo image.
3443
3444 @item side
3445 Pick side part signal of stereo image.
3446 @end table
3447
3448 @item middle_phase
3449 Change middle phase. By default is disabled.
3450
3451 @item left_delay
3452 Set left channel delay. By default is @var{2.05} milliseconds.
3453
3454 @item left_balance
3455 Set left channel balance. By default is @var{-1}.
3456
3457 @item left_gain
3458 Set left channel gain. By default is @var{1}.
3459
3460 @item left_phase
3461 Change left phase. By default is disabled.
3462
3463 @item right_delay
3464 Set right channel delay. By defaults is @var{2.12} milliseconds.
3465
3466 @item right_balance
3467 Set right channel balance. By default is @var{1}.
3468
3469 @item right_gain
3470 Set right channel gain. By default is @var{1}.
3471
3472 @item right_phase
3473 Change right phase. By default is enabled.
3474 @end table
3475
3476 @section hdcd
3477
3478 Decodes High Definition Compatible Digital (HDCD) data. A 16-bit PCM stream with
3479 embedded HDCD codes is expanded into a 20-bit PCM stream.
3480
3481 The filter supports the Peak Extend and Low-level Gain Adjustment features
3482 of HDCD, and detects the Transient Filter flag.
3483
3484 @example
3485 ffmpeg -i HDCD16.flac -af hdcd OUT24.flac
3486 @end example
3487
3488 When using the filter with wav, note the default encoding for wav is 16-bit,
3489 so the resulting 20-bit stream will be truncated back to 16-bit. Use something
3490 like @command{-acodec pcm_s24le} after the filter to get 24-bit PCM output.
3491 @example
3492 ffmpeg -i HDCD16.wav -af hdcd OUT16.wav
3493 ffmpeg -i HDCD16.wav -af hdcd -c:a pcm_s24le OUT24.wav
3494 @end example
3495
3496 The filter accepts the following options:
3497
3498 @table @option
3499 @item disable_autoconvert
3500 Disable any automatic format conversion or resampling in the filter graph.
3501
3502 @item process_stereo
3503 Process the stereo channels together. If target_gain does not match between
3504 channels, consider it invalid and use the last valid target_gain.
3505
3506 @item cdt_ms
3507 Set the code detect timer period in ms.
3508
3509 @item force_pe
3510 Always extend peaks above -3dBFS even if PE isn't signaled.
3511
3512 @item analyze_mode
3513 Replace audio with a solid tone and adjust the amplitude to signal some
3514 specific aspect of the decoding process. The output file can be loaded in
3515 an audio editor alongside the original to aid analysis.
3516
3517 @code{analyze_mode=pe:force_pe=true} can be used to see all samples above the PE level.
3518
3519 Modes are:
3520 @table @samp
3521 @item 0, off
3522 Disabled
3523 @item 1, lle
3524 Gain adjustment level at each sample
3525 @item 2, pe
3526 Samples where peak extend occurs
3527 @item 3, cdt
3528 Samples where the code detect timer is active
3529 @item 4, tgm
3530 Samples where the target gain does not match between channels
3531 @end table
3532 @end table
3533
3534 @section headphone
3535
3536 Apply head-related transfer functions (HRTFs) to create virtual
3537 loudspeakers around the user for binaural listening via headphones.
3538 The HRIRs are provided via additional streams, for each channel
3539 one stereo input stream is needed.
3540
3541 The filter accepts the following options:
3542
3543 @table @option
3544 @item map
3545 Set mapping of input streams for convolution.
3546 The argument is a '|'-separated list of channel names in order as they
3547 are given as additional stream inputs for filter.
3548 This also specify number of input streams. Number of input streams
3549 must be not less than number of channels in first stream plus one.
3550
3551 @item gain
3552 Set gain applied to audio. Value is in dB. Default is 0.
3553
3554 @item type
3555 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
3556 processing audio in time domain which is slow.
3557 @var{freq} is processing audio in frequency domain which is fast.
3558 Default is @var{freq}.
3559
3560 @item lfe
3561 Set custom gain for LFE channels. Value is in dB. Default is 0.
3562
3563 @item size
3564 Set size of frame in number of samples which will be processed at once.
3565 Default value is @var{1024}. Allowed range is from 1024 to 96000.
3566
3567 @item hrir
3568 Set format of hrir stream.
3569 Default value is @var{stereo}. Alternative value is @var{multich}.
3570 If value is set to @var{stereo}, number of additional streams should
3571 be greater or equal to number of input channels in first input stream.
3572 Also each additional stream should have stereo number of channels.
3573 If value is set to @var{multich}, number of additional streams should
3574 be exactly one. Also number of input channels of additional stream
3575 should be equal or greater than twice number of channels of first input
3576 stream.
3577 @end table
3578
3579 @subsection Examples
3580
3581 @itemize
3582 @item
3583 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
3584 each amovie filter use stereo file with IR coefficients as input.
3585 The files give coefficients for each position of virtual loudspeaker:
3586 @example
3587 ffmpeg -i input.wav
3588 -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"
3589 output.wav
3590 @end example
3591
3592 @item
3593 Full example using wav files as coefficients with amovie filters for 7.1 downmix,
3594 but now in @var{multich} @var{hrir} format.
3595 @example
3596 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"
3597 output.wav
3598 @end example
3599 @end itemize
3600
3601 @section highpass
3602
3603 Apply a high-pass filter with 3dB point frequency.
3604 The filter can be either single-pole, or double-pole (the default).
3605 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
3606
3607 The filter accepts the following options:
3608
3609 @table @option
3610 @item frequency, f
3611 Set frequency in Hz. Default is 3000.
3612
3613 @item poles, p
3614 Set number of poles. Default is 2.
3615
3616 @item width_type, t
3617 Set method to specify band-width of filter.
3618 @table @option
3619 @item h
3620 Hz
3621 @item q
3622 Q-Factor
3623 @item o
3624 octave
3625 @item s
3626 slope
3627 @item k
3628 kHz
3629 @end table
3630
3631 @item width, w
3632 Specify the band-width of a filter in width_type units.
3633 Applies only to double-pole filter.
3634 The default is 0.707q and gives a Butterworth response.
3635
3636 @item channels, c
3637 Specify which channels to filter, by default all available are filtered.
3638 @end table
3639
3640 @subsection Commands
3641
3642 This filter supports the following commands:
3643 @table @option
3644 @item frequency, f
3645 Change highpass frequency.
3646 Syntax for the command is : "@var{frequency}"
3647
3648 @item width_type, t
3649 Change highpass width_type.
3650 Syntax for the command is : "@var{width_type}"
3651
3652 @item width, w
3653 Change highpass width.
3654 Syntax for the command is : "@var{width}"
3655 @end table
3656
3657 @section join
3658
3659 Join multiple input streams into one multi-channel stream.
3660
3661 It accepts the following parameters:
3662 @table @option
3663
3664 @item inputs
3665 The number of input streams. It defaults to 2.
3666
3667 @item channel_layout
3668 The desired output channel layout. It defaults to stereo.
3669
3670 @item map
3671 Map channels from inputs to output. The argument is a '|'-separated list of
3672 mappings, each in the @code{@var{input_idx}.@var{in_channel}-@var{out_channel}}
3673 form. @var{input_idx} is the 0-based index of the input stream. @var{in_channel}
3674 can be either the name of the input channel (e.g. FL for front left) or its
3675 index in the specified input stream. @var{out_channel} is the name of the output
3676 channel.
3677 @end table
3678
3679 The filter will attempt to guess the mappings when they are not specified
3680 explicitly. It does so by first trying to find an unused matching input channel
3681 and if that fails it picks the first unused input channel.
3682
3683 Join 3 inputs (with properly set channel layouts):
3684 @example
3685 ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
3686 @end example
3687
3688 Build a 5.1 output from 6 single-channel streams:
3689 @example
3690 ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
3691 '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'
3692 out
3693 @end example
3694
3695 @section ladspa
3696
3697 Load a LADSPA (Linux Audio Developer's Simple Plugin API) plugin.
3698
3699 To enable compilation of this filter you need to configure FFmpeg with
3700 @code{--enable-ladspa}.
3701
3702 @table @option
3703 @item file, f
3704 Specifies the name of LADSPA plugin library to load. If the environment
3705 variable @env{LADSPA_PATH} is defined, the LADSPA plugin is searched in
3706 each one of the directories specified by the colon separated list in
3707 @env{LADSPA_PATH}, otherwise in the standard LADSPA paths, which are in
3708 this order: @file{HOME/.ladspa/lib/}, @file{/usr/local/lib/ladspa/},
3709 @file{/usr/lib/ladspa/}.
3710
3711 @item plugin, p
3712 Specifies the plugin within the library. Some libraries contain only
3713 one plugin, but others contain many of them. If this is not set filter
3714 will list all available plugins within the specified library.
3715
3716 @item controls, c
3717 Set the '|' separated list of controls which are zero or more floating point
3718 values that determine the behavior of the loaded plugin (for example delay,
3719 threshold or gain).
3720 Controls need to be defined using the following syntax:
3721 c0=@var{value0}|c1=@var{value1}|c2=@var{value2}|..., where
3722 @var{valuei} is the value set on the @var{i}-th control.
3723 Alternatively they can be also defined using the following syntax:
3724 @var{value0}|@var{value1}|@var{value2}|..., where
3725 @var{valuei} is the value set on the @var{i}-th control.
3726 If @option{controls} is set to @code{help}, all available controls and
3727 their valid ranges are printed.
3728
3729 @item sample_rate, s
3730 Specify the sample rate, default to 44100. Only used if plugin have
3731 zero inputs.
3732
3733 @item nb_samples, n
3734 Set the number of samples per channel per each output frame, default
3735 is 1024. Only used if plugin have zero inputs.
3736
3737 @item duration, d
3738 Set the minimum duration of the sourced audio. See
3739 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
3740 for the accepted syntax.
3741 Note that the resulting duration may be greater than the specified duration,
3742 as the generated audio is always cut at the end of a complete frame.
3743 If not specified, or the expressed duration is negative, the audio is
3744 supposed to be generated forever.
3745 Only used if plugin have zero inputs.
3746
3747 @end table
3748
3749 @subsection Examples
3750
3751 @itemize
3752 @item
3753 List all available plugins within amp (LADSPA example plugin) library:
3754 @example
3755 ladspa=file=amp
3756 @end example
3757
3758 @item
3759 List all available controls and their valid ranges for @code{vcf_notch}
3760 plugin from @code{VCF} library:
3761 @example
3762 ladspa=f=vcf:p=vcf_notch:c=help
3763 @end example
3764
3765 @item
3766 Simulate low quality audio equipment using @code{Computer Music Toolkit} (CMT)
3767 plugin library:
3768 @example
3769 ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
3770 @end example
3771
3772 @item
3773 Add reverberation to the audio using TAP-plugins
3774 (Tom's Audio Processing plugins):
3775 @example
3776 ladspa=file=tap_reverb:tap_reverb
3777 @end example
3778
3779 @item
3780 Generate white noise, with 0.2 amplitude:
3781 @example
3782 ladspa=file=cmt:noise_source_white:c=c0=.2
3783 @end example
3784
3785 @item
3786 Generate 20 bpm clicks using plugin @code{C* Click - Metronome} from the
3787 @code{C* Audio Plugin Suite} (CAPS) library:
3788 @example
3789 ladspa=file=caps:Click:c=c1=20'
3790 @end example
3791
3792 @item
3793 Apply @code{C* Eq10X2 - Stereo 10-band equaliser} effect:
3794 @example
3795 ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
3796 @end example
3797
3798 @item
3799 Increase volume by 20dB using fast lookahead limiter from Steve Harris
3800 @code{SWH Plugins} collection:
3801 @example
3802 ladspa=fast_lookahead_limiter_1913:fastLookaheadLimiter:20|0|2
3803 @end example
3804
3805 @item
3806 Attenuate low frequencies using Multiband EQ from Steve Harris
3807 @code{SWH Plugins} collection:
3808 @example
3809 ladspa=mbeq_1197:mbeq:-24|-24|-24|0|0|0|0|0|0|0|0|0|0|0|0
3810 @end example
3811
3812 @item
3813 Reduce stereo image using @code{Narrower} from the @code{C* Audio Plugin Suite}
3814 (CAPS) library:
3815 @example
3816 ladspa=caps:Narrower
3817 @end example
3818
3819 @item
3820 Another white noise, now using @code{C* Audio Plugin Suite} (CAPS) library:
3821 @example
3822 ladspa=caps:White:.2
3823 @end example
3824
3825 @item
3826 Some fractal noise, using @code{C* Audio Plugin Suite} (CAPS) library:
3827 @example
3828 ladspa=caps:Fractal:c=c1=1
3829 @end example
3830
3831 @item
3832 Dynamic volume normalization using @code{VLevel} plugin:
3833 @example
3834 ladspa=vlevel-ladspa:vlevel_mono
3835 @end example
3836 @end itemize
3837
3838 @subsection Commands
3839
3840 This filter supports the following commands:
3841 @table @option
3842 @item cN
3843 Modify the @var{N}-th control value.
3844
3845 If the specified value is not valid, it is ignored and prior one is kept.
3846 @end table
3847
3848 @section loudnorm
3849
3850 EBU R128 loudness normalization. Includes both dynamic and linear normalization modes.
3851 Support for both single pass (livestreams, files) and double pass (files) modes.
3852 This algorithm can target IL, LRA, and maximum true peak. To accurately detect true peaks,
3853 the audio stream will be upsampled to 192 kHz unless the normalization mode is linear.
3854 Use the @code{-ar} option or @code{aresample} filter to explicitly set an output sample rate.
3855
3856 The filter accepts the following options:
3857
3858 @table @option
3859 @item I, i
3860 Set integrated loudness target.
3861 Range is -70.0 - -5.0. Default value is -24.0.
3862
3863 @item LRA, lra
3864 Set loudness range target.
3865 Range is 1.0 - 20.0. Default value is 7.0.
3866
3867 @item TP, tp
3868 Set maximum true peak.
3869 Range is -9.0 - +0.0. Default value is -2.0.
3870
3871 @item measured_I, measured_i
3872 Measured IL of input file.
3873 Range is -99.0 - +0.0.
3874
3875 @item measured_LRA, measured_lra
3876 Measured LRA of input file.
3877 Range is  0.0 - 99.0.
3878
3879 @item measured_TP, measured_tp
3880 Measured true peak of input file.
3881 Range is  -99.0 - +99.0.
3882
3883 @item measured_thresh
3884 Measured threshold of input file.
3885 Range is -99.0 - +0.0.
3886
3887 @item offset
3888 Set offset gain. Gain is applied before the true-peak limiter.
3889 Range is  -99.0 - +99.0. Default is +0.0.
3890
3891 @item linear
3892 Normalize linearly if possible.
3893 measured_I, measured_LRA, measured_TP, and measured_thresh must also
3894 to be specified in order to use this mode.
3895 Options are true or false. Default is true.
3896
3897 @item dual_mono
3898 Treat mono input files as "dual-mono". If a mono file is intended for playback
3899 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
3900 If set to @code{true}, this option will compensate for this effect.
3901 Multi-channel input files are not affected by this option.
3902 Options are true or false. Default is false.
3903
3904 @item print_format
3905 Set print format for stats. Options are summary, json, or none.
3906 Default value is none.
3907 @end table
3908
3909 @section lowpass
3910
3911 Apply a low-pass filter with 3dB point frequency.
3912 The filter can be either single-pole or double-pole (the default).
3913 The filter roll off at 6dB per pole per octave (20dB per pole per decade).
3914
3915 The filter accepts the following options:
3916
3917 @table @option
3918 @item frequency, f
3919 Set frequency in Hz. Default is 500.
3920
3921 @item poles, p
3922 Set number of poles. Default is 2.
3923
3924 @item width_type, t
3925 Set method to specify band-width of filter.
3926 @table @option
3927 @item h
3928 Hz
3929 @item q
3930 Q-Factor
3931 @item o
3932 octave
3933 @item s
3934 slope
3935 @item k
3936 kHz
3937 @end table
3938
3939 @item width, w
3940 Specify the band-width of a filter in width_type units.
3941 Applies only to double-pole filter.
3942 The default is 0.707q and gives a Butterworth response.
3943
3944 @item channels, c
3945 Specify which channels to filter, by default all available are filtered.
3946 @end table
3947
3948 @subsection Examples
3949 @itemize
3950 @item
3951 Lowpass only LFE channel, it LFE is not present it does nothing:
3952 @example
3953 lowpass=c=LFE
3954 @end example
3955 @end itemize
3956
3957 @subsection Commands
3958
3959 This filter supports the following commands:
3960 @table @option
3961 @item frequency, f
3962 Change lowpass frequency.
3963 Syntax for the command is : "@var{frequency}"
3964
3965 @item width_type, t
3966 Change lowpass width_type.
3967 Syntax for the command is : "@var{width_type}"
3968
3969 @item width, w
3970 Change lowpass width.
3971 Syntax for the command is : "@var{width}"
3972 @end table
3973
3974 @section lv2
3975
3976 Load a LV2 (LADSPA Version 2) plugin.
3977
3978 To enable compilation of this filter you need to configure FFmpeg with
3979 @code{--enable-lv2}.
3980
3981 @table @option
3982 @item plugin, p
3983 Specifies the plugin URI. You may need to escape ':'.
3984
3985 @item controls, c
3986 Set the '|' separated list of controls which are zero or more floating point
3987 values that determine the behavior of the loaded plugin (for example delay,
3988 threshold or gain).
3989 If @option{controls} is set to @code{help}, all available controls and
3990 their valid ranges are printed.
3991
3992 @item sample_rate, s
3993 Specify the sample rate, default to 44100. Only used if plugin have
3994 zero inputs.
3995
3996 @item nb_samples, n
3997 Set the number of samples per channel per each output frame, default
3998 is 1024. Only used if plugin have zero inputs.
3999
4000 @item duration, d
4001 Set the minimum duration of the sourced audio. See
4002 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4003 for the accepted syntax.
4004 Note that the resulting duration may be greater than the specified duration,
4005 as the generated audio is always cut at the end of a complete frame.
4006 If not specified, or the expressed duration is negative, the audio is
4007 supposed to be generated forever.
4008 Only used if plugin have zero inputs.
4009 @end table
4010
4011 @subsection Examples
4012
4013 @itemize
4014 @item
4015 Apply bass enhancer plugin from Calf:
4016 @example
4017 lv2=p=http\\\\://calf.sourceforge.net/plugins/BassEnhancer:c=amount=2
4018 @end example
4019
4020 @item
4021 Apply vinyl plugin from Calf:
4022 @example
4023 lv2=p=http\\\\://calf.sourceforge.net/plugins/Vinyl:c=drone=0.2|aging=0.5
4024 @end example
4025
4026 @item
4027 Apply bit crusher plugin from ArtyFX:
4028 @example
4029 lv2=p=http\\\\://www.openavproductions.com/artyfx#bitta:c=crush=0.3
4030 @end example
4031 @end itemize
4032
4033 @section mcompand
4034 Multiband Compress or expand the audio's dynamic range.
4035
4036 The input audio is divided into bands using 4th order Linkwitz-Riley IIRs.
4037 This is akin to the crossover of a loudspeaker, and results in flat frequency
4038 response when absent compander action.
4039
4040 It accepts the following parameters:
4041
4042 @table @option
4043 @item args
4044 This option syntax is:
4045 attack,decay,[attack,decay..] soft-knee points crossover_frequency [delay [initial_volume [gain]]] | attack,decay ...
4046 For explanation of each item refer to compand filter documentation.
4047 @end table
4048
4049 @anchor{pan}
4050 @section pan
4051
4052 Mix channels with specific gain levels. The filter accepts the output
4053 channel layout followed by a set of channels definitions.
4054
4055 This filter is also designed to efficiently remap the channels of an audio
4056 stream.
4057
4058 The filter accepts parameters of the form:
4059 "@var{l}|@var{outdef}|@var{outdef}|..."
4060
4061 @table @option
4062 @item l
4063 output channel layout or number of channels
4064
4065 @item outdef
4066 output channel specification, of the form:
4067 "@var{out_name}=[@var{gain}*]@var{in_name}[(+-)[@var{gain}*]@var{in_name}...]"
4068
4069 @item out_name
4070 output channel to define, either a channel name (FL, FR, etc.) or a channel
4071 number (c0, c1, etc.)
4072
4073 @item gain
4074 multiplicative coefficient for the channel, 1 leaving the volume unchanged
4075
4076 @item in_name
4077 input channel to use, see out_name for details; it is not possible to mix
4078 named and numbered input channels
4079 @end table
4080
4081 If the `=' in a channel specification is replaced by `<', then the gains for
4082 that specification will be renormalized so that the total is 1, thus
4083 avoiding clipping noise.
4084
4085 @subsection Mixing examples
4086
4087 For example, if you want to down-mix from stereo to mono, but with a bigger
4088 factor for the left channel:
4089 @example
4090 pan=1c|c0=0.9*c0+0.1*c1
4091 @end example
4092
4093 A customized down-mix to stereo that works automatically for 3-, 4-, 5- and
4094 7-channels surround:
4095 @example
4096 pan=stereo| FL < FL + 0.5*FC + 0.6*BL + 0.6*SL | FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
4097 @end example
4098
4099 Note that @command{ffmpeg} integrates a default down-mix (and up-mix) system
4100 that should be preferred (see "-ac" option) unless you have very specific
4101 needs.
4102
4103 @subsection Remapping examples
4104
4105 The channel remapping will be effective if, and only if:
4106
4107 @itemize
4108 @item gain coefficients are zeroes or ones,
4109 @item only one input per channel output,
4110 @end itemize
4111
4112 If all these conditions are satisfied, the filter will notify the user ("Pure
4113 channel mapping detected"), and use an optimized and lossless method to do the
4114 remapping.
4115
4116 For example, if you have a 5.1 source and want a stereo audio stream by
4117 dropping the extra channels:
4118 @example
4119 pan="stereo| c0=FL | c1=FR"
4120 @end example
4121
4122 Given the same source, you can also switch front left and front right channels
4123 and keep the input channel layout:
4124 @example
4125 pan="5.1| c0=c1 | c1=c0 | c2=c2 | c3=c3 | c4=c4 | c5=c5"
4126 @end example
4127
4128 If the input is a stereo audio stream, you can mute the front left channel (and
4129 still keep the stereo channel layout) with:
4130 @example
4131 pan="stereo|c1=c1"
4132 @end example
4133
4134 Still with a stereo audio stream input, you can copy the right channel in both
4135 front left and right:
4136 @example
4137 pan="stereo| c0=FR | c1=FR"
4138 @end example
4139
4140 @section replaygain
4141
4142 ReplayGain scanner filter. This filter takes an audio stream as an input and
4143 outputs it unchanged.
4144 At end of filtering it displays @code{track_gain} and @code{track_peak}.
4145
4146 @section resample
4147
4148 Convert the audio sample format, sample rate and channel layout. It is
4149 not meant to be used directly.
4150
4151 @section rubberband
4152 Apply time-stretching and pitch-shifting with librubberband.
4153
4154 To enable compilation of this filter, you need to configure FFmpeg with
4155 @code{--enable-librubberband}.
4156
4157 The filter accepts the following options:
4158
4159 @table @option
4160 @item tempo
4161 Set tempo scale factor.
4162
4163 @item pitch
4164 Set pitch scale factor.
4165
4166 @item transients
4167 Set transients detector.
4168 Possible values are:
4169 @table @var
4170 @item crisp
4171 @item mixed
4172 @item smooth
4173 @end table
4174
4175 @item detector
4176 Set detector.
4177 Possible values are:
4178 @table @var
4179 @item compound
4180 @item percussive
4181 @item soft
4182 @end table
4183
4184 @item phase
4185 Set phase.
4186 Possible values are:
4187 @table @var
4188 @item laminar
4189 @item independent
4190 @end table
4191
4192 @item window
4193 Set processing window size.
4194 Possible values are:
4195 @table @var
4196 @item standard
4197 @item short
4198 @item long
4199 @end table
4200
4201 @item smoothing
4202 Set smoothing.
4203 Possible values are:
4204 @table @var
4205 @item off
4206 @item on
4207 @end table
4208
4209 @item formant
4210 Enable formant preservation when shift pitching.
4211 Possible values are:
4212 @table @var
4213 @item shifted
4214 @item preserved
4215 @end table
4216
4217 @item pitchq
4218 Set pitch quality.
4219 Possible values are:
4220 @table @var
4221 @item quality
4222 @item speed
4223 @item consistency
4224 @end table
4225
4226 @item channels
4227 Set channels.
4228 Possible values are:
4229 @table @var
4230 @item apart
4231 @item together
4232 @end table
4233 @end table
4234
4235 @section sidechaincompress
4236
4237 This filter acts like normal compressor but has the ability to compress
4238 detected signal using second input signal.
4239 It needs two input streams and returns one output stream.
4240 First input stream will be processed depending on second stream signal.
4241 The filtered signal then can be filtered with other filters in later stages of
4242 processing. See @ref{pan} and @ref{amerge} filter.
4243
4244 The filter accepts the following options:
4245
4246 @table @option
4247 @item level_in
4248 Set input gain. Default is 1. Range is between 0.015625 and 64.
4249
4250 @item threshold
4251 If a signal of second stream raises above this level it will affect the gain
4252 reduction of first stream.
4253 By default is 0.125. Range is between 0.00097563 and 1.
4254
4255 @item ratio
4256 Set a ratio about which the signal is reduced. 1:2 means that if the level
4257 raised 4dB above the threshold, it will be only 2dB above after the reduction.
4258 Default is 2. Range is between 1 and 20.
4259
4260 @item attack
4261 Amount of milliseconds the signal has to rise above the threshold before gain
4262 reduction starts. Default is 20. Range is between 0.01 and 2000.
4263
4264 @item release
4265 Amount of milliseconds the signal has to fall below the threshold before
4266 reduction is decreased again. Default is 250. Range is between 0.01 and 9000.
4267
4268 @item makeup
4269 Set the amount by how much signal will be amplified after processing.
4270 Default is 1. Range is from 1 to 64.
4271
4272 @item knee
4273 Curve the sharp knee around the threshold to enter gain reduction more softly.
4274 Default is 2.82843. Range is between 1 and 8.
4275
4276 @item link
4277 Choose if the @code{average} level between all channels of side-chain stream
4278 or the louder(@code{maximum}) channel of side-chain stream affects the
4279 reduction. Default is @code{average}.
4280
4281 @item detection
4282 Should the exact signal be taken in case of @code{peak} or an RMS one in case
4283 of @code{rms}. Default is @code{rms} which is mainly smoother.
4284
4285 @item level_sc
4286 Set sidechain gain. Default is 1. Range is between 0.015625 and 64.
4287
4288 @item mix
4289 How much to use compressed signal in output. Default is 1.
4290 Range is between 0 and 1.
4291 @end table
4292
4293 @subsection Examples
4294
4295 @itemize
4296 @item
4297 Full ffmpeg example taking 2 audio inputs, 1st input to be compressed
4298 depending on the signal of 2nd input and later compressed signal to be
4299 merged with 2nd input:
4300 @example
4301 ffmpeg -i main.flac -i sidechain.flac -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress[compr];[compr][mix]amerge"
4302 @end example
4303 @end itemize
4304
4305 @section sidechaingate
4306
4307 A sidechain gate acts like a normal (wideband) gate but has the ability to
4308 filter the detected signal before sending it to the gain reduction stage.
4309 Normally a gate uses the full range signal to detect a level above the
4310 threshold.
4311 For example: If you cut all lower frequencies from your sidechain signal
4312 the gate will decrease the volume of your track only if not enough highs
4313 appear. With this technique you are able to reduce the resonation of a
4314 natural drum or remove "rumbling" of muted strokes from a heavily distorted
4315 guitar.
4316 It needs two input streams and returns one output stream.
4317 First input stream will be processed depending on second stream signal.
4318
4319 The filter accepts the following options:
4320
4321 @table @option
4322 @item level_in
4323 Set input level before filtering.
4324 Default is 1. Allowed range is from 0.015625 to 64.
4325
4326 @item range
4327 Set the level of gain reduction when the signal is below the threshold.
4328 Default is 0.06125. Allowed range is from 0 to 1.
4329
4330 @item threshold
4331 If a signal rises above this level the gain reduction is released.
4332 Default is 0.125. Allowed range is from 0 to 1.
4333
4334 @item ratio
4335 Set a ratio about which the signal is reduced.
4336 Default is 2. Allowed range is from 1 to 9000.
4337
4338 @item attack
4339 Amount of milliseconds the signal has to rise above the threshold before gain
4340 reduction stops.
4341 Default is 20 milliseconds. Allowed range is from 0.01 to 9000.
4342
4343 @item release
4344 Amount of milliseconds the signal has to fall below the threshold before the
4345 reduction is increased again. Default is 250 milliseconds.
4346 Allowed range is from 0.01 to 9000.
4347
4348 @item makeup
4349 Set amount of amplification of signal after processing.
4350 Default is 1. Allowed range is from 1 to 64.
4351
4352 @item knee
4353 Curve the sharp knee around the threshold to enter gain reduction more softly.
4354 Default is 2.828427125. Allowed range is from 1 to 8.
4355
4356 @item detection
4357 Choose if exact signal should be taken for detection or an RMS like one.
4358 Default is rms. Can be peak or rms.
4359
4360 @item link
4361 Choose if the average level between all channels or the louder channel affects
4362 the reduction.
4363 Default is average. Can be average or maximum.
4364
4365 @item level_sc
4366 Set sidechain gain. Default is 1. Range is from 0.015625 to 64.
4367 @end table
4368
4369 @section silencedetect
4370
4371 Detect silence in an audio stream.
4372
4373 This filter logs a message when it detects that the input audio volume is less
4374 or equal to a noise tolerance value for a duration greater or equal to the
4375 minimum detected noise duration.
4376
4377 The printed times and duration are expressed in seconds.
4378
4379 The filter accepts the following options:
4380
4381 @table @option
4382 @item noise, n
4383 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
4384 specified value) or amplitude ratio. Default is -60dB, or 0.001.
4385
4386 @item duration, d
4387 Set silence duration until notification (default is 2 seconds).
4388
4389 @item mono, m
4390 Process each channel separately, instead of combined. By default is disabled.
4391 @end table
4392
4393 @subsection Examples
4394
4395 @itemize
4396 @item
4397 Detect 5 seconds of silence with -50dB noise tolerance:
4398 @example
4399 silencedetect=n=-50dB:d=5
4400 @end example
4401
4402 @item
4403 Complete example with @command{ffmpeg} to detect silence with 0.0001 noise
4404 tolerance in @file{silence.mp3}:
4405 @example
4406 ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
4407 @end example
4408 @end itemize
4409
4410 @section silenceremove
4411
4412 Remove silence from the beginning, middle or end of the audio.
4413
4414 The filter accepts the following options:
4415
4416 @table @option
4417 @item start_periods
4418 This value is used to indicate if audio should be trimmed at beginning of
4419 the audio. A value of zero indicates no silence should be trimmed from the
4420 beginning. When specifying a non-zero value, it trims audio up until it
4421 finds non-silence. Normally, when trimming silence from beginning of audio
4422 the @var{start_periods} will be @code{1} but it can be increased to higher
4423 values to trim all audio up to specific count of non-silence periods.
4424 Default value is @code{0}.
4425
4426 @item start_duration
4427 Specify the amount of time that non-silence must be detected before it stops
4428 trimming audio. By increasing the duration, bursts of noises can be treated
4429 as silence and trimmed off. Default value is @code{0}.
4430
4431 @item start_threshold
4432 This indicates what sample value should be treated as silence. For digital
4433 audio, a value of @code{0} may be fine but for audio recorded from analog,
4434 you may wish to increase the value to account for background noise.
4435 Can be specified in dB (in case "dB" is appended to the specified value)
4436 or amplitude ratio. Default value is @code{0}.
4437
4438 @item start_silence
4439 Specify max duration of silence at beginning that will be kept after
4440 trimming. Default is 0, which is equal to trimming all samples detected
4441 as silence.
4442
4443 @item start_mode
4444 Specify mode of detection of silence end in start of multi-channel audio.
4445 Can be @var{any} or @var{all}. Default is @var{any}.
4446 With @var{any}, any sample that is detected as non-silence will cause
4447 stopped trimming of silence.
4448 With @var{all}, only if all channels are detected as non-silence will cause
4449 stopped trimming of silence.
4450
4451 @item stop_periods
4452 Set the count for trimming silence from the end of audio.
4453 To remove silence from the middle of a file, specify a @var{stop_periods}
4454 that is negative. This value is then treated as a positive value and is
4455 used to indicate the effect should restart processing as specified by
4456 @var{start_periods}, making it suitable for removing periods of silence
4457 in the middle of the audio.
4458 Default value is @code{0}.
4459
4460 @item stop_duration
4461 Specify a duration of silence that must exist before audio is not copied any
4462 more. By specifying a higher duration, silence that is wanted can be left in
4463 the audio.
4464 Default value is @code{0}.
4465
4466 @item stop_threshold
4467 This is the same as @option{start_threshold} but for trimming silence from
4468 the end of audio.
4469 Can be specified in dB (in case "dB" is appended to the specified value)
4470 or amplitude ratio. Default value is @code{0}.
4471
4472 @item stop_silence
4473 Specify max duration of silence at end that will be kept after
4474 trimming. Default is 0, which is equal to trimming all samples detected
4475 as silence.
4476
4477 @item stop_mode
4478 Specify mode of detection of silence start in end of multi-channel audio.
4479 Can be @var{any} or @var{all}. Default is @var{any}.
4480 With @var{any}, any sample that is detected as non-silence will cause
4481 stopped trimming of silence.
4482 With @var{all}, only if all channels are detected as non-silence will cause
4483 stopped trimming of silence.
4484
4485 @item detection
4486 Set how is silence detected. Can be @code{rms} or @code{peak}. Second is faster
4487 and works better with digital silence which is exactly 0.
4488 Default value is @code{rms}.
4489
4490 @item window
4491 Set duration in number of seconds used to calculate size of window in number
4492 of samples for detecting silence.
4493 Default value is @code{0.02}. Allowed range is from @code{0} to @code{10}.
4494 @end table
4495
4496 @subsection Examples
4497
4498 @itemize
4499 @item
4500 The following example shows how this filter can be used to start a recording
4501 that does not contain the delay at the start which usually occurs between
4502 pressing the record button and the start of the performance:
4503 @example
4504 silenceremove=start_periods=1:start_duration=5:start_threshold=0.02
4505 @end example
4506
4507 @item
4508 Trim all silence encountered from beginning to end where there is more than 1
4509 second of silence in audio:
4510 @example
4511 silenceremove=stop_periods=-1:stop_duration=1:stop_threshold=-90dB
4512 @end example
4513 @end itemize
4514
4515 @section sofalizer
4516
4517 SOFAlizer uses head-related transfer functions (HRTFs) to create virtual
4518 loudspeakers around the user for binaural listening via headphones (audio
4519 formats up to 9 channels supported).
4520 The HRTFs are stored in SOFA files (see @url{http://www.sofacoustics.org/} for a database).
4521 SOFAlizer is developed at the Acoustics Research Institute (ARI) of the
4522 Austrian Academy of Sciences.
4523
4524 To enable compilation of this filter you need to configure FFmpeg with
4525 @code{--enable-libmysofa}.
4526
4527 The filter accepts the following options:
4528
4529 @table @option
4530 @item sofa
4531 Set the SOFA file used for rendering.
4532
4533 @item gain
4534 Set gain applied to audio. Value is in dB. Default is 0.
4535
4536 @item rotation
4537 Set rotation of virtual loudspeakers in deg. Default is 0.
4538
4539 @item elevation
4540 Set elevation of virtual speakers in deg. Default is 0.
4541
4542 @item radius
4543 Set distance in meters between loudspeakers and the listener with near-field
4544 HRTFs. Default is 1.
4545
4546 @item type
4547 Set processing type. Can be @var{time} or @var{freq}. @var{time} is
4548 processing audio in time domain which is slow.
4549 @var{freq} is processing audio in frequency domain which is fast.
4550 Default is @var{freq}.
4551
4552 @item speakers
4553 Set custom positions of virtual loudspeakers. Syntax for this option is:
4554 <CH> <AZIM> <ELEV>[|<CH> <AZIM> <ELEV>|...].
4555 Each virtual loudspeaker is described with short channel name following with
4556 azimuth and elevation in degrees.
4557 Each virtual loudspeaker description is separated by '|'.
4558 For example to override front left and front right channel positions use:
4559 'speakers=FL 45 15|FR 345 15'.
4560 Descriptions with unrecognised channel names are ignored.
4561
4562 @item lfegain
4563 Set custom gain for LFE channels. Value is in dB. Default is 0.
4564
4565 @item framesize
4566 Set custom frame size in number of samples. Default is 1024.
4567 Allowed range is from 1024 to 96000. Only used if option @samp{type}
4568 is set to @var{freq}.
4569
4570 @item normalize
4571 Should all IRs be normalized upon importing SOFA file.
4572 By default is enabled.
4573
4574 @item interpolate
4575 Should nearest IRs be interpolated with neighbor IRs if exact position
4576 does not match. By default is disabled.
4577
4578 @item minphase
4579 Minphase all IRs upon loading of SOFA file. By default is disabled.
4580
4581 @item anglestep
4582 Set neighbor search angle step. Only used if option @var{interpolate} is enabled.
4583
4584 @item radstep
4585 Set neighbor search radius step. Only used if option @var{interpolate} is enabled.
4586 @end table
4587
4588 @subsection Examples
4589
4590 @itemize
4591 @item
4592 Using ClubFritz6 sofa file:
4593 @example
4594 sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=1
4595 @end example
4596
4597 @item
4598 Using ClubFritz12 sofa file and bigger radius with small rotation:
4599 @example
4600 sofalizer=sofa=/path/to/ClubFritz12.sofa:type=freq:radius=2:rotation=5
4601 @end example
4602
4603 @item
4604 Similar as above but with custom speaker positions for front left, front right, back left and back right
4605 and also with custom gain:
4606 @example
4607 "sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=2:speakers=FL 45|FR 315|BL 135|BR 225:gain=28"
4608 @end example
4609 @end itemize
4610
4611 @section stereotools
4612
4613 This filter has some handy utilities to manage stereo signals, for converting
4614 M/S stereo recordings to L/R signal while having control over the parameters
4615 or spreading the stereo image of master track.
4616
4617 The filter accepts the following options:
4618
4619 @table @option
4620 @item level_in
4621 Set input level before filtering for both channels. Defaults is 1.
4622 Allowed range is from 0.015625 to 64.
4623
4624 @item level_out
4625 Set output level after filtering for both channels. Defaults is 1.
4626 Allowed range is from 0.015625 to 64.
4627
4628 @item balance_in
4629 Set input balance between both channels. Default is 0.
4630 Allowed range is from -1 to 1.
4631
4632 @item balance_out
4633 Set output balance between both channels. Default is 0.
4634 Allowed range is from -1 to 1.
4635
4636 @item softclip
4637 Enable softclipping. Results in analog distortion instead of harsh digital 0dB
4638 clipping. Disabled by default.
4639
4640 @item mutel
4641 Mute the left channel. Disabled by default.
4642
4643 @item muter
4644 Mute the right channel. Disabled by default.
4645
4646 @item phasel
4647 Change the phase of the left channel. Disabled by default.
4648
4649 @item phaser
4650 Change the phase of the right channel. Disabled by default.
4651
4652 @item mode
4653 Set stereo mode. Available values are:
4654
4655 @table @samp
4656 @item lr>lr
4657 Left/Right to Left/Right, this is default.
4658
4659 @item lr>ms
4660 Left/Right to Mid/Side.
4661
4662 @item ms>lr
4663 Mid/Side to Left/Right.
4664
4665 @item lr>ll
4666 Left/Right to Left/Left.
4667
4668 @item lr>rr
4669 Left/Right to Right/Right.
4670
4671 @item lr>l+r
4672 Left/Right to Left + Right.
4673
4674 @item lr>rl
4675 Left/Right to Right/Left.
4676
4677 @item ms>ll
4678 Mid/Side to Left/Left.
4679
4680 @item ms>rr
4681 Mid/Side to Right/Right.
4682 @end table
4683
4684 @item slev
4685 Set level of side signal. Default is 1.
4686 Allowed range is from 0.015625 to 64.
4687
4688 @item sbal
4689 Set balance of side signal. Default is 0.
4690 Allowed range is from -1 to 1.
4691
4692 @item mlev
4693 Set level of the middle signal. Default is 1.
4694 Allowed range is from 0.015625 to 64.
4695
4696 @item mpan
4697 Set middle signal pan. Default is 0. Allowed range is from -1 to 1.
4698
4699 @item base
4700 Set stereo base between mono and inversed channels. Default is 0.
4701 Allowed range is from -1 to 1.
4702
4703 @item delay
4704 Set delay in milliseconds how much to delay left from right channel and
4705 vice versa. Default is 0. Allowed range is from -20 to 20.
4706
4707 @item sclevel
4708 Set S/C level. Default is 1. Allowed range is from 1 to 100.
4709
4710 @item phase
4711 Set the stereo phase in degrees. Default is 0. Allowed range is from 0 to 360.
4712
4713 @item bmode_in, bmode_out
4714 Set balance mode for balance_in/balance_out option.
4715
4716 Can be one of the following:
4717
4718 @table @samp
4719 @item balance
4720 Classic balance mode. Attenuate one channel at time.
4721 Gain is raised up to 1.
4722
4723 @item amplitude
4724 Similar as classic mode above but gain is raised up to 2.
4725
4726 @item power
4727 Equal power distribution, from -6dB to +6dB range.
4728 @end table
4729 @end table
4730
4731 @subsection Examples
4732
4733 @itemize
4734 @item
4735 Apply karaoke like effect:
4736 @example
4737 stereotools=mlev=0.015625
4738 @end example
4739
4740 @item
4741 Convert M/S signal to L/R:
4742 @example
4743 "stereotools=mode=ms>lr"
4744 @end example
4745 @end itemize
4746
4747 @section stereowiden
4748
4749 This filter enhance the stereo effect by suppressing signal common to both
4750 channels and by delaying the signal of left into right and vice versa,
4751 thereby widening the stereo effect.
4752
4753 The filter accepts the following options:
4754
4755 @table @option
4756 @item delay
4757 Time in milliseconds of the delay of left signal into right and vice versa.
4758 Default is 20 milliseconds.
4759
4760 @item feedback
4761 Amount of gain in delayed signal into right and vice versa. Gives a delay
4762 effect of left signal in right output and vice versa which gives widening
4763 effect. Default is 0.3.
4764
4765 @item crossfeed
4766 Cross feed of left into right with inverted phase. This helps in suppressing
4767 the mono. If the value is 1 it will cancel all the signal common to both
4768 channels. Default is 0.3.
4769
4770 @item drymix
4771 Set level of input signal of original channel. Default is 0.8.
4772 @end table
4773
4774 @section superequalizer
4775 Apply 18 band equalizer.
4776
4777 The filter accepts the following options:
4778 @table @option
4779 @item 1b
4780 Set 65Hz band gain.
4781 @item 2b
4782 Set 92Hz band gain.
4783 @item 3b
4784 Set 131Hz band gain.
4785 @item 4b
4786 Set 185Hz band gain.
4787 @item 5b
4788 Set 262Hz band gain.
4789 @item 6b
4790 Set 370Hz band gain.
4791 @item 7b
4792 Set 523Hz band gain.
4793 @item 8b
4794 Set 740Hz band gain.
4795 @item 9b
4796 Set 1047Hz band gain.
4797 @item 10b
4798 Set 1480Hz band gain.
4799 @item 11b
4800 Set 2093Hz band gain.
4801 @item 12b
4802 Set 2960Hz band gain.
4803 @item 13b
4804 Set 4186Hz band gain.
4805 @item 14b
4806 Set 5920Hz band gain.
4807 @item 15b
4808 Set 8372Hz band gain.
4809 @item 16b
4810 Set 11840Hz band gain.
4811 @item 17b
4812 Set 16744Hz band gain.
4813 @item 18b
4814 Set 20000Hz band gain.
4815 @end table
4816
4817 @section surround
4818 Apply audio surround upmix filter.
4819
4820 This filter allows to produce multichannel output from audio stream.
4821
4822 The filter accepts the following options:
4823
4824 @table @option
4825 @item chl_out
4826 Set output channel layout. By default, this is @var{5.1}.
4827
4828 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4829 for the required syntax.
4830
4831 @item chl_in
4832 Set input channel layout. By default, this is @var{stereo}.
4833
4834 See @ref{channel layout syntax,,the Channel Layout section in the ffmpeg-utils(1) manual,ffmpeg-utils}
4835 for the required syntax.
4836
4837 @item level_in
4838 Set input volume level. By default, this is @var{1}.
4839
4840 @item level_out
4841 Set output volume level. By default, this is @var{1}.
4842
4843 @item lfe
4844 Enable LFE channel output if output channel layout has it. By default, this is enabled.
4845
4846 @item lfe_low
4847 Set LFE low cut off frequency. By default, this is @var{128} Hz.
4848
4849 @item lfe_high
4850 Set LFE high cut off frequency. By default, this is @var{256} Hz.
4851
4852 @item fc_in
4853 Set front center input volume. By default, this is @var{1}.
4854
4855 @item fc_out
4856 Set front center output volume. By default, this is @var{1}.
4857
4858 @item lfe_in
4859 Set LFE input volume. By default, this is @var{1}.
4860
4861 @item lfe_out
4862 Set LFE output volume. By default, this is @var{1}.
4863 @end table
4864
4865 @section treble, highshelf
4866
4867 Boost or cut treble (upper) frequencies of the audio using a two-pole
4868 shelving filter with a response similar to that of a standard
4869 hi-fi's tone-controls. This is also known as shelving equalisation (EQ).
4870
4871 The filter accepts the following options:
4872
4873 @table @option
4874 @item gain, g
4875 Give the gain at whichever is the lower of ~22 kHz and the
4876 Nyquist frequency. Its useful range is about -20 (for a large cut)
4877 to +20 (for a large boost). Beware of clipping when using a positive gain.
4878
4879 @item frequency, f
4880 Set the filter's central frequency and so can be used
4881 to extend or reduce the frequency range to be boosted or cut.
4882 The default value is @code{3000} Hz.
4883
4884 @item width_type, t
4885 Set method to specify band-width of filter.
4886 @table @option
4887 @item h
4888 Hz
4889 @item q
4890 Q-Factor
4891 @item o
4892 octave
4893 @item s
4894 slope
4895 @item k
4896 kHz
4897 @end table
4898
4899 @item width, w
4900 Determine how steep is the filter's shelf transition.
4901
4902 @item channels, c
4903 Specify which channels to filter, by default all available are filtered.
4904 @end table
4905
4906 @subsection Commands
4907
4908 This filter supports the following commands:
4909 @table @option
4910 @item frequency, f
4911 Change treble frequency.
4912 Syntax for the command is : "@var{frequency}"
4913
4914 @item width_type, t
4915 Change treble width_type.
4916 Syntax for the command is : "@var{width_type}"
4917
4918 @item width, w
4919 Change treble width.
4920 Syntax for the command is : "@var{width}"
4921
4922 @item gain, g
4923 Change treble gain.
4924 Syntax for the command is : "@var{gain}"
4925 @end table
4926
4927 @section tremolo
4928
4929 Sinusoidal amplitude modulation.
4930
4931 The filter accepts the following options:
4932
4933 @table @option
4934 @item f
4935 Modulation frequency in Hertz. Modulation frequencies in the subharmonic range
4936 (20 Hz or lower) will result in a tremolo effect.
4937 This filter may also be used as a ring modulator by specifying
4938 a modulation frequency higher than 20 Hz.
4939 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
4940
4941 @item d
4942 Depth of modulation as a percentage. Range is 0.0 - 1.0.
4943 Default value is 0.5.
4944 @end table
4945
4946 @section vibrato
4947
4948 Sinusoidal phase modulation.
4949
4950 The filter accepts the following options:
4951
4952 @table @option
4953 @item f
4954 Modulation frequency in Hertz.
4955 Range is 0.1 - 20000.0. Default value is 5.0 Hz.
4956
4957 @item d
4958 Depth of modulation as a percentage. Range is 0.0 - 1.0.
4959 Default value is 0.5.
4960 @end table
4961
4962 @section volume
4963
4964 Adjust the input audio volume.
4965
4966 It accepts the following parameters:
4967 @table @option
4968
4969 @item volume
4970 Set audio volume expression.
4971
4972 Output values are clipped to the maximum value.
4973
4974 The output audio volume is given by the relation:
4975 @example
4976 @var{output_volume} = @var{volume} * @var{input_volume}
4977 @end example
4978
4979 The default value for @var{volume} is "1.0".
4980
4981 @item precision
4982 This parameter represents the mathematical precision.
4983
4984 It determines which input sample formats will be allowed, which affects the
4985 precision of the volume scaling.
4986
4987 @table @option
4988 @item fixed
4989 8-bit fixed-point; this limits input sample format to U8, S16, and S32.
4990 @item float
4991 32-bit floating-point; this limits input sample format to FLT. (default)
4992 @item double
4993 64-bit floating-point; this limits input sample format to DBL.
4994 @end table
4995
4996 @item replaygain
4997 Choose the behaviour on encountering ReplayGain side data in input frames.
4998
4999 @table @option
5000 @item drop
5001 Remove ReplayGain side data, ignoring its contents (the default).
5002
5003 @item ignore
5004 Ignore ReplayGain side data, but leave it in the frame.
5005
5006 @item track
5007 Prefer the track gain, if present.
5008
5009 @item album
5010 Prefer the album gain, if present.
5011 @end table
5012
5013 @item replaygain_preamp
5014 Pre-amplification gain in dB to apply to the selected replaygain gain.
5015
5016 Default value for @var{replaygain_preamp} is 0.0.
5017
5018 @item eval
5019 Set when the volume expression is evaluated.
5020
5021 It accepts the following values:
5022 @table @samp
5023 @item once
5024 only evaluate expression once during the filter initialization, or
5025 when the @samp{volume} command is sent
5026
5027 @item frame
5028 evaluate expression for each incoming frame
5029 @end table
5030
5031 Default value is @samp{once}.
5032 @end table
5033
5034 The volume expression can contain the following parameters.
5035
5036 @table @option
5037 @item n
5038 frame number (starting at zero)
5039 @item nb_channels
5040 number of channels
5041 @item nb_consumed_samples
5042 number of samples consumed by the filter
5043 @item nb_samples
5044 number of samples in the current frame
5045 @item pos
5046 original frame position in the file
5047 @item pts
5048 frame PTS
5049 @item sample_rate
5050 sample rate
5051 @item startpts
5052 PTS at start of stream
5053 @item startt
5054 time at start of stream
5055 @item t
5056 frame time
5057 @item tb
5058 timestamp timebase
5059 @item volume
5060 last set volume value
5061 @end table
5062
5063 Note that when @option{eval} is set to @samp{once} only the
5064 @var{sample_rate} and @var{tb} variables are available, all other
5065 variables will evaluate to NAN.
5066
5067 @subsection Commands
5068
5069 This filter supports the following commands:
5070 @table @option
5071 @item volume
5072 Modify the volume expression.
5073 The command accepts the same syntax of the corresponding option.
5074
5075 If the specified expression is not valid, it is kept at its current
5076 value.
5077 @item replaygain_noclip
5078 Prevent clipping by limiting the gain applied.
5079
5080 Default value for @var{replaygain_noclip} is 1.
5081
5082 @end table
5083
5084 @subsection Examples
5085
5086 @itemize
5087 @item
5088 Halve the input audio volume:
5089 @example
5090 volume=volume=0.5
5091 volume=volume=1/2
5092 volume=volume=-6.0206dB
5093 @end example
5094
5095 In all the above example the named key for @option{volume} can be
5096 omitted, for example like in:
5097 @example
5098 volume=0.5
5099 @end example
5100
5101 @item
5102 Increase input audio power by 6 decibels using fixed-point precision:
5103 @example
5104 volume=volume=6dB:precision=fixed
5105 @end example
5106
5107 @item
5108 Fade volume after time 10 with an annihilation period of 5 seconds:
5109 @example
5110 volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
5111 @end example
5112 @end itemize
5113
5114 @section volumedetect
5115
5116 Detect the volume of the input video.
5117
5118 The filter has no parameters. The input is not modified. Statistics about
5119 the volume will be printed in the log when the input stream end is reached.
5120
5121 In particular it will show the mean volume (root mean square), maximum
5122 volume (on a per-sample basis), and the beginning of a histogram of the
5123 registered volume values (from the maximum value to a cumulated 1/1000 of
5124 the samples).
5125
5126 All volumes are in decibels relative to the maximum PCM value.
5127
5128 @subsection Examples
5129
5130 Here is an excerpt of the output:
5131 @example
5132 [Parsed_volumedetect_0 @ 0xa23120] mean_volume: -27 dB
5133 [Parsed_volumedetect_0 @ 0xa23120] max_volume: -4 dB
5134 [Parsed_volumedetect_0 @ 0xa23120] histogram_4db: 6
5135 [Parsed_volumedetect_0 @ 0xa23120] histogram_5db: 62
5136 [Parsed_volumedetect_0 @ 0xa23120] histogram_6db: 286
5137 [Parsed_volumedetect_0 @ 0xa23120] histogram_7db: 1042
5138 [Parsed_volumedetect_0 @ 0xa23120] histogram_8db: 2551
5139 [Parsed_volumedetect_0 @ 0xa23120] histogram_9db: 4609
5140 [Parsed_volumedetect_0 @ 0xa23120] histogram_10db: 8409
5141 @end example
5142
5143 It means that:
5144 @itemize
5145 @item
5146 The mean square energy is approximately -27 dB, or 10^-2.7.
5147 @item
5148 The largest sample is at -4 dB, or more precisely between -4 dB and -5 dB.
5149 @item
5150 There are 6 samples at -4 dB, 62 at -5 dB, 286 at -6 dB, etc.
5151 @end itemize
5152
5153 In other words, raising the volume by +4 dB does not cause any clipping,
5154 raising it by +5 dB causes clipping for 6 samples, etc.
5155
5156 @c man end AUDIO FILTERS
5157
5158 @chapter Audio Sources
5159 @c man begin AUDIO SOURCES
5160
5161 Below is a description of the currently available audio sources.
5162
5163 @section abuffer
5164
5165 Buffer audio frames, and make them available to the filter chain.
5166
5167 This source is mainly intended for a programmatic use, in particular
5168 through the interface defined in @file{libavfilter/asrc_abuffer.h}.
5169
5170 It accepts the following parameters:
5171 @table @option
5172
5173 @item time_base
5174 The timebase which will be used for timestamps of submitted frames. It must be
5175 either a floating-point number or in @var{numerator}/@var{denominator} form.
5176
5177 @item sample_rate
5178 The sample rate of the incoming audio buffers.
5179
5180 @item sample_fmt
5181 The sample format of the incoming audio buffers.
5182 Either a sample format name or its corresponding integer representation from
5183 the enum AVSampleFormat in @file{libavutil/samplefmt.h}
5184
5185 @item channel_layout
5186 The channel layout of the incoming audio buffers.
5187 Either a channel layout name from channel_layout_map in
5188 @file{libavutil/channel_layout.c} or its corresponding integer representation
5189 from the AV_CH_LAYOUT_* macros in @file{libavutil/channel_layout.h}
5190
5191 @item channels
5192 The number of channels of the incoming audio buffers.
5193 If both @var{channels} and @var{channel_layout} are specified, then they
5194 must be consistent.
5195
5196 @end table
5197
5198 @subsection Examples
5199
5200 @example
5201 abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
5202 @end example
5203
5204 will instruct the source to accept planar 16bit signed stereo at 44100Hz.
5205 Since the sample format with name "s16p" corresponds to the number
5206 6 and the "stereo" channel layout corresponds to the value 0x3, this is
5207 equivalent to:
5208 @example
5209 abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
5210 @end example
5211
5212 @section aevalsrc
5213
5214 Generate an audio signal specified by an expression.
5215
5216 This source accepts in input one or more expressions (one for each
5217 channel), which are evaluated and used to generate a corresponding
5218 audio signal.
5219
5220 This source accepts the following options:
5221
5222 @table @option
5223 @item exprs
5224 Set the '|'-separated expressions list for each separate channel. In case the
5225 @option{channel_layout} option is not specified, the selected channel layout
5226 depends on the number of provided expressions. Otherwise the last
5227 specified expression is applied to the remaining output channels.
5228
5229 @item channel_layout, c
5230 Set the channel layout. The number of channels in the specified layout
5231 must be equal to the number of specified expressions.
5232
5233 @item duration, d
5234 Set the minimum duration of the sourced audio. See
5235 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
5236 for the accepted syntax.
5237 Note that the resulting duration may be greater than the specified
5238 duration, as the generated audio is always cut at the end of a
5239 complete frame.
5240
5241 If not specified, or the expressed duration is negative, the audio is
5242 supposed to be generated forever.
5243
5244 @item nb_samples, n
5245 Set the number of samples per channel per each output frame,
5246 default to 1024.
5247
5248 @item sample_rate, s
5249 Specify the sample rate, default to 44100.
5250 @end table
5251
5252 Each expression in @var{exprs} can contain the following constants:
5253
5254 @table @option
5255 @item n
5256 number of the evaluated sample, starting from 0
5257
5258 @item t
5259 time of the evaluated sample expressed in seconds, starting from 0
5260
5261 @item s
5262 sample rate
5263
5264 @end table
5265
5266 @subsection Examples
5267
5268 @itemize
5269 @item
5270 Generate silence:
5271 @example
5272 aevalsrc=0
5273 @end example
5274
5275 @item
5276 Generate a sin signal with frequency of 440 Hz, set sample rate to
5277 8000 Hz:
5278 @example
5279 aevalsrc="sin(440*2*PI*t):s=8000"
5280 @end example
5281
5282 @item
5283 Generate a two channels signal, specify the channel layout (Front
5284 Center + Back Center) explicitly:
5285 @example
5286 aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
5287 @end example
5288
5289 @item
5290 Generate white noise:
5291 @example
5292 aevalsrc="-2+random(0)"
5293 @end example
5294
5295 @item
5296 Generate an amplitude modulated signal:
5297 @example
5298 aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
5299 @end example
5300
5301 @item
5302 Generate 2.5 Hz binaural beats on a 360 Hz carrier:
5303 @example
5304 aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
5305 @end example
5306
5307 @end itemize
5308
5309 @section anullsrc
5310
5311 The null audio source, return unprocessed audio frames. It is mainly useful
5312 as a template and to be employed in analysis / debugging tools, or as
5313 the source for filters which ignore the input data (for example the sox
5314 synth filter).
5315
5316 This source accepts the following options:
5317
5318 @table @option
5319
5320 @item channel_layout, cl
5321
5322 Specifies the channel layout, and can be either an integer or a string
5323 representing a channel layout. The default value of @var{channel_layout}
5324 is "stereo".
5325
5326 Check the channel_layout_map definition in
5327 @file{libavutil/channel_layout.c} for the mapping between strings and
5328 channel layout values.
5329
5330 @item sample_rate, r
5331 Specifies the sample rate, and defaults to 44100.
5332
5333 @item nb_samples, n
5334 Set the number of samples per requested frames.
5335
5336 @end table
5337
5338 @subsection Examples
5339
5340 @itemize
5341 @item
5342 Set the sample rate to 48000 Hz and the channel layout to AV_CH_LAYOUT_MONO.
5343 @example
5344 anullsrc=r=48000:cl=4
5345 @end example
5346
5347 @item
5348 Do the same operation with a more obvious syntax:
5349 @example
5350 anullsrc=r=48000:cl=mono
5351 @end example
5352 @end itemize
5353
5354 All the parameters need to be explicitly defined.
5355
5356 @section flite
5357
5358 Synthesize a voice utterance using the libflite library.
5359
5360 To enable compilation of this filter you need to configure FFmpeg with
5361 @code{--enable-libflite}.
5362
5363 Note that versions of the flite library prior to 2.0 are not thread-safe.
5364
5365 The filter accepts the following options:
5366
5367 @table @option
5368
5369 @item list_voices
5370 If set to 1, list the names of the available voices and exit
5371 immediately. Default value is 0.
5372
5373 @item nb_samples, n
5374 Set the maximum number of samples per frame. Default value is 512.
5375
5376 @item textfile
5377 Set the filename containing the text to speak.
5378
5379 @item text
5380 Set the text to speak.
5381
5382 @item voice, v
5383 Set the voice to use for the speech synthesis. Default value is
5384 @code{kal}. See also the @var{list_voices} option.
5385 @end table
5386
5387 @subsection Examples
5388
5389 @itemize
5390 @item
5391 Read from file @file{speech.txt}, and synthesize the text using the
5392 standard flite voice:
5393 @example
5394 flite=textfile=speech.txt
5395 @end example
5396
5397 @item
5398 Read the specified text selecting the @code{slt} voice:
5399 @example
5400 flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
5401 @end example
5402
5403 @item
5404 Input text to ffmpeg:
5405 @example
5406 ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
5407 @end example
5408
5409 @item
5410 Make @file{ffplay} speak the specified text, using @code{flite} and
5411 the @code{lavfi} device:
5412 @example
5413 ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
5414 @end example
5415 @end itemize
5416
5417 For more information about libflite, check:
5418 @url{http://www.festvox.org/flite/}
5419
5420 @section anoisesrc
5421
5422 Generate a noise audio signal.
5423
5424 The filter accepts the following options:
5425
5426 @table @option
5427 @item sample_rate, r
5428 Specify the sample rate. Default value is 48000 Hz.
5429
5430 @item amplitude, a
5431 Specify the amplitude (0.0 - 1.0) of the generated audio stream. Default value
5432 is 1.0.
5433
5434 @item duration, d
5435 Specify the duration of the generated audio stream. Not specifying this option
5436 results in noise with an infinite length.
5437
5438 @item color, colour, c
5439 Specify the color of noise. Available noise colors are white, pink, brown,
5440 blue and violet. Default color is white.
5441
5442 @item seed, s
5443 Specify a value used to seed the PRNG.
5444
5445 @item nb_samples, n
5446 Set the number of samples per each output frame, default is 1024.
5447 @end table
5448
5449 @subsection Examples
5450
5451 @itemize
5452
5453 @item
5454 Generate 60 seconds of pink noise, with a 44.1 kHz sampling rate and an amplitude of 0.5:
5455 @example
5456 anoisesrc=d=60:c=pink:r=44100:a=0.5
5457 @end example
5458 @end itemize
5459
5460 @section hilbert
5461
5462 Generate odd-tap Hilbert transform FIR coefficients.
5463
5464 The resulting stream can be used with @ref{afir} filter for phase-shifting
5465 the signal by 90 degrees.
5466
5467 This is used in many matrix coding schemes and for analytic signal generation.
5468 The process is often written as a multiplication by i (or j), the imaginary unit.
5469
5470 The filter accepts the following options:
5471
5472 @table @option
5473
5474 @item sample_rate, s
5475 Set sample rate, default is 44100.
5476
5477 @item taps, t
5478 Set length of FIR filter, default is 22051.
5479
5480 @item nb_samples, n
5481 Set number of samples per each frame.
5482
5483 @item win_func, w
5484 Set window function to be used when generating FIR coefficients.
5485 @end table
5486
5487 @section sinc
5488
5489 Generate a sinc kaiser-windowed low-pass, high-pass, band-pass, or band-reject FIR coefficients.
5490
5491 The resulting stream can be used with @ref{afir} filter for filtering the audio signal.
5492
5493 The filter accepts the following options:
5494
5495 @table @option
5496 @item sample_rate, r
5497 Set sample rate, default is 44100.
5498
5499 @item nb_samples, n
5500 Set number of samples per each frame. Default is 1024.
5501
5502 @item hp
5503 Set high-pass frequency. Default is 0.
5504
5505 @item lp
5506 Set low-pass frequency. Default is 0.
5507 If high-pass frequency is lower than low-pass frequency and low-pass frequency
5508 is higher than 0 then filter will create band-pass filter coefficients,
5509 otherwise band-reject filter coefficients.
5510
5511 @item phase
5512 Set filter phase response. Default is 50. Allowed range is from 0 to 100.
5513
5514 @item beta
5515 Set Kaiser window beta.
5516
5517 @item att
5518 Set stop-band attenuation. Default is 120dB, allowed range is from 40 to 180 dB.
5519
5520 @item round
5521 Enable rounding, by default is disabled.
5522
5523 @item hptaps
5524 Set number of taps for high-pass filter.
5525
5526 @item lptaps
5527 Set number of taps for low-pass filter.
5528 @end table
5529
5530 @section sine
5531
5532 Generate an audio signal made of a sine wave with amplitude 1/8.
5533
5534 The audio signal is bit-exact.
5535
5536 The filter accepts the following options:
5537
5538 @table @option
5539
5540 @item frequency, f
5541 Set the carrier frequency. Default is 440 Hz.
5542
5543 @item beep_factor, b
5544 Enable a periodic beep every second with frequency @var{beep_factor} times
5545 the carrier frequency. Default is 0, meaning the beep is disabled.
5546
5547 @item sample_rate, r
5548 Specify the sample rate, default is 44100.
5549
5550 @item duration, d
5551 Specify the duration of the generated audio stream.
5552
5553 @item samples_per_frame
5554 Set the number of samples per output frame.
5555
5556 The expression can contain the following constants:
5557
5558 @table @option
5559 @item n
5560 The (sequential) number of the output audio frame, starting from 0.
5561
5562 @item pts
5563 The PTS (Presentation TimeStamp) of the output audio frame,
5564 expressed in @var{TB} units.
5565
5566 @item t
5567 The PTS of the output audio frame, expressed in seconds.
5568
5569 @item TB
5570 The timebase of the output audio frames.
5571 @end table
5572
5573 Default is @code{1024}.
5574 @end table
5575
5576 @subsection Examples
5577
5578 @itemize
5579
5580 @item
5581 Generate a simple 440 Hz sine wave:
5582 @example
5583 sine
5584 @end example
5585
5586 @item
5587 Generate a 220 Hz sine wave with a 880 Hz beep each second, for 5 seconds:
5588 @example
5589 sine=220:4:d=5
5590 sine=f=220:b=4:d=5
5591 sine=frequency=220:beep_factor=4:duration=5
5592 @end example
5593
5594 @item
5595 Generate a 1 kHz sine wave following @code{1602,1601,1602,1601,1602} NTSC
5596 pattern:
5597 @example
5598 sine=1000:samples_per_frame='st(0,mod(n,5)); 1602-not(not(eq(ld(0),1)+eq(ld(0),3)))'
5599 @end example
5600 @end itemize
5601
5602 @c man end AUDIO SOURCES
5603
5604 @chapter Audio Sinks
5605 @c man begin AUDIO SINKS
5606
5607 Below is a description of the currently available audio sinks.
5608
5609 @section abuffersink
5610
5611 Buffer audio frames, and make them available to the end of filter chain.
5612
5613 This sink is mainly intended for programmatic use, in particular
5614 through the interface defined in @file{libavfilter/buffersink.h}
5615 or the options system.
5616
5617 It accepts a pointer to an AVABufferSinkContext structure, which
5618 defines the incoming buffers' formats, to be passed as the opaque
5619 parameter to @code{avfilter_init_filter} for initialization.
5620 @section anullsink
5621
5622 Null audio sink; do absolutely nothing with the input audio. It is
5623 mainly useful as a template and for use in analysis / debugging
5624 tools.
5625
5626 @c man end AUDIO SINKS
5627
5628 @chapter Video Filters
5629 @c man begin VIDEO FILTERS
5630
5631 When you configure your FFmpeg build, you can disable any of the
5632 existing filters using @code{--disable-filters}.
5633 The configure output will show the video filters included in your
5634 build.
5635
5636 Below is a description of the currently available video filters.
5637
5638 @section alphaextract
5639
5640 Extract the alpha component from the input as a grayscale video. This
5641 is especially useful with the @var{alphamerge} filter.
5642
5643 @section alphamerge
5644
5645 Add or replace the alpha component of the primary input with the
5646 grayscale value of a second input. This is intended for use with
5647 @var{alphaextract} to allow the transmission or storage of frame
5648 sequences that have alpha in a format that doesn't support an alpha
5649 channel.
5650
5651 For example, to reconstruct full frames from a normal YUV-encoded video
5652 and a separate video created with @var{alphaextract}, you might use:
5653 @example
5654 movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
5655 @end example
5656
5657 Since this filter is designed for reconstruction, it operates on frame
5658 sequences without considering timestamps, and terminates when either
5659 input reaches end of stream. This will cause problems if your encoding
5660 pipeline drops frames. If you're trying to apply an image as an
5661 overlay to a video stream, consider the @var{overlay} filter instead.
5662
5663 @section amplify
5664
5665 Amplify differences between current pixel and pixels of adjacent frames in
5666 same pixel location.
5667
5668 This filter accepts the following options:
5669
5670 @table @option
5671 @item radius
5672 Set frame radius. Default is 2. Allowed range is from 1 to 63.
5673 For example radius of 3 will instruct filter to calculate average of 7 frames.
5674
5675 @item factor
5676 Set factor to amplify difference. Default is 2. Allowed range is from 0 to 65535.
5677
5678 @item threshold
5679 Set threshold for difference amplification. Any difference greater or equal to
5680 this value will not alter source pixel. Default is 10.
5681 Allowed range is from 0 to 65535.
5682
5683 @item tolerance
5684 Set tolerance for difference amplification. Any difference lower to
5685 this value will not alter source pixel. Default is 0.
5686 Allowed range is from 0 to 65535.
5687
5688 @item low
5689 Set lower limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
5690 This option controls maximum possible value that will decrease source pixel value.
5691
5692 @item high
5693 Set high limit for changing source pixel. Default is 65535. Allowed range is from 0 to 65535.
5694 This option controls maximum possible value that will increase source pixel value.
5695
5696 @item planes
5697 Set which planes to filter. Default is all. Allowed range is from 0 to 15.
5698 @end table
5699
5700 @section ass
5701
5702 Same as the @ref{subtitles} filter, except that it doesn't require libavcodec
5703 and libavformat to work. On the other hand, it is limited to ASS (Advanced
5704 Substation Alpha) subtitles files.
5705
5706 This filter accepts the following option in addition to the common options from
5707 the @ref{subtitles} filter:
5708
5709 @table @option
5710 @item shaping
5711 Set the shaping engine
5712
5713 Available values are:
5714 @table @samp
5715 @item auto
5716 The default libass shaping engine, which is the best available.
5717 @item simple
5718 Fast, font-agnostic shaper that can do only substitutions
5719 @item complex
5720 Slower shaper using OpenType for substitutions and positioning
5721 @end table
5722
5723 The default is @code{auto}.
5724 @end table
5725
5726 @section atadenoise
5727 Apply an Adaptive Temporal Averaging Denoiser to the video input.
5728
5729 The filter accepts the following options:
5730
5731 @table @option
5732 @item 0a
5733 Set threshold A for 1st plane. Default is 0.02.
5734 Valid range is 0 to 0.3.
5735
5736 @item 0b
5737 Set threshold B for 1st plane. Default is 0.04.
5738 Valid range is 0 to 5.
5739
5740 @item 1a
5741 Set threshold A for 2nd plane. Default is 0.02.
5742 Valid range is 0 to 0.3.
5743
5744 @item 1b
5745 Set threshold B for 2nd plane. Default is 0.04.
5746 Valid range is 0 to 5.
5747
5748 @item 2a
5749 Set threshold A for 3rd plane. Default is 0.02.
5750 Valid range is 0 to 0.3.
5751
5752 @item 2b
5753 Set threshold B for 3rd plane. Default is 0.04.
5754 Valid range is 0 to 5.
5755
5756 Threshold A is designed to react on abrupt changes in the input signal and
5757 threshold B is designed to react on continuous changes in the input signal.
5758
5759 @item s
5760 Set number of frames filter will use for averaging. Default is 9. Must be odd
5761 number in range [5, 129].
5762
5763 @item p
5764 Set what planes of frame filter will use for averaging. Default is all.
5765 @end table
5766
5767 @section avgblur
5768
5769 Apply average blur filter.
5770
5771 The filter accepts the following options:
5772
5773 @table @option
5774 @item sizeX
5775 Set horizontal radius size.
5776
5777 @item planes
5778 Set which planes to filter. By default all planes are filtered.
5779
5780 @item sizeY
5781 Set vertical radius size, if zero it will be same as @code{sizeX}.
5782 Default is @code{0}.
5783 @end table
5784
5785 @section bbox
5786
5787 Compute the bounding box for the non-black pixels in the input frame
5788 luminance plane.
5789
5790 This filter computes the bounding box containing all the pixels with a
5791 luminance value greater than the minimum allowed value.
5792 The parameters describing the bounding box are printed on the filter
5793 log.
5794
5795 The filter accepts the following option:
5796
5797 @table @option
5798 @item min_val
5799 Set the minimal luminance value. Default is @code{16}.
5800 @end table
5801
5802 @section bitplanenoise
5803
5804 Show and measure bit plane noise.
5805
5806 The filter accepts the following options:
5807
5808 @table @option
5809 @item bitplane
5810 Set which plane to analyze. Default is @code{1}.
5811
5812 @item filter
5813 Filter out noisy pixels from @code{bitplane} set above.
5814 Default is disabled.
5815 @end table
5816
5817 @section blackdetect
5818
5819 Detect video intervals that are (almost) completely black. Can be
5820 useful to detect chapter transitions, commercials, or invalid
5821 recordings. Output lines contains the time for the start, end and
5822 duration of the detected black interval expressed in seconds.
5823
5824 In order to display the output lines, you need to set the loglevel at
5825 least to the AV_LOG_INFO value.
5826
5827 The filter accepts the following options:
5828
5829 @table @option
5830 @item black_min_duration, d
5831 Set the minimum detected black duration expressed in seconds. It must
5832 be a non-negative floating point number.
5833
5834 Default value is 2.0.
5835
5836 @item picture_black_ratio_th, pic_th
5837 Set the threshold for considering a picture "black".
5838 Express the minimum value for the ratio:
5839 @example
5840 @var{nb_black_pixels} / @var{nb_pixels}
5841 @end example
5842
5843 for which a picture is considered black.
5844 Default value is 0.98.
5845
5846 @item pixel_black_th, pix_th
5847 Set the threshold for considering a pixel "black".
5848
5849 The threshold expresses the maximum pixel luminance value for which a
5850 pixel is considered "black". The provided value is scaled according to
5851 the following equation:
5852 @example
5853 @var{absolute_threshold} = @var{luminance_minimum_value} + @var{pixel_black_th} * @var{luminance_range_size}
5854 @end example
5855
5856 @var{luminance_range_size} and @var{luminance_minimum_value} depend on
5857 the input video format, the range is [0-255] for YUV full-range
5858 formats and [16-235] for YUV non full-range formats.
5859
5860 Default value is 0.10.
5861 @end table
5862
5863 The following example sets the maximum pixel threshold to the minimum
5864 value, and detects only black intervals of 2 or more seconds:
5865 @example
5866 blackdetect=d=2:pix_th=0.00
5867 @end example
5868
5869 @section blackframe
5870
5871 Detect frames that are (almost) completely black. Can be useful to
5872 detect chapter transitions or commercials. Output lines consist of
5873 the frame number of the detected frame, the percentage of blackness,
5874 the position in the file if known or -1 and the timestamp in seconds.
5875
5876 In order to display the output lines, you need to set the loglevel at
5877 least to the AV_LOG_INFO value.
5878
5879 This filter exports frame metadata @code{lavfi.blackframe.pblack}.
5880 The value represents the percentage of pixels in the picture that
5881 are below the threshold value.
5882
5883 It accepts the following parameters:
5884
5885 @table @option
5886
5887 @item amount
5888 The percentage of the pixels that have to be below the threshold; it defaults to
5889 @code{98}.
5890
5891 @item threshold, thresh
5892 The threshold below which a pixel value is considered black; it defaults to
5893 @code{32}.
5894
5895 @end table
5896
5897 @section blend, tblend
5898
5899 Blend two video frames into each other.
5900
5901 The @code{blend} filter takes two input streams and outputs one
5902 stream, the first input is the "top" layer and second input is
5903 "bottom" layer.  By default, the output terminates when the longest input terminates.
5904
5905 The @code{tblend} (time blend) filter takes two consecutive frames
5906 from one single stream, and outputs the result obtained by blending
5907 the new frame on top of the old frame.
5908
5909 A description of the accepted options follows.
5910
5911 @table @option
5912 @item c0_mode
5913 @item c1_mode
5914 @item c2_mode
5915 @item c3_mode
5916 @item all_mode
5917 Set blend mode for specific pixel component or all pixel components in case
5918 of @var{all_mode}. Default value is @code{normal}.
5919
5920 Available values for component modes are:
5921 @table @samp
5922 @item addition
5923 @item grainmerge
5924 @item and
5925 @item average
5926 @item burn
5927 @item darken
5928 @item difference
5929 @item grainextract
5930 @item divide
5931 @item dodge
5932 @item freeze
5933 @item exclusion
5934 @item extremity
5935 @item glow
5936 @item hardlight
5937 @item hardmix
5938 @item heat
5939 @item lighten
5940 @item linearlight
5941 @item multiply
5942 @item multiply128
5943 @item negation
5944 @item normal
5945 @item or
5946 @item overlay
5947 @item phoenix
5948 @item pinlight
5949 @item reflect
5950 @item screen
5951 @item softlight
5952 @item subtract
5953 @item vividlight
5954 @item xor
5955 @end table
5956
5957 @item c0_opacity
5958 @item c1_opacity
5959 @item c2_opacity
5960 @item c3_opacity
5961 @item all_opacity
5962 Set blend opacity for specific pixel component or all pixel components in case
5963 of @var{all_opacity}. Only used in combination with pixel component blend modes.
5964
5965 @item c0_expr
5966 @item c1_expr
5967 @item c2_expr
5968 @item c3_expr
5969 @item all_expr
5970 Set blend expression for specific pixel component or all pixel components in case
5971 of @var{all_expr}. Note that related mode options will be ignored if those are set.
5972
5973 The expressions can use the following variables:
5974
5975 @table @option
5976 @item N
5977 The sequential number of the filtered frame, starting from @code{0}.
5978
5979 @item X
5980 @item Y
5981 the coordinates of the current sample
5982
5983 @item W
5984 @item H
5985 the width and height of currently filtered plane
5986
5987 @item SW
5988 @item SH
5989 Width and height scale for the plane being filtered. It is the
5990 ratio between the dimensions of the current plane to the luma plane,
5991 e.g. for a @code{yuv420p} frame, the values are @code{1,1} for
5992 the luma plane and @code{0.5,0.5} for the chroma planes.
5993
5994 @item T
5995 Time of the current frame, expressed in seconds.
5996
5997 @item TOP, A
5998 Value of pixel component at current location for first video frame (top layer).
5999
6000 @item BOTTOM, B
6001 Value of pixel component at current location for second video frame (bottom layer).
6002 @end table
6003 @end table
6004
6005 The @code{blend} filter also supports the @ref{framesync} options.
6006
6007 @subsection Examples
6008
6009 @itemize
6010 @item
6011 Apply transition from bottom layer to top layer in first 10 seconds:
6012 @example
6013 blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
6014 @end example
6015
6016 @item
6017 Apply linear horizontal transition from top layer to bottom layer:
6018 @example
6019 blend=all_expr='A*(X/W)+B*(1-X/W)'
6020 @end example
6021
6022 @item
6023 Apply 1x1 checkerboard effect:
6024 @example
6025 blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
6026 @end example
6027
6028 @item
6029 Apply uncover left effect:
6030 @example
6031 blend=all_expr='if(gte(N*SW+X,W),A,B)'
6032 @end example
6033
6034 @item
6035 Apply uncover down effect:
6036 @example
6037 blend=all_expr='if(gte(Y-N*SH,0),A,B)'
6038 @end example
6039
6040 @item
6041 Apply uncover up-left effect:
6042 @example
6043 blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
6044 @end example
6045
6046 @item
6047 Split diagonally video and shows top and bottom layer on each side:
6048 @example
6049 blend=all_expr='if(gt(X,Y*(W/H)),A,B)'
6050 @end example
6051
6052 @item
6053 Display differences between the current and the previous frame:
6054 @example
6055 tblend=all_mode=grainextract
6056 @end example
6057 @end itemize
6058
6059 @section bm3d
6060
6061 Denoise frames using Block-Matching 3D algorithm.
6062
6063 The filter accepts the following options.
6064
6065 @table @option
6066 @item sigma
6067 Set denoising strength. Default value is 1.
6068 Allowed range is from 0 to 999.9.
6069 The denoising algorithm is very sensitive to sigma, so adjust it
6070 according to the source.
6071
6072 @item block
6073 Set local patch size. This sets dimensions in 2D.
6074
6075 @item bstep
6076 Set sliding step for processing blocks. Default value is 4.
6077 Allowed range is from 1 to 64.
6078 Smaller values allows processing more reference blocks and is slower.
6079
6080 @item group
6081 Set maximal number of similar blocks for 3rd dimension. Default value is 1.
6082 When set to 1, no block matching is done. Larger values allows more blocks
6083 in single group.
6084 Allowed range is from 1 to 256.
6085
6086 @item range
6087 Set radius for search block matching. Default is 9.
6088 Allowed range is from 1 to INT32_MAX.
6089
6090 @item mstep
6091 Set step between two search locations for block matching. Default is 1.
6092 Allowed range is from 1 to 64. Smaller is slower.
6093
6094 @item thmse
6095 Set threshold of mean square error for block matching. Valid range is 0 to
6096 INT32_MAX.
6097
6098 @item hdthr
6099 Set thresholding parameter for hard thresholding in 3D transformed domain.
6100 Larger values results in stronger hard-thresholding filtering in frequency
6101 domain.
6102
6103 @item estim
6104 Set filtering estimation mode. Can be @code{basic} or @code{final}.
6105 Default is @code{basic}.
6106
6107 @item ref
6108 If enabled, filter will use 2nd stream for block matching.
6109 Default is disabled for @code{basic} value of @var{estim} option,
6110 and always enabled if value of @var{estim} is @code{final}.
6111
6112 @item planes
6113 Set planes to filter. Default is all available except alpha.
6114 @end table
6115
6116 @subsection Examples
6117
6118 @itemize
6119 @item
6120 Basic filtering with bm3d:
6121 @example
6122 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic
6123 @end example
6124
6125 @item
6126 Same as above, but filtering only luma:
6127 @example
6128 bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic:planes=1
6129 @end example
6130
6131 @item
6132 Same as above, but with both estimation modes:
6133 @example
6134 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
6135 @end example
6136
6137 @item
6138 Same as above, but prefilter with @ref{nlmeans} filter instead:
6139 @example
6140 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
6141 @end example
6142 @end itemize
6143
6144 @section boxblur
6145
6146 Apply a boxblur algorithm to the input video.
6147
6148 It accepts the following parameters:
6149
6150 @table @option
6151
6152 @item luma_radius, lr
6153 @item luma_power, lp
6154 @item chroma_radius, cr
6155 @item chroma_power, cp
6156 @item alpha_radius, ar
6157 @item alpha_power, ap
6158
6159 @end table
6160
6161 A description of the accepted options follows.
6162
6163 @table @option
6164 @item luma_radius, lr
6165 @item chroma_radius, cr
6166 @item alpha_radius, ar
6167 Set an expression for the box radius in pixels used for blurring the
6168 corresponding input plane.
6169
6170 The radius value must be a non-negative number, and must not be
6171 greater than the value of the expression @code{min(w,h)/2} for the
6172 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
6173 planes.
6174
6175 Default value for @option{luma_radius} is "2". If not specified,
6176 @option{chroma_radius} and @option{alpha_radius} default to the
6177 corresponding value set for @option{luma_radius}.
6178
6179 The expressions can contain the following constants:
6180 @table @option
6181 @item w
6182 @item h
6183 The input width and height in pixels.
6184
6185 @item cw
6186 @item ch
6187 The input chroma image width and height in pixels.
6188
6189 @item hsub
6190 @item vsub
6191 The horizontal and vertical chroma subsample values. For example, for the
6192 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
6193 @end table
6194
6195 @item luma_power, lp
6196 @item chroma_power, cp
6197 @item alpha_power, ap
6198 Specify how many times the boxblur filter is applied to the
6199 corresponding plane.
6200
6201 Default value for @option{luma_power} is 2. If not specified,
6202 @option{chroma_power} and @option{alpha_power} default to the
6203 corresponding value set for @option{luma_power}.
6204
6205 A value of 0 will disable the effect.
6206 @end table
6207
6208 @subsection Examples
6209
6210 @itemize
6211 @item
6212 Apply a boxblur filter with the luma, chroma, and alpha radii
6213 set to 2:
6214 @example
6215 boxblur=luma_radius=2:luma_power=1
6216 boxblur=2:1
6217 @end example
6218
6219 @item
6220 Set the luma radius to 2, and alpha and chroma radius to 0:
6221 @example
6222 boxblur=2:1:cr=0:ar=0
6223 @end example
6224
6225 @item
6226 Set the luma and chroma radii to a fraction of the video dimension:
6227 @example
6228 boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
6229 @end example
6230 @end itemize
6231
6232 @section bwdif
6233
6234 Deinterlace the input video ("bwdif" stands for "Bob Weaver
6235 Deinterlacing Filter").
6236
6237 Motion adaptive deinterlacing based on yadif with the use of w3fdif and cubic
6238 interpolation algorithms.
6239 It accepts the following parameters:
6240
6241 @table @option
6242 @item mode
6243 The interlacing mode to adopt. It accepts one of the following values:
6244
6245 @table @option
6246 @item 0, send_frame
6247 Output one frame for each frame.
6248 @item 1, send_field
6249 Output one frame for each field.
6250 @end table
6251
6252 The default value is @code{send_field}.
6253
6254 @item parity
6255 The picture field parity assumed for the input interlaced video. It accepts one
6256 of the following values:
6257
6258 @table @option
6259 @item 0, tff
6260 Assume the top field is first.
6261 @item 1, bff
6262 Assume the bottom field is first.
6263 @item -1, auto
6264 Enable automatic detection of field parity.
6265 @end table
6266
6267 The default value is @code{auto}.
6268 If the interlacing is unknown or the decoder does not export this information,
6269 top field first will be assumed.
6270
6271 @item deint
6272 Specify which frames to deinterlace. Accept one of the following
6273 values:
6274
6275 @table @option
6276 @item 0, all
6277 Deinterlace all frames.
6278 @item 1, interlaced
6279 Only deinterlace frames marked as interlaced.
6280 @end table
6281
6282 The default value is @code{all}.
6283 @end table
6284
6285 @section chromahold
6286 Remove all color information for all colors except for certain one.
6287
6288 The filter accepts the following options:
6289
6290 @table @option
6291 @item color
6292 The color which will not be replaced with neutral chroma.
6293
6294 @item similarity
6295 Similarity percentage with the above color.
6296 0.01 matches only the exact key color, while 1.0 matches everything.
6297
6298 @item yuv
6299 Signals that the color passed is already in YUV instead of RGB.
6300
6301 Literal colors like "green" or "red" don't make sense with this enabled anymore.
6302 This can be used to pass exact YUV values as hexadecimal numbers.
6303 @end table
6304
6305 @section chromakey
6306 YUV colorspace color/chroma keying.
6307
6308 The filter accepts the following options:
6309
6310 @table @option
6311 @item color
6312 The color which will be replaced with transparency.
6313
6314 @item similarity
6315 Similarity percentage with the key color.
6316
6317 0.01 matches only the exact key color, while 1.0 matches everything.
6318
6319 @item blend
6320 Blend percentage.
6321
6322 0.0 makes pixels either fully transparent, or not transparent at all.
6323
6324 Higher values result in semi-transparent pixels, with a higher transparency
6325 the more similar the pixels color is to the key color.
6326
6327 @item yuv
6328 Signals that the color passed is already in YUV instead of RGB.
6329
6330 Literal colors like "green" or "red" don't make sense with this enabled anymore.
6331 This can be used to pass exact YUV values as hexadecimal numbers.
6332 @end table
6333
6334 @subsection Examples
6335
6336 @itemize
6337 @item
6338 Make every green pixel in the input image transparent:
6339 @example
6340 ffmpeg -i input.png -vf chromakey=green out.png
6341 @end example
6342
6343 @item
6344 Overlay a greenscreen-video on top of a static black background.
6345 @example
6346 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
6347 @end example
6348 @end itemize
6349
6350 @section chromashift
6351 Shift chroma pixels horizontally and/or vertically.
6352
6353 The filter accepts the following options:
6354 @table @option
6355 @item cbh
6356 Set amount to shift chroma-blue horizontally.
6357 @item cbv
6358 Set amount to shift chroma-blue vertically.
6359 @item crh
6360 Set amount to shift chroma-red horizontally.
6361 @item crv
6362 Set amount to shift chroma-red vertically.
6363 @item edge
6364 Set edge mode, can be @var{smear}, default, or @var{warp}.
6365 @end table
6366
6367 @section ciescope
6368
6369 Display CIE color diagram with pixels overlaid onto it.
6370
6371 The filter accepts the following options:
6372
6373 @table @option
6374 @item system
6375 Set color system.
6376
6377 @table @samp
6378 @item ntsc, 470m
6379 @item ebu, 470bg
6380 @item smpte
6381 @item 240m
6382 @item apple
6383 @item widergb
6384 @item cie1931
6385 @item rec709, hdtv
6386 @item uhdtv, rec2020
6387 @end table
6388
6389 @item cie
6390 Set CIE system.
6391
6392 @table @samp
6393 @item xyy
6394 @item ucs
6395 @item luv
6396 @end table
6397
6398 @item gamuts
6399 Set what gamuts to draw.
6400
6401 See @code{system} option for available values.
6402
6403 @item size, s
6404 Set ciescope size, by default set to 512.
6405
6406 @item intensity, i
6407 Set intensity used to map input pixel values to CIE diagram.
6408
6409 @item contrast
6410 Set contrast used to draw tongue colors that are out of active color system gamut.
6411
6412 @item corrgamma
6413 Correct gamma displayed on scope, by default enabled.
6414
6415 @item showwhite
6416 Show white point on CIE diagram, by default disabled.
6417
6418 @item gamma
6419 Set input gamma. Used only with XYZ input color space.
6420 @end table
6421
6422 @section codecview
6423
6424 Visualize information exported by some codecs.
6425
6426 Some codecs can export information through frames using side-data or other
6427 means. For example, some MPEG based codecs export motion vectors through the
6428 @var{export_mvs} flag in the codec @option{flags2} option.
6429
6430 The filter accepts the following option:
6431
6432 @table @option
6433 @item mv
6434 Set motion vectors to visualize.
6435
6436 Available flags for @var{mv} are:
6437
6438 @table @samp
6439 @item pf
6440 forward predicted MVs of P-frames
6441 @item bf
6442 forward predicted MVs of B-frames
6443 @item bb
6444 backward predicted MVs of B-frames
6445 @end table
6446
6447 @item qp
6448 Display quantization parameters using the chroma planes.
6449
6450 @item mv_type, mvt
6451 Set motion vectors type to visualize. Includes MVs from all frames unless specified by @var{frame_type} option.
6452
6453 Available flags for @var{mv_type} are:
6454
6455 @table @samp
6456 @item fp
6457 forward predicted MVs
6458 @item bp
6459 backward predicted MVs
6460 @end table
6461
6462 @item frame_type, ft
6463 Set frame type to visualize motion vectors of.
6464
6465 Available flags for @var{frame_type} are:
6466
6467 @table @samp
6468 @item if
6469 intra-coded frames (I-frames)
6470 @item pf
6471 predicted frames (P-frames)
6472 @item bf
6473 bi-directionally predicted frames (B-frames)
6474 @end table
6475 @end table
6476
6477 @subsection Examples
6478
6479 @itemize
6480 @item
6481 Visualize forward predicted MVs of all frames using @command{ffplay}:
6482 @example
6483 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp
6484 @end example
6485
6486 @item
6487 Visualize multi-directionals MVs of P and B-Frames using @command{ffplay}:
6488 @example
6489 ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
6490 @end example
6491 @end itemize
6492
6493 @section colorbalance
6494 Modify intensity of primary colors (red, green and blue) of input frames.
6495
6496 The filter allows an input frame to be adjusted in the shadows, midtones or highlights
6497 regions for the red-cyan, green-magenta or blue-yellow balance.
6498
6499 A positive adjustment value shifts the balance towards the primary color, a negative
6500 value towards the complementary color.
6501
6502 The filter accepts the following options:
6503
6504 @table @option
6505 @item rs
6506 @item gs
6507 @item bs
6508 Adjust red, green and blue shadows (darkest pixels).
6509
6510 @item rm
6511 @item gm
6512 @item bm
6513 Adjust red, green and blue midtones (medium pixels).
6514
6515 @item rh
6516 @item gh
6517 @item bh
6518 Adjust red, green and blue highlights (brightest pixels).
6519
6520 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
6521 @end table
6522
6523 @subsection Examples
6524
6525 @itemize
6526 @item
6527 Add red color cast to shadows:
6528 @example
6529 colorbalance=rs=.3
6530 @end example
6531 @end itemize
6532
6533 @section colorkey
6534 RGB colorspace color keying.
6535
6536 The filter accepts the following options:
6537
6538 @table @option
6539 @item color
6540 The color which will be replaced with transparency.
6541
6542 @item similarity
6543 Similarity percentage with the key color.
6544
6545 0.01 matches only the exact key color, while 1.0 matches everything.
6546
6547 @item blend
6548 Blend percentage.
6549
6550 0.0 makes pixels either fully transparent, or not transparent at all.
6551
6552 Higher values result in semi-transparent pixels, with a higher transparency
6553 the more similar the pixels color is to the key color.
6554 @end table
6555
6556 @subsection Examples
6557
6558 @itemize
6559 @item
6560 Make every green pixel in the input image transparent:
6561 @example
6562 ffmpeg -i input.png -vf colorkey=green out.png
6563 @end example
6564
6565 @item
6566 Overlay a greenscreen-video on top of a static background image.
6567 @example
6568 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
6569 @end example
6570 @end itemize
6571
6572 @section colorlevels
6573
6574 Adjust video input frames using levels.
6575
6576 The filter accepts the following options:
6577
6578 @table @option
6579 @item rimin
6580 @item gimin
6581 @item bimin
6582 @item aimin
6583 Adjust red, green, blue and alpha input black point.
6584 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{0}.
6585
6586 @item rimax
6587 @item gimax
6588 @item bimax
6589 @item aimax
6590 Adjust red, green, blue and alpha input white point.
6591 Allowed ranges for options are @code{[-1.0, 1.0]}. Defaults are @code{1}.
6592
6593 Input levels are used to lighten highlights (bright tones), darken shadows
6594 (dark tones), change the balance of bright and dark tones.
6595
6596 @item romin
6597 @item gomin
6598 @item bomin
6599 @item aomin
6600 Adjust red, green, blue and alpha output black point.
6601 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{0}.
6602
6603 @item romax
6604 @item gomax
6605 @item bomax
6606 @item aomax
6607 Adjust red, green, blue and alpha output white point.
6608 Allowed ranges for options are @code{[0, 1.0]}. Defaults are @code{1}.
6609
6610 Output levels allows manual selection of a constrained output level range.
6611 @end table
6612
6613 @subsection Examples
6614
6615 @itemize
6616 @item
6617 Make video output darker:
6618 @example
6619 colorlevels=rimin=0.058:gimin=0.058:bimin=0.058
6620 @end example
6621
6622 @item
6623 Increase contrast:
6624 @example
6625 colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96
6626 @end example
6627
6628 @item
6629 Make video output lighter:
6630 @example
6631 colorlevels=rimax=0.902:gimax=0.902:bimax=0.902
6632 @end example
6633
6634 @item
6635 Increase brightness:
6636 @example
6637 colorlevels=romin=0.5:gomin=0.5:bomin=0.5
6638 @end example
6639 @end itemize
6640
6641 @section colorchannelmixer
6642
6643 Adjust video input frames by re-mixing color channels.
6644
6645 This filter modifies a color channel by adding the values associated to
6646 the other channels of the same pixels. For example if the value to
6647 modify is red, the output value will be:
6648 @example
6649 @var{red}=@var{red}*@var{rr} + @var{blue}*@var{rb} + @var{green}*@var{rg} + @var{alpha}*@var{ra}
6650 @end example
6651
6652 The filter accepts the following options:
6653
6654 @table @option
6655 @item rr
6656 @item rg
6657 @item rb
6658 @item ra
6659 Adjust contribution of input red, green, blue and alpha channels for output red channel.
6660 Default is @code{1} for @var{rr}, and @code{0} for @var{rg}, @var{rb} and @var{ra}.
6661
6662 @item gr
6663 @item gg
6664 @item gb
6665 @item ga
6666 Adjust contribution of input red, green, blue and alpha channels for output green channel.
6667 Default is @code{1} for @var{gg}, and @code{0} for @var{gr}, @var{gb} and @var{ga}.
6668
6669 @item br
6670 @item bg
6671 @item bb
6672 @item ba
6673 Adjust contribution of input red, green, blue and alpha channels for output blue channel.
6674 Default is @code{1} for @var{bb}, and @code{0} for @var{br}, @var{bg} and @var{ba}.
6675
6676 @item ar
6677 @item ag
6678 @item ab
6679 @item aa
6680 Adjust contribution of input red, green, blue and alpha channels for output alpha channel.
6681 Default is @code{1} for @var{aa}, and @code{0} for @var{ar}, @var{ag} and @var{ab}.
6682
6683 Allowed ranges for options are @code{[-2.0, 2.0]}.
6684 @end table
6685
6686 @subsection Examples
6687
6688 @itemize
6689 @item
6690 Convert source to grayscale:
6691 @example
6692 colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
6693 @end example
6694 @item
6695 Simulate sepia tones:
6696 @example
6697 colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
6698 @end example
6699 @end itemize
6700
6701 @section colormatrix
6702
6703 Convert color matrix.
6704
6705 The filter accepts the following options:
6706
6707 @table @option
6708 @item src
6709 @item dst
6710 Specify the source and destination color matrix. Both values must be
6711 specified.
6712
6713 The accepted values are:
6714 @table @samp
6715 @item bt709
6716 BT.709
6717
6718 @item fcc
6719 FCC
6720
6721 @item bt601
6722 BT.601
6723
6724 @item bt470
6725 BT.470
6726
6727 @item bt470bg
6728 BT.470BG
6729
6730 @item smpte170m
6731 SMPTE-170M
6732
6733 @item smpte240m
6734 SMPTE-240M
6735
6736 @item bt2020
6737 BT.2020
6738 @end table
6739 @end table
6740
6741 For example to convert from BT.601 to SMPTE-240M, use the command:
6742 @example
6743 colormatrix=bt601:smpte240m
6744 @end example
6745
6746 @section colorspace
6747
6748 Convert colorspace, transfer characteristics or color primaries.
6749 Input video needs to have an even size.
6750
6751 The filter accepts the following options:
6752
6753 @table @option
6754 @anchor{all}
6755 @item all
6756 Specify all color properties at once.
6757
6758 The accepted values are:
6759 @table @samp
6760 @item bt470m
6761 BT.470M
6762
6763 @item bt470bg
6764 BT.470BG
6765
6766 @item bt601-6-525
6767 BT.601-6 525
6768
6769 @item bt601-6-625
6770 BT.601-6 625
6771
6772 @item bt709
6773 BT.709
6774
6775 @item smpte170m
6776 SMPTE-170M
6777
6778 @item smpte240m
6779 SMPTE-240M
6780
6781 @item bt2020
6782 BT.2020
6783
6784 @end table
6785
6786 @anchor{space}
6787 @item space
6788 Specify output colorspace.
6789
6790 The accepted values are:
6791 @table @samp
6792 @item bt709
6793 BT.709
6794
6795 @item fcc
6796 FCC
6797
6798 @item bt470bg
6799 BT.470BG or BT.601-6 625
6800
6801 @item smpte170m
6802 SMPTE-170M or BT.601-6 525
6803
6804 @item smpte240m
6805 SMPTE-240M
6806
6807 @item ycgco
6808 YCgCo
6809
6810 @item bt2020ncl
6811 BT.2020 with non-constant luminance
6812
6813 @end table
6814
6815 @anchor{trc}
6816 @item trc
6817 Specify output transfer characteristics.
6818
6819 The accepted values are:
6820 @table @samp
6821 @item bt709
6822 BT.709
6823
6824 @item bt470m
6825 BT.470M
6826
6827 @item bt470bg
6828 BT.470BG
6829
6830 @item gamma22
6831 Constant gamma of 2.2
6832
6833 @item gamma28
6834 Constant gamma of 2.8
6835
6836 @item smpte170m
6837 SMPTE-170M, BT.601-6 625 or BT.601-6 525
6838
6839 @item smpte240m
6840 SMPTE-240M
6841
6842 @item srgb
6843 SRGB
6844
6845 @item iec61966-2-1
6846 iec61966-2-1
6847
6848 @item iec61966-2-4
6849 iec61966-2-4
6850
6851 @item xvycc
6852 xvycc
6853
6854 @item bt2020-10
6855 BT.2020 for 10-bits content
6856
6857 @item bt2020-12
6858 BT.2020 for 12-bits content
6859
6860 @end table
6861
6862 @anchor{primaries}
6863 @item primaries
6864 Specify output color primaries.
6865
6866 The accepted values are:
6867 @table @samp
6868 @item bt709
6869 BT.709
6870
6871 @item bt470m
6872 BT.470M
6873
6874 @item bt470bg
6875 BT.470BG or BT.601-6 625
6876
6877 @item smpte170m
6878 SMPTE-170M or BT.601-6 525
6879
6880 @item smpte240m
6881 SMPTE-240M
6882
6883 @item film
6884 film
6885
6886 @item smpte431
6887 SMPTE-431
6888
6889 @item smpte432
6890 SMPTE-432
6891
6892 @item bt2020
6893 BT.2020
6894
6895 @item jedec-p22
6896 JEDEC P22 phosphors
6897
6898 @end table
6899
6900 @anchor{range}
6901 @item range
6902 Specify output color range.
6903
6904 The accepted values are:
6905 @table @samp
6906 @item tv
6907 TV (restricted) range
6908
6909 @item mpeg
6910 MPEG (restricted) range
6911
6912 @item pc
6913 PC (full) range
6914
6915 @item jpeg
6916 JPEG (full) range
6917
6918 @end table
6919
6920 @item format
6921 Specify output color format.
6922
6923 The accepted values are:
6924 @table @samp
6925 @item yuv420p
6926 YUV 4:2:0 planar 8-bits
6927
6928 @item yuv420p10
6929 YUV 4:2:0 planar 10-bits
6930
6931 @item yuv420p12
6932 YUV 4:2:0 planar 12-bits
6933
6934 @item yuv422p
6935 YUV 4:2:2 planar 8-bits
6936
6937 @item yuv422p10
6938 YUV 4:2:2 planar 10-bits
6939
6940 @item yuv422p12
6941 YUV 4:2:2 planar 12-bits
6942
6943 @item yuv444p
6944 YUV 4:4:4 planar 8-bits
6945
6946 @item yuv444p10
6947 YUV 4:4:4 planar 10-bits
6948
6949 @item yuv444p12
6950 YUV 4:4:4 planar 12-bits
6951
6952 @end table
6953
6954 @item fast
6955 Do a fast conversion, which skips gamma/primary correction. This will take
6956 significantly less CPU, but will be mathematically incorrect. To get output
6957 compatible with that produced by the colormatrix filter, use fast=1.
6958
6959 @item dither
6960 Specify dithering mode.
6961
6962 The accepted values are:
6963 @table @samp
6964 @item none
6965 No dithering
6966
6967 @item fsb
6968 Floyd-Steinberg dithering
6969 @end table
6970
6971 @item wpadapt
6972 Whitepoint adaptation mode.
6973
6974 The accepted values are:
6975 @table @samp
6976 @item bradford
6977 Bradford whitepoint adaptation
6978
6979 @item vonkries
6980 von Kries whitepoint adaptation
6981
6982 @item identity
6983 identity whitepoint adaptation (i.e. no whitepoint adaptation)
6984 @end table
6985
6986 @item iall
6987 Override all input properties at once. Same accepted values as @ref{all}.
6988
6989 @item ispace
6990 Override input colorspace. Same accepted values as @ref{space}.
6991
6992 @item iprimaries
6993 Override input color primaries. Same accepted values as @ref{primaries}.
6994
6995 @item itrc
6996 Override input transfer characteristics. Same accepted values as @ref{trc}.
6997
6998 @item irange
6999 Override input color range. Same accepted values as @ref{range}.
7000
7001 @end table
7002
7003 The filter converts the transfer characteristics, color space and color
7004 primaries to the specified user values. The output value, if not specified,
7005 is set to a default value based on the "all" property. If that property is
7006 also not specified, the filter will log an error. The output color range and
7007 format default to the same value as the input color range and format. The
7008 input transfer characteristics, color space, color primaries and color range
7009 should be set on the input data. If any of these are missing, the filter will
7010 log an error and no conversion will take place.
7011
7012 For example to convert the input to SMPTE-240M, use the command:
7013 @example
7014 colorspace=smpte240m
7015 @end example
7016
7017 @section convolution
7018
7019 Apply convolution of 3x3, 5x5, 7x7 or horizontal/vertical up to 49 elements.
7020
7021 The filter accepts the following options:
7022
7023 @table @option
7024 @item 0m
7025 @item 1m
7026 @item 2m
7027 @item 3m
7028 Set matrix for each plane.
7029 Matrix is sequence of 9, 25 or 49 signed integers in @var{square} mode,
7030 and from 1 to 49 odd number of signed integers in @var{row} mode.
7031
7032 @item 0rdiv
7033 @item 1rdiv
7034 @item 2rdiv
7035 @item 3rdiv
7036 Set multiplier for calculated value for each plane.
7037 If unset or 0, it will be sum of all matrix elements.
7038
7039 @item 0bias
7040 @item 1bias
7041 @item 2bias
7042 @item 3bias
7043 Set bias for each plane. This value is added to the result of the multiplication.
7044 Useful for making the overall image brighter or darker. Default is 0.0.
7045
7046 @item 0mode
7047 @item 1mode
7048 @item 2mode
7049 @item 3mode
7050 Set matrix mode for each plane. Can be @var{square}, @var{row} or @var{column}.
7051 Default is @var{square}.
7052 @end table
7053
7054 @subsection Examples
7055
7056 @itemize
7057 @item
7058 Apply sharpen:
7059 @example
7060 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"
7061 @end example
7062
7063 @item
7064 Apply blur:
7065 @example
7066 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"
7067 @end example
7068
7069 @item
7070 Apply edge enhance:
7071 @example
7072 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"
7073 @end example
7074
7075 @item
7076 Apply edge detect:
7077 @example
7078 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"
7079 @end example
7080
7081 @item
7082 Apply laplacian edge detector which includes diagonals:
7083 @example
7084 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"
7085 @end example
7086
7087 @item
7088 Apply emboss:
7089 @example
7090 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"
7091 @end example
7092 @end itemize
7093
7094 @section convolve
7095
7096 Apply 2D convolution of video stream in frequency domain using second stream
7097 as impulse.
7098
7099 The filter accepts the following options:
7100
7101 @table @option
7102 @item planes
7103 Set which planes to process.
7104
7105 @item impulse
7106 Set which impulse video frames will be processed, can be @var{first}
7107 or @var{all}. Default is @var{all}.
7108 @end table
7109
7110 The @code{convolve} filter also supports the @ref{framesync} options.
7111
7112 @section copy
7113
7114 Copy the input video source unchanged to the output. This is mainly useful for
7115 testing purposes.
7116
7117 @anchor{coreimage}
7118 @section coreimage
7119 Video filtering on GPU using Apple's CoreImage API on OSX.
7120
7121 Hardware acceleration is based on an OpenGL context. Usually, this means it is
7122 processed by video hardware. However, software-based OpenGL implementations
7123 exist which means there is no guarantee for hardware processing. It depends on
7124 the respective OSX.
7125
7126 There are many filters and image generators provided by Apple that come with a
7127 large variety of options. The filter has to be referenced by its name along
7128 with its options.
7129
7130 The coreimage filter accepts the following options:
7131 @table @option
7132 @item list_filters
7133 List all available filters and generators along with all their respective
7134 options as well as possible minimum and maximum values along with the default
7135 values.
7136 @example
7137 list_filters=true
7138 @end example
7139
7140 @item filter
7141 Specify all filters by their respective name and options.
7142 Use @var{list_filters} to determine all valid filter names and options.
7143 Numerical options are specified by a float value and are automatically clamped
7144 to their respective value range.  Vector and color options have to be specified
7145 by a list of space separated float values. Character escaping has to be done.
7146 A special option name @code{default} is available to use default options for a
7147 filter.
7148
7149 It is required to specify either @code{default} or at least one of the filter options.
7150 All omitted options are used with their default values.
7151 The syntax of the filter string is as follows:
7152 @example
7153 filter=<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...][#<NAME>@@<OPTION>=<VALUE>[@@<OPTION>=<VALUE>][@@...]][#...]
7154 @end example
7155
7156 @item output_rect
7157 Specify a rectangle where the output of the filter chain is copied into the
7158 input image. It is given by a list of space separated float values:
7159 @example
7160 output_rect=x\ y\ width\ height
7161 @end example
7162 If not given, the output rectangle equals the dimensions of the input image.
7163 The output rectangle is automatically cropped at the borders of the input
7164 image. Negative values are valid for each component.
7165 @example
7166 output_rect=25\ 25\ 100\ 100
7167 @end example
7168 @end table
7169
7170 Several filters can be chained for successive processing without GPU-HOST
7171 transfers allowing for fast processing of complex filter chains.
7172 Currently, only filters with zero (generators) or exactly one (filters) input
7173 image and one output image are supported. Also, transition filters are not yet
7174 usable as intended.
7175
7176 Some filters generate output images with additional padding depending on the
7177 respective filter kernel. The padding is automatically removed to ensure the
7178 filter output has the same size as the input image.
7179
7180 For image generators, the size of the output image is determined by the
7181 previous output image of the filter chain or the input image of the whole
7182 filterchain, respectively. The generators do not use the pixel information of
7183 this image to generate their output. However, the generated output is
7184 blended onto this image, resulting in partial or complete coverage of the
7185 output image.
7186
7187 The @ref{coreimagesrc} video source can be used for generating input images
7188 which are directly fed into the filter chain. By using it, providing input
7189 images by another video source or an input video is not required.
7190
7191 @subsection Examples
7192
7193 @itemize
7194
7195 @item
7196 List all filters available:
7197 @example
7198 coreimage=list_filters=true
7199 @end example
7200
7201 @item
7202 Use the CIBoxBlur filter with default options to blur an image:
7203 @example
7204 coreimage=filter=CIBoxBlur@@default
7205 @end example
7206
7207 @item
7208 Use a filter chain with CISepiaTone at default values and CIVignetteEffect with
7209 its center at 100x100 and a radius of 50 pixels:
7210 @example
7211 coreimage=filter=CIBoxBlur@@default#CIVignetteEffect@@inputCenter=100\ 100@@inputRadius=50
7212 @end example
7213
7214 @item
7215 Use nullsrc and CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
7216 given as complete and escaped command-line for Apple's standard bash shell:
7217 @example
7218 ffmpeg -f lavfi -i nullsrc=s=100x100,coreimage=filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
7219 @end example
7220 @end itemize
7221
7222 @section crop
7223
7224 Crop the input video to given dimensions.
7225
7226 It accepts the following parameters:
7227
7228 @table @option
7229 @item w, out_w
7230 The width of the output video. It defaults to @code{iw}.
7231 This expression is evaluated only once during the filter
7232 configuration, or when the @samp{w} or @samp{out_w} command is sent.
7233
7234 @item h, out_h
7235 The height of the output video. It defaults to @code{ih}.
7236 This expression is evaluated only once during the filter
7237 configuration, or when the @samp{h} or @samp{out_h} command is sent.
7238
7239 @item x
7240 The horizontal position, in the input video, of the left edge of the output
7241 video. It defaults to @code{(in_w-out_w)/2}.
7242 This expression is evaluated per-frame.
7243
7244 @item y
7245 The vertical position, in the input video, of the top edge of the output video.
7246 It defaults to @code{(in_h-out_h)/2}.
7247 This expression is evaluated per-frame.
7248
7249 @item keep_aspect
7250 If set to 1 will force the output display aspect ratio
7251 to be the same of the input, by changing the output sample aspect
7252 ratio. It defaults to 0.
7253
7254 @item exact
7255 Enable exact cropping. If enabled, subsampled videos will be cropped at exact
7256 width/height/x/y as specified and will not be rounded to nearest smaller value.
7257 It defaults to 0.
7258 @end table
7259
7260 The @var{out_w}, @var{out_h}, @var{x}, @var{y} parameters are
7261 expressions containing the following constants:
7262
7263 @table @option
7264 @item x
7265 @item y
7266 The computed values for @var{x} and @var{y}. They are evaluated for
7267 each new frame.
7268
7269 @item in_w
7270 @item in_h
7271 The input width and height.
7272
7273 @item iw
7274 @item ih
7275 These are the same as @var{in_w} and @var{in_h}.
7276
7277 @item out_w
7278 @item out_h
7279 The output (cropped) width and height.
7280
7281 @item ow
7282 @item oh
7283 These are the same as @var{out_w} and @var{out_h}.
7284
7285 @item a
7286 same as @var{iw} / @var{ih}
7287
7288 @item sar
7289 input sample aspect ratio
7290
7291 @item dar
7292 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
7293
7294 @item hsub
7295 @item vsub
7296 horizontal and vertical chroma subsample values. For example for the
7297 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
7298
7299 @item n
7300 The number of the input frame, starting from 0.
7301
7302 @item pos
7303 the position in the file of the input frame, NAN if unknown
7304
7305 @item t
7306 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
7307
7308 @end table
7309
7310 The expression for @var{out_w} may depend on the value of @var{out_h},
7311 and the expression for @var{out_h} may depend on @var{out_w}, but they
7312 cannot depend on @var{x} and @var{y}, as @var{x} and @var{y} are
7313 evaluated after @var{out_w} and @var{out_h}.
7314
7315 The @var{x} and @var{y} parameters specify the expressions for the
7316 position of the top-left corner of the output (non-cropped) area. They
7317 are evaluated for each frame. If the evaluated value is not valid, it
7318 is approximated to the nearest valid value.
7319
7320 The expression for @var{x} may depend on @var{y}, and the expression
7321 for @var{y} may depend on @var{x}.
7322
7323 @subsection Examples
7324
7325 @itemize
7326 @item
7327 Crop area with size 100x100 at position (12,34).
7328 @example
7329 crop=100:100:12:34
7330 @end example
7331
7332 Using named options, the example above becomes:
7333 @example
7334 crop=w=100:h=100:x=12:y=34
7335 @end example
7336
7337 @item
7338 Crop the central input area with size 100x100:
7339 @example
7340 crop=100:100
7341 @end example
7342
7343 @item
7344 Crop the central input area with size 2/3 of the input video:
7345 @example
7346 crop=2/3*in_w:2/3*in_h
7347 @end example
7348
7349 @item
7350 Crop the input video central square:
7351 @example
7352 crop=out_w=in_h
7353 crop=in_h
7354 @end example
7355
7356 @item
7357 Delimit the rectangle with the top-left corner placed at position
7358 100:100 and the right-bottom corner corresponding to the right-bottom
7359 corner of the input image.
7360 @example
7361 crop=in_w-100:in_h-100:100:100
7362 @end example
7363
7364 @item
7365 Crop 10 pixels from the left and right borders, and 20 pixels from
7366 the top and bottom borders
7367 @example
7368 crop=in_w-2*10:in_h-2*20
7369 @end example
7370
7371 @item
7372 Keep only the bottom right quarter of the input image:
7373 @example
7374 crop=in_w/2:in_h/2:in_w/2:in_h/2
7375 @end example
7376
7377 @item
7378 Crop height for getting Greek harmony:
7379 @example
7380 crop=in_w:1/PHI*in_w
7381 @end example
7382
7383 @item
7384 Apply trembling effect:
7385 @example
7386 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)
7387 @end example
7388
7389 @item
7390 Apply erratic camera effect depending on timestamp:
7391 @example
7392 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)"
7393 @end example
7394
7395 @item
7396 Set x depending on the value of y:
7397 @example
7398 crop=in_w/2:in_h/2:y:10+10*sin(n/10)
7399 @end example
7400 @end itemize
7401
7402 @subsection Commands
7403
7404 This filter supports the following commands:
7405 @table @option
7406 @item w, out_w
7407 @item h, out_h
7408 @item x
7409 @item y
7410 Set width/height of the output video and the horizontal/vertical position
7411 in the input video.
7412 The command accepts the same syntax of the corresponding option.
7413
7414 If the specified expression is not valid, it is kept at its current
7415 value.
7416 @end table
7417
7418 @section cropdetect
7419
7420 Auto-detect the crop size.
7421
7422 It calculates the necessary cropping parameters and prints the
7423 recommended parameters via the logging system. The detected dimensions
7424 correspond to the non-black area of the input video.
7425
7426 It accepts the following parameters:
7427
7428 @table @option
7429
7430 @item limit
7431 Set higher black value threshold, which can be optionally specified
7432 from nothing (0) to everything (255 for 8-bit based formats). An intensity
7433 value greater to the set value is considered non-black. It defaults to 24.
7434 You can also specify a value between 0.0 and 1.0 which will be scaled depending
7435 on the bitdepth of the pixel format.
7436
7437 @item round
7438 The value which the width/height should be divisible by. It defaults to
7439 16. The offset is automatically adjusted to center the video. Use 2 to
7440 get only even dimensions (needed for 4:2:2 video). 16 is best when
7441 encoding to most video codecs.
7442
7443 @item reset_count, reset
7444 Set the counter that determines after how many frames cropdetect will
7445 reset the previously detected largest video area and start over to
7446 detect the current optimal crop area. Default value is 0.
7447
7448 This can be useful when channel logos distort the video area. 0
7449 indicates 'never reset', and returns the largest area encountered during
7450 playback.
7451 @end table
7452
7453 @anchor{cue}
7454 @section cue
7455
7456 Delay video filtering until a given wallclock timestamp. The filter first
7457 passes on @option{preroll} amount of frames, then it buffers at most
7458 @option{buffer} amount of frames and waits for the cue. After reaching the cue
7459 it forwards the buffered frames and also any subsequent frames coming in its
7460 input.
7461
7462 The filter can be used synchronize the output of multiple ffmpeg processes for
7463 realtime output devices like decklink. By putting the delay in the filtering
7464 chain and pre-buffering frames the process can pass on data to output almost
7465 immediately after the target wallclock timestamp is reached.
7466
7467 Perfect frame accuracy cannot be guaranteed, but the result is good enough for
7468 some use cases.
7469
7470 @table @option
7471
7472 @item cue
7473 The cue timestamp expressed in a UNIX timestamp in microseconds. Default is 0.
7474
7475 @item preroll
7476 The duration of content to pass on as preroll expressed in seconds. Default is 0.
7477
7478 @item buffer
7479 The maximum duration of content to buffer before waiting for the cue expressed
7480 in seconds. Default is 0.
7481
7482 @end table
7483
7484 @anchor{curves}
7485 @section curves
7486
7487 Apply color adjustments using curves.
7488
7489 This filter is similar to the Adobe Photoshop and GIMP curves tools. Each
7490 component (red, green and blue) has its values defined by @var{N} key points
7491 tied from each other using a smooth curve. The x-axis represents the pixel
7492 values from the input frame, and the y-axis the new pixel values to be set for
7493 the output frame.
7494
7495 By default, a component curve is defined by the two points @var{(0;0)} and
7496 @var{(1;1)}. This creates a straight line where each original pixel value is
7497 "adjusted" to its own value, which means no change to the image.
7498
7499 The filter allows you to redefine these two points and add some more. A new
7500 curve (using a natural cubic spline interpolation) will be define to pass
7501 smoothly through all these new coordinates. The new defined points needs to be
7502 strictly increasing over the x-axis, and their @var{x} and @var{y} values must
7503 be in the @var{[0;1]} interval.  If the computed curves happened to go outside
7504 the vector spaces, the values will be clipped accordingly.
7505
7506 The filter accepts the following options:
7507
7508 @table @option
7509 @item preset
7510 Select one of the available color presets. This option can be used in addition
7511 to the @option{r}, @option{g}, @option{b} parameters; in this case, the later
7512 options takes priority on the preset values.
7513 Available presets are:
7514 @table @samp
7515 @item none
7516 @item color_negative
7517 @item cross_process
7518 @item darker
7519 @item increase_contrast
7520 @item lighter
7521 @item linear_contrast
7522 @item medium_contrast
7523 @item negative
7524 @item strong_contrast
7525 @item vintage
7526 @end table
7527 Default is @code{none}.
7528 @item master, m
7529 Set the master key points. These points will define a second pass mapping. It
7530 is sometimes called a "luminance" or "value" mapping. It can be used with
7531 @option{r}, @option{g}, @option{b} or @option{all} since it acts like a
7532 post-processing LUT.
7533 @item red, r
7534 Set the key points for the red component.
7535 @item green, g
7536 Set the key points for the green component.
7537 @item blue, b
7538 Set the key points for the blue component.
7539 @item all
7540 Set the key points for all components (not including master).
7541 Can be used in addition to the other key points component
7542 options. In this case, the unset component(s) will fallback on this
7543 @option{all} setting.
7544 @item psfile
7545 Specify a Photoshop curves file (@code{.acv}) to import the settings from.
7546 @item plot
7547 Save Gnuplot script of the curves in specified file.
7548 @end table
7549
7550 To avoid some filtergraph syntax conflicts, each key points list need to be
7551 defined using the following syntax: @code{x0/y0 x1/y1 x2/y2 ...}.
7552
7553 @subsection Examples
7554
7555 @itemize
7556 @item
7557 Increase slightly the middle level of blue:
7558 @example
7559 curves=blue='0/0 0.5/0.58 1/1'
7560 @end example
7561
7562 @item
7563 Vintage effect:
7564 @example
7565 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'
7566 @end example
7567 Here we obtain the following coordinates for each components:
7568 @table @var
7569 @item red
7570 @code{(0;0.11) (0.42;0.51) (1;0.95)}
7571 @item green
7572 @code{(0;0) (0.50;0.48) (1;1)}
7573 @item blue
7574 @code{(0;0.22) (0.49;0.44) (1;0.80)}
7575 @end table
7576
7577 @item
7578 The previous example can also be achieved with the associated built-in preset:
7579 @example
7580 curves=preset=vintage
7581 @end example
7582
7583 @item
7584 Or simply:
7585 @example
7586 curves=vintage
7587 @end example
7588
7589 @item
7590 Use a Photoshop preset and redefine the points of the green component:
7591 @example
7592 curves=psfile='MyCurvesPresets/purple.acv':green='0/0 0.45/0.53 1/1'
7593 @end example
7594
7595 @item
7596 Check out the curves of the @code{cross_process} profile using @command{ffmpeg}
7597 and @command{gnuplot}:
7598 @example
7599 ffmpeg -f lavfi -i color -vf curves=cross_process:plot=/tmp/curves.plt -frames:v 1 -f null -
7600 gnuplot -p /tmp/curves.plt
7601 @end example
7602 @end itemize
7603
7604 @section datascope
7605
7606 Video data analysis filter.
7607
7608 This filter shows hexadecimal pixel values of part of video.
7609
7610 The filter accepts the following options:
7611
7612 @table @option
7613 @item size, s
7614 Set output video size.
7615
7616 @item x
7617 Set x offset from where to pick pixels.
7618
7619 @item y
7620 Set y offset from where to pick pixels.
7621
7622 @item mode
7623 Set scope mode, can be one of the following:
7624 @table @samp
7625 @item mono
7626 Draw hexadecimal pixel values with white color on black background.
7627
7628 @item color
7629 Draw hexadecimal pixel values with input video pixel color on black
7630 background.
7631
7632 @item color2
7633 Draw hexadecimal pixel values on color background picked from input video,
7634 the text color is picked in such way so its always visible.
7635 @end table
7636
7637 @item axis
7638 Draw rows and columns numbers on left and top of video.
7639
7640 @item opacity
7641 Set background opacity.
7642 @end table
7643
7644 @section dctdnoiz
7645
7646 Denoise frames using 2D DCT (frequency domain filtering).
7647
7648 This filter is not designed for real time.
7649
7650 The filter accepts the following options:
7651
7652 @table @option
7653 @item sigma, s
7654 Set the noise sigma constant.
7655
7656 This @var{sigma} defines a hard threshold of @code{3 * sigma}; every DCT
7657 coefficient (absolute value) below this threshold with be dropped.
7658
7659 If you need a more advanced filtering, see @option{expr}.
7660
7661 Default is @code{0}.
7662
7663 @item overlap
7664 Set number overlapping pixels for each block. Since the filter can be slow, you
7665 may want to reduce this value, at the cost of a less effective filter and the
7666 risk of various artefacts.
7667
7668 If the overlapping value doesn't permit processing the whole input width or
7669 height, a warning will be displayed and according borders won't be denoised.
7670
7671 Default value is @var{blocksize}-1, which is the best possible setting.
7672
7673 @item expr, e
7674 Set the coefficient factor expression.
7675
7676 For each coefficient of a DCT block, this expression will be evaluated as a
7677 multiplier value for the coefficient.
7678
7679 If this is option is set, the @option{sigma} option will be ignored.
7680
7681 The absolute value of the coefficient can be accessed through the @var{c}
7682 variable.
7683
7684 @item n
7685 Set the @var{blocksize} using the number of bits. @code{1<<@var{n}} defines the
7686 @var{blocksize}, which is the width and height of the processed blocks.
7687
7688 The default value is @var{3} (8x8) and can be raised to @var{4} for a
7689 @var{blocksize} of 16x16. Note that changing this setting has huge consequences
7690 on the speed processing. Also, a larger block size does not necessarily means a
7691 better de-noising.
7692 @end table
7693
7694 @subsection Examples
7695
7696 Apply a denoise with a @option{sigma} of @code{4.5}:
7697 @example
7698 dctdnoiz=4.5
7699 @end example
7700
7701 The same operation can be achieved using the expression system:
7702 @example
7703 dctdnoiz=e='gte(c, 4.5*3)'
7704 @end example
7705
7706 Violent denoise using a block size of @code{16x16}:
7707 @example
7708 dctdnoiz=15:n=4
7709 @end example
7710
7711 @section deband
7712
7713 Remove banding artifacts from input video.
7714 It works by replacing banded pixels with average value of referenced pixels.
7715
7716 The filter accepts the following options:
7717
7718 @table @option
7719 @item 1thr
7720 @item 2thr
7721 @item 3thr
7722 @item 4thr
7723 Set banding detection threshold for each plane. Default is 0.02.
7724 Valid range is 0.00003 to 0.5.
7725 If difference between current pixel and reference pixel is less than threshold,
7726 it will be considered as banded.
7727
7728 @item range, r
7729 Banding detection range in pixels. Default is 16. If positive, random number
7730 in range 0 to set value will be used. If negative, exact absolute value
7731 will be used.
7732 The range defines square of four pixels around current pixel.
7733
7734 @item direction, d
7735 Set direction in radians from which four pixel will be compared. If positive,
7736 random direction from 0 to set direction will be picked. If negative, exact of
7737 absolute value will be picked. For example direction 0, -PI or -2*PI radians
7738 will pick only pixels on same row and -PI/2 will pick only pixels on same
7739 column.
7740
7741 @item blur, b
7742 If enabled, current pixel is compared with average value of all four
7743 surrounding pixels. The default is enabled. If disabled current pixel is
7744 compared with all four surrounding pixels. The pixel is considered banded
7745 if only all four differences with surrounding pixels are less than threshold.
7746
7747 @item coupling, c
7748 If enabled, current pixel is changed if and only if all pixel components are banded,
7749 e.g. banding detection threshold is triggered for all color components.
7750 The default is disabled.
7751 @end table
7752
7753 @section deblock
7754
7755 Remove blocking artifacts from input video.
7756
7757 The filter accepts the following options:
7758
7759 @table @option
7760 @item filter
7761 Set filter type, can be @var{weak} or @var{strong}. Default is @var{strong}.
7762 This controls what kind of deblocking is applied.
7763
7764 @item block
7765 Set size of block, allowed range is from 4 to 512. Default is @var{8}.
7766
7767 @item alpha
7768 @item beta
7769 @item gamma
7770 @item delta
7771 Set blocking detection thresholds. Allowed range is 0 to 1.
7772 Defaults are: @var{0.098} for @var{alpha} and @var{0.05} for the rest.
7773 Using higher threshold gives more deblocking strength.
7774 Setting @var{alpha} controls threshold detection at exact edge of block.
7775 Remaining options controls threshold detection near the edge. Each one for
7776 below/above or left/right. Setting any of those to @var{0} disables
7777 deblocking.
7778
7779 @item planes
7780 Set planes to filter. Default is to filter all available planes.
7781 @end table
7782
7783 @subsection Examples
7784
7785 @itemize
7786 @item
7787 Deblock using weak filter and block size of 4 pixels.
7788 @example
7789 deblock=filter=weak:block=4
7790 @end example
7791
7792 @item
7793 Deblock using strong filter, block size of 4 pixels and custom thresholds for
7794 deblocking more edges.
7795 @example
7796 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05
7797 @end example
7798
7799 @item
7800 Similar as above, but filter only first plane.
7801 @example
7802 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=1
7803 @end example
7804
7805 @item
7806 Similar as above, but filter only second and third plane.
7807 @example
7808 deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=6
7809 @end example
7810 @end itemize
7811
7812 @anchor{decimate}
7813 @section decimate
7814
7815 Drop duplicated frames at regular intervals.
7816
7817 The filter accepts the following options:
7818
7819 @table @option
7820 @item cycle
7821 Set the number of frames from which one will be dropped. Setting this to
7822 @var{N} means one frame in every batch of @var{N} frames will be dropped.
7823 Default is @code{5}.
7824
7825 @item dupthresh
7826 Set the threshold for duplicate detection. If the difference metric for a frame
7827 is less than or equal to this value, then it is declared as duplicate. Default
7828 is @code{1.1}
7829
7830 @item scthresh
7831 Set scene change threshold. Default is @code{15}.
7832
7833 @item blockx
7834 @item blocky
7835 Set the size of the x and y-axis blocks used during metric calculations.
7836 Larger blocks give better noise suppression, but also give worse detection of
7837 small movements. Must be a power of two. Default is @code{32}.
7838
7839 @item ppsrc
7840 Mark main input as a pre-processed input and activate clean source input
7841 stream. This allows the input to be pre-processed with various filters to help
7842 the metrics calculation while keeping the frame selection lossless. When set to
7843 @code{1}, the first stream is for the pre-processed input, and the second
7844 stream is the clean source from where the kept frames are chosen. Default is
7845 @code{0}.
7846
7847 @item chroma
7848 Set whether or not chroma is considered in the metric calculations. Default is
7849 @code{1}.
7850 @end table
7851
7852 @section deconvolve
7853
7854 Apply 2D deconvolution of video stream in frequency domain using second stream
7855 as impulse.
7856
7857 The filter accepts the following options:
7858
7859 @table @option
7860 @item planes
7861 Set which planes to process.
7862
7863 @item impulse
7864 Set which impulse video frames will be processed, can be @var{first}
7865 or @var{all}. Default is @var{all}.
7866
7867 @item noise
7868 Set noise when doing divisions. Default is @var{0.0000001}. Useful when width
7869 and height are not same and not power of 2 or if stream prior to convolving
7870 had noise.
7871 @end table
7872
7873 The @code{deconvolve} filter also supports the @ref{framesync} options.
7874
7875 @section dedot
7876
7877 Reduce cross-luminance (dot-crawl) and cross-color (rainbows) from video.
7878
7879 It accepts the following options:
7880
7881 @table @option
7882 @item m
7883 Set mode of operation. Can be combination of @var{dotcrawl} for cross-luminance reduction and/or
7884 @var{rainbows} for cross-color reduction.
7885
7886 @item lt
7887 Set spatial luma threshold. Lower values increases reduction of cross-luminance.
7888
7889 @item tl
7890 Set tolerance for temporal luma. Higher values increases reduction of cross-luminance.
7891
7892 @item tc
7893 Set tolerance for chroma temporal variation. Higher values increases reduction of cross-color.
7894
7895 @item ct
7896 Set temporal chroma threshold. Lower values increases reduction of cross-color.
7897 @end table
7898
7899 @section deflate
7900
7901 Apply deflate effect to the video.
7902
7903 This filter replaces the pixel by the local(3x3) average by taking into account
7904 only values lower than the pixel.
7905
7906 It accepts the following options:
7907
7908 @table @option
7909 @item threshold0
7910 @item threshold1
7911 @item threshold2
7912 @item threshold3
7913 Limit the maximum change for each plane, default is 65535.
7914 If 0, plane will remain unchanged.
7915 @end table
7916
7917 @section deflicker
7918
7919 Remove temporal frame luminance variations.
7920
7921 It accepts the following options:
7922
7923 @table @option
7924 @item size, s
7925 Set moving-average filter size in frames. Default is 5. Allowed range is 2 - 129.
7926
7927 @item mode, m
7928 Set averaging mode to smooth temporal luminance variations.
7929
7930 Available values are:
7931 @table @samp
7932 @item am
7933 Arithmetic mean
7934
7935 @item gm
7936 Geometric mean
7937
7938 @item hm
7939 Harmonic mean
7940
7941 @item qm
7942 Quadratic mean
7943
7944 @item cm
7945 Cubic mean
7946
7947 @item pm
7948 Power mean
7949
7950 @item median
7951 Median
7952 @end table
7953
7954 @item bypass
7955 Do not actually modify frame. Useful when one only wants metadata.
7956 @end table
7957
7958 @section dejudder
7959
7960 Remove judder produced by partially interlaced telecined content.
7961
7962 Judder can be introduced, for instance, by @ref{pullup} filter. If the original
7963 source was partially telecined content then the output of @code{pullup,dejudder}
7964 will have a variable frame rate. May change the recorded frame rate of the
7965 container. Aside from that change, this filter will not affect constant frame
7966 rate video.
7967
7968 The option available in this filter is:
7969 @table @option
7970
7971 @item cycle
7972 Specify the length of the window over which the judder repeats.
7973
7974 Accepts any integer greater than 1. Useful values are:
7975 @table @samp
7976
7977 @item 4
7978 If the original was telecined from 24 to 30 fps (Film to NTSC).
7979
7980 @item 5
7981 If the original was telecined from 25 to 30 fps (PAL to NTSC).
7982
7983 @item 20
7984 If a mixture of the two.
7985 @end table
7986
7987 The default is @samp{4}.
7988 @end table
7989
7990 @section delogo
7991
7992 Suppress a TV station logo by a simple interpolation of the surrounding
7993 pixels. Just set a rectangle covering the logo and watch it disappear
7994 (and sometimes something even uglier appear - your mileage may vary).
7995
7996 It accepts the following parameters:
7997 @table @option
7998
7999 @item x
8000 @item y
8001 Specify the top left corner coordinates of the logo. They must be
8002 specified.
8003
8004 @item w
8005 @item h
8006 Specify the width and height of the logo to clear. They must be
8007 specified.
8008
8009 @item band, t
8010 Specify the thickness of the fuzzy edge of the rectangle (added to
8011 @var{w} and @var{h}). The default value is 1. This option is
8012 deprecated, setting higher values should no longer be necessary and
8013 is not recommended.
8014
8015 @item show
8016 When set to 1, a green rectangle is drawn on the screen to simplify
8017 finding the right @var{x}, @var{y}, @var{w}, and @var{h} parameters.
8018 The default value is 0.
8019
8020 The rectangle is drawn on the outermost pixels which will be (partly)
8021 replaced with interpolated values. The values of the next pixels
8022 immediately outside this rectangle in each direction will be used to
8023 compute the interpolated pixel values inside the rectangle.
8024
8025 @end table
8026
8027 @subsection Examples
8028
8029 @itemize
8030 @item
8031 Set a rectangle covering the area with top left corner coordinates 0,0
8032 and size 100x77, and a band of size 10:
8033 @example
8034 delogo=x=0:y=0:w=100:h=77:band=10
8035 @end example
8036
8037 @end itemize
8038
8039 @section deshake
8040
8041 Attempt to fix small changes in horizontal and/or vertical shift. This
8042 filter helps remove camera shake from hand-holding a camera, bumping a
8043 tripod, moving on a vehicle, etc.
8044
8045 The filter accepts the following options:
8046
8047 @table @option
8048
8049 @item x
8050 @item y
8051 @item w
8052 @item h
8053 Specify a rectangular area where to limit the search for motion
8054 vectors.
8055 If desired the search for motion vectors can be limited to a
8056 rectangular area of the frame defined by its top left corner, width
8057 and height. These parameters have the same meaning as the drawbox
8058 filter which can be used to visualise the position of the bounding
8059 box.
8060
8061 This is useful when simultaneous movement of subjects within the frame
8062 might be confused for camera motion by the motion vector search.
8063
8064 If any or all of @var{x}, @var{y}, @var{w} and @var{h} are set to -1
8065 then the full frame is used. This allows later options to be set
8066 without specifying the bounding box for the motion vector search.
8067
8068 Default - search the whole frame.
8069
8070 @item rx
8071 @item ry
8072 Specify the maximum extent of movement in x and y directions in the
8073 range 0-64 pixels. Default 16.
8074
8075 @item edge
8076 Specify how to generate pixels to fill blanks at the edge of the
8077 frame. Available values are:
8078 @table @samp
8079 @item blank, 0
8080 Fill zeroes at blank locations
8081 @item original, 1
8082 Original image at blank locations
8083 @item clamp, 2
8084 Extruded edge value at blank locations
8085 @item mirror, 3
8086 Mirrored edge at blank locations
8087 @end table
8088 Default value is @samp{mirror}.
8089
8090 @item blocksize
8091 Specify the blocksize to use for motion search. Range 4-128 pixels,
8092 default 8.
8093
8094 @item contrast
8095 Specify the contrast threshold for blocks. Only blocks with more than
8096 the specified contrast (difference between darkest and lightest
8097 pixels) will be considered. Range 1-255, default 125.
8098
8099 @item search
8100 Specify the search strategy. Available values are:
8101 @table @samp
8102 @item exhaustive, 0
8103 Set exhaustive search
8104 @item less, 1
8105 Set less exhaustive search.
8106 @end table
8107 Default value is @samp{exhaustive}.
8108
8109 @item filename
8110 If set then a detailed log of the motion search is written to the
8111 specified file.
8112
8113 @end table
8114
8115 @section despill
8116
8117 Remove unwanted contamination of foreground colors, caused by reflected color of
8118 greenscreen or bluescreen.
8119
8120 This filter accepts the following options:
8121
8122 @table @option
8123 @item type
8124 Set what type of despill to use.
8125
8126 @item mix
8127 Set how spillmap will be generated.
8128
8129 @item expand
8130 Set how much to get rid of still remaining spill.
8131
8132 @item red
8133 Controls amount of red in spill area.
8134
8135 @item green
8136 Controls amount of green in spill area.
8137 Should be -1 for greenscreen.
8138
8139 @item blue
8140 Controls amount of blue in spill area.
8141 Should be -1 for bluescreen.
8142
8143 @item brightness
8144 Controls brightness of spill area, preserving colors.
8145
8146 @item alpha
8147 Modify alpha from generated spillmap.
8148 @end table
8149
8150 @section detelecine
8151
8152 Apply an exact inverse of the telecine operation. It requires a predefined
8153 pattern specified using the pattern option which must be the same as that passed
8154 to the telecine filter.
8155
8156 This filter accepts the following options:
8157
8158 @table @option
8159 @item first_field
8160 @table @samp
8161 @item top, t
8162 top field first
8163 @item bottom, b
8164 bottom field first
8165 The default value is @code{top}.
8166 @end table
8167
8168 @item pattern
8169 A string of numbers representing the pulldown pattern you wish to apply.
8170 The default value is @code{23}.
8171
8172 @item start_frame
8173 A number representing position of the first frame with respect to the telecine
8174 pattern. This is to be used if the stream is cut. The default value is @code{0}.
8175 @end table
8176
8177 @section dilation
8178
8179 Apply dilation effect to the video.
8180
8181 This filter replaces the pixel by the local(3x3) maximum.
8182
8183 It accepts the following options:
8184
8185 @table @option
8186 @item threshold0
8187 @item threshold1
8188 @item threshold2
8189 @item threshold3
8190 Limit the maximum change for each plane, default is 65535.
8191 If 0, plane will remain unchanged.
8192
8193 @item coordinates
8194 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
8195 pixels are used.
8196
8197 Flags to local 3x3 coordinates maps like this:
8198
8199     1 2 3
8200     4   5
8201     6 7 8
8202 @end table
8203
8204 @section displace
8205
8206 Displace pixels as indicated by second and third input stream.
8207
8208 It takes three input streams and outputs one stream, the first input is the
8209 source, and second and third input are displacement maps.
8210
8211 The second input specifies how much to displace pixels along the
8212 x-axis, while the third input specifies how much to displace pixels
8213 along the y-axis.
8214 If one of displacement map streams terminates, last frame from that
8215 displacement map will be used.
8216
8217 Note that once generated, displacements maps can be reused over and over again.
8218
8219 A description of the accepted options follows.
8220
8221 @table @option
8222 @item edge
8223 Set displace behavior for pixels that are out of range.
8224
8225 Available values are:
8226 @table @samp
8227 @item blank
8228 Missing pixels are replaced by black pixels.
8229
8230 @item smear
8231 Adjacent pixels will spread out to replace missing pixels.
8232
8233 @item wrap
8234 Out of range pixels are wrapped so they point to pixels of other side.
8235
8236 @item mirror
8237 Out of range pixels will be replaced with mirrored pixels.
8238 @end table
8239 Default is @samp{smear}.
8240
8241 @end table
8242
8243 @subsection Examples
8244
8245 @itemize
8246 @item
8247 Add ripple effect to rgb input of video size hd720:
8248 @example
8249 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
8250 @end example
8251
8252 @item
8253 Add wave effect to rgb input of video size hd720:
8254 @example
8255 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
8256 @end example
8257 @end itemize
8258
8259 @section drawbox
8260
8261 Draw a colored box on the input image.
8262
8263 It accepts the following parameters:
8264
8265 @table @option
8266 @item x
8267 @item y
8268 The expressions which specify the top left corner coordinates of the box. It defaults to 0.
8269
8270 @item width, w
8271 @item height, h
8272 The expressions which specify the width and height of the box; if 0 they are interpreted as
8273 the input width and height. It defaults to 0.
8274
8275 @item color, c
8276 Specify the color of the box to write. For the general syntax of this option,
8277 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
8278 value @code{invert} is used, the box edge color is the same as the
8279 video with inverted luma.
8280
8281 @item thickness, t
8282 The expression which sets the thickness of the box edge.
8283 A value of @code{fill} will create a filled box. Default value is @code{3}.
8284
8285 See below for the list of accepted constants.
8286
8287 @item replace
8288 Applicable if the input has alpha. With value @code{1}, the pixels of the painted box
8289 will overwrite the video's color and alpha pixels.
8290 Default is @code{0}, which composites the box onto the input, leaving the video's alpha intact.
8291 @end table
8292
8293 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
8294 following constants:
8295
8296 @table @option
8297 @item dar
8298 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
8299
8300 @item hsub
8301 @item vsub
8302 horizontal and vertical chroma subsample values. For example for the
8303 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
8304
8305 @item in_h, ih
8306 @item in_w, iw
8307 The input width and height.
8308
8309 @item sar
8310 The input sample aspect ratio.
8311
8312 @item x
8313 @item y
8314 The x and y offset coordinates where the box is drawn.
8315
8316 @item w
8317 @item h
8318 The width and height of the drawn box.
8319
8320 @item t
8321 The thickness of the drawn box.
8322
8323 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
8324 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
8325
8326 @end table
8327
8328 @subsection Examples
8329
8330 @itemize
8331 @item
8332 Draw a black box around the edge of the input image:
8333 @example
8334 drawbox
8335 @end example
8336
8337 @item
8338 Draw a box with color red and an opacity of 50%:
8339 @example
8340 drawbox=10:20:200:60:red@@0.5
8341 @end example
8342
8343 The previous example can be specified as:
8344 @example
8345 drawbox=x=10:y=20:w=200:h=60:color=red@@0.5
8346 @end example
8347
8348 @item
8349 Fill the box with pink color:
8350 @example
8351 drawbox=x=10:y=10:w=100:h=100:color=pink@@0.5:t=fill
8352 @end example
8353
8354 @item
8355 Draw a 2-pixel red 2.40:1 mask:
8356 @example
8357 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
8358 @end example
8359 @end itemize
8360
8361 @section drawgrid
8362
8363 Draw a grid on the input image.
8364
8365 It accepts the following parameters:
8366
8367 @table @option
8368 @item x
8369 @item y
8370 The expressions which specify the coordinates of some point of grid intersection (meant to configure offset). Both default to 0.
8371
8372 @item width, w
8373 @item height, h
8374 The expressions which specify the width and height of the grid cell, if 0 they are interpreted as the
8375 input width and height, respectively, minus @code{thickness}, so image gets
8376 framed. Default to 0.
8377
8378 @item color, c
8379 Specify the color of the grid. For the general syntax of this option,
8380 check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}. If the special
8381 value @code{invert} is used, the grid color is the same as the
8382 video with inverted luma.
8383
8384 @item thickness, t
8385 The expression which sets the thickness of the grid line. Default value is @code{1}.
8386
8387 See below for the list of accepted constants.
8388
8389 @item replace
8390 Applicable if the input has alpha. With @code{1} the pixels of the painted grid
8391 will overwrite the video's color and alpha pixels.
8392 Default is @code{0}, which composites the grid onto the input, leaving the video's alpha intact.
8393 @end table
8394
8395 The parameters for @var{x}, @var{y}, @var{w} and @var{h} and @var{t} are expressions containing the
8396 following constants:
8397
8398 @table @option
8399 @item dar
8400 The input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}.
8401
8402 @item hsub
8403 @item vsub
8404 horizontal and vertical chroma subsample values. For example for the
8405 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
8406
8407 @item in_h, ih
8408 @item in_w, iw
8409 The input grid cell width and height.
8410
8411 @item sar
8412 The input sample aspect ratio.
8413
8414 @item x
8415 @item y
8416 The x and y coordinates of some point of grid intersection (meant to configure offset).
8417
8418 @item w
8419 @item h
8420 The width and height of the drawn cell.
8421
8422 @item t
8423 The thickness of the drawn cell.
8424
8425 These constants allow the @var{x}, @var{y}, @var{w}, @var{h} and @var{t} expressions to refer to
8426 each other, so you may for example specify @code{y=x/dar} or @code{h=w/dar}.
8427
8428 @end table
8429
8430 @subsection Examples
8431
8432 @itemize
8433 @item
8434 Draw a grid with cell 100x100 pixels, thickness 2 pixels, with color red and an opacity of 50%:
8435 @example
8436 drawgrid=width=100:height=100:thickness=2:color=red@@0.5
8437 @end example
8438
8439 @item
8440 Draw a white 3x3 grid with an opacity of 50%:
8441 @example
8442 drawgrid=w=iw/3:h=ih/3:t=2:c=white@@0.5
8443 @end example
8444 @end itemize
8445
8446 @anchor{drawtext}
8447 @section drawtext
8448
8449 Draw a text string or text from a specified file on top of a video, using the
8450 libfreetype library.
8451
8452 To enable compilation of this filter, you need to configure FFmpeg with
8453 @code{--enable-libfreetype}.
8454 To enable default font fallback and the @var{font} option you need to
8455 configure FFmpeg with @code{--enable-libfontconfig}.
8456 To enable the @var{text_shaping} option, you need to configure FFmpeg with
8457 @code{--enable-libfribidi}.
8458
8459 @subsection Syntax
8460
8461 It accepts the following parameters:
8462
8463 @table @option
8464
8465 @item box
8466 Used to draw a box around text using the background color.
8467 The value must be either 1 (enable) or 0 (disable).
8468 The default value of @var{box} is 0.
8469
8470 @item boxborderw
8471 Set the width of the border to be drawn around the box using @var{boxcolor}.
8472 The default value of @var{boxborderw} is 0.
8473
8474 @item boxcolor
8475 The color to be used for drawing box around text. For the syntax of this
8476 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
8477
8478 The default value of @var{boxcolor} is "white".
8479
8480 @item line_spacing
8481 Set the line spacing in pixels of the border to be drawn around the box using @var{box}.
8482 The default value of @var{line_spacing} is 0.
8483
8484 @item borderw
8485 Set the width of the border to be drawn around the text using @var{bordercolor}.
8486 The default value of @var{borderw} is 0.
8487
8488 @item bordercolor
8489 Set the color to be used for drawing border around text. For the syntax of this
8490 option, check the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
8491
8492 The default value of @var{bordercolor} is "black".
8493
8494 @item expansion
8495 Select how the @var{text} is expanded. Can be either @code{none},
8496 @code{strftime} (deprecated) or
8497 @code{normal} (default). See the @ref{drawtext_expansion, Text expansion} section
8498 below for details.
8499
8500 @item basetime
8501 Set a start time for the count. Value is in microseconds. Only applied
8502 in the deprecated strftime expansion mode. To emulate in normal expansion
8503 mode use the @code{pts} function, supplying the start time (in seconds)
8504 as the second argument.
8505
8506 @item fix_bounds
8507 If true, check and fix text coords to avoid clipping.
8508
8509 @item fontcolor
8510 The color to be used for drawing fonts. For the syntax of this option, check
8511 the @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
8512
8513 The default value of @var{fontcolor} is "black".
8514
8515 @item fontcolor_expr
8516 String which is expanded the same way as @var{text} to obtain dynamic
8517 @var{fontcolor} value. By default this option has empty value and is not
8518 processed. When this option is set, it overrides @var{fontcolor} option.
8519
8520 @item font
8521 The font family to be used for drawing text. By default Sans.
8522
8523 @item fontfile
8524 The font file to be used for drawing text. The path must be included.
8525 This parameter is mandatory if the fontconfig support is disabled.
8526
8527 @item alpha
8528 Draw the text applying alpha blending. The value can
8529 be a number between 0.0 and 1.0.
8530 The expression accepts the same variables @var{x, y} as well.
8531 The default value is 1.
8532 Please see @var{fontcolor_expr}.
8533
8534 @item fontsize
8535 The font size to be used for drawing text.
8536 The default value of @var{fontsize} is 16.
8537
8538 @item text_shaping
8539 If set to 1, attempt to shape the text (for example, reverse the order of
8540 right-to-left text and join Arabic characters) before drawing it.
8541 Otherwise, just draw the text exactly as given.
8542 By default 1 (if supported).
8543
8544 @item ft_load_flags
8545 The flags to be used for loading the fonts.
8546
8547 The flags map the corresponding flags supported by libfreetype, and are
8548 a combination of the following values:
8549 @table @var
8550 @item default
8551 @item no_scale
8552 @item no_hinting
8553 @item render
8554 @item no_bitmap
8555 @item vertical_layout
8556 @item force_autohint
8557 @item crop_bitmap
8558 @item pedantic
8559 @item ignore_global_advance_width
8560 @item no_recurse
8561 @item ignore_transform
8562 @item monochrome
8563 @item linear_design
8564 @item no_autohint
8565 @end table
8566
8567 Default value is "default".
8568
8569 For more information consult the documentation for the FT_LOAD_*
8570 libfreetype flags.
8571
8572 @item shadowcolor
8573 The color to be used for drawing a shadow behind the drawn text. For the
8574 syntax of this option, check the @ref{color syntax,,"Color" section in the
8575 ffmpeg-utils manual,ffmpeg-utils}.
8576
8577 The default value of @var{shadowcolor} is "black".
8578
8579 @item shadowx
8580 @item shadowy
8581 The x and y offsets for the text shadow position with respect to the
8582 position of the text. They can be either positive or negative
8583 values. The default value for both is "0".
8584
8585 @item start_number
8586 The starting frame number for the n/frame_num variable. The default value
8587 is "0".
8588
8589 @item tabsize
8590 The size in number of spaces to use for rendering the tab.
8591 Default value is 4.
8592
8593 @item timecode
8594 Set the initial timecode representation in "hh:mm:ss[:;.]ff"
8595 format. It can be used with or without text parameter. @var{timecode_rate}
8596 option must be specified.
8597
8598 @item timecode_rate, rate, r
8599 Set the timecode frame rate (timecode only). Value will be rounded to nearest
8600 integer. Minimum value is "1".
8601 Drop-frame timecode is supported for frame rates 30 & 60.
8602
8603 @item tc24hmax
8604 If set to 1, the output of the timecode option will wrap around at 24 hours.
8605 Default is 0 (disabled).
8606
8607 @item text
8608 The text string to be drawn. The text must be a sequence of UTF-8
8609 encoded characters.
8610 This parameter is mandatory if no file is specified with the parameter
8611 @var{textfile}.
8612
8613 @item textfile
8614 A text file containing text to be drawn. The text must be a sequence
8615 of UTF-8 encoded characters.
8616
8617 This parameter is mandatory if no text string is specified with the
8618 parameter @var{text}.
8619
8620 If both @var{text} and @var{textfile} are specified, an error is thrown.
8621
8622 @item reload
8623 If set to 1, the @var{textfile} will be reloaded before each frame.
8624 Be sure to update it atomically, or it may be read partially, or even fail.
8625
8626 @item x
8627 @item y
8628 The expressions which specify the offsets where text will be drawn
8629 within the video frame. They are relative to the top/left border of the
8630 output image.
8631
8632 The default value of @var{x} and @var{y} is "0".
8633
8634 See below for the list of accepted constants and functions.
8635 @end table
8636
8637 The parameters for @var{x} and @var{y} are expressions containing the
8638 following constants and functions:
8639
8640 @table @option
8641 @item dar
8642 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
8643
8644 @item hsub
8645 @item vsub
8646 horizontal and vertical chroma subsample values. For example for the
8647 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
8648
8649 @item line_h, lh
8650 the height of each text line
8651
8652 @item main_h, h, H
8653 the input height
8654
8655 @item main_w, w, W
8656 the input width
8657
8658 @item max_glyph_a, ascent
8659 the maximum distance from the baseline to the highest/upper grid
8660 coordinate used to place a glyph outline point, for all the rendered
8661 glyphs.
8662 It is a positive value, due to the grid's orientation with the Y axis
8663 upwards.
8664
8665 @item max_glyph_d, descent
8666 the maximum distance from the baseline to the lowest grid coordinate
8667 used to place a glyph outline point, for all the rendered glyphs.
8668 This is a negative value, due to the grid's orientation, with the Y axis
8669 upwards.
8670
8671 @item max_glyph_h
8672 maximum glyph height, that is the maximum height for all the glyphs
8673 contained in the rendered text, it is equivalent to @var{ascent} -
8674 @var{descent}.
8675
8676 @item max_glyph_w
8677 maximum glyph width, that is the maximum width for all the glyphs
8678 contained in the rendered text
8679
8680 @item n
8681 the number of input frame, starting from 0
8682
8683 @item rand(min, max)
8684 return a random number included between @var{min} and @var{max}
8685
8686 @item sar
8687 The input sample aspect ratio.
8688
8689 @item t
8690 timestamp expressed in seconds, NAN if the input timestamp is unknown
8691
8692 @item text_h, th
8693 the height of the rendered text
8694
8695 @item text_w, tw
8696 the width of the rendered text
8697
8698 @item x
8699 @item y
8700 the x and y offset coordinates where the text is drawn.
8701
8702 These parameters allow the @var{x} and @var{y} expressions to refer
8703 each other, so you can for example specify @code{y=x/dar}.
8704 @end table
8705
8706 @anchor{drawtext_expansion}
8707 @subsection Text expansion
8708
8709 If @option{expansion} is set to @code{strftime},
8710 the filter recognizes strftime() sequences in the provided text and
8711 expands them accordingly. Check the documentation of strftime(). This
8712 feature is deprecated.
8713
8714 If @option{expansion} is set to @code{none}, the text is printed verbatim.
8715
8716 If @option{expansion} is set to @code{normal} (which is the default),
8717 the following expansion mechanism is used.
8718
8719 The backslash character @samp{\}, followed by any character, always expands to
8720 the second character.
8721
8722 Sequences of the form @code{%@{...@}} are expanded. The text between the
8723 braces is a function name, possibly followed by arguments separated by ':'.
8724 If the arguments contain special characters or delimiters (':' or '@}'),
8725 they should be escaped.
8726
8727 Note that they probably must also be escaped as the value for the
8728 @option{text} option in the filter argument string and as the filter
8729 argument in the filtergraph description, and possibly also for the shell,
8730 that makes up to four levels of escaping; using a text file avoids these
8731 problems.
8732
8733 The following functions are available:
8734
8735 @table @command
8736
8737 @item expr, e
8738 The expression evaluation result.
8739
8740 It must take one argument specifying the expression to be evaluated,
8741 which accepts the same constants and functions as the @var{x} and
8742 @var{y} values. Note that not all constants should be used, for
8743 example the text size is not known when evaluating the expression, so
8744 the constants @var{text_w} and @var{text_h} will have an undefined
8745 value.
8746
8747 @item expr_int_format, eif
8748 Evaluate the expression's value and output as formatted integer.
8749
8750 The first argument is the expression to be evaluated, just as for the @var{expr} function.
8751 The second argument specifies the output format. Allowed values are @samp{x},
8752 @samp{X}, @samp{d} and @samp{u}. They are treated exactly as in the
8753 @code{printf} function.
8754 The third parameter is optional and sets the number of positions taken by the output.
8755 It can be used to add padding with zeros from the left.
8756
8757 @item gmtime
8758 The time at which the filter is running, expressed in UTC.
8759 It can accept an argument: a strftime() format string.
8760
8761 @item localtime
8762 The time at which the filter is running, expressed in the local time zone.
8763 It can accept an argument: a strftime() format string.
8764
8765 @item metadata
8766 Frame metadata. Takes one or two arguments.
8767
8768 The first argument is mandatory and specifies the metadata key.
8769
8770 The second argument is optional and specifies a default value, used when the
8771 metadata key is not found or empty.
8772
8773 @item n, frame_num
8774 The frame number, starting from 0.
8775
8776 @item pict_type
8777 A 1 character description of the current picture type.
8778
8779 @item pts
8780 The timestamp of the current frame.
8781 It can take up to three arguments.
8782
8783 The first argument is the format of the timestamp; it defaults to @code{flt}
8784 for seconds as a decimal number with microsecond accuracy; @code{hms} stands
8785 for a formatted @var{[-]HH:MM:SS.mmm} timestamp with millisecond accuracy.
8786 @code{gmtime} stands for the timestamp of the frame formatted as UTC time;
8787 @code{localtime} stands for the timestamp of the frame formatted as
8788 local time zone time.
8789
8790 The second argument is an offset added to the timestamp.
8791
8792 If the format is set to @code{hms}, a third argument @code{24HH} may be
8793 supplied to present the hour part of the formatted timestamp in 24h format
8794 (00-23).
8795
8796 If the format is set to @code{localtime} or @code{gmtime},
8797 a third argument may be supplied: a strftime() format string.
8798 By default, @var{YYYY-MM-DD HH:MM:SS} format will be used.
8799 @end table
8800
8801 @subsection Examples
8802
8803 @itemize
8804 @item
8805 Draw "Test Text" with font FreeSerif, using the default values for the
8806 optional parameters.
8807
8808 @example
8809 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
8810 @end example
8811
8812 @item
8813 Draw 'Test Text' with font FreeSerif of size 24 at position x=100
8814 and y=50 (counting from the top-left corner of the screen), text is
8815 yellow with a red box around it. Both the text and the box have an
8816 opacity of 20%.
8817
8818 @example
8819 drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
8820           x=100: y=50: fontsize=24: fontcolor=yellow@@0.2: box=1: boxcolor=red@@0.2"
8821 @end example
8822
8823 Note that the double quotes are not necessary if spaces are not used
8824 within the parameter list.
8825
8826 @item
8827 Show the text at the center of the video frame:
8828 @example
8829 drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h)/2"
8830 @end example
8831
8832 @item
8833 Show the text at a random position, switching to a new position every 30 seconds:
8834 @example
8835 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)"
8836 @end example
8837
8838 @item
8839 Show a text line sliding from right to left in the last row of the video
8840 frame. The file @file{LONG_LINE} is assumed to contain a single line
8841 with no newlines.
8842 @example
8843 drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
8844 @end example
8845
8846 @item
8847 Show the content of file @file{CREDITS} off the bottom of the frame and scroll up.
8848 @example
8849 drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
8850 @end example
8851
8852 @item
8853 Draw a single green letter "g", at the center of the input video.
8854 The glyph baseline is placed at half screen height.
8855 @example
8856 drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
8857 @end example
8858
8859 @item
8860 Show text for 1 second every 3 seconds:
8861 @example
8862 drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'"
8863 @end example
8864
8865 @item
8866 Use fontconfig to set the font. Note that the colons need to be escaped.
8867 @example
8868 drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
8869 @end example
8870
8871 @item
8872 Print the date of a real-time encoding (see strftime(3)):
8873 @example
8874 drawtext='fontfile=FreeSans.ttf:text=%@{localtime\:%a %b %d %Y@}'
8875 @end example
8876
8877 @item
8878 Show text fading in and out (appearing/disappearing):
8879 @example
8880 #!/bin/sh
8881 DS=1.0 # display start
8882 DE=10.0 # display end
8883 FID=1.5 # fade in duration
8884 FOD=5 # fade out duration
8885 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 @}"
8886 @end example
8887
8888 @item
8889 Horizontally align multiple separate texts. Note that @option{max_glyph_a}
8890 and the @option{fontsize} value are included in the @option{y} offset.
8891 @example
8892 drawtext=fontfile=FreeSans.ttf:text=DOG:fontsize=24:x=10:y=20+24-max_glyph_a,
8893 drawtext=fontfile=FreeSans.ttf:text=cow:fontsize=24:x=80:y=20+24-max_glyph_a
8894 @end example
8895
8896 @end itemize
8897
8898 For more information about libfreetype, check:
8899 @url{http://www.freetype.org/}.
8900
8901 For more information about fontconfig, check:
8902 @url{http://freedesktop.org/software/fontconfig/fontconfig-user.html}.
8903
8904 For more information about libfribidi, check:
8905 @url{http://fribidi.org/}.
8906
8907 @section edgedetect
8908
8909 Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
8910
8911 The filter accepts the following options:
8912
8913 @table @option
8914 @item low
8915 @item high
8916 Set low and high threshold values used by the Canny thresholding
8917 algorithm.
8918
8919 The high threshold selects the "strong" edge pixels, which are then
8920 connected through 8-connectivity with the "weak" edge pixels selected
8921 by the low threshold.
8922
8923 @var{low} and @var{high} threshold values must be chosen in the range
8924 [0,1], and @var{low} should be lesser or equal to @var{high}.
8925
8926 Default value for @var{low} is @code{20/255}, and default value for @var{high}
8927 is @code{50/255}.
8928
8929 @item mode
8930 Define the drawing mode.
8931
8932 @table @samp
8933 @item wires
8934 Draw white/gray wires on black background.
8935
8936 @item colormix
8937 Mix the colors to create a paint/cartoon effect.
8938
8939 @item canny
8940 Apply Canny edge detector on all selected planes.
8941 @end table
8942 Default value is @var{wires}.
8943
8944 @item planes
8945 Select planes for filtering. By default all available planes are filtered.
8946 @end table
8947
8948 @subsection Examples
8949
8950 @itemize
8951 @item
8952 Standard edge detection with custom values for the hysteresis thresholding:
8953 @example
8954 edgedetect=low=0.1:high=0.4
8955 @end example
8956
8957 @item
8958 Painting effect without thresholding:
8959 @example
8960 edgedetect=mode=colormix:high=0
8961 @end example
8962 @end itemize
8963
8964 @section eq
8965 Set brightness, contrast, saturation and approximate gamma adjustment.
8966
8967 The filter accepts the following options:
8968
8969 @table @option
8970 @item contrast
8971 Set the contrast expression. The value must be a float value in range
8972 @code{-2.0} to @code{2.0}. The default value is "1".
8973
8974 @item brightness
8975 Set the brightness expression. The value must be a float value in
8976 range @code{-1.0} to @code{1.0}. The default value is "0".
8977
8978 @item saturation
8979 Set the saturation expression. The value must be a float in
8980 range @code{0.0} to @code{3.0}. The default value is "1".
8981
8982 @item gamma
8983 Set the gamma expression. The value must be a float in range
8984 @code{0.1} to @code{10.0}.  The default value is "1".
8985
8986 @item gamma_r
8987 Set the gamma expression for red. The value must be a float in
8988 range @code{0.1} to @code{10.0}. The default value is "1".
8989
8990 @item gamma_g
8991 Set the gamma expression for green. The value must be a float in range
8992 @code{0.1} to @code{10.0}. The default value is "1".
8993
8994 @item gamma_b
8995 Set the gamma expression for blue. The value must be a float in range
8996 @code{0.1} to @code{10.0}. The default value is "1".
8997
8998 @item gamma_weight
8999 Set the gamma weight expression. It can be used to reduce the effect
9000 of a high gamma value on bright image areas, e.g. keep them from
9001 getting overamplified and just plain white. The value must be a float
9002 in range @code{0.0} to @code{1.0}. A value of @code{0.0} turns the
9003 gamma correction all the way down while @code{1.0} leaves it at its
9004 full strength. Default is "1".
9005
9006 @item eval
9007 Set when the expressions for brightness, contrast, saturation and
9008 gamma expressions are evaluated.
9009
9010 It accepts the following values:
9011 @table @samp
9012 @item init
9013 only evaluate expressions once during the filter initialization or
9014 when a command is processed
9015
9016 @item frame
9017 evaluate expressions for each incoming frame
9018 @end table
9019
9020 Default value is @samp{init}.
9021 @end table
9022
9023 The expressions accept the following parameters:
9024 @table @option
9025 @item n
9026 frame count of the input frame starting from 0
9027
9028 @item pos
9029 byte position of the corresponding packet in the input file, NAN if
9030 unspecified
9031
9032 @item r
9033 frame rate of the input video, NAN if the input frame rate is unknown
9034
9035 @item t
9036 timestamp expressed in seconds, NAN if the input timestamp is unknown
9037 @end table
9038
9039 @subsection Commands
9040 The filter supports the following commands:
9041
9042 @table @option
9043 @item contrast
9044 Set the contrast expression.
9045
9046 @item brightness
9047 Set the brightness expression.
9048
9049 @item saturation
9050 Set the saturation expression.
9051
9052 @item gamma
9053 Set the gamma expression.
9054
9055 @item gamma_r
9056 Set the gamma_r expression.
9057
9058 @item gamma_g
9059 Set gamma_g expression.
9060
9061 @item gamma_b
9062 Set gamma_b expression.
9063
9064 @item gamma_weight
9065 Set gamma_weight expression.
9066
9067 The command accepts the same syntax of the corresponding option.
9068
9069 If the specified expression is not valid, it is kept at its current
9070 value.
9071
9072 @end table
9073
9074 @section erosion
9075
9076 Apply erosion effect to the video.
9077
9078 This filter replaces the pixel by the local(3x3) minimum.
9079
9080 It accepts the following options:
9081
9082 @table @option
9083 @item threshold0
9084 @item threshold1
9085 @item threshold2
9086 @item threshold3
9087 Limit the maximum change for each plane, default is 65535.
9088 If 0, plane will remain unchanged.
9089
9090 @item coordinates
9091 Flag which specifies the pixel to refer to. Default is 255 i.e. all eight
9092 pixels are used.
9093
9094 Flags to local 3x3 coordinates maps like this:
9095
9096     1 2 3
9097     4   5
9098     6 7 8
9099 @end table
9100
9101 @section extractplanes
9102
9103 Extract color channel components from input video stream into
9104 separate grayscale video streams.
9105
9106 The filter accepts the following option:
9107
9108 @table @option
9109 @item planes
9110 Set plane(s) to extract.
9111
9112 Available values for planes are:
9113 @table @samp
9114 @item y
9115 @item u
9116 @item v
9117 @item a
9118 @item r
9119 @item g
9120 @item b
9121 @end table
9122
9123 Choosing planes not available in the input will result in an error.
9124 That means you cannot select @code{r}, @code{g}, @code{b} planes
9125 with @code{y}, @code{u}, @code{v} planes at same time.
9126 @end table
9127
9128 @subsection Examples
9129
9130 @itemize
9131 @item
9132 Extract luma, u and v color channel component from input video frame
9133 into 3 grayscale outputs:
9134 @example
9135 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
9136 @end example
9137 @end itemize
9138
9139 @section elbg
9140
9141 Apply a posterize effect using the ELBG (Enhanced LBG) algorithm.
9142
9143 For each input image, the filter will compute the optimal mapping from
9144 the input to the output given the codebook length, that is the number
9145 of distinct output colors.
9146
9147 This filter accepts the following options.
9148
9149 @table @option
9150 @item codebook_length, l
9151 Set codebook length. The value must be a positive integer, and
9152 represents the number of distinct output colors. Default value is 256.
9153
9154 @item nb_steps, n
9155 Set the maximum number of iterations to apply for computing the optimal
9156 mapping. The higher the value the better the result and the higher the
9157 computation time. Default value is 1.
9158
9159 @item seed, s
9160 Set a random seed, must be an integer included between 0 and
9161 UINT32_MAX. If not specified, or if explicitly set to -1, the filter
9162 will try to use a good random seed on a best effort basis.
9163
9164 @item pal8
9165 Set pal8 output pixel format. This option does not work with codebook
9166 length greater than 256.
9167 @end table
9168
9169 @section entropy
9170
9171 Measure graylevel entropy in histogram of color channels of video frames.
9172
9173 It accepts the following parameters:
9174
9175 @table @option
9176 @item mode
9177 Can be either @var{normal} or @var{diff}. Default is @var{normal}.
9178
9179 @var{diff} mode measures entropy of histogram delta values, absolute differences
9180 between neighbour histogram values.
9181 @end table
9182
9183 @section fade
9184
9185 Apply a fade-in/out effect to the input video.
9186
9187 It accepts the following parameters:
9188
9189 @table @option
9190 @item type, t
9191 The effect type can be either "in" for a fade-in, or "out" for a fade-out
9192 effect.
9193 Default is @code{in}.
9194
9195 @item start_frame, s
9196 Specify the number of the frame to start applying the fade
9197 effect at. Default is 0.
9198
9199 @item nb_frames, n
9200 The number of frames that the fade effect lasts. At the end of the
9201 fade-in effect, the output video will have the same intensity as the input video.
9202 At the end of the fade-out transition, the output video will be filled with the
9203 selected @option{color}.
9204 Default is 25.
9205
9206 @item alpha
9207 If set to 1, fade only alpha channel, if one exists on the input.
9208 Default value is 0.
9209
9210 @item start_time, st
9211 Specify the timestamp (in seconds) of the frame to start to apply the fade
9212 effect. If both start_frame and start_time are specified, the fade will start at
9213 whichever comes last.  Default is 0.
9214
9215 @item duration, d
9216 The number of seconds for which the fade effect has to last. At the end of the
9217 fade-in effect the output video will have the same intensity as the input video,
9218 at the end of the fade-out transition the output video will be filled with the
9219 selected @option{color}.
9220 If both duration and nb_frames are specified, duration is used. Default is 0
9221 (nb_frames is used by default).
9222
9223 @item color, c
9224 Specify the color of the fade. Default is "black".
9225 @end table
9226
9227 @subsection Examples
9228
9229 @itemize
9230 @item
9231 Fade in the first 30 frames of video:
9232 @example
9233 fade=in:0:30
9234 @end example
9235
9236 The command above is equivalent to:
9237 @example
9238 fade=t=in:s=0:n=30
9239 @end example
9240
9241 @item
9242 Fade out the last 45 frames of a 200-frame video:
9243 @example
9244 fade=out:155:45
9245 fade=type=out:start_frame=155:nb_frames=45
9246 @end example
9247
9248 @item
9249 Fade in the first 25 frames and fade out the last 25 frames of a 1000-frame video:
9250 @example
9251 fade=in:0:25, fade=out:975:25
9252 @end example
9253
9254 @item
9255 Make the first 5 frames yellow, then fade in from frame 5-24:
9256 @example
9257 fade=in:5:20:color=yellow
9258 @end example
9259
9260 @item
9261 Fade in alpha over first 25 frames of video:
9262 @example
9263 fade=in:0:25:alpha=1
9264 @end example
9265
9266 @item
9267 Make the first 5.5 seconds black, then fade in for 0.5 seconds:
9268 @example
9269 fade=t=in:st=5.5:d=0.5
9270 @end example
9271
9272 @end itemize
9273
9274 @section fftfilt
9275 Apply arbitrary expressions to samples in frequency domain
9276
9277 @table @option
9278 @item dc_Y
9279 Adjust the dc value (gain) of the luma plane of the image. The filter
9280 accepts an integer value in range @code{0} to @code{1000}. The default
9281 value is set to @code{0}.
9282
9283 @item dc_U
9284 Adjust the dc value (gain) of the 1st chroma plane of the image. The
9285 filter accepts an integer value in range @code{0} to @code{1000}. The
9286 default value is set to @code{0}.
9287
9288 @item dc_V
9289 Adjust the dc value (gain) of the 2nd chroma plane of the image. The
9290 filter accepts an integer value in range @code{0} to @code{1000}. The
9291 default value is set to @code{0}.
9292
9293 @item weight_Y
9294 Set the frequency domain weight expression for the luma plane.
9295
9296 @item weight_U
9297 Set the frequency domain weight expression for the 1st chroma plane.
9298
9299 @item weight_V
9300 Set the frequency domain weight expression for the 2nd chroma plane.
9301
9302 @item eval
9303 Set when the expressions are evaluated.
9304
9305 It accepts the following values:
9306 @table @samp
9307 @item init
9308 Only evaluate expressions once during the filter initialization.
9309
9310 @item frame
9311 Evaluate expressions for each incoming frame.
9312 @end table
9313
9314 Default value is @samp{init}.
9315
9316 The filter accepts the following variables:
9317 @item X
9318 @item Y
9319 The coordinates of the current sample.
9320
9321 @item W
9322 @item H
9323 The width and height of the image.
9324
9325 @item N
9326 The number of input frame, starting from 0.
9327 @end table
9328
9329 @subsection Examples
9330
9331 @itemize
9332 @item
9333 High-pass:
9334 @example
9335 fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)'
9336 @end example
9337
9338 @item
9339 Low-pass:
9340 @example
9341 fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)'
9342 @end example
9343
9344 @item
9345 Sharpen:
9346 @example
9347 fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)'
9348 @end example
9349
9350 @item
9351 Blur:
9352 @example
9353 fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))'
9354 @end example
9355
9356 @end itemize
9357
9358 @section fftdnoiz
9359 Denoise frames using 3D FFT (frequency domain filtering).
9360
9361 The filter accepts the following options:
9362
9363 @table @option
9364 @item sigma
9365 Set the noise sigma constant. This sets denoising strength.
9366 Default value is 1. Allowed range is from 0 to 30.
9367 Using very high sigma with low overlap may give blocking artifacts.
9368
9369 @item amount
9370 Set amount of denoising. By default all detected noise is reduced.
9371 Default value is 1. Allowed range is from 0 to 1.
9372
9373 @item block
9374 Set size of block, Default is 4, can be 3, 4, 5 or 6.
9375 Actual size of block in pixels is 2 to power of @var{block}, so by default
9376 block size in pixels is 2^4 which is 16.
9377
9378 @item overlap
9379 Set block overlap. Default is 0.5. Allowed range is from 0.2 to 0.8.
9380
9381 @item prev
9382 Set number of previous frames to use for denoising. By default is set to 0.
9383
9384 @item next
9385 Set number of next frames to to use for denoising. By default is set to 0.
9386
9387 @item planes
9388 Set planes which will be filtered, by default are all available filtered
9389 except alpha.
9390 @end table
9391
9392 @section field
9393
9394 Extract a single field from an interlaced image using stride
9395 arithmetic to avoid wasting CPU time. The output frames are marked as
9396 non-interlaced.
9397
9398 The filter accepts the following options:
9399
9400 @table @option
9401 @item type
9402 Specify whether to extract the top (if the value is @code{0} or
9403 @code{top}) or the bottom field (if the value is @code{1} or
9404 @code{bottom}).
9405 @end table
9406
9407 @section fieldhint
9408
9409 Create new frames by copying the top and bottom fields from surrounding frames
9410 supplied as numbers by the hint file.
9411
9412 @table @option
9413 @item hint
9414 Set file containing hints: absolute/relative frame numbers.
9415
9416 There must be one line for each frame in a clip. Each line must contain two
9417 numbers separated by the comma, optionally followed by @code{-} or @code{+}.
9418 Numbers supplied on each line of file can not be out of [N-1,N+1] where N
9419 is current frame number for @code{absolute} mode or out of [-1, 1] range
9420 for @code{relative} mode. First number tells from which frame to pick up top
9421 field and second number tells from which frame to pick up bottom field.
9422
9423 If optionally followed by @code{+} output frame will be marked as interlaced,
9424 else if followed by @code{-} output frame will be marked as progressive, else
9425 it will be marked same as input frame.
9426 If line starts with @code{#} or @code{;} that line is skipped.
9427
9428 @item mode
9429 Can be item @code{absolute} or @code{relative}. Default is @code{absolute}.
9430 @end table
9431
9432 Example of first several lines of @code{hint} file for @code{relative} mode:
9433 @example
9434 0,0 - # first frame
9435 1,0 - # second frame, use third's frame top field and second's frame bottom field
9436 1,0 - # third frame, use fourth's frame top field and third's frame bottom field
9437 1,0 -
9438 0,0 -
9439 0,0 -
9440 1,0 -
9441 1,0 -
9442 1,0 -
9443 0,0 -
9444 0,0 -
9445 1,0 -
9446 1,0 -
9447 1,0 -
9448 0,0 -
9449 @end example
9450
9451 @section fieldmatch
9452
9453 Field matching filter for inverse telecine. It is meant to reconstruct the
9454 progressive frames from a telecined stream. The filter does not drop duplicated
9455 frames, so to achieve a complete inverse telecine @code{fieldmatch} needs to be
9456 followed by a decimation filter such as @ref{decimate} in the filtergraph.
9457
9458 The separation of the field matching and the decimation is notably motivated by
9459 the possibility of inserting a de-interlacing filter fallback between the two.
9460 If the source has mixed telecined and real interlaced content,
9461 @code{fieldmatch} will not be able to match fields for the interlaced parts.
9462 But these remaining combed frames will be marked as interlaced, and thus can be
9463 de-interlaced by a later filter such as @ref{yadif} before decimation.
9464
9465 In addition to the various configuration options, @code{fieldmatch} can take an
9466 optional second stream, activated through the @option{ppsrc} option. If
9467 enabled, the frames reconstruction will be based on the fields and frames from
9468 this second stream. This allows the first input to be pre-processed in order to
9469 help the various algorithms of the filter, while keeping the output lossless
9470 (assuming the fields are matched properly). Typically, a field-aware denoiser,
9471 or brightness/contrast adjustments can help.
9472
9473 Note that this filter uses the same algorithms as TIVTC/TFM (AviSynth project)
9474 and VIVTC/VFM (VapourSynth project). The later is a light clone of TFM from
9475 which @code{fieldmatch} is based on. While the semantic and usage are very
9476 close, some behaviour and options names can differ.
9477
9478 The @ref{decimate} filter currently only works for constant frame rate input.
9479 If your input has mixed telecined (30fps) and progressive content with a lower
9480 framerate like 24fps use the following filterchain to produce the necessary cfr
9481 stream: @code{dejudder,fps=30000/1001,fieldmatch,decimate}.
9482
9483 The filter accepts the following options:
9484
9485 @table @option
9486 @item order
9487 Specify the assumed field order of the input stream. Available values are:
9488
9489 @table @samp
9490 @item auto
9491 Auto detect parity (use FFmpeg's internal parity value).
9492 @item bff
9493 Assume bottom field first.
9494 @item tff
9495 Assume top field first.
9496 @end table
9497
9498 Note that it is sometimes recommended not to trust the parity announced by the
9499 stream.
9500
9501 Default value is @var{auto}.
9502
9503 @item mode
9504 Set the matching mode or strategy to use. @option{pc} mode is the safest in the
9505 sense that it won't risk creating jerkiness due to duplicate frames when
9506 possible, but if there are bad edits or blended fields it will end up
9507 outputting combed frames when a good match might actually exist. On the other
9508 hand, @option{pcn_ub} mode is the most risky in terms of creating jerkiness,
9509 but will almost always find a good frame if there is one. The other values are
9510 all somewhere in between @option{pc} and @option{pcn_ub} in terms of risking
9511 jerkiness and creating duplicate frames versus finding good matches in sections
9512 with bad edits, orphaned fields, blended fields, etc.
9513
9514 More details about p/c/n/u/b are available in @ref{p/c/n/u/b meaning} section.
9515
9516 Available values are:
9517
9518 @table @samp
9519 @item pc
9520 2-way matching (p/c)
9521 @item pc_n
9522 2-way matching, and trying 3rd match if still combed (p/c + n)
9523 @item pc_u
9524 2-way matching, and trying 3rd match (same order) if still combed (p/c + u)
9525 @item pc_n_ub
9526 2-way matching, trying 3rd match if still combed, and trying 4th/5th matches if
9527 still combed (p/c + n + u/b)
9528 @item pcn
9529 3-way matching (p/c/n)
9530 @item pcn_ub
9531 3-way matching, and trying 4th/5th matches if all 3 of the original matches are
9532 detected as combed (p/c/n + u/b)
9533 @end table
9534
9535 The parenthesis at the end indicate the matches that would be used for that
9536 mode assuming @option{order}=@var{tff} (and @option{field} on @var{auto} or
9537 @var{top}).
9538
9539 In terms of speed @option{pc} mode is by far the fastest and @option{pcn_ub} is
9540 the slowest.
9541
9542 Default value is @var{pc_n}.
9543
9544 @item ppsrc
9545 Mark the main input stream as a pre-processed input, and enable the secondary
9546 input stream as the clean source to pick the fields from. See the filter
9547 introduction for more details. It is similar to the @option{clip2} feature from
9548 VFM/TFM.
9549
9550 Default value is @code{0} (disabled).
9551
9552 @item field
9553 Set the field to match from. It is recommended to set this to the same value as
9554 @option{order} unless you experience matching failures with that setting. In
9555 certain circumstances changing the field that is used to match from can have a
9556 large impact on matching performance. Available values are:
9557
9558 @table @samp
9559 @item auto
9560 Automatic (same value as @option{order}).
9561 @item bottom
9562 Match from the bottom field.
9563 @item top
9564 Match from the top field.
9565 @end table
9566
9567 Default value is @var{auto}.
9568
9569 @item mchroma
9570 Set whether or not chroma is included during the match comparisons. In most
9571 cases it is recommended to leave this enabled. You should set this to @code{0}
9572 only if your clip has bad chroma problems such as heavy rainbowing or other
9573 artifacts. Setting this to @code{0} could also be used to speed things up at
9574 the cost of some accuracy.
9575
9576 Default value is @code{1}.
9577
9578 @item y0
9579 @item y1
9580 These define an exclusion band which excludes the lines between @option{y0} and
9581 @option{y1} from being included in the field matching decision. An exclusion
9582 band can be used to ignore subtitles, a logo, or other things that may
9583 interfere with the matching. @option{y0} sets the starting scan line and
9584 @option{y1} sets the ending line; all lines in between @option{y0} and
9585 @option{y1} (including @option{y0} and @option{y1}) will be ignored. Setting
9586 @option{y0} and @option{y1} to the same value will disable the feature.
9587 @option{y0} and @option{y1} defaults to @code{0}.
9588
9589 @item scthresh
9590 Set the scene change detection threshold as a percentage of maximum change on
9591 the luma plane. Good values are in the @code{[8.0, 14.0]} range. Scene change
9592 detection is only relevant in case @option{combmatch}=@var{sc}.  The range for
9593 @option{scthresh} is @code{[0.0, 100.0]}.
9594
9595 Default value is @code{12.0}.
9596
9597 @item combmatch
9598 When @option{combatch} is not @var{none}, @code{fieldmatch} will take into
9599 account the combed scores of matches when deciding what match to use as the
9600 final match. Available values are:
9601
9602 @table @samp
9603 @item none
9604 No final matching based on combed scores.
9605 @item sc
9606 Combed scores are only used when a scene change is detected.
9607 @item full
9608 Use combed scores all the time.
9609 @end table
9610
9611 Default is @var{sc}.
9612
9613 @item combdbg
9614 Force @code{fieldmatch} to calculate the combed metrics for certain matches and
9615 print them. This setting is known as @option{micout} in TFM/VFM vocabulary.
9616 Available values are:
9617
9618 @table @samp
9619 @item none
9620 No forced calculation.
9621 @item pcn
9622 Force p/c/n calculations.
9623 @item pcnub
9624 Force p/c/n/u/b calculations.
9625 @end table
9626
9627 Default value is @var{none}.
9628
9629 @item cthresh
9630 This is the area combing threshold used for combed frame detection. This
9631 essentially controls how "strong" or "visible" combing must be to be detected.
9632 Larger values mean combing must be more visible and smaller values mean combing
9633 can be less visible or strong and still be detected. Valid settings are from
9634 @code{-1} (every pixel will be detected as combed) to @code{255} (no pixel will
9635 be detected as combed). This is basically a pixel difference value. A good
9636 range is @code{[8, 12]}.
9637
9638 Default value is @code{9}.
9639
9640 @item chroma
9641 Sets whether or not chroma is considered in the combed frame decision.  Only
9642 disable this if your source has chroma problems (rainbowing, etc.) that are
9643 causing problems for the combed frame detection with chroma enabled. Actually,
9644 using @option{chroma}=@var{0} is usually more reliable, except for the case
9645 where there is chroma only combing in the source.
9646
9647 Default value is @code{0}.
9648
9649 @item blockx
9650 @item blocky
9651 Respectively set the x-axis and y-axis size of the window used during combed
9652 frame detection. This has to do with the size of the area in which
9653 @option{combpel} pixels are required to be detected as combed for a frame to be
9654 declared combed. See the @option{combpel} parameter description for more info.
9655 Possible values are any number that is a power of 2 starting at 4 and going up
9656 to 512.
9657
9658 Default value is @code{16}.
9659
9660 @item combpel
9661 The number of combed pixels inside any of the @option{blocky} by
9662 @option{blockx} size blocks on the frame for the frame to be detected as
9663 combed. While @option{cthresh} controls how "visible" the combing must be, this
9664 setting controls "how much" combing there must be in any localized area (a
9665 window defined by the @option{blockx} and @option{blocky} settings) on the
9666 frame. Minimum value is @code{0} and maximum is @code{blocky x blockx} (at
9667 which point no frames will ever be detected as combed). This setting is known
9668 as @option{MI} in TFM/VFM vocabulary.
9669
9670 Default value is @code{80}.
9671 @end table
9672
9673 @anchor{p/c/n/u/b meaning}
9674 @subsection p/c/n/u/b meaning
9675
9676 @subsubsection p/c/n
9677
9678 We assume the following telecined stream:
9679
9680 @example
9681 Top fields:     1 2 2 3 4
9682 Bottom fields:  1 2 3 4 4
9683 @end example
9684
9685 The numbers correspond to the progressive frame the fields relate to. Here, the
9686 first two frames are progressive, the 3rd and 4th are combed, and so on.
9687
9688 When @code{fieldmatch} is configured to run a matching from bottom
9689 (@option{field}=@var{bottom}) this is how this input stream get transformed:
9690
9691 @example
9692 Input stream:
9693                 T     1 2 2 3 4
9694                 B     1 2 3 4 4   <-- matching reference
9695
9696 Matches:              c c n n c
9697
9698 Output stream:
9699                 T     1 2 3 4 4
9700                 B     1 2 3 4 4
9701 @end example
9702
9703 As a result of the field matching, we can see that some frames get duplicated.
9704 To perform a complete inverse telecine, you need to rely on a decimation filter
9705 after this operation. See for instance the @ref{decimate} filter.
9706
9707 The same operation now matching from top fields (@option{field}=@var{top})
9708 looks like this:
9709
9710 @example
9711 Input stream:
9712                 T     1 2 2 3 4   <-- matching reference
9713                 B     1 2 3 4 4
9714
9715 Matches:              c c p p c
9716
9717 Output stream:
9718                 T     1 2 2 3 4
9719                 B     1 2 2 3 4
9720 @end example
9721
9722 In these examples, we can see what @var{p}, @var{c} and @var{n} mean;
9723 basically, they refer to the frame and field of the opposite parity:
9724
9725 @itemize
9726 @item @var{p} matches the field of the opposite parity in the previous frame
9727 @item @var{c} matches the field of the opposite parity in the current frame
9728 @item @var{n} matches the field of the opposite parity in the next frame
9729 @end itemize
9730
9731 @subsubsection u/b
9732
9733 The @var{u} and @var{b} matching are a bit special in the sense that they match
9734 from the opposite parity flag. In the following examples, we assume that we are
9735 currently matching the 2nd frame (Top:2, bottom:2). According to the match, a
9736 'x' is placed above and below each matched fields.
9737
9738 With bottom matching (@option{field}=@var{bottom}):
9739 @example
9740 Match:           c         p           n          b          u
9741
9742                  x       x               x        x          x
9743   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
9744   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
9745                  x         x           x        x              x
9746
9747 Output frames:
9748                  2          1          2          2          2
9749                  2          2          2          1          3
9750 @end example
9751
9752 With top matching (@option{field}=@var{top}):
9753 @example
9754 Match:           c         p           n          b          u
9755
9756                  x         x           x        x              x
9757   Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
9758   Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
9759                  x       x               x        x          x
9760
9761 Output frames:
9762                  2          2          2          1          2
9763                  2          1          3          2          2
9764 @end example
9765
9766 @subsection Examples
9767
9768 Simple IVTC of a top field first telecined stream:
9769 @example
9770 fieldmatch=order=tff:combmatch=none, decimate
9771 @end example
9772
9773 Advanced IVTC, with fallback on @ref{yadif} for still combed frames:
9774 @example
9775 fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
9776 @end example
9777
9778 @section fieldorder
9779
9780 Transform the field order of the input video.
9781
9782 It accepts the following parameters:
9783
9784 @table @option
9785
9786 @item order
9787 The output field order. Valid values are @var{tff} for top field first or @var{bff}
9788 for bottom field first.
9789 @end table
9790
9791 The default value is @samp{tff}.
9792
9793 The transformation is done by shifting the picture content up or down
9794 by one line, and filling the remaining line with appropriate picture content.
9795 This method is consistent with most broadcast field order converters.
9796
9797 If the input video is not flagged as being interlaced, or it is already
9798 flagged as being of the required output field order, then this filter does
9799 not alter the incoming video.
9800
9801 It is very useful when converting to or from PAL DV material,
9802 which is bottom field first.
9803
9804 For example:
9805 @example
9806 ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
9807 @end example
9808
9809 @section fifo, afifo
9810
9811 Buffer input images and send them when they are requested.
9812
9813 It is mainly useful when auto-inserted by the libavfilter
9814 framework.
9815
9816 It does not take parameters.
9817
9818 @section fillborders
9819
9820 Fill borders of the input video, without changing video stream dimensions.
9821 Sometimes video can have garbage at the four edges and you may not want to
9822 crop video input to keep size multiple of some number.
9823
9824 This filter accepts the following options:
9825
9826 @table @option
9827 @item left
9828 Number of pixels to fill from left border.
9829
9830 @item right
9831 Number of pixels to fill from right border.
9832
9833 @item top
9834 Number of pixels to fill from top border.
9835
9836 @item bottom
9837 Number of pixels to fill from bottom border.
9838
9839 @item mode
9840 Set fill mode.
9841
9842 It accepts the following values:
9843 @table @samp
9844 @item smear
9845 fill pixels using outermost pixels
9846
9847 @item mirror
9848 fill pixels using mirroring
9849
9850 @item fixed
9851 fill pixels with constant value
9852 @end table
9853
9854 Default is @var{smear}.
9855
9856 @item color
9857 Set color for pixels in fixed mode. Default is @var{black}.
9858 @end table
9859
9860 @section find_rect
9861
9862 Find a rectangular object
9863
9864 It accepts the following options:
9865
9866 @table @option
9867 @item object
9868 Filepath of the object image, needs to be in gray8.
9869
9870 @item threshold
9871 Detection threshold, default is 0.5.
9872
9873 @item mipmaps
9874 Number of mipmaps, default is 3.
9875
9876 @item xmin, ymin, xmax, ymax
9877 Specifies the rectangle in which to search.
9878 @end table
9879
9880 @subsection Examples
9881
9882 @itemize
9883 @item
9884 Generate a representative palette of a given video using @command{ffmpeg}:
9885 @example
9886 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
9887 @end example
9888 @end itemize
9889
9890 @section cover_rect
9891
9892 Cover a rectangular object
9893
9894 It accepts the following options:
9895
9896 @table @option
9897 @item cover
9898 Filepath of the optional cover image, needs to be in yuv420.
9899
9900 @item mode
9901 Set covering mode.
9902
9903 It accepts the following values:
9904 @table @samp
9905 @item cover
9906 cover it by the supplied image
9907 @item blur
9908 cover it by interpolating the surrounding pixels
9909 @end table
9910
9911 Default value is @var{blur}.
9912 @end table
9913
9914 @subsection Examples
9915
9916 @itemize
9917 @item
9918 Generate a representative palette of a given video using @command{ffmpeg}:
9919 @example
9920 ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
9921 @end example
9922 @end itemize
9923
9924 @section floodfill
9925
9926 Flood area with values of same pixel components with another values.
9927
9928 It accepts the following options:
9929 @table @option
9930 @item x
9931 Set pixel x coordinate.
9932
9933 @item y
9934 Set pixel y coordinate.
9935
9936 @item s0
9937 Set source #0 component value.
9938
9939 @item s1
9940 Set source #1 component value.
9941
9942 @item s2
9943 Set source #2 component value.
9944
9945 @item s3
9946 Set source #3 component value.
9947
9948 @item d0
9949 Set destination #0 component value.
9950
9951 @item d1
9952 Set destination #1 component value.
9953
9954 @item d2
9955 Set destination #2 component value.
9956
9957 @item d3
9958 Set destination #3 component value.
9959 @end table
9960
9961 @anchor{format}
9962 @section format
9963
9964 Convert the input video to one of the specified pixel formats.
9965 Libavfilter will try to pick one that is suitable as input to
9966 the next filter.
9967
9968 It accepts the following parameters:
9969 @table @option
9970
9971 @item pix_fmts
9972 A '|'-separated list of pixel format names, such as
9973 "pix_fmts=yuv420p|monow|rgb24".
9974
9975 @end table
9976
9977 @subsection Examples
9978
9979 @itemize
9980 @item
9981 Convert the input video to the @var{yuv420p} format
9982 @example
9983 format=pix_fmts=yuv420p
9984 @end example
9985
9986 Convert the input video to any of the formats in the list
9987 @example
9988 format=pix_fmts=yuv420p|yuv444p|yuv410p
9989 @end example
9990 @end itemize
9991
9992 @anchor{fps}
9993 @section fps
9994
9995 Convert the video to specified constant frame rate by duplicating or dropping
9996 frames as necessary.
9997
9998 It accepts the following parameters:
9999 @table @option
10000
10001 @item fps
10002 The desired output frame rate. The default is @code{25}.
10003
10004 @item start_time
10005 Assume the first PTS should be the given value, in seconds. This allows for
10006 padding/trimming at the start of stream. By default, no assumption is made
10007 about the first frame's expected PTS, so no padding or trimming is done.
10008 For example, this could be set to 0 to pad the beginning with duplicates of
10009 the first frame if a video stream starts after the audio stream or to trim any
10010 frames with a negative PTS.
10011
10012 @item round
10013 Timestamp (PTS) rounding method.
10014
10015 Possible values are:
10016 @table @option
10017 @item zero
10018 round towards 0
10019 @item inf
10020 round away from 0
10021 @item down
10022 round towards -infinity
10023 @item up
10024 round towards +infinity
10025 @item near
10026 round to nearest
10027 @end table
10028 The default is @code{near}.
10029
10030 @item eof_action
10031 Action performed when reading the last frame.
10032
10033 Possible values are:
10034 @table @option
10035 @item round
10036 Use same timestamp rounding method as used for other frames.
10037 @item pass
10038 Pass through last frame if input duration has not been reached yet.
10039 @end table
10040 The default is @code{round}.
10041
10042 @end table
10043
10044 Alternatively, the options can be specified as a flat string:
10045 @var{fps}[:@var{start_time}[:@var{round}]].
10046
10047 See also the @ref{setpts} filter.
10048
10049 @subsection Examples
10050
10051 @itemize
10052 @item
10053 A typical usage in order to set the fps to 25:
10054 @example
10055 fps=fps=25
10056 @end example
10057
10058 @item
10059 Sets the fps to 24, using abbreviation and rounding method to round to nearest:
10060 @example
10061 fps=fps=film:round=near
10062 @end example
10063 @end itemize
10064
10065 @section framepack
10066
10067 Pack two different video streams into a stereoscopic video, setting proper
10068 metadata on supported codecs. The two views should have the same size and
10069 framerate and processing will stop when the shorter video ends. Please note
10070 that you may conveniently adjust view properties with the @ref{scale} and
10071 @ref{fps} filters.
10072
10073 It accepts the following parameters:
10074 @table @option
10075
10076 @item format
10077 The desired packing format. Supported values are:
10078
10079 @table @option
10080
10081 @item sbs
10082 The views are next to each other (default).
10083
10084 @item tab
10085 The views are on top of each other.
10086
10087 @item lines
10088 The views are packed by line.
10089
10090 @item columns
10091 The views are packed by column.
10092
10093 @item frameseq
10094 The views are temporally interleaved.
10095
10096 @end table
10097
10098 @end table
10099
10100 Some examples:
10101
10102 @example
10103 # Convert left and right views into a frame-sequential video
10104 ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT
10105
10106 # Convert views into a side-by-side video with the same output resolution as the input
10107 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
10108 @end example
10109
10110 @section framerate
10111
10112 Change the frame rate by interpolating new video output frames from the source
10113 frames.
10114
10115 This filter is not designed to function correctly with interlaced media. If
10116 you wish to change the frame rate of interlaced media then you are required
10117 to deinterlace before this filter and re-interlace after this filter.
10118
10119 A description of the accepted options follows.
10120
10121 @table @option
10122 @item fps
10123 Specify the output frames per second. This option can also be specified
10124 as a value alone. The default is @code{50}.
10125
10126 @item interp_start
10127 Specify the start of a range where the output frame will be created as a
10128 linear interpolation of two frames. The range is [@code{0}-@code{255}],
10129 the default is @code{15}.
10130
10131 @item interp_end
10132 Specify the end of a range where the output frame will be created as a
10133 linear interpolation of two frames. The range is [@code{0}-@code{255}],
10134 the default is @code{240}.
10135
10136 @item scene
10137 Specify the level at which a scene change is detected as a value between
10138 0 and 100 to indicate a new scene; a low value reflects a low
10139 probability for the current frame to introduce a new scene, while a higher
10140 value means the current frame is more likely to be one.
10141 The default is @code{8.2}.
10142
10143 @item flags
10144 Specify flags influencing the filter process.
10145
10146 Available value for @var{flags} is:
10147
10148 @table @option
10149 @item scene_change_detect, scd
10150 Enable scene change detection using the value of the option @var{scene}.
10151 This flag is enabled by default.
10152 @end table
10153 @end table
10154
10155 @section framestep
10156
10157 Select one frame every N-th frame.
10158
10159 This filter accepts the following option:
10160 @table @option
10161 @item step
10162 Select frame after every @code{step} frames.
10163 Allowed values are positive integers higher than 0. Default value is @code{1}.
10164 @end table
10165
10166 @section freezedetect
10167
10168 Detect frozen video.
10169
10170 This filter logs a message and sets frame metadata when it detects that the
10171 input video has no significant change in content during a specified duration.
10172 Video freeze detection calculates the mean average absolute difference of all
10173 the components of video frames and compares it to a noise floor.
10174
10175 The printed times and duration are expressed in seconds. The
10176 @code{lavfi.freezedetect.freeze_start} metadata key is set on the first frame
10177 whose timestamp equals or exceeds the detection duration and it contains the
10178 timestamp of the first frame of the freeze. The
10179 @code{lavfi.freezedetect.freeze_duration} and
10180 @code{lavfi.freezedetect.freeze_end} metadata keys are set on the first frame
10181 after the freeze.
10182
10183 The filter accepts the following options:
10184
10185 @table @option
10186 @item noise, n
10187 Set noise tolerance. Can be specified in dB (in case "dB" is appended to the
10188 specified value) or as a difference ratio between 0 and 1. Default is -60dB, or
10189 0.001.
10190
10191 @item duration, d
10192 Set freeze duration until notification (default is 2 seconds).
10193 @end table
10194
10195 @anchor{frei0r}
10196 @section frei0r
10197
10198 Apply a frei0r effect to the input video.
10199
10200 To enable the compilation of this filter, you need to install the frei0r
10201 header and configure FFmpeg with @code{--enable-frei0r}.
10202
10203 It accepts the following parameters:
10204
10205 @table @option
10206
10207 @item filter_name
10208 The name of the frei0r effect to load. If the environment variable
10209 @env{FREI0R_PATH} is defined, the frei0r effect is searched for in each of the
10210 directories specified by the colon-separated list in @env{FREI0R_PATH}.
10211 Otherwise, the standard frei0r paths are searched, in this order:
10212 @file{HOME/.frei0r-1/lib/}, @file{/usr/local/lib/frei0r-1/},
10213 @file{/usr/lib/frei0r-1/}.
10214
10215 @item filter_params
10216 A '|'-separated list of parameters to pass to the frei0r effect.
10217
10218 @end table
10219
10220 A frei0r effect parameter can be a boolean (its value is either
10221 "y" or "n"), a double, a color (specified as
10222 @var{R}/@var{G}/@var{B}, where @var{R}, @var{G}, and @var{B} are floating point
10223 numbers between 0.0 and 1.0, inclusive) or a color description as specified in the
10224 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils},
10225 a position (specified as @var{X}/@var{Y}, where
10226 @var{X} and @var{Y} are floating point numbers) and/or a string.
10227
10228 The number and types of parameters depend on the loaded effect. If an
10229 effect parameter is not specified, the default value is set.
10230
10231 @subsection Examples
10232
10233 @itemize
10234 @item
10235 Apply the distort0r effect, setting the first two double parameters:
10236 @example
10237 frei0r=filter_name=distort0r:filter_params=0.5|0.01
10238 @end example
10239
10240 @item
10241 Apply the colordistance effect, taking a color as the first parameter:
10242 @example
10243 frei0r=colordistance:0.2/0.3/0.4
10244 frei0r=colordistance:violet
10245 frei0r=colordistance:0x112233
10246 @end example
10247
10248 @item
10249 Apply the perspective effect, specifying the top left and top right image
10250 positions:
10251 @example
10252 frei0r=perspective:0.2/0.2|0.8/0.2
10253 @end example
10254 @end itemize
10255
10256 For more information, see
10257 @url{http://frei0r.dyne.org}
10258
10259 @section fspp
10260
10261 Apply fast and simple postprocessing. It is a faster version of @ref{spp}.
10262
10263 It splits (I)DCT into horizontal/vertical passes. Unlike the simple post-
10264 processing filter, one of them is performed once per block, not per pixel.
10265 This allows for much higher speed.
10266
10267 The filter accepts the following options:
10268
10269 @table @option
10270 @item quality
10271 Set quality. This option defines the number of levels for averaging. It accepts
10272 an integer in the range 4-5. Default value is @code{4}.
10273
10274 @item qp
10275 Force a constant quantization parameter. It accepts an integer in range 0-63.
10276 If not set, the filter will use the QP from the video stream (if available).
10277
10278 @item strength
10279 Set filter strength. It accepts an integer in range -15 to 32. Lower values mean
10280 more details but also more artifacts, while higher values make the image smoother
10281 but also blurrier. Default value is @code{0} âˆ’ PSNR optimal.
10282
10283 @item use_bframe_qp
10284 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
10285 option may cause flicker since the B-Frames have often larger QP. Default is
10286 @code{0} (not enabled).
10287
10288 @end table
10289
10290 @section gblur
10291
10292 Apply Gaussian blur filter.
10293
10294 The filter accepts the following options:
10295
10296 @table @option
10297 @item sigma
10298 Set horizontal sigma, standard deviation of Gaussian blur. Default is @code{0.5}.
10299
10300 @item steps
10301 Set number of steps for Gaussian approximation. Default is @code{1}.
10302
10303 @item planes
10304 Set which planes to filter. By default all planes are filtered.
10305
10306 @item sigmaV
10307 Set vertical sigma, if negative it will be same as @code{sigma}.
10308 Default is @code{-1}.
10309 @end table
10310
10311 @section geq
10312
10313 Apply generic equation to each pixel.
10314
10315 The filter accepts the following options:
10316
10317 @table @option
10318 @item lum_expr, lum
10319 Set the luminance expression.
10320 @item cb_expr, cb
10321 Set the chrominance blue expression.
10322 @item cr_expr, cr
10323 Set the chrominance red expression.
10324 @item alpha_expr, a
10325 Set the alpha expression.
10326 @item red_expr, r
10327 Set the red expression.
10328 @item green_expr, g
10329 Set the green expression.
10330 @item blue_expr, b
10331 Set the blue expression.
10332 @end table
10333
10334 The colorspace is selected according to the specified options. If one
10335 of the @option{lum_expr}, @option{cb_expr}, or @option{cr_expr}
10336 options is specified, the filter will automatically select a YCbCr
10337 colorspace. If one of the @option{red_expr}, @option{green_expr}, or
10338 @option{blue_expr} options is specified, it will select an RGB
10339 colorspace.
10340
10341 If one of the chrominance expression is not defined, it falls back on the other
10342 one. If no alpha expression is specified it will evaluate to opaque value.
10343 If none of chrominance expressions are specified, they will evaluate
10344 to the luminance expression.
10345
10346 The expressions can use the following variables and functions:
10347
10348 @table @option
10349 @item N
10350 The sequential number of the filtered frame, starting from @code{0}.
10351
10352 @item X
10353 @item Y
10354 The coordinates of the current sample.
10355
10356 @item W
10357 @item H
10358 The width and height of the image.
10359
10360 @item SW
10361 @item SH
10362 Width and height scale depending on the currently filtered plane. It is the
10363 ratio between the corresponding luma plane number of pixels and the current
10364 plane ones. E.g. for YUV4:2:0 the values are @code{1,1} for the luma plane, and
10365 @code{0.5,0.5} for chroma planes.
10366
10367 @item T
10368 Time of the current frame, expressed in seconds.
10369
10370 @item p(x, y)
10371 Return the value of the pixel at location (@var{x},@var{y}) of the current
10372 plane.
10373
10374 @item lum(x, y)
10375 Return the value of the pixel at location (@var{x},@var{y}) of the luminance
10376 plane.
10377
10378 @item cb(x, y)
10379 Return the value of the pixel at location (@var{x},@var{y}) of the
10380 blue-difference chroma plane. Return 0 if there is no such plane.
10381
10382 @item cr(x, y)
10383 Return the value of the pixel at location (@var{x},@var{y}) of the
10384 red-difference chroma plane. Return 0 if there is no such plane.
10385
10386 @item r(x, y)
10387 @item g(x, y)
10388 @item b(x, y)
10389 Return the value of the pixel at location (@var{x},@var{y}) of the
10390 red/green/blue component. Return 0 if there is no such component.
10391
10392 @item alpha(x, y)
10393 Return the value of the pixel at location (@var{x},@var{y}) of the alpha
10394 plane. Return 0 if there is no such plane.
10395 @end table
10396
10397 For functions, if @var{x} and @var{y} are outside the area, the value will be
10398 automatically clipped to the closer edge.
10399
10400 @subsection Examples
10401
10402 @itemize
10403 @item
10404 Flip the image horizontally:
10405 @example
10406 geq=p(W-X\,Y)
10407 @end example
10408
10409 @item
10410 Generate a bidimensional sine wave, with angle @code{PI/3} and a
10411 wavelength of 100 pixels:
10412 @example
10413 geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
10414 @end example
10415
10416 @item
10417 Generate a fancy enigmatic moving light:
10418 @example
10419 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
10420 @end example
10421
10422 @item
10423 Generate a quick emboss effect:
10424 @example
10425 format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
10426 @end example
10427
10428 @item
10429 Modify RGB components depending on pixel position:
10430 @example
10431 geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
10432 @end example
10433
10434 @item
10435 Create a radial gradient that is the same size as the input (also see
10436 the @ref{vignette} filter):
10437 @example
10438 geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
10439 @end example
10440 @end itemize
10441
10442 @section gradfun
10443
10444 Fix the banding artifacts that are sometimes introduced into nearly flat
10445 regions by truncation to 8-bit color depth.
10446 Interpolate the gradients that should go where the bands are, and
10447 dither them.
10448
10449 It is designed for playback only.  Do not use it prior to
10450 lossy compression, because compression tends to lose the dither and
10451 bring back the bands.
10452
10453 It accepts the following parameters:
10454
10455 @table @option
10456
10457 @item strength
10458 The maximum amount by which the filter will change any one pixel. This is also
10459 the threshold for detecting nearly flat regions. Acceptable values range from
10460 .51 to 64; the default value is 1.2. Out-of-range values will be clipped to the
10461 valid range.
10462
10463 @item radius
10464 The neighborhood to fit the gradient to. A larger radius makes for smoother
10465 gradients, but also prevents the filter from modifying the pixels near detailed
10466 regions. Acceptable values are 8-32; the default value is 16. Out-of-range
10467 values will be clipped to the valid range.
10468
10469 @end table
10470
10471 Alternatively, the options can be specified as a flat string:
10472 @var{strength}[:@var{radius}]
10473
10474 @subsection Examples
10475
10476 @itemize
10477 @item
10478 Apply the filter with a @code{3.5} strength and radius of @code{8}:
10479 @example
10480 gradfun=3.5:8
10481 @end example
10482
10483 @item
10484 Specify radius, omitting the strength (which will fall-back to the default
10485 value):
10486 @example
10487 gradfun=radius=8
10488 @end example
10489
10490 @end itemize
10491
10492 @section graphmonitor, agraphmonitor
10493 Show various filtergraph stats.
10494
10495 With this filter one can debug complete filtergraph.
10496 Especially issues with links filling with queued frames.
10497
10498 The filter accepts the following options:
10499
10500 @table @option
10501 @item size, s
10502 Set video output size. Default is @var{hd720}.
10503
10504 @item opacity, o
10505 Set video opacity. Default is @var{0.9}. Allowed range is from @var{0} to @var{1}.
10506
10507 @item mode, m
10508 Set output mode, can be @var{fulll} or @var{compact}.
10509 In @var{compact} mode only filters with some queued frames have displayed stats.
10510
10511 @item flags, f
10512 Set flags which enable which stats are shown in video.
10513
10514 Available values for flags are:
10515 @table @samp
10516 @item queue
10517 Display number of queued frames in each link.
10518
10519 @item frame_count_in
10520 Display number of frames taken from filter.
10521
10522 @item frame_count_out
10523 Display number of frames given out from filter.
10524
10525 @item pts
10526 Display current filtered frame pts.
10527
10528 @item time
10529 Display current filtered frame time.
10530
10531 @item timebase
10532 Display time base for filter link.
10533
10534 @item format
10535 Display used format for filter link.
10536
10537 @item size
10538 Display video size or number of audio channels in case of audio used by filter link.
10539
10540 @item rate
10541 Display video frame rate or sample rate in case of audio used by filter link.
10542 @end table
10543
10544 @item rate, r
10545 Set upper limit for video rate of output stream, Default value is @var{25}.
10546 This guarantee that output video frame rate will not be higher than this value.
10547 @end table
10548
10549 @section greyedge
10550 A color constancy variation filter which estimates scene illumination via grey edge algorithm
10551 and corrects the scene colors accordingly.
10552
10553 See: @url{https://staff.science.uva.nl/th.gevers/pub/GeversTIP07.pdf}
10554
10555 The filter accepts the following options:
10556
10557 @table @option
10558 @item difford
10559 The order of differentiation to be applied on the scene. Must be chosen in the range
10560 [0,2] and default value is 1.
10561
10562 @item minknorm
10563 The Minkowski parameter to be used for calculating the Minkowski distance. Must
10564 be chosen in the range [0,20] and default value is 1. Set to 0 for getting
10565 max value instead of calculating Minkowski distance.
10566
10567 @item sigma
10568 The standard deviation of Gaussian blur to be applied on the scene. Must be
10569 chosen in the range [0,1024.0] and default value = 1. floor( @var{sigma} * break_off_sigma(3) )
10570 can't be equal to 0 if @var{difford} is greater than 0.
10571 @end table
10572
10573 @subsection Examples
10574 @itemize
10575
10576 @item
10577 Grey Edge:
10578 @example
10579 greyedge=difford=1:minknorm=5:sigma=2
10580 @end example
10581
10582 @item
10583 Max Edge:
10584 @example
10585 greyedge=difford=1:minknorm=0:sigma=2
10586 @end example
10587
10588 @end itemize
10589
10590 @anchor{haldclut}
10591 @section haldclut
10592
10593 Apply a Hald CLUT to a video stream.
10594
10595 First input is the video stream to process, and second one is the Hald CLUT.
10596 The Hald CLUT input can be a simple picture or a complete video stream.
10597
10598 The filter accepts the following options:
10599
10600 @table @option
10601 @item shortest
10602 Force termination when the shortest input terminates. Default is @code{0}.
10603 @item repeatlast
10604 Continue applying the last CLUT after the end of the stream. A value of
10605 @code{0} disable the filter after the last frame of the CLUT is reached.
10606 Default is @code{1}.
10607 @end table
10608
10609 @code{haldclut} also has the same interpolation options as @ref{lut3d} (both
10610 filters share the same internals).
10611
10612 More information about the Hald CLUT can be found on Eskil Steenberg's website
10613 (Hald CLUT author) at @url{http://www.quelsolaar.com/technology/clut.html}.
10614
10615 @subsection Workflow examples
10616
10617 @subsubsection Hald CLUT video stream
10618
10619 Generate an identity Hald CLUT stream altered with various effects:
10620 @example
10621 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
10622 @end example
10623
10624 Note: make sure you use a lossless codec.
10625
10626 Then use it with @code{haldclut} to apply it on some random stream:
10627 @example
10628 ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
10629 @end example
10630
10631 The Hald CLUT will be applied to the 10 first seconds (duration of
10632 @file{clut.nut}), then the latest picture of that CLUT stream will be applied
10633 to the remaining frames of the @code{mandelbrot} stream.
10634
10635 @subsubsection Hald CLUT with preview
10636
10637 A Hald CLUT is supposed to be a squared image of @code{Level*Level*Level} by
10638 @code{Level*Level*Level} pixels. For a given Hald CLUT, FFmpeg will select the
10639 biggest possible square starting at the top left of the picture. The remaining
10640 padding pixels (bottom or right) will be ignored. This area can be used to add
10641 a preview of the Hald CLUT.
10642
10643 Typically, the following generated Hald CLUT will be supported by the
10644 @code{haldclut} filter:
10645
10646 @example
10647 ffmpeg -f lavfi -i @ref{haldclutsrc}=8 -vf "
10648    pad=iw+320 [padded_clut];
10649    smptebars=s=320x256, split [a][b];
10650    [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
10651    [main][b] overlay=W-320" -frames:v 1 clut.png
10652 @end example
10653
10654 It contains the original and a preview of the effect of the CLUT: SMPTE color
10655 bars are displayed on the right-top, and below the same color bars processed by
10656 the color changes.
10657
10658 Then, the effect of this Hald CLUT can be visualized with:
10659 @example
10660 ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
10661 @end example
10662
10663 @section hflip
10664
10665 Flip the input video horizontally.
10666
10667 For example, to horizontally flip the input video with @command{ffmpeg}:
10668 @example
10669 ffmpeg -i in.avi -vf "hflip" out.avi
10670 @end example
10671
10672 @section histeq
10673 This filter applies a global color histogram equalization on a
10674 per-frame basis.
10675
10676 It can be used to correct video that has a compressed range of pixel
10677 intensities.  The filter redistributes the pixel intensities to
10678 equalize their distribution across the intensity range. It may be
10679 viewed as an "automatically adjusting contrast filter". This filter is
10680 useful only for correcting degraded or poorly captured source
10681 video.
10682
10683 The filter accepts the following options:
10684
10685 @table @option
10686 @item strength
10687 Determine the amount of equalization to be applied.  As the strength
10688 is reduced, the distribution of pixel intensities more-and-more
10689 approaches that of the input frame. The value must be a float number
10690 in the range [0,1] and defaults to 0.200.
10691
10692 @item intensity
10693 Set the maximum intensity that can generated and scale the output
10694 values appropriately.  The strength should be set as desired and then
10695 the intensity can be limited if needed to avoid washing-out. The value
10696 must be a float number in the range [0,1] and defaults to 0.210.
10697
10698 @item antibanding
10699 Set the antibanding level. If enabled the filter will randomly vary
10700 the luminance of output pixels by a small amount to avoid banding of
10701 the histogram. Possible values are @code{none}, @code{weak} or
10702 @code{strong}. It defaults to @code{none}.
10703 @end table
10704
10705 @section histogram
10706
10707 Compute and draw a color distribution histogram for the input video.
10708
10709 The computed histogram is a representation of the color component
10710 distribution in an image.
10711
10712 Standard histogram displays the color components distribution in an image.
10713 Displays color graph for each color component. Shows distribution of
10714 the Y, U, V, A or R, G, B components, depending on input format, in the
10715 current frame. Below each graph a color component scale meter is shown.
10716
10717 The filter accepts the following options:
10718
10719 @table @option
10720 @item level_height
10721 Set height of level. Default value is @code{200}.
10722 Allowed range is [50, 2048].
10723
10724 @item scale_height
10725 Set height of color scale. Default value is @code{12}.
10726 Allowed range is [0, 40].
10727
10728 @item display_mode
10729 Set display mode.
10730 It accepts the following values:
10731 @table @samp
10732 @item stack
10733 Per color component graphs are placed below each other.
10734
10735 @item parade
10736 Per color component graphs are placed side by side.
10737
10738 @item overlay
10739 Presents information identical to that in the @code{parade}, except
10740 that the graphs representing color components are superimposed directly
10741 over one another.
10742 @end table
10743 Default is @code{stack}.
10744
10745 @item levels_mode
10746 Set mode. Can be either @code{linear}, or @code{logarithmic}.
10747 Default is @code{linear}.
10748
10749 @item components
10750 Set what color components to display.
10751 Default is @code{7}.
10752
10753 @item fgopacity
10754 Set foreground opacity. Default is @code{0.7}.
10755
10756 @item bgopacity
10757 Set background opacity. Default is @code{0.5}.
10758 @end table
10759
10760 @subsection Examples
10761
10762 @itemize
10763
10764 @item
10765 Calculate and draw histogram:
10766 @example
10767 ffplay -i input -vf histogram
10768 @end example
10769
10770 @end itemize
10771
10772 @anchor{hqdn3d}
10773 @section hqdn3d
10774
10775 This is a high precision/quality 3d denoise filter. It aims to reduce
10776 image noise, producing smooth images and making still images really
10777 still. It should enhance compressibility.
10778
10779 It accepts the following optional parameters:
10780
10781 @table @option
10782 @item luma_spatial
10783 A non-negative floating point number which specifies spatial luma strength.
10784 It defaults to 4.0.
10785
10786 @item chroma_spatial
10787 A non-negative floating point number which specifies spatial chroma strength.
10788 It defaults to 3.0*@var{luma_spatial}/4.0.
10789
10790 @item luma_tmp
10791 A floating point number which specifies luma temporal strength. It defaults to
10792 6.0*@var{luma_spatial}/4.0.
10793
10794 @item chroma_tmp
10795 A floating point number which specifies chroma temporal strength. It defaults to
10796 @var{luma_tmp}*@var{chroma_spatial}/@var{luma_spatial}.
10797 @end table
10798
10799 @anchor{hwdownload}
10800 @section hwdownload
10801
10802 Download hardware frames to system memory.
10803
10804 The input must be in hardware frames, and the output a non-hardware format.
10805 Not all formats will be supported on the output - it may be necessary to insert
10806 an additional @option{format} filter immediately following in the graph to get
10807 the output in a supported format.
10808
10809 @section hwmap
10810
10811 Map hardware frames to system memory or to another device.
10812
10813 This filter has several different modes of operation; which one is used depends
10814 on the input and output formats:
10815 @itemize
10816 @item
10817 Hardware frame input, normal frame output
10818
10819 Map the input frames to system memory and pass them to the output.  If the
10820 original hardware frame is later required (for example, after overlaying
10821 something else on part of it), the @option{hwmap} filter can be used again
10822 in the next mode to retrieve it.
10823 @item
10824 Normal frame input, hardware frame output
10825
10826 If the input is actually a software-mapped hardware frame, then unmap it -
10827 that is, return the original hardware frame.
10828
10829 Otherwise, a device must be provided.  Create new hardware surfaces on that
10830 device for the output, then map them back to the software format at the input
10831 and give those frames to the preceding filter.  This will then act like the
10832 @option{hwupload} filter, but may be able to avoid an additional copy when
10833 the input is already in a compatible format.
10834 @item
10835 Hardware frame input and output
10836
10837 A device must be supplied for the output, either directly or with the
10838 @option{derive_device} option.  The input and output devices must be of
10839 different types and compatible - the exact meaning of this is
10840 system-dependent, but typically it means that they must refer to the same
10841 underlying hardware context (for example, refer to the same graphics card).
10842
10843 If the input frames were originally created on the output device, then unmap
10844 to retrieve the original frames.
10845
10846 Otherwise, map the frames to the output device - create new hardware frames
10847 on the output corresponding to the frames on the input.
10848 @end itemize
10849
10850 The following additional parameters are accepted:
10851
10852 @table @option
10853 @item mode
10854 Set the frame mapping mode.  Some combination of:
10855 @table @var
10856 @item read
10857 The mapped frame should be readable.
10858 @item write
10859 The mapped frame should be writeable.
10860 @item overwrite
10861 The mapping will always overwrite the entire frame.
10862
10863 This may improve performance in some cases, as the original contents of the
10864 frame need not be loaded.
10865 @item direct
10866 The mapping must not involve any copying.
10867
10868 Indirect mappings to copies of frames are created in some cases where either
10869 direct mapping is not possible or it would have unexpected properties.
10870 Setting this flag ensures that the mapping is direct and will fail if that is
10871 not possible.
10872 @end table
10873 Defaults to @var{read+write} if not specified.
10874
10875 @item derive_device @var{type}
10876 Rather than using the device supplied at initialisation, instead derive a new
10877 device of type @var{type} from the device the input frames exist on.
10878
10879 @item reverse
10880 In a hardware to hardware mapping, map in reverse - create frames in the sink
10881 and map them back to the source.  This may be necessary in some cases where
10882 a mapping in one direction is required but only the opposite direction is
10883 supported by the devices being used.
10884
10885 This option is dangerous - it may break the preceding filter in undefined
10886 ways if there are any additional constraints on that filter's output.
10887 Do not use it without fully understanding the implications of its use.
10888 @end table
10889
10890 @anchor{hwupload}
10891 @section hwupload
10892
10893 Upload system memory frames to hardware surfaces.
10894
10895 The device to upload to must be supplied when the filter is initialised.  If
10896 using ffmpeg, select the appropriate device with the @option{-filter_hw_device}
10897 option.
10898
10899 @anchor{hwupload_cuda}
10900 @section hwupload_cuda
10901
10902 Upload system memory frames to a CUDA device.
10903
10904 It accepts the following optional parameters:
10905
10906 @table @option
10907 @item device
10908 The number of the CUDA device to use
10909 @end table
10910
10911 @section hqx
10912
10913 Apply a high-quality magnification filter designed for pixel art. This filter
10914 was originally created by Maxim Stepin.
10915
10916 It accepts the following option:
10917
10918 @table @option
10919 @item n
10920 Set the scaling dimension: @code{2} for @code{hq2x}, @code{3} for
10921 @code{hq3x} and @code{4} for @code{hq4x}.
10922 Default is @code{3}.
10923 @end table
10924
10925 @section hstack
10926 Stack input videos horizontally.
10927
10928 All streams must be of same pixel format and of same height.
10929
10930 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
10931 to create same output.
10932
10933 The filter accept the following option:
10934
10935 @table @option
10936 @item inputs
10937 Set number of input streams. Default is 2.
10938
10939 @item shortest
10940 If set to 1, force the output to terminate when the shortest input
10941 terminates. Default value is 0.
10942 @end table
10943
10944 @section hue
10945
10946 Modify the hue and/or the saturation of the input.
10947
10948 It accepts the following parameters:
10949
10950 @table @option
10951 @item h
10952 Specify the hue angle as a number of degrees. It accepts an expression,
10953 and defaults to "0".
10954
10955 @item s
10956 Specify the saturation in the [-10,10] range. It accepts an expression and
10957 defaults to "1".
10958
10959 @item H
10960 Specify the hue angle as a number of radians. It accepts an
10961 expression, and defaults to "0".
10962
10963 @item b
10964 Specify the brightness in the [-10,10] range. It accepts an expression and
10965 defaults to "0".
10966 @end table
10967
10968 @option{h} and @option{H} are mutually exclusive, and can't be
10969 specified at the same time.
10970
10971 The @option{b}, @option{h}, @option{H} and @option{s} option values are
10972 expressions containing the following constants:
10973
10974 @table @option
10975 @item n
10976 frame count of the input frame starting from 0
10977
10978 @item pts
10979 presentation timestamp of the input frame expressed in time base units
10980
10981 @item r
10982 frame rate of the input video, NAN if the input frame rate is unknown
10983
10984 @item t
10985 timestamp expressed in seconds, NAN if the input timestamp is unknown
10986
10987 @item tb
10988 time base of the input video
10989 @end table
10990
10991 @subsection Examples
10992
10993 @itemize
10994 @item
10995 Set the hue to 90 degrees and the saturation to 1.0:
10996 @example
10997 hue=h=90:s=1
10998 @end example
10999
11000 @item
11001 Same command but expressing the hue in radians:
11002 @example
11003 hue=H=PI/2:s=1
11004 @end example
11005
11006 @item
11007 Rotate hue and make the saturation swing between 0
11008 and 2 over a period of 1 second:
11009 @example
11010 hue="H=2*PI*t: s=sin(2*PI*t)+1"
11011 @end example
11012
11013 @item
11014 Apply a 3 seconds saturation fade-in effect starting at 0:
11015 @example
11016 hue="s=min(t/3\,1)"
11017 @end example
11018
11019 The general fade-in expression can be written as:
11020 @example
11021 hue="s=min(0\, max((t-START)/DURATION\, 1))"
11022 @end example
11023
11024 @item
11025 Apply a 3 seconds saturation fade-out effect starting at 5 seconds:
11026 @example
11027 hue="s=max(0\, min(1\, (8-t)/3))"
11028 @end example
11029
11030 The general fade-out expression can be written as:
11031 @example
11032 hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
11033 @end example
11034
11035 @end itemize
11036
11037 @subsection Commands
11038
11039 This filter supports the following commands:
11040 @table @option
11041 @item b
11042 @item s
11043 @item h
11044 @item H
11045 Modify the hue and/or the saturation and/or brightness of the input video.
11046 The command accepts the same syntax of the corresponding option.
11047
11048 If the specified expression is not valid, it is kept at its current
11049 value.
11050 @end table
11051
11052 @section hysteresis
11053
11054 Grow first stream into second stream by connecting components.
11055 This makes it possible to build more robust edge masks.
11056
11057 This filter accepts the following options:
11058
11059 @table @option
11060 @item planes
11061 Set which planes will be processed as bitmap, unprocessed planes will be
11062 copied from first stream.
11063 By default value 0xf, all planes will be processed.
11064
11065 @item threshold
11066 Set threshold which is used in filtering. If pixel component value is higher than
11067 this value filter algorithm for connecting components is activated.
11068 By default value is 0.
11069 @end table
11070
11071 @section idet
11072
11073 Detect video interlacing type.
11074
11075 This filter tries to detect if the input frames are interlaced, progressive,
11076 top or bottom field first. It will also try to detect fields that are
11077 repeated between adjacent frames (a sign of telecine).
11078
11079 Single frame detection considers only immediately adjacent frames when classifying each frame.
11080 Multiple frame detection incorporates the classification history of previous frames.
11081
11082 The filter will log these metadata values:
11083
11084 @table @option
11085 @item single.current_frame
11086 Detected type of current frame using single-frame detection. One of:
11087 ``tff'' (top field first), ``bff'' (bottom field first),
11088 ``progressive'', or ``undetermined''
11089
11090 @item single.tff
11091 Cumulative number of frames detected as top field first using single-frame detection.
11092
11093 @item multiple.tff
11094 Cumulative number of frames detected as top field first using multiple-frame detection.
11095
11096 @item single.bff
11097 Cumulative number of frames detected as bottom field first using single-frame detection.
11098
11099 @item multiple.current_frame
11100 Detected type of current frame using multiple-frame detection. One of:
11101 ``tff'' (top field first), ``bff'' (bottom field first),
11102 ``progressive'', or ``undetermined''
11103
11104 @item multiple.bff
11105 Cumulative number of frames detected as bottom field first using multiple-frame detection.
11106
11107 @item single.progressive
11108 Cumulative number of frames detected as progressive using single-frame detection.
11109
11110 @item multiple.progressive
11111 Cumulative number of frames detected as progressive using multiple-frame detection.
11112
11113 @item single.undetermined
11114 Cumulative number of frames that could not be classified using single-frame detection.
11115
11116 @item multiple.undetermined
11117 Cumulative number of frames that could not be classified using multiple-frame detection.
11118
11119 @item repeated.current_frame
11120 Which field in the current frame is repeated from the last. One of ``neither'', ``top'', or ``bottom''.
11121
11122 @item repeated.neither
11123 Cumulative number of frames with no repeated field.
11124
11125 @item repeated.top
11126 Cumulative number of frames with the top field repeated from the previous frame's top field.
11127
11128 @item repeated.bottom
11129 Cumulative number of frames with the bottom field repeated from the previous frame's bottom field.
11130 @end table
11131
11132 The filter accepts the following options:
11133
11134 @table @option
11135 @item intl_thres
11136 Set interlacing threshold.
11137 @item prog_thres
11138 Set progressive threshold.
11139 @item rep_thres
11140 Threshold for repeated field detection.
11141 @item half_life
11142 Number of frames after which a given frame's contribution to the
11143 statistics is halved (i.e., it contributes only 0.5 to its
11144 classification). The default of 0 means that all frames seen are given
11145 full weight of 1.0 forever.
11146 @item analyze_interlaced_flag
11147 When this is not 0 then idet will use the specified number of frames to determine
11148 if the interlaced flag is accurate, it will not count undetermined frames.
11149 If the flag is found to be accurate it will be used without any further
11150 computations, if it is found to be inaccurate it will be cleared without any
11151 further computations. This allows inserting the idet filter as a low computational
11152 method to clean up the interlaced flag
11153 @end table
11154
11155 @section il
11156
11157 Deinterleave or interleave fields.
11158
11159 This filter allows one to process interlaced images fields without
11160 deinterlacing them. Deinterleaving splits the input frame into 2
11161 fields (so called half pictures). Odd lines are moved to the top
11162 half of the output image, even lines to the bottom half.
11163 You can process (filter) them independently and then re-interleave them.
11164
11165 The filter accepts the following options:
11166
11167 @table @option
11168 @item luma_mode, l
11169 @item chroma_mode, c
11170 @item alpha_mode, a
11171 Available values for @var{luma_mode}, @var{chroma_mode} and
11172 @var{alpha_mode} are:
11173
11174 @table @samp
11175 @item none
11176 Do nothing.
11177
11178 @item deinterleave, d
11179 Deinterleave fields, placing one above the other.
11180
11181 @item interleave, i
11182 Interleave fields. Reverse the effect of deinterleaving.
11183 @end table
11184 Default value is @code{none}.
11185
11186 @item luma_swap, ls
11187 @item chroma_swap, cs
11188 @item alpha_swap, as
11189 Swap luma/chroma/alpha fields. Exchange even & odd lines. Default value is @code{0}.
11190 @end table
11191
11192 @section inflate
11193
11194 Apply inflate effect to the video.
11195
11196 This filter replaces the pixel by the local(3x3) average by taking into account
11197 only values higher than the pixel.
11198
11199 It accepts the following options:
11200
11201 @table @option
11202 @item threshold0
11203 @item threshold1
11204 @item threshold2
11205 @item threshold3
11206 Limit the maximum change for each plane, default is 65535.
11207 If 0, plane will remain unchanged.
11208 @end table
11209
11210 @section interlace
11211
11212 Simple interlacing filter from progressive contents. This interleaves upper (or
11213 lower) lines from odd frames with lower (or upper) lines from even frames,
11214 halving the frame rate and preserving image height.
11215
11216 @example
11217    Original        Original             New Frame
11218    Frame 'j'      Frame 'j+1'             (tff)
11219   ==========      ===========       ==================
11220     Line 0  -------------------->    Frame 'j' Line 0
11221     Line 1          Line 1  ---->   Frame 'j+1' Line 1
11222     Line 2 --------------------->    Frame 'j' Line 2
11223     Line 3          Line 3  ---->   Frame 'j+1' Line 3
11224      ...             ...                   ...
11225 New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
11226 @end example
11227
11228 It accepts the following optional parameters:
11229
11230 @table @option
11231 @item scan
11232 This determines whether the interlaced frame is taken from the even
11233 (tff - default) or odd (bff) lines of the progressive frame.
11234
11235 @item lowpass
11236 Vertical lowpass filter to avoid twitter interlacing and
11237 reduce moire patterns.
11238
11239 @table @samp
11240 @item 0, off
11241 Disable vertical lowpass filter
11242
11243 @item 1, linear
11244 Enable linear filter (default)
11245
11246 @item 2, complex
11247 Enable complex filter. This will slightly less reduce twitter and moire
11248 but better retain detail and subjective sharpness impression.
11249
11250 @end table
11251 @end table
11252
11253 @section kerndeint
11254
11255 Deinterlace input video by applying Donald Graft's adaptive kernel
11256 deinterling. Work on interlaced parts of a video to produce
11257 progressive frames.
11258
11259 The description of the accepted parameters follows.
11260
11261 @table @option
11262 @item thresh
11263 Set the threshold which affects the filter's tolerance when
11264 determining if a pixel line must be processed. It must be an integer
11265 in the range [0,255] and defaults to 10. A value of 0 will result in
11266 applying the process on every pixels.
11267
11268 @item map
11269 Paint pixels exceeding the threshold value to white if set to 1.
11270 Default is 0.
11271
11272 @item order
11273 Set the fields order. Swap fields if set to 1, leave fields alone if
11274 0. Default is 0.
11275
11276 @item sharp
11277 Enable additional sharpening if set to 1. Default is 0.
11278
11279 @item twoway
11280 Enable twoway sharpening if set to 1. Default is 0.
11281 @end table
11282
11283 @subsection Examples
11284
11285 @itemize
11286 @item
11287 Apply default values:
11288 @example
11289 kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
11290 @end example
11291
11292 @item
11293 Enable additional sharpening:
11294 @example
11295 kerndeint=sharp=1
11296 @end example
11297
11298 @item
11299 Paint processed pixels in white:
11300 @example
11301 kerndeint=map=1
11302 @end example
11303 @end itemize
11304
11305 @section lenscorrection
11306
11307 Correct radial lens distortion
11308
11309 This filter can be used to correct for radial distortion as can result from the use
11310 of wide angle lenses, and thereby re-rectify the image. To find the right parameters
11311 one can use tools available for example as part of opencv or simply trial-and-error.
11312 To use opencv use the calibration sample (under samples/cpp) from the opencv sources
11313 and extract the k1 and k2 coefficients from the resulting matrix.
11314
11315 Note that effectively the same filter is available in the open-source tools Krita and
11316 Digikam from the KDE project.
11317
11318 In contrast to the @ref{vignette} filter, which can also be used to compensate lens errors,
11319 this filter corrects the distortion of the image, whereas @ref{vignette} corrects the
11320 brightness distribution, so you may want to use both filters together in certain
11321 cases, though you will have to take care of ordering, i.e. whether vignetting should
11322 be applied before or after lens correction.
11323
11324 @subsection Options
11325
11326 The filter accepts the following options:
11327
11328 @table @option
11329 @item cx
11330 Relative x-coordinate of the focal point of the image, and thereby the center of the
11331 distortion. This value has a range [0,1] and is expressed as fractions of the image
11332 width. Default is 0.5.
11333 @item cy
11334 Relative y-coordinate of the focal point of the image, and thereby the center of the
11335 distortion. This value has a range [0,1] and is expressed as fractions of the image
11336 height. Default is 0.5.
11337 @item k1
11338 Coefficient of the quadratic correction term. This value has a range [-1,1]. 0 means
11339 no correction. Default is 0.
11340 @item k2
11341 Coefficient of the double quadratic correction term. This value has a range [-1,1].
11342 0 means no correction. Default is 0.
11343 @end table
11344
11345 The formula that generates the correction is:
11346
11347 @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)
11348
11349 where @var{r_0} is halve of the image diagonal and @var{r_src} and @var{r_tgt} are the
11350 distances from the focal point in the source and target images, respectively.
11351
11352 @section lensfun
11353
11354 Apply lens correction via the lensfun library (@url{http://lensfun.sourceforge.net/}).
11355
11356 The @code{lensfun} filter requires the camera make, camera model, and lens model
11357 to apply the lens correction. The filter will load the lensfun database and
11358 query it to find the corresponding camera and lens entries in the database. As
11359 long as these entries can be found with the given options, the filter can
11360 perform corrections on frames. Note that incomplete strings will result in the
11361 filter choosing the best match with the given options, and the filter will
11362 output the chosen camera and lens models (logged with level "info"). You must
11363 provide the make, camera model, and lens model as they are required.
11364
11365 The filter accepts the following options:
11366
11367 @table @option
11368 @item make
11369 The make of the camera (for example, "Canon"). This option is required.
11370
11371 @item model
11372 The model of the camera (for example, "Canon EOS 100D"). This option is
11373 required.
11374
11375 @item lens_model
11376 The model of the lens (for example, "Canon EF-S 18-55mm f/3.5-5.6 IS STM"). This
11377 option is required.
11378
11379 @item mode
11380 The type of correction to apply. The following values are valid options:
11381
11382 @table @samp
11383 @item vignetting
11384 Enables fixing lens vignetting.
11385
11386 @item geometry
11387 Enables fixing lens geometry. This is the default.
11388
11389 @item subpixel
11390 Enables fixing chromatic aberrations.
11391
11392 @item vig_geo
11393 Enables fixing lens vignetting and lens geometry.
11394
11395 @item vig_subpixel
11396 Enables fixing lens vignetting and chromatic aberrations.
11397
11398 @item distortion
11399 Enables fixing both lens geometry and chromatic aberrations.
11400
11401 @item all
11402 Enables all possible corrections.
11403
11404 @end table
11405 @item focal_length
11406 The focal length of the image/video (zoom; expected constant for video). For
11407 example, a 18--55mm lens has focal length range of [18--55], so a value in that
11408 range should be chosen when using that lens. Default 18.
11409
11410 @item aperture
11411 The aperture of the image/video (expected constant for video). Note that
11412 aperture is only used for vignetting correction. Default 3.5.
11413
11414 @item focus_distance
11415 The focus distance of the image/video (expected constant for video). Note that
11416 focus distance is only used for vignetting and only slightly affects the
11417 vignetting correction process. If unknown, leave it at the default value (which
11418 is 1000).
11419
11420 @item target_geometry
11421 The target geometry of the output image/video. The following values are valid
11422 options:
11423
11424 @table @samp
11425 @item rectilinear (default)
11426 @item fisheye
11427 @item panoramic
11428 @item equirectangular
11429 @item fisheye_orthographic
11430 @item fisheye_stereographic
11431 @item fisheye_equisolid
11432 @item fisheye_thoby
11433 @end table
11434 @item reverse
11435 Apply the reverse of image correction (instead of correcting distortion, apply
11436 it).
11437
11438 @item interpolation
11439 The type of interpolation used when correcting distortion. The following values
11440 are valid options:
11441
11442 @table @samp
11443 @item nearest
11444 @item linear (default)
11445 @item lanczos
11446 @end table
11447 @end table
11448
11449 @subsection Examples
11450
11451 @itemize
11452 @item
11453 Apply lens correction with make "Canon", camera model "Canon EOS 100D", and lens
11454 model "Canon EF-S 18-55mm f/3.5-5.6 IS STM" with focal length of "18" and
11455 aperture of "8.0".
11456
11457 @example
11458 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
11459 @end example
11460
11461 @item
11462 Apply the same as before, but only for the first 5 seconds of video.
11463
11464 @example
11465 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
11466 @end example
11467
11468 @end itemize
11469
11470 @section libvmaf
11471
11472 Obtain the VMAF (Video Multi-Method Assessment Fusion)
11473 score between two input videos.
11474
11475 The obtained VMAF score is printed through the logging system.
11476
11477 It requires Netflix's vmaf library (libvmaf) as a pre-requisite.
11478 After installing the library it can be enabled using:
11479 @code{./configure --enable-libvmaf --enable-version3}.
11480 If no model path is specified it uses the default model: @code{vmaf_v0.6.1.pkl}.
11481
11482 The filter has following options:
11483
11484 @table @option
11485 @item model_path
11486 Set the model path which is to be used for SVM.
11487 Default value: @code{"vmaf_v0.6.1.pkl"}
11488
11489 @item log_path
11490 Set the file path to be used to store logs.
11491
11492 @item log_fmt
11493 Set the format of the log file (xml or json).
11494
11495 @item enable_transform
11496 This option can enable/disable the @code{score_transform} applied to the final predicted VMAF score,
11497 if you have specified score_transform option in the input parameter file passed to @code{run_vmaf_training.py}
11498 Default value: @code{false}
11499
11500 @item phone_model
11501 Invokes the phone model which will generate VMAF scores higher than in the
11502 regular model, which is more suitable for laptop, TV, etc. viewing conditions.
11503
11504 @item psnr
11505 Enables computing psnr along with vmaf.
11506
11507 @item ssim
11508 Enables computing ssim along with vmaf.
11509
11510 @item ms_ssim
11511 Enables computing ms_ssim along with vmaf.
11512
11513 @item pool
11514 Set the pool method (mean, min or harmonic mean) to be used for computing vmaf.
11515
11516 @item n_threads
11517 Set number of threads to be used when computing vmaf.
11518
11519 @item n_subsample
11520 Set interval for frame subsampling used when computing vmaf.
11521
11522 @item enable_conf_interval
11523 Enables confidence interval.
11524 @end table
11525
11526 This filter also supports the @ref{framesync} options.
11527
11528 On the below examples the input file @file{main.mpg} being processed is
11529 compared with the reference file @file{ref.mpg}.
11530
11531 @example
11532 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf -f null -
11533 @end example
11534
11535 Example with options:
11536 @example
11537 ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf="psnr=1:log_fmt=json" -f null -
11538 @end example
11539
11540 @section limiter
11541
11542 Limits the pixel components values to the specified range [min, max].
11543
11544 The filter accepts the following options:
11545
11546 @table @option
11547 @item min
11548 Lower bound. Defaults to the lowest allowed value for the input.
11549
11550 @item max
11551 Upper bound. Defaults to the highest allowed value for the input.
11552
11553 @item planes
11554 Specify which planes will be processed. Defaults to all available.
11555 @end table
11556
11557 @section loop
11558
11559 Loop video frames.
11560
11561 The filter accepts the following options:
11562
11563 @table @option
11564 @item loop
11565 Set the number of loops. Setting this value to -1 will result in infinite loops.
11566 Default is 0.
11567
11568 @item size
11569 Set maximal size in number of frames. Default is 0.
11570
11571 @item start
11572 Set first frame of loop. Default is 0.
11573 @end table
11574
11575 @subsection Examples
11576
11577 @itemize
11578 @item
11579 Loop single first frame infinitely:
11580 @example
11581 loop=loop=-1:size=1:start=0
11582 @end example
11583
11584 @item
11585 Loop single first frame 10 times:
11586 @example
11587 loop=loop=10:size=1:start=0
11588 @end example
11589
11590 @item
11591 Loop 10 first frames 5 times:
11592 @example
11593 loop=loop=5:size=10:start=0
11594 @end example
11595 @end itemize
11596
11597 @section lut1d
11598
11599 Apply a 1D LUT to an input video.
11600
11601 The filter accepts the following options:
11602
11603 @table @option
11604 @item file
11605 Set the 1D LUT file name.
11606
11607 Currently supported formats:
11608 @table @samp
11609 @item cube
11610 Iridas
11611 @end table
11612
11613 @item interp
11614 Select interpolation mode.
11615
11616 Available values are:
11617
11618 @table @samp
11619 @item nearest
11620 Use values from the nearest defined point.
11621 @item linear
11622 Interpolate values using the linear interpolation.
11623 @item cosine
11624 Interpolate values using the cosine interpolation.
11625 @item cubic
11626 Interpolate values using the cubic interpolation.
11627 @item spline
11628 Interpolate values using the spline interpolation.
11629 @end table
11630 @end table
11631
11632 @anchor{lut3d}
11633 @section lut3d
11634
11635 Apply a 3D LUT to an input video.
11636
11637 The filter accepts the following options:
11638
11639 @table @option
11640 @item file
11641 Set the 3D LUT file name.
11642
11643 Currently supported formats:
11644 @table @samp
11645 @item 3dl
11646 AfterEffects
11647 @item cube
11648 Iridas
11649 @item dat
11650 DaVinci
11651 @item m3d
11652 Pandora
11653 @end table
11654 @item interp
11655 Select interpolation mode.
11656
11657 Available values are:
11658
11659 @table @samp
11660 @item nearest
11661 Use values from the nearest defined point.
11662 @item trilinear
11663 Interpolate values using the 8 points defining a cube.
11664 @item tetrahedral
11665 Interpolate values using a tetrahedron.
11666 @end table
11667 @end table
11668
11669 This filter also supports the @ref{framesync} options.
11670
11671 @section lumakey
11672
11673 Turn certain luma values into transparency.
11674
11675 The filter accepts the following options:
11676
11677 @table @option
11678 @item threshold
11679 Set the luma which will be used as base for transparency.
11680 Default value is @code{0}.
11681
11682 @item tolerance
11683 Set the range of luma values to be keyed out.
11684 Default value is @code{0}.
11685
11686 @item softness
11687 Set the range of softness. Default value is @code{0}.
11688 Use this to control gradual transition from zero to full transparency.
11689 @end table
11690
11691 @section lut, lutrgb, lutyuv
11692
11693 Compute a look-up table for binding each pixel component input value
11694 to an output value, and apply it to the input video.
11695
11696 @var{lutyuv} applies a lookup table to a YUV input video, @var{lutrgb}
11697 to an RGB input video.
11698
11699 These filters accept the following parameters:
11700 @table @option
11701 @item c0
11702 set first pixel component expression
11703 @item c1
11704 set second pixel component expression
11705 @item c2
11706 set third pixel component expression
11707 @item c3
11708 set fourth pixel component expression, corresponds to the alpha component
11709
11710 @item r
11711 set red component expression
11712 @item g
11713 set green component expression
11714 @item b
11715 set blue component expression
11716 @item a
11717 alpha component expression
11718
11719 @item y
11720 set Y/luminance component expression
11721 @item u
11722 set U/Cb component expression
11723 @item v
11724 set V/Cr component expression
11725 @end table
11726
11727 Each of them specifies the expression to use for computing the lookup table for
11728 the corresponding pixel component values.
11729
11730 The exact component associated to each of the @var{c*} options depends on the
11731 format in input.
11732
11733 The @var{lut} filter requires either YUV or RGB pixel formats in input,
11734 @var{lutrgb} requires RGB pixel formats in input, and @var{lutyuv} requires YUV.
11735
11736 The expressions can contain the following constants and functions:
11737
11738 @table @option
11739 @item w
11740 @item h
11741 The input width and height.
11742
11743 @item val
11744 The input value for the pixel component.
11745
11746 @item clipval
11747 The input value, clipped to the @var{minval}-@var{maxval} range.
11748
11749 @item maxval
11750 The maximum value for the pixel component.
11751
11752 @item minval
11753 The minimum value for the pixel component.
11754
11755 @item negval
11756 The negated value for the pixel component value, clipped to the
11757 @var{minval}-@var{maxval} range; it corresponds to the expression
11758 "maxval-clipval+minval".
11759
11760 @item clip(val)
11761 The computed value in @var{val}, clipped to the
11762 @var{minval}-@var{maxval} range.
11763
11764 @item gammaval(gamma)
11765 The computed gamma correction value of the pixel component value,
11766 clipped to the @var{minval}-@var{maxval} range. It corresponds to the
11767 expression
11768 "pow((clipval-minval)/(maxval-minval)\,@var{gamma})*(maxval-minval)+minval"
11769
11770 @end table
11771
11772 All expressions default to "val".
11773
11774 @subsection Examples
11775
11776 @itemize
11777 @item
11778 Negate input video:
11779 @example
11780 lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
11781 lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
11782 @end example
11783
11784 The above is the same as:
11785 @example
11786 lutrgb="r=negval:g=negval:b=negval"
11787 lutyuv="y=negval:u=negval:v=negval"
11788 @end example
11789
11790 @item
11791 Negate luminance:
11792 @example
11793 lutyuv=y=negval
11794 @end example
11795
11796 @item
11797 Remove chroma components, turning the video into a graytone image:
11798 @example
11799 lutyuv="u=128:v=128"
11800 @end example
11801
11802 @item
11803 Apply a luma burning effect:
11804 @example
11805 lutyuv="y=2*val"
11806 @end example
11807
11808 @item
11809 Remove green and blue components:
11810 @example
11811 lutrgb="g=0:b=0"
11812 @end example
11813
11814 @item
11815 Set a constant alpha channel value on input:
11816 @example
11817 format=rgba,lutrgb=a="maxval-minval/2"
11818 @end example
11819
11820 @item
11821 Correct luminance gamma by a factor of 0.5:
11822 @example
11823 lutyuv=y=gammaval(0.5)
11824 @end example
11825
11826 @item
11827 Discard least significant bits of luma:
11828 @example
11829 lutyuv=y='bitand(val, 128+64+32)'
11830 @end example
11831
11832 @item
11833 Technicolor like effect:
11834 @example
11835 lutyuv=u='(val-maxval/2)*2+maxval/2':v='(val-maxval/2)*2+maxval/2'
11836 @end example
11837 @end itemize
11838
11839 @section lut2, tlut2
11840
11841 The @code{lut2} filter takes two input streams and outputs one
11842 stream.
11843
11844 The @code{tlut2} (time lut2) filter takes two consecutive frames
11845 from one single stream.
11846
11847 This filter accepts the following parameters:
11848 @table @option
11849 @item c0
11850 set first pixel component expression
11851 @item c1
11852 set second pixel component expression
11853 @item c2
11854 set third pixel component expression
11855 @item c3
11856 set fourth pixel component expression, corresponds to the alpha component
11857
11858 @item d
11859 set output bit depth, only available for @code{lut2} filter. By default is 0,
11860 which means bit depth is automatically picked from first input format.
11861 @end table
11862
11863 Each of them specifies the expression to use for computing the lookup table for
11864 the corresponding pixel component values.
11865
11866 The exact component associated to each of the @var{c*} options depends on the
11867 format in inputs.
11868
11869 The expressions can contain the following constants:
11870
11871 @table @option
11872 @item w
11873 @item h
11874 The input width and height.
11875
11876 @item x
11877 The first input value for the pixel component.
11878
11879 @item y
11880 The second input value for the pixel component.
11881
11882 @item bdx
11883 The first input video bit depth.
11884
11885 @item bdy
11886 The second input video bit depth.
11887 @end table
11888
11889 All expressions default to "x".
11890
11891 @subsection Examples
11892
11893 @itemize
11894 @item
11895 Highlight differences between two RGB video streams:
11896 @example
11897 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)'
11898 @end example
11899
11900 @item
11901 Highlight differences between two YUV video streams:
11902 @example
11903 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)'
11904 @end example
11905
11906 @item
11907 Show max difference between two video streams:
11908 @example
11909 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)))'
11910 @end example
11911 @end itemize
11912
11913 @section maskedclamp
11914
11915 Clamp the first input stream with the second input and third input stream.
11916
11917 Returns the value of first stream to be between second input
11918 stream - @code{undershoot} and third input stream + @code{overshoot}.
11919
11920 This filter accepts the following options:
11921 @table @option
11922 @item undershoot
11923 Default value is @code{0}.
11924
11925 @item overshoot
11926 Default value is @code{0}.
11927
11928 @item planes
11929 Set which planes will be processed as bitmap, unprocessed planes will be
11930 copied from first stream.
11931 By default value 0xf, all planes will be processed.
11932 @end table
11933
11934 @section maskedmerge
11935
11936 Merge the first input stream with the second input stream using per pixel
11937 weights in the third input stream.
11938
11939 A value of 0 in the third stream pixel component means that pixel component
11940 from first stream is returned unchanged, while maximum value (eg. 255 for
11941 8-bit videos) means that pixel component from second stream is returned
11942 unchanged. Intermediate values define the amount of merging between both
11943 input stream's pixel components.
11944
11945 This filter accepts the following options:
11946 @table @option
11947 @item planes
11948 Set which planes will be processed as bitmap, unprocessed planes will be
11949 copied from first stream.
11950 By default value 0xf, all planes will be processed.
11951 @end table
11952
11953 @section maskfun
11954 Create mask from input video.
11955
11956 For example it is useful to create motion masks after @code{tblend} filter.
11957
11958 This filter accepts the following options:
11959
11960 @table @option
11961 @item low
11962 Set low threshold. Any pixel component lower or exact than this value will be set to 0.
11963
11964 @item high
11965 Set high threshold. Any pixel component higher than this value will be set to max value
11966 allowed for current pixel format.
11967
11968 @item planes
11969 Set planes to filter, by default all available planes are filtered.
11970
11971 @item fill
11972 Fill all frame pixels with this value.
11973
11974 @item sum
11975 Set max average pixel value for frame. If sum of all pixel components is higher that this
11976 average, output frame will be completely filled with value set by @var{fill} option.
11977 Typically useful for scene changes when used in combination with @code{tblend} filter.
11978 @end table
11979
11980 @section mcdeint
11981
11982 Apply motion-compensation deinterlacing.
11983
11984 It needs one field per frame as input and must thus be used together
11985 with yadif=1/3 or equivalent.
11986
11987 This filter accepts the following options:
11988 @table @option
11989 @item mode
11990 Set the deinterlacing mode.
11991
11992 It accepts one of the following values:
11993 @table @samp
11994 @item fast
11995 @item medium
11996 @item slow
11997 use iterative motion estimation
11998 @item extra_slow
11999 like @samp{slow}, but use multiple reference frames.
12000 @end table
12001 Default value is @samp{fast}.
12002
12003 @item parity
12004 Set the picture field parity assumed for the input video. It must be
12005 one of the following values:
12006
12007 @table @samp
12008 @item 0, tff
12009 assume top field first
12010 @item 1, bff
12011 assume bottom field first
12012 @end table
12013
12014 Default value is @samp{bff}.
12015
12016 @item qp
12017 Set per-block quantization parameter (QP) used by the internal
12018 encoder.
12019
12020 Higher values should result in a smoother motion vector field but less
12021 optimal individual vectors. Default value is 1.
12022 @end table
12023
12024 @section mergeplanes
12025
12026 Merge color channel components from several video streams.
12027
12028 The filter accepts up to 4 input streams, and merge selected input
12029 planes to the output video.
12030
12031 This filter accepts the following options:
12032 @table @option
12033 @item mapping
12034 Set input to output plane mapping. Default is @code{0}.
12035
12036 The mappings is specified as a bitmap. It should be specified as a
12037 hexadecimal number in the form 0xAa[Bb[Cc[Dd]]]. 'Aa' describes the
12038 mapping for the first plane of the output stream. 'A' sets the number of
12039 the input stream to use (from 0 to 3), and 'a' the plane number of the
12040 corresponding input to use (from 0 to 3). The rest of the mappings is
12041 similar, 'Bb' describes the mapping for the output stream second
12042 plane, 'Cc' describes the mapping for the output stream third plane and
12043 'Dd' describes the mapping for the output stream fourth plane.
12044
12045 @item format
12046 Set output pixel format. Default is @code{yuva444p}.
12047 @end table
12048
12049 @subsection Examples
12050
12051 @itemize
12052 @item
12053 Merge three gray video streams of same width and height into single video stream:
12054 @example
12055 [a0][a1][a2]mergeplanes=0x001020:yuv444p
12056 @end example
12057
12058 @item
12059 Merge 1st yuv444p stream and 2nd gray video stream into yuva444p video stream:
12060 @example
12061 [a0][a1]mergeplanes=0x00010210:yuva444p
12062 @end example
12063
12064 @item
12065 Swap Y and A plane in yuva444p stream:
12066 @example
12067 format=yuva444p,mergeplanes=0x03010200:yuva444p
12068 @end example
12069
12070 @item
12071 Swap U and V plane in yuv420p stream:
12072 @example
12073 format=yuv420p,mergeplanes=0x000201:yuv420p
12074 @end example
12075
12076 @item
12077 Cast a rgb24 clip to yuv444p:
12078 @example
12079 format=rgb24,mergeplanes=0x000102:yuv444p
12080 @end example
12081 @end itemize
12082
12083 @section mestimate
12084
12085 Estimate and export motion vectors using block matching algorithms.
12086 Motion vectors are stored in frame side data to be used by other filters.
12087
12088 This filter accepts the following options:
12089 @table @option
12090 @item method
12091 Specify the motion estimation method. Accepts one of the following values:
12092
12093 @table @samp
12094 @item esa
12095 Exhaustive search algorithm.
12096 @item tss
12097 Three step search algorithm.
12098 @item tdls
12099 Two dimensional logarithmic search algorithm.
12100 @item ntss
12101 New three step search algorithm.
12102 @item fss
12103 Four step search algorithm.
12104 @item ds
12105 Diamond search algorithm.
12106 @item hexbs
12107 Hexagon-based search algorithm.
12108 @item epzs
12109 Enhanced predictive zonal search algorithm.
12110 @item umh
12111 Uneven multi-hexagon search algorithm.
12112 @end table
12113 Default value is @samp{esa}.
12114
12115 @item mb_size
12116 Macroblock size. Default @code{16}.
12117
12118 @item search_param
12119 Search parameter. Default @code{7}.
12120 @end table
12121
12122 @section midequalizer
12123
12124 Apply Midway Image Equalization effect using two video streams.
12125
12126 Midway Image Equalization adjusts a pair of images to have the same
12127 histogram, while maintaining their dynamics as much as possible. It's
12128 useful for e.g. matching exposures from a pair of stereo cameras.
12129
12130 This filter has two inputs and one output, which must be of same pixel format, but
12131 may be of different sizes. The output of filter is first input adjusted with
12132 midway histogram of both inputs.
12133
12134 This filter accepts the following option:
12135
12136 @table @option
12137 @item planes
12138 Set which planes to process. Default is @code{15}, which is all available planes.
12139 @end table
12140
12141 @section minterpolate
12142
12143 Convert the video to specified frame rate using motion interpolation.
12144
12145 This filter accepts the following options:
12146 @table @option
12147 @item fps
12148 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}.
12149
12150 @item mi_mode
12151 Motion interpolation mode. Following values are accepted:
12152 @table @samp
12153 @item dup
12154 Duplicate previous or next frame for interpolating new ones.
12155 @item blend
12156 Blend source frames. Interpolated frame is mean of previous and next frames.
12157 @item mci
12158 Motion compensated interpolation. Following options are effective when this mode is selected:
12159
12160 @table @samp
12161 @item mc_mode
12162 Motion compensation mode. Following values are accepted:
12163 @table @samp
12164 @item obmc
12165 Overlapped block motion compensation.
12166 @item aobmc
12167 Adaptive overlapped block motion compensation. Window weighting coefficients are controlled adaptively according to the reliabilities of the neighboring motion vectors to reduce oversmoothing.
12168 @end table
12169 Default mode is @samp{obmc}.
12170
12171 @item me_mode
12172 Motion estimation mode. Following values are accepted:
12173 @table @samp
12174 @item bidir
12175 Bidirectional motion estimation. Motion vectors are estimated for each source frame in both forward and backward directions.
12176 @item bilat
12177 Bilateral motion estimation. Motion vectors are estimated directly for interpolated frame.
12178 @end table
12179 Default mode is @samp{bilat}.
12180
12181 @item me
12182 The algorithm to be used for motion estimation. Following values are accepted:
12183 @table @samp
12184 @item esa
12185 Exhaustive search algorithm.
12186 @item tss
12187 Three step search algorithm.
12188 @item tdls
12189 Two dimensional logarithmic search algorithm.
12190 @item ntss
12191 New three step search algorithm.
12192 @item fss
12193 Four step search algorithm.
12194 @item ds
12195 Diamond search algorithm.
12196 @item hexbs
12197 Hexagon-based search algorithm.
12198 @item epzs
12199 Enhanced predictive zonal search algorithm.
12200 @item umh
12201 Uneven multi-hexagon search algorithm.
12202 @end table
12203 Default algorithm is @samp{epzs}.
12204
12205 @item mb_size
12206 Macroblock size. Default @code{16}.
12207
12208 @item search_param
12209 Motion estimation search parameter. Default @code{32}.
12210
12211 @item vsbmc
12212 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).
12213 @end table
12214 @end table
12215
12216 @item scd
12217 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:
12218 @table @samp
12219 @item none
12220 Disable scene change detection.
12221 @item fdiff
12222 Frame difference. Corresponding pixel values are compared and if it satisfies @var{scd_threshold} scene change is detected.
12223 @end table
12224 Default method is @samp{fdiff}.
12225
12226 @item scd_threshold
12227 Scene change detection threshold. Default is @code{5.0}.
12228 @end table
12229
12230 @section mix
12231
12232 Mix several video input streams into one video stream.
12233
12234 A description of the accepted options follows.
12235
12236 @table @option
12237 @item nb_inputs
12238 The number of inputs. If unspecified, it defaults to 2.
12239
12240 @item weights
12241 Specify weight of each input video stream as sequence.
12242 Each weight is separated by space. If number of weights
12243 is smaller than number of @var{frames} last specified
12244 weight will be used for all remaining unset weights.
12245
12246 @item scale
12247 Specify scale, if it is set it will be multiplied with sum
12248 of each weight multiplied with pixel values to give final destination
12249 pixel value. By default @var{scale} is auto scaled to sum of weights.
12250
12251 @item duration
12252 Specify how end of stream is determined.
12253 @table @samp
12254 @item longest
12255 The duration of the longest input. (default)
12256
12257 @item shortest
12258 The duration of the shortest input.
12259
12260 @item first
12261 The duration of the first input.
12262 @end table
12263 @end table
12264
12265 @section mpdecimate
12266
12267 Drop frames that do not differ greatly from the previous frame in
12268 order to reduce frame rate.
12269
12270 The main use of this filter is for very-low-bitrate encoding
12271 (e.g. streaming over dialup modem), but it could in theory be used for
12272 fixing movies that were inverse-telecined incorrectly.
12273
12274 A description of the accepted options follows.
12275
12276 @table @option
12277 @item max
12278 Set the maximum number of consecutive frames which can be dropped (if
12279 positive), or the minimum interval between dropped frames (if
12280 negative). If the value is 0, the frame is dropped disregarding the
12281 number of previous sequentially dropped frames.
12282
12283 Default value is 0.
12284
12285 @item hi
12286 @item lo
12287 @item frac
12288 Set the dropping threshold values.
12289
12290 Values for @option{hi} and @option{lo} are for 8x8 pixel blocks and
12291 represent actual pixel value differences, so a threshold of 64
12292 corresponds to 1 unit of difference for each pixel, or the same spread
12293 out differently over the block.
12294
12295 A frame is a candidate for dropping if no 8x8 blocks differ by more
12296 than a threshold of @option{hi}, and if no more than @option{frac} blocks (1
12297 meaning the whole image) differ by more than a threshold of @option{lo}.
12298
12299 Default value for @option{hi} is 64*12, default value for @option{lo} is
12300 64*5, and default value for @option{frac} is 0.33.
12301 @end table
12302
12303
12304 @section negate
12305
12306 Negate (invert) the input video.
12307
12308 It accepts the following option:
12309
12310 @table @option
12311
12312 @item negate_alpha
12313 With value 1, it negates the alpha component, if present. Default value is 0.
12314 @end table
12315
12316 @anchor{nlmeans}
12317 @section nlmeans
12318
12319 Denoise frames using Non-Local Means algorithm.
12320
12321 Each pixel is adjusted by looking for other pixels with similar contexts. This
12322 context similarity is defined by comparing their surrounding patches of size
12323 @option{p}x@option{p}. Patches are searched in an area of @option{r}x@option{r}
12324 around the pixel.
12325
12326 Note that the research area defines centers for patches, which means some
12327 patches will be made of pixels outside that research area.
12328
12329 The filter accepts the following options.
12330
12331 @table @option
12332 @item s
12333 Set denoising strength. Default is 1.0. Must be in range [1.0, 30.0].
12334
12335 @item p
12336 Set patch size. Default is 7. Must be odd number in range [0, 99].
12337
12338 @item pc
12339 Same as @option{p} but for chroma planes.
12340
12341 The default value is @var{0} and means automatic.
12342
12343 @item r
12344 Set research size. Default is 15. Must be odd number in range [0, 99].
12345
12346 @item rc
12347 Same as @option{r} but for chroma planes.
12348
12349 The default value is @var{0} and means automatic.
12350 @end table
12351
12352 @section nnedi
12353
12354 Deinterlace video using neural network edge directed interpolation.
12355
12356 This filter accepts the following options:
12357
12358 @table @option
12359 @item weights
12360 Mandatory option, without binary file filter can not work.
12361 Currently file can be found here:
12362 https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin
12363
12364 @item deint
12365 Set which frames to deinterlace, by default it is @code{all}.
12366 Can be @code{all} or @code{interlaced}.
12367
12368 @item field
12369 Set mode of operation.
12370
12371 Can be one of the following:
12372
12373 @table @samp
12374 @item af
12375 Use frame flags, both fields.
12376 @item a
12377 Use frame flags, single field.
12378 @item t
12379 Use top field only.
12380 @item b
12381 Use bottom field only.
12382 @item tf
12383 Use both fields, top first.
12384 @item bf
12385 Use both fields, bottom first.
12386 @end table
12387
12388 @item planes
12389 Set which planes to process, by default filter process all frames.
12390
12391 @item nsize
12392 Set size of local neighborhood around each pixel, used by the predictor neural
12393 network.
12394
12395 Can be one of the following:
12396
12397 @table @samp
12398 @item s8x6
12399 @item s16x6
12400 @item s32x6
12401 @item s48x6
12402 @item s8x4
12403 @item s16x4
12404 @item s32x4
12405 @end table
12406
12407 @item nns
12408 Set the number of neurons in predictor neural network.
12409 Can be one of the following:
12410
12411 @table @samp
12412 @item n16
12413 @item n32
12414 @item n64
12415 @item n128
12416 @item n256
12417 @end table
12418
12419 @item qual
12420 Controls the number of different neural network predictions that are blended
12421 together to compute the final output value. Can be @code{fast}, default or
12422 @code{slow}.
12423
12424 @item etype
12425 Set which set of weights to use in the predictor.
12426 Can be one of the following:
12427
12428 @table @samp
12429 @item a
12430 weights trained to minimize absolute error
12431 @item s
12432 weights trained to minimize squared error
12433 @end table
12434
12435 @item pscrn
12436 Controls whether or not the prescreener neural network is used to decide
12437 which pixels should be processed by the predictor neural network and which
12438 can be handled by simple cubic interpolation.
12439 The prescreener is trained to know whether cubic interpolation will be
12440 sufficient for a pixel or whether it should be predicted by the predictor nn.
12441 The computational complexity of the prescreener nn is much less than that of
12442 the predictor nn. Since most pixels can be handled by cubic interpolation,
12443 using the prescreener generally results in much faster processing.
12444 The prescreener is pretty accurate, so the difference between using it and not
12445 using it is almost always unnoticeable.
12446
12447 Can be one of the following:
12448
12449 @table @samp
12450 @item none
12451 @item original
12452 @item new
12453 @end table
12454
12455 Default is @code{new}.
12456
12457 @item fapprox
12458 Set various debugging flags.
12459 @end table
12460
12461 @section noformat
12462
12463 Force libavfilter not to use any of the specified pixel formats for the
12464 input to the next filter.
12465
12466 It accepts the following parameters:
12467 @table @option
12468
12469 @item pix_fmts
12470 A '|'-separated list of pixel format names, such as
12471 pix_fmts=yuv420p|monow|rgb24".
12472
12473 @end table
12474
12475 @subsection Examples
12476
12477 @itemize
12478 @item
12479 Force libavfilter to use a format different from @var{yuv420p} for the
12480 input to the vflip filter:
12481 @example
12482 noformat=pix_fmts=yuv420p,vflip
12483 @end example
12484
12485 @item
12486 Convert the input video to any of the formats not contained in the list:
12487 @example
12488 noformat=yuv420p|yuv444p|yuv410p
12489 @end example
12490 @end itemize
12491
12492 @section noise
12493
12494 Add noise on video input frame.
12495
12496 The filter accepts the following options:
12497
12498 @table @option
12499 @item all_seed
12500 @item c0_seed
12501 @item c1_seed
12502 @item c2_seed
12503 @item c3_seed
12504 Set noise seed for specific pixel component or all pixel components in case
12505 of @var{all_seed}. Default value is @code{123457}.
12506
12507 @item all_strength, alls
12508 @item c0_strength, c0s
12509 @item c1_strength, c1s
12510 @item c2_strength, c2s
12511 @item c3_strength, c3s
12512 Set noise strength for specific pixel component or all pixel components in case
12513 @var{all_strength}. Default value is @code{0}. Allowed range is [0, 100].
12514
12515 @item all_flags, allf
12516 @item c0_flags, c0f
12517 @item c1_flags, c1f
12518 @item c2_flags, c2f
12519 @item c3_flags, c3f
12520 Set pixel component flags or set flags for all components if @var{all_flags}.
12521 Available values for component flags are:
12522 @table @samp
12523 @item a
12524 averaged temporal noise (smoother)
12525 @item p
12526 mix random noise with a (semi)regular pattern
12527 @item t
12528 temporal noise (noise pattern changes between frames)
12529 @item u
12530 uniform noise (gaussian otherwise)
12531 @end table
12532 @end table
12533
12534 @subsection Examples
12535
12536 Add temporal and uniform noise to input video:
12537 @example
12538 noise=alls=20:allf=t+u
12539 @end example
12540
12541 @section normalize
12542
12543 Normalize RGB video (aka histogram stretching, contrast stretching).
12544 See: https://en.wikipedia.org/wiki/Normalization_(image_processing)
12545
12546 For each channel of each frame, the filter computes the input range and maps
12547 it linearly to the user-specified output range. The output range defaults
12548 to the full dynamic range from pure black to pure white.
12549
12550 Temporal smoothing can be used on the input range to reduce flickering (rapid
12551 changes in brightness) caused when small dark or bright objects enter or leave
12552 the scene. This is similar to the auto-exposure (automatic gain control) on a
12553 video camera, and, like a video camera, it may cause a period of over- or
12554 under-exposure of the video.
12555
12556 The R,G,B channels can be normalized independently, which may cause some
12557 color shifting, or linked together as a single channel, which prevents
12558 color shifting. Linked normalization preserves hue. Independent normalization
12559 does not, so it can be used to remove some color casts. Independent and linked
12560 normalization can be combined in any ratio.
12561
12562 The normalize filter accepts the following options:
12563
12564 @table @option
12565 @item blackpt
12566 @item whitept
12567 Colors which define the output range. The minimum input value is mapped to
12568 the @var{blackpt}. The maximum input value is mapped to the @var{whitept}.
12569 The defaults are black and white respectively. Specifying white for
12570 @var{blackpt} and black for @var{whitept} will give color-inverted,
12571 normalized video. Shades of grey can be used to reduce the dynamic range
12572 (contrast). Specifying saturated colors here can create some interesting
12573 effects.
12574
12575 @item smoothing
12576 The number of previous frames to use for temporal smoothing. The input range
12577 of each channel is smoothed using a rolling average over the current frame
12578 and the @var{smoothing} previous frames. The default is 0 (no temporal
12579 smoothing).
12580
12581 @item independence
12582 Controls the ratio of independent (color shifting) channel normalization to
12583 linked (color preserving) normalization. 0.0 is fully linked, 1.0 is fully
12584 independent. Defaults to 1.0 (fully independent).
12585
12586 @item strength
12587 Overall strength of the filter. 1.0 is full strength. 0.0 is a rather
12588 expensive no-op. Defaults to 1.0 (full strength).
12589
12590 @end table
12591
12592 @subsection Examples
12593
12594 Stretch video contrast to use the full dynamic range, with no temporal
12595 smoothing; may flicker depending on the source content:
12596 @example
12597 normalize=blackpt=black:whitept=white:smoothing=0
12598 @end example
12599
12600 As above, but with 50 frames of temporal smoothing; flicker should be
12601 reduced, depending on the source content:
12602 @example
12603 normalize=blackpt=black:whitept=white:smoothing=50
12604 @end example
12605
12606 As above, but with hue-preserving linked channel normalization:
12607 @example
12608 normalize=blackpt=black:whitept=white:smoothing=50:independence=0
12609 @end example
12610
12611 As above, but with half strength:
12612 @example
12613 normalize=blackpt=black:whitept=white:smoothing=50:independence=0:strength=0.5
12614 @end example
12615
12616 Map the darkest input color to red, the brightest input color to cyan:
12617 @example
12618 normalize=blackpt=red:whitept=cyan
12619 @end example
12620
12621 @section null
12622
12623 Pass the video source unchanged to the output.
12624
12625 @section ocr
12626 Optical Character Recognition
12627
12628 This filter uses Tesseract for optical character recognition. To enable
12629 compilation of this filter, you need to configure FFmpeg with
12630 @code{--enable-libtesseract}.
12631
12632 It accepts the following options:
12633
12634 @table @option
12635 @item datapath
12636 Set datapath to tesseract data. Default is to use whatever was
12637 set at installation.
12638
12639 @item language
12640 Set language, default is "eng".
12641
12642 @item whitelist
12643 Set character whitelist.
12644
12645 @item blacklist
12646 Set character blacklist.
12647 @end table
12648
12649 The filter exports recognized text as the frame metadata @code{lavfi.ocr.text}.
12650
12651 @section ocv
12652
12653 Apply a video transform using libopencv.
12654
12655 To enable this filter, install the libopencv library and headers and
12656 configure FFmpeg with @code{--enable-libopencv}.
12657
12658 It accepts the following parameters:
12659
12660 @table @option
12661
12662 @item filter_name
12663 The name of the libopencv filter to apply.
12664
12665 @item filter_params
12666 The parameters to pass to the libopencv filter. If not specified, the default
12667 values are assumed.
12668
12669 @end table
12670
12671 Refer to the official libopencv documentation for more precise
12672 information:
12673 @url{http://docs.opencv.org/master/modules/imgproc/doc/filtering.html}
12674
12675 Several libopencv filters are supported; see the following subsections.
12676
12677 @anchor{dilate}
12678 @subsection dilate
12679
12680 Dilate an image by using a specific structuring element.
12681 It corresponds to the libopencv function @code{cvDilate}.
12682
12683 It accepts the parameters: @var{struct_el}|@var{nb_iterations}.
12684
12685 @var{struct_el} represents a structuring element, and has the syntax:
12686 @var{cols}x@var{rows}+@var{anchor_x}x@var{anchor_y}/@var{shape}
12687
12688 @var{cols} and @var{rows} represent the number of columns and rows of
12689 the structuring element, @var{anchor_x} and @var{anchor_y} the anchor
12690 point, and @var{shape} the shape for the structuring element. @var{shape}
12691 must be "rect", "cross", "ellipse", or "custom".
12692
12693 If the value for @var{shape} is "custom", it must be followed by a
12694 string of the form "=@var{filename}". The file with name
12695 @var{filename} is assumed to represent a binary image, with each
12696 printable character corresponding to a bright pixel. When a custom
12697 @var{shape} is used, @var{cols} and @var{rows} are ignored, the number
12698 or columns and rows of the read file are assumed instead.
12699
12700 The default value for @var{struct_el} is "3x3+0x0/rect".
12701
12702 @var{nb_iterations} specifies the number of times the transform is
12703 applied to the image, and defaults to 1.
12704
12705 Some examples:
12706 @example
12707 # Use the default values
12708 ocv=dilate
12709
12710 # Dilate using a structuring element with a 5x5 cross, iterating two times
12711 ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
12712
12713 # Read the shape from the file diamond.shape, iterating two times.
12714 # The file diamond.shape may contain a pattern of characters like this
12715 #   *
12716 #  ***
12717 # *****
12718 #  ***
12719 #   *
12720 # The specified columns and rows are ignored
12721 # but the anchor point coordinates are not
12722 ocv=dilate:0x0+2x2/custom=diamond.shape|2
12723 @end example
12724
12725 @subsection erode
12726
12727 Erode an image by using a specific structuring element.
12728 It corresponds to the libopencv function @code{cvErode}.
12729
12730 It accepts the parameters: @var{struct_el}:@var{nb_iterations},
12731 with the same syntax and semantics as the @ref{dilate} filter.
12732
12733 @subsection smooth
12734
12735 Smooth the input video.
12736
12737 The filter takes the following parameters:
12738 @var{type}|@var{param1}|@var{param2}|@var{param3}|@var{param4}.
12739
12740 @var{type} is the type of smooth filter to apply, and must be one of
12741 the following values: "blur", "blur_no_scale", "median", "gaussian",
12742 or "bilateral". The default value is "gaussian".
12743
12744 The meaning of @var{param1}, @var{param2}, @var{param3}, and @var{param4}
12745 depend on the smooth type. @var{param1} and
12746 @var{param2} accept integer positive values or 0. @var{param3} and
12747 @var{param4} accept floating point values.
12748
12749 The default value for @var{param1} is 3. The default value for the
12750 other parameters is 0.
12751
12752 These parameters correspond to the parameters assigned to the
12753 libopencv function @code{cvSmooth}.
12754
12755 @section oscilloscope
12756
12757 2D Video Oscilloscope.
12758
12759 Useful to measure spatial impulse, step responses, chroma delays, etc.
12760
12761 It accepts the following parameters:
12762
12763 @table @option
12764 @item x
12765 Set scope center x position.
12766
12767 @item y
12768 Set scope center y position.
12769
12770 @item s
12771 Set scope size, relative to frame diagonal.
12772
12773 @item t
12774 Set scope tilt/rotation.
12775
12776 @item o
12777 Set trace opacity.
12778
12779 @item tx
12780 Set trace center x position.
12781
12782 @item ty
12783 Set trace center y position.
12784
12785 @item tw
12786 Set trace width, relative to width of frame.
12787
12788 @item th
12789 Set trace height, relative to height of frame.
12790
12791 @item c
12792 Set which components to trace. By default it traces first three components.
12793
12794 @item g
12795 Draw trace grid. By default is enabled.
12796
12797 @item st
12798 Draw some statistics. By default is enabled.
12799
12800 @item sc
12801 Draw scope. By default is enabled.
12802 @end table
12803
12804 @subsection Examples
12805
12806 @itemize
12807 @item
12808 Inspect full first row of video frame.
12809 @example
12810 oscilloscope=x=0.5:y=0:s=1
12811 @end example
12812
12813 @item
12814 Inspect full last row of video frame.
12815 @example
12816 oscilloscope=x=0.5:y=1:s=1
12817 @end example
12818
12819 @item
12820 Inspect full 5th line of video frame of height 1080.
12821 @example
12822 oscilloscope=x=0.5:y=5/1080:s=1
12823 @end example
12824
12825 @item
12826 Inspect full last column of video frame.
12827 @example
12828 oscilloscope=x=1:y=0.5:s=1:t=1
12829 @end example
12830
12831 @end itemize
12832
12833 @anchor{overlay}
12834 @section overlay
12835
12836 Overlay one video on top of another.
12837
12838 It takes two inputs and has one output. The first input is the "main"
12839 video on which the second input is overlaid.
12840
12841 It accepts the following parameters:
12842
12843 A description of the accepted options follows.
12844
12845 @table @option
12846 @item x
12847 @item y
12848 Set the expression for the x and y coordinates of the overlaid video
12849 on the main video. Default value is "0" for both expressions. In case
12850 the expression is invalid, it is set to a huge value (meaning that the
12851 overlay will not be displayed within the output visible area).
12852
12853 @item eof_action
12854 See @ref{framesync}.
12855
12856 @item eval
12857 Set when the expressions for @option{x}, and @option{y} are evaluated.
12858
12859 It accepts the following values:
12860 @table @samp
12861 @item init
12862 only evaluate expressions once during the filter initialization or
12863 when a command is processed
12864
12865 @item frame
12866 evaluate expressions for each incoming frame
12867 @end table
12868
12869 Default value is @samp{frame}.
12870
12871 @item shortest
12872 See @ref{framesync}.
12873
12874 @item format
12875 Set the format for the output video.
12876
12877 It accepts the following values:
12878 @table @samp
12879 @item yuv420
12880 force YUV420 output
12881
12882 @item yuv422
12883 force YUV422 output
12884
12885 @item yuv444
12886 force YUV444 output
12887
12888 @item rgb
12889 force packed RGB output
12890
12891 @item gbrp
12892 force planar RGB output
12893
12894 @item auto
12895 automatically pick format
12896 @end table
12897
12898 Default value is @samp{yuv420}.
12899
12900 @item repeatlast
12901 See @ref{framesync}.
12902
12903 @item alpha
12904 Set format of alpha of the overlaid video, it can be @var{straight} or
12905 @var{premultiplied}. Default is @var{straight}.
12906 @end table
12907
12908 The @option{x}, and @option{y} expressions can contain the following
12909 parameters.
12910
12911 @table @option
12912 @item main_w, W
12913 @item main_h, H
12914 The main input width and height.
12915
12916 @item overlay_w, w
12917 @item overlay_h, h
12918 The overlay input width and height.
12919
12920 @item x
12921 @item y
12922 The computed values for @var{x} and @var{y}. They are evaluated for
12923 each new frame.
12924
12925 @item hsub
12926 @item vsub
12927 horizontal and vertical chroma subsample values of the output
12928 format. For example for the pixel format "yuv422p" @var{hsub} is 2 and
12929 @var{vsub} is 1.
12930
12931 @item n
12932 the number of input frame, starting from 0
12933
12934 @item pos
12935 the position in the file of the input frame, NAN if unknown
12936
12937 @item t
12938 The timestamp, expressed in seconds. It's NAN if the input timestamp is unknown.
12939
12940 @end table
12941
12942 This filter also supports the @ref{framesync} options.
12943
12944 Note that the @var{n}, @var{pos}, @var{t} variables are available only
12945 when evaluation is done @emph{per frame}, and will evaluate to NAN
12946 when @option{eval} is set to @samp{init}.
12947
12948 Be aware that frames are taken from each input video in timestamp
12949 order, hence, if their initial timestamps differ, it is a good idea
12950 to pass the two inputs through a @var{setpts=PTS-STARTPTS} filter to
12951 have them begin in the same zero timestamp, as the example for
12952 the @var{movie} filter does.
12953
12954 You can chain together more overlays but you should test the
12955 efficiency of such approach.
12956
12957 @subsection Commands
12958
12959 This filter supports the following commands:
12960 @table @option
12961 @item x
12962 @item y
12963 Modify the x and y of the overlay input.
12964 The command accepts the same syntax of the corresponding option.
12965
12966 If the specified expression is not valid, it is kept at its current
12967 value.
12968 @end table
12969
12970 @subsection Examples
12971
12972 @itemize
12973 @item
12974 Draw the overlay at 10 pixels from the bottom right corner of the main
12975 video:
12976 @example
12977 overlay=main_w-overlay_w-10:main_h-overlay_h-10
12978 @end example
12979
12980 Using named options the example above becomes:
12981 @example
12982 overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
12983 @end example
12984
12985 @item
12986 Insert a transparent PNG logo in the bottom left corner of the input,
12987 using the @command{ffmpeg} tool with the @code{-filter_complex} option:
12988 @example
12989 ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
12990 @end example
12991
12992 @item
12993 Insert 2 different transparent PNG logos (second logo on bottom
12994 right corner) using the @command{ffmpeg} tool:
12995 @example
12996 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
12997 @end example
12998
12999 @item
13000 Add a transparent color layer on top of the main video; @code{WxH}
13001 must specify the size of the main input to the overlay filter:
13002 @example
13003 color=color=red@@.3:size=WxH [over]; [in][over] overlay [out]
13004 @end example
13005
13006 @item
13007 Play an original video and a filtered version (here with the deshake
13008 filter) side by side using the @command{ffplay} tool:
13009 @example
13010 ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
13011 @end example
13012
13013 The above command is the same as:
13014 @example
13015 ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
13016 @end example
13017
13018 @item
13019 Make a sliding overlay appearing from the left to the right top part of the
13020 screen starting since time 2:
13021 @example
13022 overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
13023 @end example
13024
13025 @item
13026 Compose output by putting two input videos side to side:
13027 @example
13028 ffmpeg -i left.avi -i right.avi -filter_complex "
13029 nullsrc=size=200x100 [background];
13030 [0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
13031 [1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
13032 [background][left]       overlay=shortest=1       [background+left];
13033 [background+left][right] overlay=shortest=1:x=100 [left+right]
13034 "
13035 @end example
13036
13037 @item
13038 Mask 10-20 seconds of a video by applying the delogo filter to a section
13039 @example
13040 ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
13041 -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]'
13042 masked.avi
13043 @end example
13044
13045 @item
13046 Chain several overlays in cascade:
13047 @example
13048 nullsrc=s=200x200 [bg];
13049 testsrc=s=100x100, split=4 [in0][in1][in2][in3];
13050 [in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
13051 [in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
13052 [in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
13053 [in3] null,       [mid2] overlay=100:100 [out0]
13054 @end example
13055
13056 @end itemize
13057
13058 @section owdenoise
13059
13060 Apply Overcomplete Wavelet denoiser.
13061
13062 The filter accepts the following options:
13063
13064 @table @option
13065 @item depth
13066 Set depth.
13067
13068 Larger depth values will denoise lower frequency components more, but
13069 slow down filtering.
13070
13071 Must be an int in the range 8-16, default is @code{8}.
13072
13073 @item luma_strength, ls
13074 Set luma strength.
13075
13076 Must be a double value in the range 0-1000, default is @code{1.0}.
13077
13078 @item chroma_strength, cs
13079 Set chroma strength.
13080
13081 Must be a double value in the range 0-1000, default is @code{1.0}.
13082 @end table
13083
13084 @anchor{pad}
13085 @section pad
13086
13087 Add paddings to the input image, and place the original input at the
13088 provided @var{x}, @var{y} coordinates.
13089
13090 It accepts the following parameters:
13091
13092 @table @option
13093 @item width, w
13094 @item height, h
13095 Specify an expression for the size of the output image with the
13096 paddings added. If the value for @var{width} or @var{height} is 0, the
13097 corresponding input size is used for the output.
13098
13099 The @var{width} expression can reference the value set by the
13100 @var{height} expression, and vice versa.
13101
13102 The default value of @var{width} and @var{height} is 0.
13103
13104 @item x
13105 @item y
13106 Specify the offsets to place the input image at within the padded area,
13107 with respect to the top/left border of the output image.
13108
13109 The @var{x} expression can reference the value set by the @var{y}
13110 expression, and vice versa.
13111
13112 The default value of @var{x} and @var{y} is 0.
13113
13114 If @var{x} or @var{y} evaluate to a negative number, they'll be changed
13115 so the input image is centered on the padded area.
13116
13117 @item color
13118 Specify the color of the padded area. For the syntax of this option,
13119 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
13120 manual,ffmpeg-utils}.
13121
13122 The default value of @var{color} is "black".
13123
13124 @item eval
13125 Specify when to evaluate  @var{width}, @var{height}, @var{x} and @var{y} expression.
13126
13127 It accepts the following values:
13128
13129 @table @samp
13130 @item init
13131 Only evaluate expressions once during the filter initialization or when
13132 a command is processed.
13133
13134 @item frame
13135 Evaluate expressions for each incoming frame.
13136
13137 @end table
13138
13139 Default value is @samp{init}.
13140
13141 @item aspect
13142 Pad to aspect instead to a resolution.
13143
13144 @end table
13145
13146 The value for the @var{width}, @var{height}, @var{x}, and @var{y}
13147 options are expressions containing the following constants:
13148
13149 @table @option
13150 @item in_w
13151 @item in_h
13152 The input video width and height.
13153
13154 @item iw
13155 @item ih
13156 These are the same as @var{in_w} and @var{in_h}.
13157
13158 @item out_w
13159 @item out_h
13160 The output width and height (the size of the padded area), as
13161 specified by the @var{width} and @var{height} expressions.
13162
13163 @item ow
13164 @item oh
13165 These are the same as @var{out_w} and @var{out_h}.
13166
13167 @item x
13168 @item y
13169 The x and y offsets as specified by the @var{x} and @var{y}
13170 expressions, or NAN if not yet specified.
13171
13172 @item a
13173 same as @var{iw} / @var{ih}
13174
13175 @item sar
13176 input sample aspect ratio
13177
13178 @item dar
13179 input display aspect ratio, it is the same as (@var{iw} / @var{ih}) * @var{sar}
13180
13181 @item hsub
13182 @item vsub
13183 The horizontal and vertical chroma subsample values. For example for the
13184 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
13185 @end table
13186
13187 @subsection Examples
13188
13189 @itemize
13190 @item
13191 Add paddings with the color "violet" to the input video. The output video
13192 size is 640x480, and the top-left corner of the input video is placed at
13193 column 0, row 40
13194 @example
13195 pad=640:480:0:40:violet
13196 @end example
13197
13198 The example above is equivalent to the following command:
13199 @example
13200 pad=width=640:height=480:x=0:y=40:color=violet
13201 @end example
13202
13203 @item
13204 Pad the input to get an output with dimensions increased by 3/2,
13205 and put the input video at the center of the padded area:
13206 @example
13207 pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
13208 @end example
13209
13210 @item
13211 Pad the input to get a squared output with size equal to the maximum
13212 value between the input width and height, and put the input video at
13213 the center of the padded area:
13214 @example
13215 pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
13216 @end example
13217
13218 @item
13219 Pad the input to get a final w/h ratio of 16:9:
13220 @example
13221 pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
13222 @end example
13223
13224 @item
13225 In case of anamorphic video, in order to set the output display aspect
13226 correctly, it is necessary to use @var{sar} in the expression,
13227 according to the relation:
13228 @example
13229 (ih * X / ih) * sar = output_dar
13230 X = output_dar / sar
13231 @end example
13232
13233 Thus the previous example needs to be modified to:
13234 @example
13235 pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
13236 @end example
13237
13238 @item
13239 Double the output size and put the input video in the bottom-right
13240 corner of the output padded area:
13241 @example
13242 pad="2*iw:2*ih:ow-iw:oh-ih"
13243 @end example
13244 @end itemize
13245
13246 @anchor{palettegen}
13247 @section palettegen
13248
13249 Generate one palette for a whole video stream.
13250
13251 It accepts the following options:
13252
13253 @table @option
13254 @item max_colors
13255 Set the maximum number of colors to quantize in the palette.
13256 Note: the palette will still contain 256 colors; the unused palette entries
13257 will be black.
13258
13259 @item reserve_transparent
13260 Create a palette of 255 colors maximum and reserve the last one for
13261 transparency. Reserving the transparency color is useful for GIF optimization.
13262 If not set, the maximum of colors in the palette will be 256. You probably want
13263 to disable this option for a standalone image.
13264 Set by default.
13265
13266 @item transparency_color
13267 Set the color that will be used as background for transparency.
13268
13269 @item stats_mode
13270 Set statistics mode.
13271
13272 It accepts the following values:
13273 @table @samp
13274 @item full
13275 Compute full frame histograms.
13276 @item diff
13277 Compute histograms only for the part that differs from previous frame. This
13278 might be relevant to give more importance to the moving part of your input if
13279 the background is static.
13280 @item single
13281 Compute new histogram for each frame.
13282 @end table
13283
13284 Default value is @var{full}.
13285 @end table
13286
13287 The filter also exports the frame metadata @code{lavfi.color_quant_ratio}
13288 (@code{nb_color_in / nb_color_out}) which you can use to evaluate the degree of
13289 color quantization of the palette. This information is also visible at
13290 @var{info} logging level.
13291
13292 @subsection Examples
13293
13294 @itemize
13295 @item
13296 Generate a representative palette of a given video using @command{ffmpeg}:
13297 @example
13298 ffmpeg -i input.mkv -vf palettegen palette.png
13299 @end example
13300 @end itemize
13301
13302 @section paletteuse
13303
13304 Use a palette to downsample an input video stream.
13305
13306 The filter takes two inputs: one video stream and a palette. The palette must
13307 be a 256 pixels image.
13308
13309 It accepts the following options:
13310
13311 @table @option
13312 @item dither
13313 Select dithering mode. Available algorithms are:
13314 @table @samp
13315 @item bayer
13316 Ordered 8x8 bayer dithering (deterministic)
13317 @item heckbert
13318 Dithering as defined by Paul Heckbert in 1982 (simple error diffusion).
13319 Note: this dithering is sometimes considered "wrong" and is included as a
13320 reference.
13321 @item floyd_steinberg
13322 Floyd and Steingberg dithering (error diffusion)
13323 @item sierra2
13324 Frankie Sierra dithering v2 (error diffusion)
13325 @item sierra2_4a
13326 Frankie Sierra dithering v2 "Lite" (error diffusion)
13327 @end table
13328
13329 Default is @var{sierra2_4a}.
13330
13331 @item bayer_scale
13332 When @var{bayer} dithering is selected, this option defines the scale of the
13333 pattern (how much the crosshatch pattern is visible). A low value means more
13334 visible pattern for less banding, and higher value means less visible pattern
13335 at the cost of more banding.
13336
13337 The option must be an integer value in the range [0,5]. Default is @var{2}.
13338
13339 @item diff_mode
13340 If set, define the zone to process
13341
13342 @table @samp
13343 @item rectangle
13344 Only the changing rectangle will be reprocessed. This is similar to GIF
13345 cropping/offsetting compression mechanism. This option can be useful for speed
13346 if only a part of the image is changing, and has use cases such as limiting the
13347 scope of the error diffusal @option{dither} to the rectangle that bounds the
13348 moving scene (it leads to more deterministic output if the scene doesn't change
13349 much, and as a result less moving noise and better GIF compression).
13350 @end table
13351
13352 Default is @var{none}.
13353
13354 @item new
13355 Take new palette for each output frame.
13356
13357 @item alpha_threshold
13358 Sets the alpha threshold for transparency. Alpha values above this threshold
13359 will be treated as completely opaque, and values below this threshold will be
13360 treated as completely transparent.
13361
13362 The option must be an integer value in the range [0,255]. Default is @var{128}.
13363 @end table
13364
13365 @subsection Examples
13366
13367 @itemize
13368 @item
13369 Use a palette (generated for example with @ref{palettegen}) to encode a GIF
13370 using @command{ffmpeg}:
13371 @example
13372 ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
13373 @end example
13374 @end itemize
13375
13376 @section perspective
13377
13378 Correct perspective of video not recorded perpendicular to the screen.
13379
13380 A description of the accepted parameters follows.
13381
13382 @table @option
13383 @item x0
13384 @item y0
13385 @item x1
13386 @item y1
13387 @item x2
13388 @item y2
13389 @item x3
13390 @item y3
13391 Set coordinates expression for top left, top right, bottom left and bottom right corners.
13392 Default values are @code{0:0:W:0:0:H:W:H} with which perspective will remain unchanged.
13393 If the @code{sense} option is set to @code{source}, then the specified points will be sent
13394 to the corners of the destination. If the @code{sense} option is set to @code{destination},
13395 then the corners of the source will be sent to the specified coordinates.
13396
13397 The expressions can use the following variables:
13398
13399 @table @option
13400 @item W
13401 @item H
13402 the width and height of video frame.
13403 @item in
13404 Input frame count.
13405 @item on
13406 Output frame count.
13407 @end table
13408
13409 @item interpolation
13410 Set interpolation for perspective correction.
13411
13412 It accepts the following values:
13413 @table @samp
13414 @item linear
13415 @item cubic
13416 @end table
13417
13418 Default value is @samp{linear}.
13419
13420 @item sense
13421 Set interpretation of coordinate options.
13422
13423 It accepts the following values:
13424 @table @samp
13425 @item 0, source
13426
13427 Send point in the source specified by the given coordinates to
13428 the corners of the destination.
13429
13430 @item 1, destination
13431
13432 Send the corners of the source to the point in the destination specified
13433 by the given coordinates.
13434
13435 Default value is @samp{source}.
13436 @end table
13437
13438 @item eval
13439 Set when the expressions for coordinates @option{x0,y0,...x3,y3} are evaluated.
13440
13441 It accepts the following values:
13442 @table @samp
13443 @item init
13444 only evaluate expressions once during the filter initialization or
13445 when a command is processed
13446
13447 @item frame
13448 evaluate expressions for each incoming frame
13449 @end table
13450
13451 Default value is @samp{init}.
13452 @end table
13453
13454 @section phase
13455
13456 Delay interlaced video by one field time so that the field order changes.
13457
13458 The intended use is to fix PAL movies that have been captured with the
13459 opposite field order to the film-to-video transfer.
13460
13461 A description of the accepted parameters follows.
13462
13463 @table @option
13464 @item mode
13465 Set phase mode.
13466
13467 It accepts the following values:
13468 @table @samp
13469 @item t
13470 Capture field order top-first, transfer bottom-first.
13471 Filter will delay the bottom field.
13472
13473 @item b
13474 Capture field order bottom-first, transfer top-first.
13475 Filter will delay the top field.
13476
13477 @item p
13478 Capture and transfer with the same field order. This mode only exists
13479 for the documentation of the other options to refer to, but if you
13480 actually select it, the filter will faithfully do nothing.
13481
13482 @item a
13483 Capture field order determined automatically by field flags, transfer
13484 opposite.
13485 Filter selects among @samp{t} and @samp{b} modes on a frame by frame
13486 basis using field flags. If no field information is available,
13487 then this works just like @samp{u}.
13488
13489 @item u
13490 Capture unknown or varying, transfer opposite.
13491 Filter selects among @samp{t} and @samp{b} on a frame by frame basis by
13492 analyzing the images and selecting the alternative that produces best
13493 match between the fields.
13494
13495 @item T
13496 Capture top-first, transfer unknown or varying.
13497 Filter selects among @samp{t} and @samp{p} using image analysis.
13498
13499 @item B
13500 Capture bottom-first, transfer unknown or varying.
13501 Filter selects among @samp{b} and @samp{p} using image analysis.
13502
13503 @item A
13504 Capture determined by field flags, transfer unknown or varying.
13505 Filter selects among @samp{t}, @samp{b} and @samp{p} using field flags and
13506 image analysis. If no field information is available, then this works just
13507 like @samp{U}. This is the default mode.
13508
13509 @item U
13510 Both capture and transfer unknown or varying.
13511 Filter selects among @samp{t}, @samp{b} and @samp{p} using image analysis only.
13512 @end table
13513 @end table
13514
13515 @section pixdesctest
13516
13517 Pixel format descriptor test filter, mainly useful for internal
13518 testing. The output video should be equal to the input video.
13519
13520 For example:
13521 @example
13522 format=monow, pixdesctest
13523 @end example
13524
13525 can be used to test the monowhite pixel format descriptor definition.
13526
13527 @section pixscope
13528
13529 Display sample values of color channels. Mainly useful for checking color
13530 and levels. Minimum supported resolution is 640x480.
13531
13532 The filters accept the following options:
13533
13534 @table @option
13535 @item x
13536 Set scope X position, relative offset on X axis.
13537
13538 @item y
13539 Set scope Y position, relative offset on Y axis.
13540
13541 @item w
13542 Set scope width.
13543
13544 @item h
13545 Set scope height.
13546
13547 @item o
13548 Set window opacity. This window also holds statistics about pixel area.
13549
13550 @item wx
13551 Set window X position, relative offset on X axis.
13552
13553 @item wy
13554 Set window Y position, relative offset on Y axis.
13555 @end table
13556
13557 @section pp
13558
13559 Enable the specified chain of postprocessing subfilters using libpostproc. This
13560 library should be automatically selected with a GPL build (@code{--enable-gpl}).
13561 Subfilters must be separated by '/' and can be disabled by prepending a '-'.
13562 Each subfilter and some options have a short and a long name that can be used
13563 interchangeably, i.e. dr/dering are the same.
13564
13565 The filters accept the following options:
13566
13567 @table @option
13568 @item subfilters
13569 Set postprocessing subfilters string.
13570 @end table
13571
13572 All subfilters share common options to determine their scope:
13573
13574 @table @option
13575 @item a/autoq
13576 Honor the quality commands for this subfilter.
13577
13578 @item c/chrom
13579 Do chrominance filtering, too (default).
13580
13581 @item y/nochrom
13582 Do luminance filtering only (no chrominance).
13583
13584 @item n/noluma
13585 Do chrominance filtering only (no luminance).
13586 @end table
13587
13588 These options can be appended after the subfilter name, separated by a '|'.
13589
13590 Available subfilters are:
13591
13592 @table @option
13593 @item hb/hdeblock[|difference[|flatness]]
13594 Horizontal deblocking filter
13595 @table @option
13596 @item difference
13597 Difference factor where higher values mean more deblocking (default: @code{32}).
13598 @item flatness
13599 Flatness threshold where lower values mean more deblocking (default: @code{39}).
13600 @end table
13601
13602 @item vb/vdeblock[|difference[|flatness]]
13603 Vertical deblocking filter
13604 @table @option
13605 @item difference
13606 Difference factor where higher values mean more deblocking (default: @code{32}).
13607 @item flatness
13608 Flatness threshold where lower values mean more deblocking (default: @code{39}).
13609 @end table
13610
13611 @item ha/hadeblock[|difference[|flatness]]
13612 Accurate horizontal deblocking filter
13613 @table @option
13614 @item difference
13615 Difference factor where higher values mean more deblocking (default: @code{32}).
13616 @item flatness
13617 Flatness threshold where lower values mean more deblocking (default: @code{39}).
13618 @end table
13619
13620 @item va/vadeblock[|difference[|flatness]]
13621 Accurate vertical deblocking filter
13622 @table @option
13623 @item difference
13624 Difference factor where higher values mean more deblocking (default: @code{32}).
13625 @item flatness
13626 Flatness threshold where lower values mean more deblocking (default: @code{39}).
13627 @end table
13628 @end table
13629
13630 The horizontal and vertical deblocking filters share the difference and
13631 flatness values so you cannot set different horizontal and vertical
13632 thresholds.
13633
13634 @table @option
13635 @item h1/x1hdeblock
13636 Experimental horizontal deblocking filter
13637
13638 @item v1/x1vdeblock
13639 Experimental vertical deblocking filter
13640
13641 @item dr/dering
13642 Deringing filter
13643
13644 @item tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer
13645 @table @option
13646 @item threshold1
13647 larger -> stronger filtering
13648 @item threshold2
13649 larger -> stronger filtering
13650 @item threshold3
13651 larger -> stronger filtering
13652 @end table
13653
13654 @item al/autolevels[:f/fullyrange], automatic brightness / contrast correction
13655 @table @option
13656 @item f/fullyrange
13657 Stretch luminance to @code{0-255}.
13658 @end table
13659
13660 @item lb/linblenddeint
13661 Linear blend deinterlacing filter that deinterlaces the given block by
13662 filtering all lines with a @code{(1 2 1)} filter.
13663
13664 @item li/linipoldeint
13665 Linear interpolating deinterlacing filter that deinterlaces the given block by
13666 linearly interpolating every second line.
13667
13668 @item ci/cubicipoldeint
13669 Cubic interpolating deinterlacing filter deinterlaces the given block by
13670 cubically interpolating every second line.
13671
13672 @item md/mediandeint
13673 Median deinterlacing filter that deinterlaces the given block by applying a
13674 median filter to every second line.
13675
13676 @item fd/ffmpegdeint
13677 FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
13678 second line with a @code{(-1 4 2 4 -1)} filter.
13679
13680 @item l5/lowpass5
13681 Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
13682 block by filtering all lines with a @code{(-1 2 6 2 -1)} filter.
13683
13684 @item fq/forceQuant[|quantizer]
13685 Overrides the quantizer table from the input with the constant quantizer you
13686 specify.
13687 @table @option
13688 @item quantizer
13689 Quantizer to use
13690 @end table
13691
13692 @item de/default
13693 Default pp filter combination (@code{hb|a,vb|a,dr|a})
13694
13695 @item fa/fast
13696 Fast pp filter combination (@code{h1|a,v1|a,dr|a})
13697
13698 @item ac
13699 High quality pp filter combination (@code{ha|a|128|7,va|a,dr|a})
13700 @end table
13701
13702 @subsection Examples
13703
13704 @itemize
13705 @item
13706 Apply horizontal and vertical deblocking, deringing and automatic
13707 brightness/contrast:
13708 @example
13709 pp=hb/vb/dr/al
13710 @end example
13711
13712 @item
13713 Apply default filters without brightness/contrast correction:
13714 @example
13715 pp=de/-al
13716 @end example
13717
13718 @item
13719 Apply default filters and temporal denoiser:
13720 @example
13721 pp=default/tmpnoise|1|2|3
13722 @end example
13723
13724 @item
13725 Apply deblocking on luminance only, and switch vertical deblocking on or off
13726 automatically depending on available CPU time:
13727 @example
13728 pp=hb|y/vb|a
13729 @end example
13730 @end itemize
13731
13732 @section pp7
13733 Apply Postprocessing filter 7. It is variant of the @ref{spp} filter,
13734 similar to spp = 6 with 7 point DCT, where only the center sample is
13735 used after IDCT.
13736
13737 The filter accepts the following options:
13738
13739 @table @option
13740 @item qp
13741 Force a constant quantization parameter. It accepts an integer in range
13742 0 to 63. If not set, the filter will use the QP from the video stream
13743 (if available).
13744
13745 @item mode
13746 Set thresholding mode. Available modes are:
13747
13748 @table @samp
13749 @item hard
13750 Set hard thresholding.
13751 @item soft
13752 Set soft thresholding (better de-ringing effect, but likely blurrier).
13753 @item medium
13754 Set medium thresholding (good results, default).
13755 @end table
13756 @end table
13757
13758 @section premultiply
13759 Apply alpha premultiply effect to input video stream using first plane
13760 of second stream as alpha.
13761
13762 Both streams must have same dimensions and same pixel format.
13763
13764 The filter accepts the following option:
13765
13766 @table @option
13767 @item planes
13768 Set which planes will be processed, unprocessed planes will be copied.
13769 By default value 0xf, all planes will be processed.
13770
13771 @item inplace
13772 Do not require 2nd input for processing, instead use alpha plane from input stream.
13773 @end table
13774
13775 @section prewitt
13776 Apply prewitt operator to input video stream.
13777
13778 The filter accepts the following option:
13779
13780 @table @option
13781 @item planes
13782 Set which planes will be processed, unprocessed planes will be copied.
13783 By default value 0xf, all planes will be processed.
13784
13785 @item scale
13786 Set value which will be multiplied with filtered result.
13787
13788 @item delta
13789 Set value which will be added to filtered result.
13790 @end table
13791
13792 @anchor{program_opencl}
13793 @section program_opencl
13794
13795 Filter video using an OpenCL program.
13796
13797 @table @option
13798
13799 @item source
13800 OpenCL program source file.
13801
13802 @item kernel
13803 Kernel name in program.
13804
13805 @item inputs
13806 Number of inputs to the filter.  Defaults to 1.
13807
13808 @item size, s
13809 Size of output frames.  Defaults to the same as the first input.
13810
13811 @end table
13812
13813 The program source file must contain a kernel function with the given name,
13814 which will be run once for each plane of the output.  Each run on a plane
13815 gets enqueued as a separate 2D global NDRange with one work-item for each
13816 pixel to be generated.  The global ID offset for each work-item is therefore
13817 the coordinates of a pixel in the destination image.
13818
13819 The kernel function needs to take the following arguments:
13820 @itemize
13821 @item
13822 Destination image, @var{__write_only image2d_t}.
13823
13824 This image will become the output; the kernel should write all of it.
13825 @item
13826 Frame index, @var{unsigned int}.
13827
13828 This is a counter starting from zero and increasing by one for each frame.
13829 @item
13830 Source images, @var{__read_only image2d_t}.
13831
13832 These are the most recent images on each input.  The kernel may read from
13833 them to generate the output, but they can't be written to.
13834 @end itemize
13835
13836 Example programs:
13837
13838 @itemize
13839 @item
13840 Copy the input to the output (output must be the same size as the input).
13841 @verbatim
13842 __kernel void copy(__write_only image2d_t destination,
13843                    unsigned int index,
13844                    __read_only  image2d_t source)
13845 {
13846     const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE;
13847
13848     int2 location = (int2)(get_global_id(0), get_global_id(1));
13849
13850     float4 value = read_imagef(source, sampler, location);
13851
13852     write_imagef(destination, location, value);
13853 }
13854 @end verbatim
13855
13856 @item
13857 Apply a simple transformation, rotating the input by an amount increasing
13858 with the index counter.  Pixel values are linearly interpolated by the
13859 sampler, and the output need not have the same dimensions as the input.
13860 @verbatim
13861 __kernel void rotate_image(__write_only image2d_t dst,
13862                            unsigned int index,
13863                            __read_only  image2d_t src)
13864 {
13865     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
13866                                CLK_FILTER_LINEAR);
13867
13868     float angle = (float)index / 100.0f;
13869
13870     float2 dst_dim = convert_float2(get_image_dim(dst));
13871     float2 src_dim = convert_float2(get_image_dim(src));
13872
13873     float2 dst_cen = dst_dim / 2.0f;
13874     float2 src_cen = src_dim / 2.0f;
13875
13876     int2   dst_loc = (int2)(get_global_id(0), get_global_id(1));
13877
13878     float2 dst_pos = convert_float2(dst_loc) - dst_cen;
13879     float2 src_pos = {
13880         cos(angle) * dst_pos.x - sin(angle) * dst_pos.y,
13881         sin(angle) * dst_pos.x + cos(angle) * dst_pos.y
13882     };
13883     src_pos = src_pos * src_dim / dst_dim;
13884
13885     float2 src_loc = src_pos + src_cen;
13886
13887     if (src_loc.x < 0.0f      || src_loc.y < 0.0f ||
13888         src_loc.x > src_dim.x || src_loc.y > src_dim.y)
13889         write_imagef(dst, dst_loc, 0.5f);
13890     else
13891         write_imagef(dst, dst_loc, read_imagef(src, sampler, src_loc));
13892 }
13893 @end verbatim
13894
13895 @item
13896 Blend two inputs together, with the amount of each input used varying
13897 with the index counter.
13898 @verbatim
13899 __kernel void blend_images(__write_only image2d_t dst,
13900                            unsigned int index,
13901                            __read_only  image2d_t src1,
13902                            __read_only  image2d_t src2)
13903 {
13904     const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
13905                                CLK_FILTER_LINEAR);
13906
13907     float blend = (cos((float)index / 50.0f) + 1.0f) / 2.0f;
13908
13909     int2  dst_loc = (int2)(get_global_id(0), get_global_id(1));
13910     int2 src1_loc = dst_loc * get_image_dim(src1) / get_image_dim(dst);
13911     int2 src2_loc = dst_loc * get_image_dim(src2) / get_image_dim(dst);
13912
13913     float4 val1 = read_imagef(src1, sampler, src1_loc);
13914     float4 val2 = read_imagef(src2, sampler, src2_loc);
13915
13916     write_imagef(dst, dst_loc, val1 * blend + val2 * (1.0f - blend));
13917 }
13918 @end verbatim
13919
13920 @end itemize
13921
13922 @section pseudocolor
13923
13924 Alter frame colors in video with pseudocolors.
13925
13926 This filter accept the following options:
13927
13928 @table @option
13929 @item c0
13930 set pixel first component expression
13931
13932 @item c1
13933 set pixel second component expression
13934
13935 @item c2
13936 set pixel third component expression
13937
13938 @item c3
13939 set pixel fourth component expression, corresponds to the alpha component
13940
13941 @item i
13942 set component to use as base for altering colors
13943 @end table
13944
13945 Each of them specifies the expression to use for computing the lookup table for
13946 the corresponding pixel component values.
13947
13948 The expressions can contain the following constants and functions:
13949
13950 @table @option
13951 @item w
13952 @item h
13953 The input width and height.
13954
13955 @item val
13956 The input value for the pixel component.
13957
13958 @item ymin, umin, vmin, amin
13959 The minimum allowed component value.
13960
13961 @item ymax, umax, vmax, amax
13962 The maximum allowed component value.
13963 @end table
13964
13965 All expressions default to "val".
13966
13967 @subsection Examples
13968
13969 @itemize
13970 @item
13971 Change too high luma values to gradient:
13972 @example
13973 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'"
13974 @end example
13975 @end itemize
13976
13977 @section psnr
13978
13979 Obtain the average, maximum and minimum PSNR (Peak Signal to Noise
13980 Ratio) between two input videos.
13981
13982 This filter takes in input two input videos, the first input is
13983 considered the "main" source and is passed unchanged to the
13984 output. The second input is used as a "reference" video for computing
13985 the PSNR.
13986
13987 Both video inputs must have the same resolution and pixel format for
13988 this filter to work correctly. Also it assumes that both inputs
13989 have the same number of frames, which are compared one by one.
13990
13991 The obtained average PSNR is printed through the logging system.
13992
13993 The filter stores the accumulated MSE (mean squared error) of each
13994 frame, and at the end of the processing it is averaged across all frames
13995 equally, and the following formula is applied to obtain the PSNR:
13996
13997 @example
13998 PSNR = 10*log10(MAX^2/MSE)
13999 @end example
14000
14001 Where MAX is the average of the maximum values of each component of the
14002 image.
14003
14004 The description of the accepted parameters follows.
14005
14006 @table @option
14007 @item stats_file, f
14008 If specified the filter will use the named file to save the PSNR of
14009 each individual frame. When filename equals "-" the data is sent to
14010 standard output.
14011
14012 @item stats_version
14013 Specifies which version of the stats file format to use. Details of
14014 each format are written below.
14015 Default value is 1.
14016
14017 @item stats_add_max
14018 Determines whether the max value is output to the stats log.
14019 Default value is 0.
14020 Requires stats_version >= 2. If this is set and stats_version < 2,
14021 the filter will return an error.
14022 @end table
14023
14024 This filter also supports the @ref{framesync} options.
14025
14026 The file printed if @var{stats_file} is selected, contains a sequence of
14027 key/value pairs of the form @var{key}:@var{value} for each compared
14028 couple of frames.
14029
14030 If a @var{stats_version} greater than 1 is specified, a header line precedes
14031 the list of per-frame-pair stats, with key value pairs following the frame
14032 format with the following parameters:
14033
14034 @table @option
14035 @item psnr_log_version
14036 The version of the log file format. Will match @var{stats_version}.
14037
14038 @item fields
14039 A comma separated list of the per-frame-pair parameters included in
14040 the log.
14041 @end table
14042
14043 A description of each shown per-frame-pair parameter follows:
14044
14045 @table @option
14046 @item n
14047 sequential number of the input frame, starting from 1
14048
14049 @item mse_avg
14050 Mean Square Error pixel-by-pixel average difference of the compared
14051 frames, averaged over all the image components.
14052
14053 @item mse_y, mse_u, mse_v, mse_r, mse_g, mse_b, mse_a
14054 Mean Square Error pixel-by-pixel average difference of the compared
14055 frames for the component specified by the suffix.
14056
14057 @item psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a
14058 Peak Signal to Noise ratio of the compared frames for the component
14059 specified by the suffix.
14060
14061 @item max_avg, max_y, max_u, max_v
14062 Maximum allowed value for each channel, and average over all
14063 channels.
14064 @end table
14065
14066 For example:
14067 @example
14068 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
14069 [main][ref] psnr="stats_file=stats.log" [out]
14070 @end example
14071
14072 On this example the input file being processed is compared with the
14073 reference file @file{ref_movie.mpg}. The PSNR of each individual frame
14074 is stored in @file{stats.log}.
14075
14076 @anchor{pullup}
14077 @section pullup
14078
14079 Pulldown reversal (inverse telecine) filter, capable of handling mixed
14080 hard-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
14081 content.
14082
14083 The pullup filter is designed to take advantage of future context in making
14084 its decisions. This filter is stateless in the sense that it does not lock
14085 onto a pattern to follow, but it instead looks forward to the following
14086 fields in order to identify matches and rebuild progressive frames.
14087
14088 To produce content with an even framerate, insert the fps filter after
14089 pullup, use @code{fps=24000/1001} if the input frame rate is 29.97fps,
14090 @code{fps=24} for 30fps and the (rare) telecined 25fps input.
14091
14092 The filter accepts the following options:
14093
14094 @table @option
14095 @item jl
14096 @item jr
14097 @item jt
14098 @item jb
14099 These options set the amount of "junk" to ignore at the left, right, top, and
14100 bottom of the image, respectively. Left and right are in units of 8 pixels,
14101 while top and bottom are in units of 2 lines.
14102 The default is 8 pixels on each side.
14103
14104 @item sb
14105 Set the strict breaks. Setting this option to 1 will reduce the chances of
14106 filter generating an occasional mismatched frame, but it may also cause an
14107 excessive number of frames to be dropped during high motion sequences.
14108 Conversely, setting it to -1 will make filter match fields more easily.
14109 This may help processing of video where there is slight blurring between
14110 the fields, but may also cause there to be interlaced frames in the output.
14111 Default value is @code{0}.
14112
14113 @item mp
14114 Set the metric plane to use. It accepts the following values:
14115 @table @samp
14116 @item l
14117 Use luma plane.
14118
14119 @item u
14120 Use chroma blue plane.
14121
14122 @item v
14123 Use chroma red plane.
14124 @end table
14125
14126 This option may be set to use chroma plane instead of the default luma plane
14127 for doing filter's computations. This may improve accuracy on very clean
14128 source material, but more likely will decrease accuracy, especially if there
14129 is chroma noise (rainbow effect) or any grayscale video.
14130 The main purpose of setting @option{mp} to a chroma plane is to reduce CPU
14131 load and make pullup usable in realtime on slow machines.
14132 @end table
14133
14134 For best results (without duplicated frames in the output file) it is
14135 necessary to change the output frame rate. For example, to inverse
14136 telecine NTSC input:
14137 @example
14138 ffmpeg -i input -vf pullup -r 24000/1001 ...
14139 @end example
14140
14141 @section qp
14142
14143 Change video quantization parameters (QP).
14144
14145 The filter accepts the following option:
14146
14147 @table @option
14148 @item qp
14149 Set expression for quantization parameter.
14150 @end table
14151
14152 The expression is evaluated through the eval API and can contain, among others,
14153 the following constants:
14154
14155 @table @var
14156 @item known
14157 1 if index is not 129, 0 otherwise.
14158
14159 @item qp
14160 Sequential index starting from -129 to 128.
14161 @end table
14162
14163 @subsection Examples
14164
14165 @itemize
14166 @item
14167 Some equation like:
14168 @example
14169 qp=2+2*sin(PI*qp)
14170 @end example
14171 @end itemize
14172
14173 @section random
14174
14175 Flush video frames from internal cache of frames into a random order.
14176 No frame is discarded.
14177 Inspired by @ref{frei0r} nervous filter.
14178
14179 @table @option
14180 @item frames
14181 Set size in number of frames of internal cache, in range from @code{2} to
14182 @code{512}. Default is @code{30}.
14183
14184 @item seed
14185 Set seed for random number generator, must be an integer included between
14186 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
14187 less than @code{0}, the filter will try to use a good random seed on a
14188 best effort basis.
14189 @end table
14190
14191 @section readeia608
14192
14193 Read closed captioning (EIA-608) information from the top lines of a video frame.
14194
14195 This filter adds frame metadata for @code{lavfi.readeia608.X.cc} and
14196 @code{lavfi.readeia608.X.line}, where @code{X} is the number of the identified line
14197 with EIA-608 data (starting from 0). A description of each metadata value follows:
14198
14199 @table @option
14200 @item lavfi.readeia608.X.cc
14201 The two bytes stored as EIA-608 data (printed in hexadecimal).
14202
14203 @item lavfi.readeia608.X.line
14204 The number of the line on which the EIA-608 data was identified and read.
14205 @end table
14206
14207 This filter accepts the following options:
14208
14209 @table @option
14210 @item scan_min
14211 Set the line to start scanning for EIA-608 data. Default is @code{0}.
14212
14213 @item scan_max
14214 Set the line to end scanning for EIA-608 data. Default is @code{29}.
14215
14216 @item mac
14217 Set minimal acceptable amplitude change for sync codes detection.
14218 Default is @code{0.2}. Allowed range is @code{[0.001 - 1]}.
14219
14220 @item spw
14221 Set the ratio of width reserved for sync code detection.
14222 Default is @code{0.27}. Allowed range is @code{[0.01 - 0.7]}.
14223
14224 @item mhd
14225 Set the max peaks height difference for sync code detection.
14226 Default is @code{0.1}. Allowed range is @code{[0.0 - 0.5]}.
14227
14228 @item mpd
14229 Set max peaks period difference for sync code detection.
14230 Default is @code{0.1}. Allowed range is @code{[0.0 - 0.5]}.
14231
14232 @item msd
14233 Set the first two max start code bits differences.
14234 Default is @code{0.02}. Allowed range is @code{[0.0 - 0.5]}.
14235
14236 @item bhd
14237 Set the minimum ratio of bits height compared to 3rd start code bit.
14238 Default is @code{0.75}. Allowed range is @code{[0.01 - 1]}.
14239
14240 @item th_w
14241 Set the white color threshold. Default is @code{0.35}. Allowed range is @code{[0.1 - 1]}.
14242
14243 @item th_b
14244 Set the black color threshold. Default is @code{0.15}. Allowed range is @code{[0.0 - 0.5]}.
14245
14246 @item chp
14247 Enable checking the parity bit. In the event of a parity error, the filter will output
14248 @code{0x00} for that character. Default is false.
14249 @end table
14250
14251 @subsection Examples
14252
14253 @itemize
14254 @item
14255 Output a csv with presentation time and the first two lines of identified EIA-608 captioning data.
14256 @example
14257 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
14258 @end example
14259 @end itemize
14260
14261 @section readvitc
14262
14263 Read vertical interval timecode (VITC) information from the top lines of a
14264 video frame.
14265
14266 The filter adds frame metadata key @code{lavfi.readvitc.tc_str} with the
14267 timecode value, if a valid timecode has been detected. Further metadata key
14268 @code{lavfi.readvitc.found} is set to 0/1 depending on whether
14269 timecode data has been found or not.
14270
14271 This filter accepts the following options:
14272
14273 @table @option
14274 @item scan_max
14275 Set the maximum number of lines to scan for VITC data. If the value is set to
14276 @code{-1} the full video frame is scanned. Default is @code{45}.
14277
14278 @item thr_b
14279 Set the luma threshold for black. Accepts float numbers in the range [0.0,1.0],
14280 default value is @code{0.2}. The value must be equal or less than @code{thr_w}.
14281
14282 @item thr_w
14283 Set the luma threshold for white. Accepts float numbers in the range [0.0,1.0],
14284 default value is @code{0.6}. The value must be equal or greater than @code{thr_b}.
14285 @end table
14286
14287 @subsection Examples
14288
14289 @itemize
14290 @item
14291 Detect and draw VITC data onto the video frame; if no valid VITC is detected,
14292 draw @code{--:--:--:--} as a placeholder:
14293 @example
14294 ffmpeg -i input.avi -filter:v 'readvitc,drawtext=fontfile=FreeMono.ttf:text=%@{metadata\\:lavfi.readvitc.tc_str\\:--\\\\\\:--\\\\\\:--\\\\\\:--@}:x=(w-tw)/2:y=400-ascent'
14295 @end example
14296 @end itemize
14297
14298 @section remap
14299
14300 Remap pixels using 2nd: Xmap and 3rd: Ymap input video stream.
14301
14302 Destination pixel at position (X, Y) will be picked from source (x, y) position
14303 where x = Xmap(X, Y) and y = Ymap(X, Y). If mapping values are out of range, zero
14304 value for pixel will be used for destination pixel.
14305
14306 Xmap and Ymap input video streams must be of same dimensions. Output video stream
14307 will have Xmap/Ymap video stream dimensions.
14308 Xmap and Ymap input video streams are 16bit depth, single channel.
14309
14310 @section removegrain
14311
14312 The removegrain filter is a spatial denoiser for progressive video.
14313
14314 @table @option
14315 @item m0
14316 Set mode for the first plane.
14317
14318 @item m1
14319 Set mode for the second plane.
14320
14321 @item m2
14322 Set mode for the third plane.
14323
14324 @item m3
14325 Set mode for the fourth plane.
14326 @end table
14327
14328 Range of mode is from 0 to 24. Description of each mode follows:
14329
14330 @table @var
14331 @item 0
14332 Leave input plane unchanged. Default.
14333
14334 @item 1
14335 Clips the pixel with the minimum and maximum of the 8 neighbour pixels.
14336
14337 @item 2
14338 Clips the pixel with the second minimum and maximum of the 8 neighbour pixels.
14339
14340 @item 3
14341 Clips the pixel with the third minimum and maximum of the 8 neighbour pixels.
14342
14343 @item 4
14344 Clips the pixel with the fourth minimum and maximum of the 8 neighbour pixels.
14345 This is equivalent to a median filter.
14346
14347 @item 5
14348 Line-sensitive clipping giving the minimal change.
14349
14350 @item 6
14351 Line-sensitive clipping, intermediate.
14352
14353 @item 7
14354 Line-sensitive clipping, intermediate.
14355
14356 @item 8
14357 Line-sensitive clipping, intermediate.
14358
14359 @item 9
14360 Line-sensitive clipping on a line where the neighbours pixels are the closest.
14361
14362 @item 10
14363 Replaces the target pixel with the closest neighbour.
14364
14365 @item 11
14366 [1 2 1] horizontal and vertical kernel blur.
14367
14368 @item 12
14369 Same as mode 11.
14370
14371 @item 13
14372 Bob mode, interpolates top field from the line where the neighbours
14373 pixels are the closest.
14374
14375 @item 14
14376 Bob mode, interpolates bottom field from the line where the neighbours
14377 pixels are the closest.
14378
14379 @item 15
14380 Bob mode, interpolates top field. Same as 13 but with a more complicated
14381 interpolation formula.
14382
14383 @item 16
14384 Bob mode, interpolates bottom field. Same as 14 but with a more complicated
14385 interpolation formula.
14386
14387 @item 17
14388 Clips the pixel with the minimum and maximum of respectively the maximum and
14389 minimum of each pair of opposite neighbour pixels.
14390
14391 @item 18
14392 Line-sensitive clipping using opposite neighbours whose greatest distance from
14393 the current pixel is minimal.
14394
14395 @item 19
14396 Replaces the pixel with the average of its 8 neighbours.
14397
14398 @item 20
14399 Averages the 9 pixels ([1 1 1] horizontal and vertical blur).
14400
14401 @item 21
14402 Clips pixels using the averages of opposite neighbour.
14403
14404 @item 22
14405 Same as mode 21 but simpler and faster.
14406
14407 @item 23
14408 Small edge and halo removal, but reputed useless.
14409
14410 @item 24
14411 Similar as 23.
14412 @end table
14413
14414 @section removelogo
14415
14416 Suppress a TV station logo, using an image file to determine which
14417 pixels comprise the logo. It works by filling in the pixels that
14418 comprise the logo with neighboring pixels.
14419
14420 The filter accepts the following options:
14421
14422 @table @option
14423 @item filename, f
14424 Set the filter bitmap file, which can be any image format supported by
14425 libavformat. The width and height of the image file must match those of the
14426 video stream being processed.
14427 @end table
14428
14429 Pixels in the provided bitmap image with a value of zero are not
14430 considered part of the logo, non-zero pixels are considered part of
14431 the logo. If you use white (255) for the logo and black (0) for the
14432 rest, you will be safe. For making the filter bitmap, it is
14433 recommended to take a screen capture of a black frame with the logo
14434 visible, and then using a threshold filter followed by the erode
14435 filter once or twice.
14436
14437 If needed, little splotches can be fixed manually. Remember that if
14438 logo pixels are not covered, the filter quality will be much
14439 reduced. Marking too many pixels as part of the logo does not hurt as
14440 much, but it will increase the amount of blurring needed to cover over
14441 the image and will destroy more information than necessary, and extra
14442 pixels will slow things down on a large logo.
14443
14444 @section repeatfields
14445
14446 This filter uses the repeat_field flag from the Video ES headers and hard repeats
14447 fields based on its value.
14448
14449 @section reverse
14450
14451 Reverse a video clip.
14452
14453 Warning: This filter requires memory to buffer the entire clip, so trimming
14454 is suggested.
14455
14456 @subsection Examples
14457
14458 @itemize
14459 @item
14460 Take the first 5 seconds of a clip, and reverse it.
14461 @example
14462 trim=end=5,reverse
14463 @end example
14464 @end itemize
14465
14466 @section rgbashift
14467 Shift R/G/B/A pixels horizontally and/or vertically.
14468
14469 The filter accepts the following options:
14470 @table @option
14471 @item rh
14472 Set amount to shift red horizontally.
14473 @item rv
14474 Set amount to shift red vertically.
14475 @item gh
14476 Set amount to shift green horizontally.
14477 @item gv
14478 Set amount to shift green vertically.
14479 @item bh
14480 Set amount to shift blue horizontally.
14481 @item bv
14482 Set amount to shift blue vertically.
14483 @item ah
14484 Set amount to shift alpha horizontally.
14485 @item av
14486 Set amount to shift alpha vertically.
14487 @item edge
14488 Set edge mode, can be @var{smear}, default, or @var{warp}.
14489 @end table
14490
14491 @section roberts
14492 Apply roberts cross operator to input video stream.
14493
14494 The filter accepts the following option:
14495
14496 @table @option
14497 @item planes
14498 Set which planes will be processed, unprocessed planes will be copied.
14499 By default value 0xf, all planes will be processed.
14500
14501 @item scale
14502 Set value which will be multiplied with filtered result.
14503
14504 @item delta
14505 Set value which will be added to filtered result.
14506 @end table
14507
14508 @section rotate
14509
14510 Rotate video by an arbitrary angle expressed in radians.
14511
14512 The filter accepts the following options:
14513
14514 A description of the optional parameters follows.
14515 @table @option
14516 @item angle, a
14517 Set an expression for the angle by which to rotate the input video
14518 clockwise, expressed as a number of radians. A negative value will
14519 result in a counter-clockwise rotation. By default it is set to "0".
14520
14521 This expression is evaluated for each frame.
14522
14523 @item out_w, ow
14524 Set the output width expression, default value is "iw".
14525 This expression is evaluated just once during configuration.
14526
14527 @item out_h, oh
14528 Set the output height expression, default value is "ih".
14529 This expression is evaluated just once during configuration.
14530
14531 @item bilinear
14532 Enable bilinear interpolation if set to 1, a value of 0 disables
14533 it. Default value is 1.
14534
14535 @item fillcolor, c
14536 Set the color used to fill the output area not covered by the rotated
14537 image. For the general syntax of this option, check the
14538 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
14539 If the special value "none" is selected then no
14540 background is printed (useful for example if the background is never shown).
14541
14542 Default value is "black".
14543 @end table
14544
14545 The expressions for the angle and the output size can contain the
14546 following constants and functions:
14547
14548 @table @option
14549 @item n
14550 sequential number of the input frame, starting from 0. It is always NAN
14551 before the first frame is filtered.
14552
14553 @item t
14554 time in seconds of the input frame, it is set to 0 when the filter is
14555 configured. It is always NAN before the first frame is filtered.
14556
14557 @item hsub
14558 @item vsub
14559 horizontal and vertical chroma subsample values. For example for the
14560 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
14561
14562 @item in_w, iw
14563 @item in_h, ih
14564 the input video width and height
14565
14566 @item out_w, ow
14567 @item out_h, oh
14568 the output width and height, that is the size of the padded area as
14569 specified by the @var{width} and @var{height} expressions
14570
14571 @item rotw(a)
14572 @item roth(a)
14573 the minimal width/height required for completely containing the input
14574 video rotated by @var{a} radians.
14575
14576 These are only available when computing the @option{out_w} and
14577 @option{out_h} expressions.
14578 @end table
14579
14580 @subsection Examples
14581
14582 @itemize
14583 @item
14584 Rotate the input by PI/6 radians clockwise:
14585 @example
14586 rotate=PI/6
14587 @end example
14588
14589 @item
14590 Rotate the input by PI/6 radians counter-clockwise:
14591 @example
14592 rotate=-PI/6
14593 @end example
14594
14595 @item
14596 Rotate the input by 45 degrees clockwise:
14597 @example
14598 rotate=45*PI/180
14599 @end example
14600
14601 @item
14602 Apply a constant rotation with period T, starting from an angle of PI/3:
14603 @example
14604 rotate=PI/3+2*PI*t/T
14605 @end example
14606
14607 @item
14608 Make the input video rotation oscillating with a period of T
14609 seconds and an amplitude of A radians:
14610 @example
14611 rotate=A*sin(2*PI/T*t)
14612 @end example
14613
14614 @item
14615 Rotate the video, output size is chosen so that the whole rotating
14616 input video is always completely contained in the output:
14617 @example
14618 rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
14619 @end example
14620
14621 @item
14622 Rotate the video, reduce the output size so that no background is ever
14623 shown:
14624 @example
14625 rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
14626 @end example
14627 @end itemize
14628
14629 @subsection Commands
14630
14631 The filter supports the following commands:
14632
14633 @table @option
14634 @item a, angle
14635 Set the angle expression.
14636 The command accepts the same syntax of the corresponding option.
14637
14638 If the specified expression is not valid, it is kept at its current
14639 value.
14640 @end table
14641
14642 @section sab
14643
14644 Apply Shape Adaptive Blur.
14645
14646 The filter accepts the following options:
14647
14648 @table @option
14649 @item luma_radius, lr
14650 Set luma blur filter strength, must be a value in range 0.1-4.0, default
14651 value is 1.0. A greater value will result in a more blurred image, and
14652 in slower processing.
14653
14654 @item luma_pre_filter_radius, lpfr
14655 Set luma pre-filter radius, must be a value in the 0.1-2.0 range, default
14656 value is 1.0.
14657
14658 @item luma_strength, ls
14659 Set luma maximum difference between pixels to still be considered, must
14660 be a value in the 0.1-100.0 range, default value is 1.0.
14661
14662 @item chroma_radius, cr
14663 Set chroma blur filter strength, must be a value in range -0.9-4.0. A
14664 greater value will result in a more blurred image, and in slower
14665 processing.
14666
14667 @item chroma_pre_filter_radius, cpfr
14668 Set chroma pre-filter radius, must be a value in the -0.9-2.0 range.
14669
14670 @item chroma_strength, cs
14671 Set chroma maximum difference between pixels to still be considered,
14672 must be a value in the -0.9-100.0 range.
14673 @end table
14674
14675 Each chroma option value, if not explicitly specified, is set to the
14676 corresponding luma option value.
14677
14678 @anchor{scale}
14679 @section scale
14680
14681 Scale (resize) the input video, using the libswscale library.
14682
14683 The scale filter forces the output display aspect ratio to be the same
14684 of the input, by changing the output sample aspect ratio.
14685
14686 If the input image format is different from the format requested by
14687 the next filter, the scale filter will convert the input to the
14688 requested format.
14689
14690 @subsection Options
14691 The filter accepts the following options, or any of the options
14692 supported by the libswscale scaler.
14693
14694 See @ref{scaler_options,,the ffmpeg-scaler manual,ffmpeg-scaler} for
14695 the complete list of scaler options.
14696
14697 @table @option
14698 @item width, w
14699 @item height, h
14700 Set the output video dimension expression. Default value is the input
14701 dimension.
14702
14703 If the @var{width} or @var{w} value is 0, the input width is used for
14704 the output. If the @var{height} or @var{h} value is 0, the input height
14705 is used for the output.
14706
14707 If one and only one of the values is -n with n >= 1, the scale filter
14708 will use a value that maintains the aspect ratio of the input image,
14709 calculated from the other specified dimension. After that it will,
14710 however, make sure that the calculated dimension is divisible by n and
14711 adjust the value if necessary.
14712
14713 If both values are -n with n >= 1, the behavior will be identical to
14714 both values being set to 0 as previously detailed.
14715
14716 See below for the list of accepted constants for use in the dimension
14717 expression.
14718
14719 @item eval
14720 Specify when to evaluate @var{width} and @var{height} expression. It accepts the following values:
14721
14722 @table @samp
14723 @item init
14724 Only evaluate expressions once during the filter initialization or when a command is processed.
14725
14726 @item frame
14727 Evaluate expressions for each incoming frame.
14728
14729 @end table
14730
14731 Default value is @samp{init}.
14732
14733
14734 @item interl
14735 Set the interlacing mode. It accepts the following values:
14736
14737 @table @samp
14738 @item 1
14739 Force interlaced aware scaling.
14740
14741 @item 0
14742 Do not apply interlaced scaling.
14743
14744 @item -1
14745 Select interlaced aware scaling depending on whether the source frames
14746 are flagged as interlaced or not.
14747 @end table
14748
14749 Default value is @samp{0}.
14750
14751 @item flags
14752 Set libswscale scaling flags. See
14753 @ref{sws_flags,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
14754 complete list of values. If not explicitly specified the filter applies
14755 the default flags.
14756
14757
14758 @item param0, param1
14759 Set libswscale input parameters for scaling algorithms that need them. See
14760 @ref{sws_params,,the ffmpeg-scaler manual,ffmpeg-scaler} for the
14761 complete documentation. If not explicitly specified the filter applies
14762 empty parameters.
14763
14764
14765
14766 @item size, s
14767 Set the video size. For the syntax of this option, check the
14768 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
14769
14770 @item in_color_matrix
14771 @item out_color_matrix
14772 Set in/output YCbCr color space type.
14773
14774 This allows the autodetected value to be overridden as well as allows forcing
14775 a specific value used for the output and encoder.
14776
14777 If not specified, the color space type depends on the pixel format.
14778
14779 Possible values:
14780
14781 @table @samp
14782 @item auto
14783 Choose automatically.
14784
14785 @item bt709
14786 Format conforming to International Telecommunication Union (ITU)
14787 Recommendation BT.709.
14788
14789 @item fcc
14790 Set color space conforming to the United States Federal Communications
14791 Commission (FCC) Code of Federal Regulations (CFR) Title 47 (2003) 73.682 (a).
14792
14793 @item bt601
14794 Set color space conforming to:
14795
14796 @itemize
14797 @item
14798 ITU Radiocommunication Sector (ITU-R) Recommendation BT.601
14799
14800 @item
14801 ITU-R Rec. BT.470-6 (1998) Systems B, B1, and G
14802
14803 @item
14804 Society of Motion Picture and Television Engineers (SMPTE) ST 170:2004
14805
14806 @end itemize
14807
14808 @item smpte240m
14809 Set color space conforming to SMPTE ST 240:1999.
14810 @end table
14811
14812 @item in_range
14813 @item out_range
14814 Set in/output YCbCr sample range.
14815
14816 This allows the autodetected value to be overridden as well as allows forcing
14817 a specific value used for the output and encoder. If not specified, the
14818 range depends on the pixel format. Possible values:
14819
14820 @table @samp
14821 @item auto/unknown
14822 Choose automatically.
14823
14824 @item jpeg/full/pc
14825 Set full range (0-255 in case of 8-bit luma).
14826
14827 @item mpeg/limited/tv
14828 Set "MPEG" range (16-235 in case of 8-bit luma).
14829 @end table
14830
14831 @item force_original_aspect_ratio
14832 Enable decreasing or increasing output video width or height if necessary to
14833 keep the original aspect ratio. Possible values:
14834
14835 @table @samp
14836 @item disable
14837 Scale the video as specified and disable this feature.
14838
14839 @item decrease
14840 The output video dimensions will automatically be decreased if needed.
14841
14842 @item increase
14843 The output video dimensions will automatically be increased if needed.
14844
14845 @end table
14846
14847 One useful instance of this option is that when you know a specific device's
14848 maximum allowed resolution, you can use this to limit the output video to
14849 that, while retaining the aspect ratio. For example, device A allows
14850 1280x720 playback, and your video is 1920x800. Using this option (set it to
14851 decrease) and specifying 1280x720 to the command line makes the output
14852 1280x533.
14853
14854 Please note that this is a different thing than specifying -1 for @option{w}
14855 or @option{h}, you still need to specify the output resolution for this option
14856 to work.
14857
14858 @end table
14859
14860 The values of the @option{w} and @option{h} options are expressions
14861 containing the following constants:
14862
14863 @table @var
14864 @item in_w
14865 @item in_h
14866 The input width and height
14867
14868 @item iw
14869 @item ih
14870 These are the same as @var{in_w} and @var{in_h}.
14871
14872 @item out_w
14873 @item out_h
14874 The output (scaled) width and height
14875
14876 @item ow
14877 @item oh
14878 These are the same as @var{out_w} and @var{out_h}
14879
14880 @item a
14881 The same as @var{iw} / @var{ih}
14882
14883 @item sar
14884 input sample aspect ratio
14885
14886 @item dar
14887 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
14888
14889 @item hsub
14890 @item vsub
14891 horizontal and vertical input chroma subsample values. For example for the
14892 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
14893
14894 @item ohsub
14895 @item ovsub
14896 horizontal and vertical output chroma subsample values. For example for the
14897 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
14898 @end table
14899
14900 @subsection Examples
14901
14902 @itemize
14903 @item
14904 Scale the input video to a size of 200x100
14905 @example
14906 scale=w=200:h=100
14907 @end example
14908
14909 This is equivalent to:
14910 @example
14911 scale=200:100
14912 @end example
14913
14914 or:
14915 @example
14916 scale=200x100
14917 @end example
14918
14919 @item
14920 Specify a size abbreviation for the output size:
14921 @example
14922 scale=qcif
14923 @end example
14924
14925 which can also be written as:
14926 @example
14927 scale=size=qcif
14928 @end example
14929
14930 @item
14931 Scale the input to 2x:
14932 @example
14933 scale=w=2*iw:h=2*ih
14934 @end example
14935
14936 @item
14937 The above is the same as:
14938 @example
14939 scale=2*in_w:2*in_h
14940 @end example
14941
14942 @item
14943 Scale the input to 2x with forced interlaced scaling:
14944 @example
14945 scale=2*iw:2*ih:interl=1
14946 @end example
14947
14948 @item
14949 Scale the input to half size:
14950 @example
14951 scale=w=iw/2:h=ih/2
14952 @end example
14953
14954 @item
14955 Increase the width, and set the height to the same size:
14956 @example
14957 scale=3/2*iw:ow
14958 @end example
14959
14960 @item
14961 Seek Greek harmony:
14962 @example
14963 scale=iw:1/PHI*iw
14964 scale=ih*PHI:ih
14965 @end example
14966
14967 @item
14968 Increase the height, and set the width to 3/2 of the height:
14969 @example
14970 scale=w=3/2*oh:h=3/5*ih
14971 @end example
14972
14973 @item
14974 Increase the size, making the size a multiple of the chroma
14975 subsample values:
14976 @example
14977 scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
14978 @end example
14979
14980 @item
14981 Increase the width to a maximum of 500 pixels,
14982 keeping the same aspect ratio as the input:
14983 @example
14984 scale=w='min(500\, iw*3/2):h=-1'
14985 @end example
14986
14987 @item
14988 Make pixels square by combining scale and setsar:
14989 @example
14990 scale='trunc(ih*dar):ih',setsar=1/1
14991 @end example
14992
14993 @item
14994 Make pixels square by combining scale and setsar,
14995 making sure the resulting resolution is even (required by some codecs):
14996 @example
14997 scale='trunc(ih*dar/2)*2:trunc(ih/2)*2',setsar=1/1
14998 @end example
14999 @end itemize
15000
15001 @subsection Commands
15002
15003 This filter supports the following commands:
15004 @table @option
15005 @item width, w
15006 @item height, h
15007 Set the output video dimension expression.
15008 The command accepts the same syntax of the corresponding option.
15009
15010 If the specified expression is not valid, it is kept at its current
15011 value.
15012 @end table
15013
15014 @section scale_npp
15015
15016 Use the NVIDIA Performance Primitives (libnpp) to perform scaling and/or pixel
15017 format conversion on CUDA video frames. Setting the output width and height
15018 works in the same way as for the @var{scale} filter.
15019
15020 The following additional options are accepted:
15021 @table @option
15022 @item format
15023 The pixel format of the output CUDA frames. If set to the string "same" (the
15024 default), the input format will be kept. Note that automatic format negotiation
15025 and conversion is not yet supported for hardware frames
15026
15027 @item interp_algo
15028 The interpolation algorithm used for resizing. One of the following:
15029 @table @option
15030 @item nn
15031 Nearest neighbour.
15032
15033 @item linear
15034 @item cubic
15035 @item cubic2p_bspline
15036 2-parameter cubic (B=1, C=0)
15037
15038 @item cubic2p_catmullrom
15039 2-parameter cubic (B=0, C=1/2)
15040
15041 @item cubic2p_b05c03
15042 2-parameter cubic (B=1/2, C=3/10)
15043
15044 @item super
15045 Supersampling
15046
15047 @item lanczos
15048 @end table
15049
15050 @end table
15051
15052 @section scale2ref
15053
15054 Scale (resize) the input video, based on a reference video.
15055
15056 See the scale filter for available options, scale2ref supports the same but
15057 uses the reference video instead of the main input as basis. scale2ref also
15058 supports the following additional constants for the @option{w} and
15059 @option{h} options:
15060
15061 @table @var
15062 @item main_w
15063 @item main_h
15064 The main input video's width and height
15065
15066 @item main_a
15067 The same as @var{main_w} / @var{main_h}
15068
15069 @item main_sar
15070 The main input video's sample aspect ratio
15071
15072 @item main_dar, mdar
15073 The main input video's display aspect ratio. Calculated from
15074 @code{(main_w / main_h) * main_sar}.
15075
15076 @item main_hsub
15077 @item main_vsub
15078 The main input video's horizontal and vertical chroma subsample values.
15079 For example for the pixel format "yuv422p" @var{hsub} is 2 and @var{vsub}
15080 is 1.
15081 @end table
15082
15083 @subsection Examples
15084
15085 @itemize
15086 @item
15087 Scale a subtitle stream (b) to match the main video (a) in size before overlaying
15088 @example
15089 'scale2ref[b][a];[a][b]overlay'
15090 @end example
15091 @end itemize
15092
15093 @anchor{selectivecolor}
15094 @section selectivecolor
15095
15096 Adjust cyan, magenta, yellow and black (CMYK) to certain ranges of colors (such
15097 as "reds", "yellows", "greens", "cyans", ...). The adjustment range is defined
15098 by the "purity" of the color (that is, how saturated it already is).
15099
15100 This filter is similar to the Adobe Photoshop Selective Color tool.
15101
15102 The filter accepts the following options:
15103
15104 @table @option
15105 @item correction_method
15106 Select color correction method.
15107
15108 Available values are:
15109 @table @samp
15110 @item absolute
15111 Specified adjustments are applied "as-is" (added/subtracted to original pixel
15112 component value).
15113 @item relative
15114 Specified adjustments are relative to the original component value.
15115 @end table
15116 Default is @code{absolute}.
15117 @item reds
15118 Adjustments for red pixels (pixels where the red component is the maximum)
15119 @item yellows
15120 Adjustments for yellow pixels (pixels where the blue component is the minimum)
15121 @item greens
15122 Adjustments for green pixels (pixels where the green component is the maximum)
15123 @item cyans
15124 Adjustments for cyan pixels (pixels where the red component is the minimum)
15125 @item blues
15126 Adjustments for blue pixels (pixels where the blue component is the maximum)
15127 @item magentas
15128 Adjustments for magenta pixels (pixels where the green component is the minimum)
15129 @item whites
15130 Adjustments for white pixels (pixels where all components are greater than 128)
15131 @item neutrals
15132 Adjustments for all pixels except pure black and pure white
15133 @item blacks
15134 Adjustments for black pixels (pixels where all components are lesser than 128)
15135 @item psfile
15136 Specify a Photoshop selective color file (@code{.asv}) to import the settings from.
15137 @end table
15138
15139 All the adjustment settings (@option{reds}, @option{yellows}, ...) accept up to
15140 4 space separated floating point adjustment values in the [-1,1] range,
15141 respectively to adjust the amount of cyan, magenta, yellow and black for the
15142 pixels of its range.
15143
15144 @subsection Examples
15145
15146 @itemize
15147 @item
15148 Increase cyan by 50% and reduce yellow by 33% in every green areas, and
15149 increase magenta by 27% in blue areas:
15150 @example
15151 selectivecolor=greens=.5 0 -.33 0:blues=0 .27
15152 @end example
15153
15154 @item
15155 Use a Photoshop selective color preset:
15156 @example
15157 selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
15158 @end example
15159 @end itemize
15160
15161 @anchor{separatefields}
15162 @section separatefields
15163
15164 The @code{separatefields} takes a frame-based video input and splits
15165 each frame into its components fields, producing a new half height clip
15166 with twice the frame rate and twice the frame count.
15167
15168 This filter use field-dominance information in frame to decide which
15169 of each pair of fields to place first in the output.
15170 If it gets it wrong use @ref{setfield} filter before @code{separatefields} filter.
15171
15172 @section setdar, setsar
15173
15174 The @code{setdar} filter sets the Display Aspect Ratio for the filter
15175 output video.
15176
15177 This is done by changing the specified Sample (aka Pixel) Aspect
15178 Ratio, according to the following equation:
15179 @example
15180 @var{DAR} = @var{HORIZONTAL_RESOLUTION} / @var{VERTICAL_RESOLUTION} * @var{SAR}
15181 @end example
15182
15183 Keep in mind that the @code{setdar} filter does not modify the pixel
15184 dimensions of the video frame. Also, the display aspect ratio set by
15185 this filter may be changed by later filters in the filterchain,
15186 e.g. in case of scaling or if another "setdar" or a "setsar" filter is
15187 applied.
15188
15189 The @code{setsar} filter sets the Sample (aka Pixel) Aspect Ratio for
15190 the filter output video.
15191
15192 Note that as a consequence of the application of this filter, the
15193 output display aspect ratio will change according to the equation
15194 above.
15195
15196 Keep in mind that the sample aspect ratio set by the @code{setsar}
15197 filter may be changed by later filters in the filterchain, e.g. if
15198 another "setsar" or a "setdar" filter is applied.
15199
15200 It accepts the following parameters:
15201
15202 @table @option
15203 @item r, ratio, dar (@code{setdar} only), sar (@code{setsar} only)
15204 Set the aspect ratio used by the filter.
15205
15206 The parameter can be a floating point number string, an expression, or
15207 a string of the form @var{num}:@var{den}, where @var{num} and
15208 @var{den} are the numerator and denominator of the aspect ratio. If
15209 the parameter is not specified, it is assumed the value "0".
15210 In case the form "@var{num}:@var{den}" is used, the @code{:} character
15211 should be escaped.
15212
15213 @item max
15214 Set the maximum integer value to use for expressing numerator and
15215 denominator when reducing the expressed aspect ratio to a rational.
15216 Default value is @code{100}.
15217
15218 @end table
15219
15220 The parameter @var{sar} is an expression containing
15221 the following constants:
15222
15223 @table @option
15224 @item E, PI, PHI
15225 These are approximated values for the mathematical constants e
15226 (Euler's number), pi (Greek pi), and phi (the golden ratio).
15227
15228 @item w, h
15229 The input width and height.
15230
15231 @item a
15232 These are the same as @var{w} / @var{h}.
15233
15234 @item sar
15235 The input sample aspect ratio.
15236
15237 @item dar
15238 The input display aspect ratio. It is the same as
15239 (@var{w} / @var{h}) * @var{sar}.
15240
15241 @item hsub, vsub
15242 Horizontal and vertical chroma subsample values. For example, for the
15243 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
15244 @end table
15245
15246 @subsection Examples
15247
15248 @itemize
15249
15250 @item
15251 To change the display aspect ratio to 16:9, specify one of the following:
15252 @example
15253 setdar=dar=1.77777
15254 setdar=dar=16/9
15255 @end example
15256
15257 @item
15258 To change the sample aspect ratio to 10:11, specify:
15259 @example
15260 setsar=sar=10/11
15261 @end example
15262
15263 @item
15264 To set a display aspect ratio of 16:9, and specify a maximum integer value of
15265 1000 in the aspect ratio reduction, use the command:
15266 @example
15267 setdar=ratio=16/9:max=1000
15268 @end example
15269
15270 @end itemize
15271
15272 @anchor{setfield}
15273 @section setfield
15274
15275 Force field for the output video frame.
15276
15277 The @code{setfield} filter marks the interlace type field for the
15278 output frames. It does not change the input frame, but only sets the
15279 corresponding property, which affects how the frame is treated by
15280 following filters (e.g. @code{fieldorder} or @code{yadif}).
15281
15282 The filter accepts the following options:
15283
15284 @table @option
15285
15286 @item mode
15287 Available values are:
15288
15289 @table @samp
15290 @item auto
15291 Keep the same field property.
15292
15293 @item bff
15294 Mark the frame as bottom-field-first.
15295
15296 @item tff
15297 Mark the frame as top-field-first.
15298
15299 @item prog
15300 Mark the frame as progressive.
15301 @end table
15302 @end table
15303
15304 @anchor{setparams}
15305 @section setparams
15306
15307 Force frame parameter for the output video frame.
15308
15309 The @code{setparams} filter marks interlace and color range for the
15310 output frames. It does not change the input frame, but only sets the
15311 corresponding property, which affects how the frame is treated by
15312 filters/encoders.
15313
15314 @table @option
15315 @item field_mode
15316 Available values are:
15317
15318 @table @samp
15319 @item auto
15320 Keep the same field property (default).
15321
15322 @item bff
15323 Mark the frame as bottom-field-first.
15324
15325 @item tff
15326 Mark the frame as top-field-first.
15327
15328 @item prog
15329 Mark the frame as progressive.
15330 @end table
15331
15332 @item range
15333 Available values are:
15334
15335 @table @samp
15336 @item auto
15337 Keep the same color range property (default).
15338
15339 @item unspecified, unknown
15340 Mark the frame as unspecified color range.
15341
15342 @item limited, tv, mpeg
15343 Mark the frame as limited range.
15344
15345 @item full, pc, jpeg
15346 Mark the frame as full range.
15347 @end table
15348
15349 @item color_primaries
15350 Set the color primaries.
15351 Available values are:
15352
15353 @table @samp
15354 @item auto
15355 Keep the same color primaries property (default).
15356
15357 @item bt709
15358 @item unknown
15359 @item bt470m
15360 @item bt470bg
15361 @item smpte170m
15362 @item smpte240m
15363 @item film
15364 @item bt2020
15365 @item smpte428
15366 @item smpte431
15367 @item smpte432
15368 @item jedec-p22
15369 @end table
15370
15371 @item color_trc
15372 Set the color transfer.
15373 Available values are:
15374
15375 @table @samp
15376 @item auto
15377 Keep the same color trc property (default).
15378
15379 @item bt709
15380 @item unknown
15381 @item bt470m
15382 @item bt470bg
15383 @item smpte170m
15384 @item smpte240m
15385 @item linear
15386 @item log100
15387 @item log316
15388 @item iec61966-2-4
15389 @item bt1361e
15390 @item iec61966-2-1
15391 @item bt2020-10
15392 @item bt2020-12
15393 @item smpte2084
15394 @item smpte428
15395 @item arib-std-b67
15396 @end table
15397
15398 @item colorspace
15399 Set the colorspace.
15400 Available values are:
15401
15402 @table @samp
15403 @item auto
15404 Keep the same colorspace property (default).
15405
15406 @item gbr
15407 @item bt709
15408 @item unknown
15409 @item fcc
15410 @item bt470bg
15411 @item smpte170m
15412 @item smpte240m
15413 @item ycgco
15414 @item bt2020nc
15415 @item bt2020c
15416 @item smpte2085
15417 @item chroma-derived-nc
15418 @item chroma-derived-c
15419 @item ictcp
15420 @end table
15421 @end table
15422
15423 @section showinfo
15424
15425 Show a line containing various information for each input video frame.
15426 The input video is not modified.
15427
15428 This filter supports the following options:
15429
15430 @table @option
15431 @item checksum
15432 Calculate checksums of each plane. By default enabled.
15433 @end table
15434
15435 The shown line contains a sequence of key/value pairs of the form
15436 @var{key}:@var{value}.
15437
15438 The following values are shown in the output:
15439
15440 @table @option
15441 @item n
15442 The (sequential) number of the input frame, starting from 0.
15443
15444 @item pts
15445 The Presentation TimeStamp of the input frame, expressed as a number of
15446 time base units. The time base unit depends on the filter input pad.
15447
15448 @item pts_time
15449 The Presentation TimeStamp of the input frame, expressed as a number of
15450 seconds.
15451
15452 @item pos
15453 The position of the frame in the input stream, or -1 if this information is
15454 unavailable and/or meaningless (for example in case of synthetic video).
15455
15456 @item fmt
15457 The pixel format name.
15458
15459 @item sar
15460 The sample aspect ratio of the input frame, expressed in the form
15461 @var{num}/@var{den}.
15462
15463 @item s
15464 The size of the input frame. For the syntax of this option, check the
15465 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
15466
15467 @item i
15468 The type of interlaced mode ("P" for "progressive", "T" for top field first, "B"
15469 for bottom field first).
15470
15471 @item iskey
15472 This is 1 if the frame is a key frame, 0 otherwise.
15473
15474 @item type
15475 The picture type of the input frame ("I" for an I-frame, "P" for a
15476 P-frame, "B" for a B-frame, or "?" for an unknown type).
15477 Also refer to the documentation of the @code{AVPictureType} enum and of
15478 the @code{av_get_picture_type_char} function defined in
15479 @file{libavutil/avutil.h}.
15480
15481 @item checksum
15482 The Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame.
15483
15484 @item plane_checksum
15485 The Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
15486 expressed in the form "[@var{c0} @var{c1} @var{c2} @var{c3}]".
15487 @end table
15488
15489 @section showpalette
15490
15491 Displays the 256 colors palette of each frame. This filter is only relevant for
15492 @var{pal8} pixel format frames.
15493
15494 It accepts the following option:
15495
15496 @table @option
15497 @item s
15498 Set the size of the box used to represent one palette color entry. Default is
15499 @code{30} (for a @code{30x30} pixel box).
15500 @end table
15501
15502 @section shuffleframes
15503
15504 Reorder and/or duplicate and/or drop video frames.
15505
15506 It accepts the following parameters:
15507
15508 @table @option
15509 @item mapping
15510 Set the destination indexes of input frames.
15511 This is space or '|' separated list of indexes that maps input frames to output
15512 frames. Number of indexes also sets maximal value that each index may have.
15513 '-1' index have special meaning and that is to drop frame.
15514 @end table
15515
15516 The first frame has the index 0. The default is to keep the input unchanged.
15517
15518 @subsection Examples
15519
15520 @itemize
15521 @item
15522 Swap second and third frame of every three frames of the input:
15523 @example
15524 ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
15525 @end example
15526
15527 @item
15528 Swap 10th and 1st frame of every ten frames of the input:
15529 @example
15530 ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
15531 @end example
15532 @end itemize
15533
15534 @section shuffleplanes
15535
15536 Reorder and/or duplicate video planes.
15537
15538 It accepts the following parameters:
15539
15540 @table @option
15541
15542 @item map0
15543 The index of the input plane to be used as the first output plane.
15544
15545 @item map1
15546 The index of the input plane to be used as the second output plane.
15547
15548 @item map2
15549 The index of the input plane to be used as the third output plane.
15550
15551 @item map3
15552 The index of the input plane to be used as the fourth output plane.
15553
15554 @end table
15555
15556 The first plane has the index 0. The default is to keep the input unchanged.
15557
15558 @subsection Examples
15559
15560 @itemize
15561 @item
15562 Swap the second and third planes of the input:
15563 @example
15564 ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
15565 @end example
15566 @end itemize
15567
15568 @anchor{signalstats}
15569 @section signalstats
15570 Evaluate various visual metrics that assist in determining issues associated
15571 with the digitization of analog video media.
15572
15573 By default the filter will log these metadata values:
15574
15575 @table @option
15576 @item YMIN
15577 Display the minimal Y value contained within the input frame. Expressed in
15578 range of [0-255].
15579
15580 @item YLOW
15581 Display the Y value at the 10% percentile within the input frame. Expressed in
15582 range of [0-255].
15583
15584 @item YAVG
15585 Display the average Y value within the input frame. Expressed in range of
15586 [0-255].
15587
15588 @item YHIGH
15589 Display the Y value at the 90% percentile within the input frame. Expressed in
15590 range of [0-255].
15591
15592 @item YMAX
15593 Display the maximum Y value contained within the input frame. Expressed in
15594 range of [0-255].
15595
15596 @item UMIN
15597 Display the minimal U value contained within the input frame. Expressed in
15598 range of [0-255].
15599
15600 @item ULOW
15601 Display the U value at the 10% percentile within the input frame. Expressed in
15602 range of [0-255].
15603
15604 @item UAVG
15605 Display the average U value within the input frame. Expressed in range of
15606 [0-255].
15607
15608 @item UHIGH
15609 Display the U value at the 90% percentile within the input frame. Expressed in
15610 range of [0-255].
15611
15612 @item UMAX
15613 Display the maximum U value contained within the input frame. Expressed in
15614 range of [0-255].
15615
15616 @item VMIN
15617 Display the minimal V value contained within the input frame. Expressed in
15618 range of [0-255].
15619
15620 @item VLOW
15621 Display the V value at the 10% percentile within the input frame. Expressed in
15622 range of [0-255].
15623
15624 @item VAVG
15625 Display the average V value within the input frame. Expressed in range of
15626 [0-255].
15627
15628 @item VHIGH
15629 Display the V value at the 90% percentile within the input frame. Expressed in
15630 range of [0-255].
15631
15632 @item VMAX
15633 Display the maximum V value contained within the input frame. Expressed in
15634 range of [0-255].
15635
15636 @item SATMIN
15637 Display the minimal saturation value contained within the input frame.
15638 Expressed in range of [0-~181.02].
15639
15640 @item SATLOW
15641 Display the saturation value at the 10% percentile within the input frame.
15642 Expressed in range of [0-~181.02].
15643
15644 @item SATAVG
15645 Display the average saturation value within the input frame. Expressed in range
15646 of [0-~181.02].
15647
15648 @item SATHIGH
15649 Display the saturation value at the 90% percentile within the input frame.
15650 Expressed in range of [0-~181.02].
15651
15652 @item SATMAX
15653 Display the maximum saturation value contained within the input frame.
15654 Expressed in range of [0-~181.02].
15655
15656 @item HUEMED
15657 Display the median value for hue within the input frame. Expressed in range of
15658 [0-360].
15659
15660 @item HUEAVG
15661 Display the average value for hue within the input frame. Expressed in range of
15662 [0-360].
15663
15664 @item YDIF
15665 Display the average of sample value difference between all values of the Y
15666 plane in the current frame and corresponding values of the previous input frame.
15667 Expressed in range of [0-255].
15668
15669 @item UDIF
15670 Display the average of sample value difference between all values of the U
15671 plane in the current frame and corresponding values of the previous input frame.
15672 Expressed in range of [0-255].
15673
15674 @item VDIF
15675 Display the average of sample value difference between all values of the V
15676 plane in the current frame and corresponding values of the previous input frame.
15677 Expressed in range of [0-255].
15678
15679 @item YBITDEPTH
15680 Display bit depth of Y plane in current frame.
15681 Expressed in range of [0-16].
15682
15683 @item UBITDEPTH
15684 Display bit depth of U plane in current frame.
15685 Expressed in range of [0-16].
15686
15687 @item VBITDEPTH
15688 Display bit depth of V plane in current frame.
15689 Expressed in range of [0-16].
15690 @end table
15691
15692 The filter accepts the following options:
15693
15694 @table @option
15695 @item stat
15696 @item out
15697
15698 @option{stat} specify an additional form of image analysis.
15699 @option{out} output video with the specified type of pixel highlighted.
15700
15701 Both options accept the following values:
15702
15703 @table @samp
15704 @item tout
15705 Identify @var{temporal outliers} pixels. A @var{temporal outlier} is a pixel
15706 unlike the neighboring pixels of the same field. Examples of temporal outliers
15707 include the results of video dropouts, head clogs, or tape tracking issues.
15708
15709 @item vrep
15710 Identify @var{vertical line repetition}. Vertical line repetition includes
15711 similar rows of pixels within a frame. In born-digital video vertical line
15712 repetition is common, but this pattern is uncommon in video digitized from an
15713 analog source. When it occurs in video that results from the digitization of an
15714 analog source it can indicate concealment from a dropout compensator.
15715
15716 @item brng
15717 Identify pixels that fall outside of legal broadcast range.
15718 @end table
15719
15720 @item color, c
15721 Set the highlight color for the @option{out} option. The default color is
15722 yellow.
15723 @end table
15724
15725 @subsection Examples
15726
15727 @itemize
15728 @item
15729 Output data of various video metrics:
15730 @example
15731 ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
15732 @end example
15733
15734 @item
15735 Output specific data about the minimum and maximum values of the Y plane per frame:
15736 @example
15737 ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
15738 @end example
15739
15740 @item
15741 Playback video while highlighting pixels that are outside of broadcast range in red.
15742 @example
15743 ffplay example.mov -vf signalstats="out=brng:color=red"
15744 @end example
15745
15746 @item
15747 Playback video with signalstats metadata drawn over the frame.
15748 @example
15749 ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
15750 @end example
15751
15752 The contents of signalstat_drawtext.txt used in the command are:
15753 @example
15754 time %@{pts:hms@}
15755 Y (%@{metadata:lavfi.signalstats.YMIN@}-%@{metadata:lavfi.signalstats.YMAX@})
15756 U (%@{metadata:lavfi.signalstats.UMIN@}-%@{metadata:lavfi.signalstats.UMAX@})
15757 V (%@{metadata:lavfi.signalstats.VMIN@}-%@{metadata:lavfi.signalstats.VMAX@})
15758 saturation maximum: %@{metadata:lavfi.signalstats.SATMAX@}
15759
15760 @end example
15761 @end itemize
15762
15763 @anchor{signature}
15764 @section signature
15765
15766 Calculates the MPEG-7 Video Signature. The filter can handle more than one
15767 input. In this case the matching between the inputs can be calculated additionally.
15768 The filter always passes through the first input. The signature of each stream can
15769 be written into a file.
15770
15771 It accepts the following options:
15772
15773 @table @option
15774 @item detectmode
15775 Enable or disable the matching process.
15776
15777 Available values are:
15778
15779 @table @samp
15780 @item off
15781 Disable the calculation of a matching (default).
15782 @item full
15783 Calculate the matching for the whole video and output whether the whole video
15784 matches or only parts.
15785 @item fast
15786 Calculate only until a matching is found or the video ends. Should be faster in
15787 some cases.
15788 @end table
15789
15790 @item nb_inputs
15791 Set the number of inputs. The option value must be a non negative integer.
15792 Default value is 1.
15793
15794 @item filename
15795 Set the path to which the output is written. If there is more than one input,
15796 the path must be a prototype, i.e. must contain %d or %0nd (where n is a positive
15797 integer), that will be replaced with the input number. If no filename is
15798 specified, no output will be written. This is the default.
15799
15800 @item format
15801 Choose the output format.
15802
15803 Available values are:
15804
15805 @table @samp
15806 @item binary
15807 Use the specified binary representation (default).
15808 @item xml
15809 Use the specified xml representation.
15810 @end table
15811
15812 @item th_d
15813 Set threshold to detect one word as similar. The option value must be an integer
15814 greater than zero. The default value is 9000.
15815
15816 @item th_dc
15817 Set threshold to detect all words as similar. The option value must be an integer
15818 greater than zero. The default value is 60000.
15819
15820 @item th_xh
15821 Set threshold to detect frames as similar. The option value must be an integer
15822 greater than zero. The default value is 116.
15823
15824 @item th_di
15825 Set the minimum length of a sequence in frames to recognize it as matching
15826 sequence. The option value must be a non negative integer value.
15827 The default value is 0.
15828
15829 @item th_it
15830 Set the minimum relation, that matching frames to all frames must have.
15831 The option value must be a double value between 0 and 1. The default value is 0.5.
15832 @end table
15833
15834 @subsection Examples
15835
15836 @itemize
15837 @item
15838 To calculate the signature of an input video and store it in signature.bin:
15839 @example
15840 ffmpeg -i input.mkv -vf signature=filename=signature.bin -map 0:v -f null -
15841 @end example
15842
15843 @item
15844 To detect whether two videos match and store the signatures in XML format in
15845 signature0.xml and signature1.xml:
15846 @example
15847 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 -
15848 @end example
15849
15850 @end itemize
15851
15852 @anchor{smartblur}
15853 @section smartblur
15854
15855 Blur the input video without impacting the outlines.
15856
15857 It accepts the following options:
15858
15859 @table @option
15860 @item luma_radius, lr
15861 Set the luma radius. The option value must be a float number in
15862 the range [0.1,5.0] that specifies the variance of the gaussian filter
15863 used to blur the image (slower if larger). Default value is 1.0.
15864
15865 @item luma_strength, ls
15866 Set the luma strength. The option value must be a float number
15867 in the range [-1.0,1.0] that configures the blurring. A value included
15868 in [0.0,1.0] will blur the image whereas a value included in
15869 [-1.0,0.0] will sharpen the image. Default value is 1.0.
15870
15871 @item luma_threshold, lt
15872 Set the luma threshold used as a coefficient to determine
15873 whether a pixel should be blurred or not. The option value must be an
15874 integer in the range [-30,30]. A value of 0 will filter all the image,
15875 a value included in [0,30] will filter flat areas and a value included
15876 in [-30,0] will filter edges. Default value is 0.
15877
15878 @item chroma_radius, cr
15879 Set the chroma radius. The option value must be a float number in
15880 the range [0.1,5.0] that specifies the variance of the gaussian filter
15881 used to blur the image (slower if larger). Default value is @option{luma_radius}.
15882
15883 @item chroma_strength, cs
15884 Set the chroma strength. The option value must be a float number
15885 in the range [-1.0,1.0] that configures the blurring. A value included
15886 in [0.0,1.0] will blur the image whereas a value included in
15887 [-1.0,0.0] will sharpen the image. Default value is @option{luma_strength}.
15888
15889 @item chroma_threshold, ct
15890 Set the chroma threshold used as a coefficient to determine
15891 whether a pixel should be blurred or not. The option value must be an
15892 integer in the range [-30,30]. A value of 0 will filter all the image,
15893 a value included in [0,30] will filter flat areas and a value included
15894 in [-30,0] will filter edges. Default value is @option{luma_threshold}.
15895 @end table
15896
15897 If a chroma option is not explicitly set, the corresponding luma value
15898 is set.
15899
15900 @section ssim
15901
15902 Obtain the SSIM (Structural SImilarity Metric) between two input videos.
15903
15904 This filter takes in input two input videos, the first input is
15905 considered the "main" source and is passed unchanged to the
15906 output. The second input is used as a "reference" video for computing
15907 the SSIM.
15908
15909 Both video inputs must have the same resolution and pixel format for
15910 this filter to work correctly. Also it assumes that both inputs
15911 have the same number of frames, which are compared one by one.
15912
15913 The filter stores the calculated SSIM of each frame.
15914
15915 The description of the accepted parameters follows.
15916
15917 @table @option
15918 @item stats_file, f
15919 If specified the filter will use the named file to save the SSIM of
15920 each individual frame. When filename equals "-" the data is sent to
15921 standard output.
15922 @end table
15923
15924 The file printed if @var{stats_file} is selected, contains a sequence of
15925 key/value pairs of the form @var{key}:@var{value} for each compared
15926 couple of frames.
15927
15928 A description of each shown parameter follows:
15929
15930 @table @option
15931 @item n
15932 sequential number of the input frame, starting from 1
15933
15934 @item Y, U, V, R, G, B
15935 SSIM of the compared frames for the component specified by the suffix.
15936
15937 @item All
15938 SSIM of the compared frames for the whole frame.
15939
15940 @item dB
15941 Same as above but in dB representation.
15942 @end table
15943
15944 This filter also supports the @ref{framesync} options.
15945
15946 For example:
15947 @example
15948 movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
15949 [main][ref] ssim="stats_file=stats.log" [out]
15950 @end example
15951
15952 On this example the input file being processed is compared with the
15953 reference file @file{ref_movie.mpg}. The SSIM of each individual frame
15954 is stored in @file{stats.log}.
15955
15956 Another example with both psnr and ssim at same time:
15957 @example
15958 ffmpeg -i main.mpg -i ref.mpg -lavfi  "ssim;[0:v][1:v]psnr" -f null -
15959 @end example
15960
15961 @section stereo3d
15962
15963 Convert between different stereoscopic image formats.
15964
15965 The filters accept the following options:
15966
15967 @table @option
15968 @item in
15969 Set stereoscopic image format of input.
15970
15971 Available values for input image formats are:
15972 @table @samp
15973 @item sbsl
15974 side by side parallel (left eye left, right eye right)
15975
15976 @item sbsr
15977 side by side crosseye (right eye left, left eye right)
15978
15979 @item sbs2l
15980 side by side parallel with half width resolution
15981 (left eye left, right eye right)
15982
15983 @item sbs2r
15984 side by side crosseye with half width resolution
15985 (right eye left, left eye right)
15986
15987 @item abl
15988 above-below (left eye above, right eye below)
15989
15990 @item abr
15991 above-below (right eye above, left eye below)
15992
15993 @item ab2l
15994 above-below with half height resolution
15995 (left eye above, right eye below)
15996
15997 @item ab2r
15998 above-below with half height resolution
15999 (right eye above, left eye below)
16000
16001 @item al
16002 alternating frames (left eye first, right eye second)
16003
16004 @item ar
16005 alternating frames (right eye first, left eye second)
16006
16007 @item irl
16008 interleaved rows (left eye has top row, right eye starts on next row)
16009
16010 @item irr
16011 interleaved rows (right eye has top row, left eye starts on next row)
16012
16013 @item icl
16014 interleaved columns, left eye first
16015
16016 @item icr
16017 interleaved columns, right eye first
16018
16019 Default value is @samp{sbsl}.
16020 @end table
16021
16022 @item out
16023 Set stereoscopic image format of output.
16024
16025 @table @samp
16026 @item sbsl
16027 side by side parallel (left eye left, right eye right)
16028
16029 @item sbsr
16030 side by side crosseye (right eye left, left eye right)
16031
16032 @item sbs2l
16033 side by side parallel with half width resolution
16034 (left eye left, right eye right)
16035
16036 @item sbs2r
16037 side by side crosseye with half width resolution
16038 (right eye left, left eye right)
16039
16040 @item abl
16041 above-below (left eye above, right eye below)
16042
16043 @item abr
16044 above-below (right eye above, left eye below)
16045
16046 @item ab2l
16047 above-below with half height resolution
16048 (left eye above, right eye below)
16049
16050 @item ab2r
16051 above-below with half height resolution
16052 (right eye above, left eye below)
16053
16054 @item al
16055 alternating frames (left eye first, right eye second)
16056
16057 @item ar
16058 alternating frames (right eye first, left eye second)
16059
16060 @item irl
16061 interleaved rows (left eye has top row, right eye starts on next row)
16062
16063 @item irr
16064 interleaved rows (right eye has top row, left eye starts on next row)
16065
16066 @item arbg
16067 anaglyph red/blue gray
16068 (red filter on left eye, blue filter on right eye)
16069
16070 @item argg
16071 anaglyph red/green gray
16072 (red filter on left eye, green filter on right eye)
16073
16074 @item arcg
16075 anaglyph red/cyan gray
16076 (red filter on left eye, cyan filter on right eye)
16077
16078 @item arch
16079 anaglyph red/cyan half colored
16080 (red filter on left eye, cyan filter on right eye)
16081
16082 @item arcc
16083 anaglyph red/cyan color
16084 (red filter on left eye, cyan filter on right eye)
16085
16086 @item arcd
16087 anaglyph red/cyan color optimized with the least squares projection of dubois
16088 (red filter on left eye, cyan filter on right eye)
16089
16090 @item agmg
16091 anaglyph green/magenta gray
16092 (green filter on left eye, magenta filter on right eye)
16093
16094 @item agmh
16095 anaglyph green/magenta half colored
16096 (green filter on left eye, magenta filter on right eye)
16097
16098 @item agmc
16099 anaglyph green/magenta colored
16100 (green filter on left eye, magenta filter on right eye)
16101
16102 @item agmd
16103 anaglyph green/magenta color optimized with the least squares projection of dubois
16104 (green filter on left eye, magenta filter on right eye)
16105
16106 @item aybg
16107 anaglyph yellow/blue gray
16108 (yellow filter on left eye, blue filter on right eye)
16109
16110 @item aybh
16111 anaglyph yellow/blue half colored
16112 (yellow filter on left eye, blue filter on right eye)
16113
16114 @item aybc
16115 anaglyph yellow/blue colored
16116 (yellow filter on left eye, blue filter on right eye)
16117
16118 @item aybd
16119 anaglyph yellow/blue color optimized with the least squares projection of dubois
16120 (yellow filter on left eye, blue filter on right eye)
16121
16122 @item ml
16123 mono output (left eye only)
16124
16125 @item mr
16126 mono output (right eye only)
16127
16128 @item chl
16129 checkerboard, left eye first
16130
16131 @item chr
16132 checkerboard, right eye first
16133
16134 @item icl
16135 interleaved columns, left eye first
16136
16137 @item icr
16138 interleaved columns, right eye first
16139
16140 @item hdmi
16141 HDMI frame pack
16142 @end table
16143
16144 Default value is @samp{arcd}.
16145 @end table
16146
16147 @subsection Examples
16148
16149 @itemize
16150 @item
16151 Convert input video from side by side parallel to anaglyph yellow/blue dubois:
16152 @example
16153 stereo3d=sbsl:aybd
16154 @end example
16155
16156 @item
16157 Convert input video from above below (left eye above, right eye below) to side by side crosseye.
16158 @example
16159 stereo3d=abl:sbsr
16160 @end example
16161 @end itemize
16162
16163 @section streamselect, astreamselect
16164 Select video or audio streams.
16165
16166 The filter accepts the following options:
16167
16168 @table @option
16169 @item inputs
16170 Set number of inputs. Default is 2.
16171
16172 @item map
16173 Set input indexes to remap to outputs.
16174 @end table
16175
16176 @subsection Commands
16177
16178 The @code{streamselect} and @code{astreamselect} filter supports the following
16179 commands:
16180
16181 @table @option
16182 @item map
16183 Set input indexes to remap to outputs.
16184 @end table
16185
16186 @subsection Examples
16187
16188 @itemize
16189 @item
16190 Select first 5 seconds 1st stream and rest of time 2nd stream:
16191 @example
16192 sendcmd='5.0 streamselect map 1',streamselect=inputs=2:map=0
16193 @end example
16194
16195 @item
16196 Same as above, but for audio:
16197 @example
16198 asendcmd='5.0 astreamselect map 1',astreamselect=inputs=2:map=0
16199 @end example
16200 @end itemize
16201
16202 @section sobel
16203 Apply sobel operator to input video stream.
16204
16205 The filter accepts the following option:
16206
16207 @table @option
16208 @item planes
16209 Set which planes will be processed, unprocessed planes will be copied.
16210 By default value 0xf, all planes will be processed.
16211
16212 @item scale
16213 Set value which will be multiplied with filtered result.
16214
16215 @item delta
16216 Set value which will be added to filtered result.
16217 @end table
16218
16219 @anchor{spp}
16220 @section spp
16221
16222 Apply a simple postprocessing filter that compresses and decompresses the image
16223 at several (or - in the case of @option{quality} level @code{6} - all) shifts
16224 and average the results.
16225
16226 The filter accepts the following options:
16227
16228 @table @option
16229 @item quality
16230 Set quality. This option defines the number of levels for averaging. It accepts
16231 an integer in the range 0-6. If set to @code{0}, the filter will have no
16232 effect. A value of @code{6} means the higher quality. For each increment of
16233 that value the speed drops by a factor of approximately 2.  Default value is
16234 @code{3}.
16235
16236 @item qp
16237 Force a constant quantization parameter. If not set, the filter will use the QP
16238 from the video stream (if available).
16239
16240 @item mode
16241 Set thresholding mode. Available modes are:
16242
16243 @table @samp
16244 @item hard
16245 Set hard thresholding (default).
16246 @item soft
16247 Set soft thresholding (better de-ringing effect, but likely blurrier).
16248 @end table
16249
16250 @item use_bframe_qp
16251 Enable the use of the QP from the B-Frames if set to @code{1}. Using this
16252 option may cause flicker since the B-Frames have often larger QP. Default is
16253 @code{0} (not enabled).
16254 @end table
16255
16256 @section sr
16257
16258 Scale the input by applying one of the super-resolution methods based on
16259 convolutional neural networks. Supported models:
16260
16261 @itemize
16262 @item
16263 Super-Resolution Convolutional Neural Network model (SRCNN).
16264 See @url{https://arxiv.org/abs/1501.00092}.
16265
16266 @item
16267 Efficient Sub-Pixel Convolutional Neural Network model (ESPCN).
16268 See @url{https://arxiv.org/abs/1609.05158}.
16269 @end itemize
16270
16271 Training scripts as well as scripts for model generation are provided in
16272 the repository at @url{https://github.com/HighVoltageRocknRoll/sr.git}.
16273
16274 The filter accepts the following options:
16275
16276 @table @option
16277 @item dnn_backend
16278 Specify which DNN backend to use for model loading and execution. This option accepts
16279 the following values:
16280
16281 @table @samp
16282 @item native
16283 Native implementation of DNN loading and execution.
16284
16285 @item tensorflow
16286 TensorFlow backend. To enable this backend you
16287 need to install the TensorFlow for C library (see
16288 @url{https://www.tensorflow.org/install/install_c}) and configure FFmpeg with
16289 @code{--enable-libtensorflow}
16290 @end table
16291
16292 Default value is @samp{native}.
16293
16294 @item model
16295 Set path to model file specifying network architecture and its parameters.
16296 Note that different backends use different file formats. TensorFlow backend
16297 can load files for both formats, while native backend can load files for only
16298 its format.
16299
16300 @item scale_factor
16301 Set scale factor for SRCNN model. Allowed values are @code{2}, @code{3} and @code{4}.
16302 Default value is @code{2}. Scale factor is necessary for SRCNN model, because it accepts
16303 input upscaled using bicubic upscaling with proper scale factor.
16304 @end table
16305
16306 @anchor{subtitles}
16307 @section subtitles
16308
16309 Draw subtitles on top of input video using the libass library.
16310
16311 To enable compilation of this filter you need to configure FFmpeg with
16312 @code{--enable-libass}. This filter also requires a build with libavcodec and
16313 libavformat to convert the passed subtitles file to ASS (Advanced Substation
16314 Alpha) subtitles format.
16315
16316 The filter accepts the following options:
16317
16318 @table @option
16319 @item filename, f
16320 Set the filename of the subtitle file to read. It must be specified.
16321
16322 @item original_size
16323 Specify the size of the original video, the video for which the ASS file
16324 was composed. For the syntax of this option, check the
16325 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
16326 Due to a misdesign in ASS aspect ratio arithmetic, this is necessary to
16327 correctly scale the fonts if the aspect ratio has been changed.
16328
16329 @item fontsdir
16330 Set a directory path containing fonts that can be used by the filter.
16331 These fonts will be used in addition to whatever the font provider uses.
16332
16333 @item alpha
16334 Process alpha channel, by default alpha channel is untouched.
16335
16336 @item charenc
16337 Set subtitles input character encoding. @code{subtitles} filter only. Only
16338 useful if not UTF-8.
16339
16340 @item stream_index, si
16341 Set subtitles stream index. @code{subtitles} filter only.
16342
16343 @item force_style
16344 Override default style or script info parameters of the subtitles. It accepts a
16345 string containing ASS style format @code{KEY=VALUE} couples separated by ",".
16346 @end table
16347
16348 If the first key is not specified, it is assumed that the first value
16349 specifies the @option{filename}.
16350
16351 For example, to render the file @file{sub.srt} on top of the input
16352 video, use the command:
16353 @example
16354 subtitles=sub.srt
16355 @end example
16356
16357 which is equivalent to:
16358 @example
16359 subtitles=filename=sub.srt
16360 @end example
16361
16362 To render the default subtitles stream from file @file{video.mkv}, use:
16363 @example
16364 subtitles=video.mkv
16365 @end example
16366
16367 To render the second subtitles stream from that file, use:
16368 @example
16369 subtitles=video.mkv:si=1
16370 @end example
16371
16372 To make the subtitles stream from @file{sub.srt} appear in 80% transparent blue
16373 @code{DejaVu Serif}, use:
16374 @example
16375 subtitles=sub.srt:force_style='FontName=DejaVu Serif,PrimaryColour=&HCCFF0000'
16376 @end example
16377
16378 @section super2xsai
16379
16380 Scale the input by 2x and smooth using the Super2xSaI (Scale and
16381 Interpolate) pixel art scaling algorithm.
16382
16383 Useful for enlarging pixel art images without reducing sharpness.
16384
16385 @section swaprect
16386
16387 Swap two rectangular objects in video.
16388
16389 This filter accepts the following options:
16390
16391 @table @option
16392 @item w
16393 Set object width.
16394
16395 @item h
16396 Set object height.
16397
16398 @item x1
16399 Set 1st rect x coordinate.
16400
16401 @item y1
16402 Set 1st rect y coordinate.
16403
16404 @item x2
16405 Set 2nd rect x coordinate.
16406
16407 @item y2
16408 Set 2nd rect y coordinate.
16409
16410 All expressions are evaluated once for each frame.
16411 @end table
16412
16413 The all options are expressions containing the following constants:
16414
16415 @table @option
16416 @item w
16417 @item h
16418 The input width and height.
16419
16420 @item a
16421 same as @var{w} / @var{h}
16422
16423 @item sar
16424 input sample aspect ratio
16425
16426 @item dar
16427 input display aspect ratio, it is the same as (@var{w} / @var{h}) * @var{sar}
16428
16429 @item n
16430 The number of the input frame, starting from 0.
16431
16432 @item t
16433 The timestamp expressed in seconds. It's NAN if the input timestamp is unknown.
16434
16435 @item pos
16436 the position in the file of the input frame, NAN if unknown
16437 @end table
16438
16439 @section swapuv
16440 Swap U & V plane.
16441
16442 @section telecine
16443
16444 Apply telecine process to the video.
16445
16446 This filter accepts the following options:
16447
16448 @table @option
16449 @item first_field
16450 @table @samp
16451 @item top, t
16452 top field first
16453 @item bottom, b
16454 bottom field first
16455 The default value is @code{top}.
16456 @end table
16457
16458 @item pattern
16459 A string of numbers representing the pulldown pattern you wish to apply.
16460 The default value is @code{23}.
16461 @end table
16462
16463 @example
16464 Some typical patterns:
16465
16466 NTSC output (30i):
16467 27.5p: 32222
16468 24p: 23 (classic)
16469 24p: 2332 (preferred)
16470 20p: 33
16471 18p: 334
16472 16p: 3444
16473
16474 PAL output (25i):
16475 27.5p: 12222
16476 24p: 222222222223 ("Euro pulldown")
16477 16.67p: 33
16478 16p: 33333334
16479 @end example
16480
16481 @section threshold
16482
16483 Apply threshold effect to video stream.
16484
16485 This filter needs four video streams to perform thresholding.
16486 First stream is stream we are filtering.
16487 Second stream is holding threshold values, third stream is holding min values,
16488 and last, fourth stream is holding max values.
16489
16490 The filter accepts the following option:
16491
16492 @table @option
16493 @item planes
16494 Set which planes will be processed, unprocessed planes will be copied.
16495 By default value 0xf, all planes will be processed.
16496 @end table
16497
16498 For example if first stream pixel's component value is less then threshold value
16499 of pixel component from 2nd threshold stream, third stream value will picked,
16500 otherwise fourth stream pixel component value will be picked.
16501
16502 Using color source filter one can perform various types of thresholding:
16503
16504 @subsection Examples
16505
16506 @itemize
16507 @item
16508 Binary threshold, using gray color as threshold:
16509 @example
16510 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=black -f lavfi -i color=white -lavfi threshold output.avi
16511 @end example
16512
16513 @item
16514 Inverted binary threshold, using gray color as threshold:
16515 @example
16516 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -f lavfi -i color=black -lavfi threshold output.avi
16517 @end example
16518
16519 @item
16520 Truncate binary threshold, using gray color as threshold:
16521 @example
16522 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=gray -lavfi threshold output.avi
16523 @end example
16524
16525 @item
16526 Threshold to zero, using gray color as threshold:
16527 @example
16528 ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -i 320x240.avi -lavfi threshold output.avi
16529 @end example
16530
16531 @item
16532 Inverted threshold to zero, using gray color as threshold:
16533 @example
16534 ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=white -lavfi threshold output.avi
16535 @end example
16536 @end itemize
16537
16538 @section thumbnail
16539 Select the most representative frame in a given sequence of consecutive frames.
16540
16541 The filter accepts the following options:
16542
16543 @table @option
16544 @item n
16545 Set the frames batch size to analyze; in a set of @var{n} frames, the filter
16546 will pick one of them, and then handle the next batch of @var{n} frames until
16547 the end. Default is @code{100}.
16548 @end table
16549
16550 Since the filter keeps track of the whole frames sequence, a bigger @var{n}
16551 value will result in a higher memory usage, so a high value is not recommended.
16552
16553 @subsection Examples
16554
16555 @itemize
16556 @item
16557 Extract one picture each 50 frames:
16558 @example
16559 thumbnail=50
16560 @end example
16561
16562 @item
16563 Complete example of a thumbnail creation with @command{ffmpeg}:
16564 @example
16565 ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
16566 @end example
16567 @end itemize
16568
16569 @section tile
16570
16571 Tile several successive frames together.
16572
16573 The filter accepts the following options:
16574
16575 @table @option
16576
16577 @item layout
16578 Set the grid size (i.e. the number of lines and columns). For the syntax of
16579 this option, check the
16580 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
16581
16582 @item nb_frames
16583 Set the maximum number of frames to render in the given area. It must be less
16584 than or equal to @var{w}x@var{h}. The default value is @code{0}, meaning all
16585 the area will be used.
16586
16587 @item margin
16588 Set the outer border margin in pixels.
16589
16590 @item padding
16591 Set the inner border thickness (i.e. the number of pixels between frames). For
16592 more advanced padding options (such as having different values for the edges),
16593 refer to the pad video filter.
16594
16595 @item color
16596 Specify the color of the unused area. For the syntax of this option, check the
16597 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
16598 The default value of @var{color} is "black".
16599
16600 @item overlap
16601 Set the number of frames to overlap when tiling several successive frames together.
16602 The value must be between @code{0} and @var{nb_frames - 1}.
16603
16604 @item init_padding
16605 Set the number of frames to initially be empty before displaying first output frame.
16606 This controls how soon will one get first output frame.
16607 The value must be between @code{0} and @var{nb_frames - 1}.
16608 @end table
16609
16610 @subsection Examples
16611
16612 @itemize
16613 @item
16614 Produce 8x8 PNG tiles of all keyframes (@option{-skip_frame nokey}) in a movie:
16615 @example
16616 ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
16617 @end example
16618 The @option{-vsync 0} is necessary to prevent @command{ffmpeg} from
16619 duplicating each output frame to accommodate the originally detected frame
16620 rate.
16621
16622 @item
16623 Display @code{5} pictures in an area of @code{3x2} frames,
16624 with @code{7} pixels between them, and @code{2} pixels of initial margin, using
16625 mixed flat and named options:
16626 @example
16627 tile=3x2:nb_frames=5:padding=7:margin=2
16628 @end example
16629 @end itemize
16630
16631 @section tinterlace
16632
16633 Perform various types of temporal field interlacing.
16634
16635 Frames are counted starting from 1, so the first input frame is
16636 considered odd.
16637
16638 The filter accepts the following options:
16639
16640 @table @option
16641
16642 @item mode
16643 Specify the mode of the interlacing. This option can also be specified
16644 as a value alone. See below for a list of values for this option.
16645
16646 Available values are:
16647
16648 @table @samp
16649 @item merge, 0
16650 Move odd frames into the upper field, even into the lower field,
16651 generating a double height frame at half frame rate.
16652 @example
16653  ------> time
16654 Input:
16655 Frame 1         Frame 2         Frame 3         Frame 4
16656
16657 11111           22222           33333           44444
16658 11111           22222           33333           44444
16659 11111           22222           33333           44444
16660 11111           22222           33333           44444
16661
16662 Output:
16663 11111                           33333
16664 22222                           44444
16665 11111                           33333
16666 22222                           44444
16667 11111                           33333
16668 22222                           44444
16669 11111                           33333
16670 22222                           44444
16671 @end example
16672
16673 @item drop_even, 1
16674 Only output odd frames, even frames are dropped, generating a frame with
16675 unchanged height at half frame rate.
16676
16677 @example
16678  ------> time
16679 Input:
16680 Frame 1         Frame 2         Frame 3         Frame 4
16681
16682 11111           22222           33333           44444
16683 11111           22222           33333           44444
16684 11111           22222           33333           44444
16685 11111           22222           33333           44444
16686
16687 Output:
16688 11111                           33333
16689 11111                           33333
16690 11111                           33333
16691 11111                           33333
16692 @end example
16693
16694 @item drop_odd, 2
16695 Only output even frames, odd frames are dropped, generating a frame with
16696 unchanged height at half frame rate.
16697
16698 @example
16699  ------> time
16700 Input:
16701 Frame 1         Frame 2         Frame 3         Frame 4
16702
16703 11111           22222           33333           44444
16704 11111           22222           33333           44444
16705 11111           22222           33333           44444
16706 11111           22222           33333           44444
16707
16708 Output:
16709                 22222                           44444
16710                 22222                           44444
16711                 22222                           44444
16712                 22222                           44444
16713 @end example
16714
16715 @item pad, 3
16716 Expand each frame to full height, but pad alternate lines with black,
16717 generating a frame with double height at the same input frame rate.
16718
16719 @example
16720  ------> time
16721 Input:
16722 Frame 1         Frame 2         Frame 3         Frame 4
16723
16724 11111           22222           33333           44444
16725 11111           22222           33333           44444
16726 11111           22222           33333           44444
16727 11111           22222           33333           44444
16728
16729 Output:
16730 11111           .....           33333           .....
16731 .....           22222           .....           44444
16732 11111           .....           33333           .....
16733 .....           22222           .....           44444
16734 11111           .....           33333           .....
16735 .....           22222           .....           44444
16736 11111           .....           33333           .....
16737 .....           22222           .....           44444
16738 @end example
16739
16740
16741 @item interleave_top, 4
16742 Interleave the upper field from odd frames with the lower field from
16743 even frames, generating a frame with unchanged height at half frame rate.
16744
16745 @example
16746  ------> time
16747 Input:
16748 Frame 1         Frame 2         Frame 3         Frame 4
16749
16750 11111<-         22222           33333<-         44444
16751 11111           22222<-         33333           44444<-
16752 11111<-         22222           33333<-         44444
16753 11111           22222<-         33333           44444<-
16754
16755 Output:
16756 11111                           33333
16757 22222                           44444
16758 11111                           33333
16759 22222                           44444
16760 @end example
16761
16762
16763 @item interleave_bottom, 5
16764 Interleave the lower field from odd frames with the upper field from
16765 even frames, generating a frame with unchanged height at half frame rate.
16766
16767 @example
16768  ------> time
16769 Input:
16770 Frame 1         Frame 2         Frame 3         Frame 4
16771
16772 11111           22222<-         33333           44444<-
16773 11111<-         22222           33333<-         44444
16774 11111           22222<-         33333           44444<-
16775 11111<-         22222           33333<-         44444
16776
16777 Output:
16778 22222                           44444
16779 11111                           33333
16780 22222                           44444
16781 11111                           33333
16782 @end example
16783
16784
16785 @item interlacex2, 6
16786 Double frame rate with unchanged height. Frames are inserted each
16787 containing the second temporal field from the previous input frame and
16788 the first temporal field from the next input frame. This mode relies on
16789 the top_field_first flag. Useful for interlaced video displays with no
16790 field synchronisation.
16791
16792 @example
16793  ------> time
16794 Input:
16795 Frame 1         Frame 2         Frame 3         Frame 4
16796
16797 11111           22222           33333           44444
16798  11111           22222           33333           44444
16799 11111           22222           33333           44444
16800  11111           22222           33333           44444
16801
16802 Output:
16803 11111   22222   22222   33333   33333   44444   44444
16804  11111   11111   22222   22222   33333   33333   44444
16805 11111   22222   22222   33333   33333   44444   44444
16806  11111   11111   22222   22222   33333   33333   44444
16807 @end example
16808
16809
16810 @item mergex2, 7
16811 Move odd frames into the upper field, even into the lower field,
16812 generating a double height frame at same frame rate.
16813
16814 @example
16815  ------> time
16816 Input:
16817 Frame 1         Frame 2         Frame 3         Frame 4
16818
16819 11111           22222           33333           44444
16820 11111           22222           33333           44444
16821 11111           22222           33333           44444
16822 11111           22222           33333           44444
16823
16824 Output:
16825 11111           33333           33333           55555
16826 22222           22222           44444           44444
16827 11111           33333           33333           55555
16828 22222           22222           44444           44444
16829 11111           33333           33333           55555
16830 22222           22222           44444           44444
16831 11111           33333           33333           55555
16832 22222           22222           44444           44444
16833 @end example
16834
16835 @end table
16836
16837 Numeric values are deprecated but are accepted for backward
16838 compatibility reasons.
16839
16840 Default mode is @code{merge}.
16841
16842 @item flags
16843 Specify flags influencing the filter process.
16844
16845 Available value for @var{flags} is:
16846
16847 @table @option
16848 @item low_pass_filter, vlfp
16849 Enable linear vertical low-pass filtering in the filter.
16850 Vertical low-pass filtering is required when creating an interlaced
16851 destination from a progressive source which contains high-frequency
16852 vertical detail. Filtering will reduce interlace 'twitter' and Moire
16853 patterning.
16854
16855 @item complex_filter, cvlfp
16856 Enable complex vertical low-pass filtering.
16857 This will slightly less reduce interlace 'twitter' and Moire
16858 patterning but better retain detail and subjective sharpness impression.
16859
16860 @end table
16861
16862 Vertical low-pass filtering can only be enabled for @option{mode}
16863 @var{interleave_top} and @var{interleave_bottom}.
16864
16865 @end table
16866
16867 @section tmix
16868
16869 Mix successive video frames.
16870
16871 A description of the accepted options follows.
16872
16873 @table @option
16874 @item frames
16875 The number of successive frames to mix. If unspecified, it defaults to 3.
16876
16877 @item weights
16878 Specify weight of each input video frame.
16879 Each weight is separated by space. If number of weights is smaller than
16880 number of @var{frames} last specified weight will be used for all remaining
16881 unset weights.
16882
16883 @item scale
16884 Specify scale, if it is set it will be multiplied with sum
16885 of each weight multiplied with pixel values to give final destination
16886 pixel value. By default @var{scale} is auto scaled to sum of weights.
16887 @end table
16888
16889 @subsection Examples
16890
16891 @itemize
16892 @item
16893 Average 7 successive frames:
16894 @example
16895 tmix=frames=7:weights="1 1 1 1 1 1 1"
16896 @end example
16897
16898 @item
16899 Apply simple temporal convolution:
16900 @example
16901 tmix=frames=3:weights="-1 3 -1"
16902 @end example
16903
16904 @item
16905 Similar as above but only showing temporal differences:
16906 @example
16907 tmix=frames=3:weights="-1 2 -1":scale=1
16908 @end example
16909 @end itemize
16910
16911 @anchor{tonemap}
16912 @section tonemap
16913 Tone map colors from different dynamic ranges.
16914
16915 This filter expects data in single precision floating point, as it needs to
16916 operate on (and can output) out-of-range values. Another filter, such as
16917 @ref{zscale}, is needed to convert the resulting frame to a usable format.
16918
16919 The tonemapping algorithms implemented only work on linear light, so input
16920 data should be linearized beforehand (and possibly correctly tagged).
16921
16922 @example
16923 ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT
16924 @end example
16925
16926 @subsection Options
16927 The filter accepts the following options.
16928
16929 @table @option
16930 @item tonemap
16931 Set the tone map algorithm to use.
16932
16933 Possible values are:
16934 @table @var
16935 @item none
16936 Do not apply any tone map, only desaturate overbright pixels.
16937
16938 @item clip
16939 Hard-clip any out-of-range values. Use it for perfect color accuracy for
16940 in-range values, while distorting out-of-range values.
16941
16942 @item linear
16943 Stretch the entire reference gamut to a linear multiple of the display.
16944
16945 @item gamma
16946 Fit a logarithmic transfer between the tone curves.
16947
16948 @item reinhard
16949 Preserve overall image brightness with a simple curve, using nonlinear
16950 contrast, which results in flattening details and degrading color accuracy.
16951
16952 @item hable
16953 Preserve both dark and bright details better than @var{reinhard}, at the cost
16954 of slightly darkening everything. Use it when detail preservation is more
16955 important than color and brightness accuracy.
16956
16957 @item mobius
16958 Smoothly map out-of-range values, while retaining contrast and colors for
16959 in-range material as much as possible. Use it when color accuracy is more
16960 important than detail preservation.
16961 @end table
16962
16963 Default is none.
16964
16965 @item param
16966 Tune the tone mapping algorithm.
16967
16968 This affects the following algorithms:
16969 @table @var
16970 @item none
16971 Ignored.
16972
16973 @item linear
16974 Specifies the scale factor to use while stretching.
16975 Default to 1.0.
16976
16977 @item gamma
16978 Specifies the exponent of the function.
16979 Default to 1.8.
16980
16981 @item clip
16982 Specify an extra linear coefficient to multiply into the signal before clipping.
16983 Default to 1.0.
16984
16985 @item reinhard
16986 Specify the local contrast coefficient at the display peak.
16987 Default to 0.5, which means that in-gamut values will be about half as bright
16988 as when clipping.
16989
16990 @item hable
16991 Ignored.
16992
16993 @item mobius
16994 Specify the transition point from linear to mobius transform. Every value
16995 below this point is guaranteed to be mapped 1:1. The higher the value, the
16996 more accurate the result will be, at the cost of losing bright details.
16997 Default to 0.3, which due to the steep initial slope still preserves in-range
16998 colors fairly accurately.
16999 @end table
17000
17001 @item desat
17002 Apply desaturation for highlights that exceed this level of brightness. The
17003 higher the parameter, the more color information will be preserved. This
17004 setting helps prevent unnaturally blown-out colors for super-highlights, by
17005 (smoothly) turning into white instead. This makes images feel more natural,
17006 at the cost of reducing information about out-of-range colors.
17007
17008 The default of 2.0 is somewhat conservative and will mostly just apply to
17009 skies or directly sunlit surfaces. A setting of 0.0 disables this option.
17010
17011 This option works only if the input frame has a supported color tag.
17012
17013 @item peak
17014 Override signal/nominal/reference peak with this value. Useful when the
17015 embedded peak information in display metadata is not reliable or when tone
17016 mapping from a lower range to a higher range.
17017 @end table
17018
17019 @section tpad
17020
17021 Temporarily pad video frames.
17022
17023 The filter accepts the following options:
17024
17025 @table @option
17026 @item start
17027 Specify number of delay frames before input video stream.
17028
17029 @item stop
17030 Specify number of padding frames after input video stream.
17031 Set to -1 to pad indefinitely.
17032
17033 @item start_mode
17034 Set kind of frames added to beginning of stream.
17035 Can be either @var{add} or @var{clone}.
17036 With @var{add} frames of solid-color are added.
17037 With @var{clone} frames are clones of first frame.
17038
17039 @item stop_mode
17040 Set kind of frames added to end of stream.
17041 Can be either @var{add} or @var{clone}.
17042 With @var{add} frames of solid-color are added.
17043 With @var{clone} frames are clones of last frame.
17044
17045 @item start_duration, stop_duration
17046 Specify the duration of the start/stop delay. See
17047 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
17048 for the accepted syntax.
17049 These options override @var{start} and @var{stop}.
17050
17051 @item color
17052 Specify the color of the padded area. For the syntax of this option,
17053 check the @ref{color syntax,,"Color" section in the ffmpeg-utils
17054 manual,ffmpeg-utils}.
17055
17056 The default value of @var{color} is "black".
17057 @end table
17058
17059 @anchor{transpose}
17060 @section transpose
17061
17062 Transpose rows with columns in the input video and optionally flip it.
17063
17064 It accepts the following parameters:
17065
17066 @table @option
17067
17068 @item dir
17069 Specify the transposition direction.
17070
17071 Can assume the following values:
17072 @table @samp
17073 @item 0, 4, cclock_flip
17074 Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
17075 @example
17076 L.R     L.l
17077 . . ->  . .
17078 l.r     R.r
17079 @end example
17080
17081 @item 1, 5, clock
17082 Rotate by 90 degrees clockwise, that is:
17083 @example
17084 L.R     l.L
17085 . . ->  . .
17086 l.r     r.R
17087 @end example
17088
17089 @item 2, 6, cclock
17090 Rotate by 90 degrees counterclockwise, that is:
17091 @example
17092 L.R     R.r
17093 . . ->  . .
17094 l.r     L.l
17095 @end example
17096
17097 @item 3, 7, clock_flip
17098 Rotate by 90 degrees clockwise and vertically flip, that is:
17099 @example
17100 L.R     r.R
17101 . . ->  . .
17102 l.r     l.L
17103 @end example
17104 @end table
17105
17106 For values between 4-7, the transposition is only done if the input
17107 video geometry is portrait and not landscape. These values are
17108 deprecated, the @code{passthrough} option should be used instead.
17109
17110 Numerical values are deprecated, and should be dropped in favor of
17111 symbolic constants.
17112
17113 @item passthrough
17114 Do not apply the transposition if the input geometry matches the one
17115 specified by the specified value. It accepts the following values:
17116 @table @samp
17117 @item none
17118 Always apply transposition.
17119 @item portrait
17120 Preserve portrait geometry (when @var{height} >= @var{width}).
17121 @item landscape
17122 Preserve landscape geometry (when @var{width} >= @var{height}).
17123 @end table
17124
17125 Default value is @code{none}.
17126 @end table
17127
17128 For example to rotate by 90 degrees clockwise and preserve portrait
17129 layout:
17130 @example
17131 transpose=dir=1:passthrough=portrait
17132 @end example
17133
17134 The command above can also be specified as:
17135 @example
17136 transpose=1:portrait
17137 @end example
17138
17139 @section transpose_npp
17140
17141 Transpose rows with columns in the input video and optionally flip it.
17142 For more in depth examples see the @ref{transpose} video filter, which shares mostly the same options.
17143
17144 It accepts the following parameters:
17145
17146 @table @option
17147
17148 @item dir
17149 Specify the transposition direction.
17150
17151 Can assume the following values:
17152 @table @samp
17153 @item cclock_flip
17154 Rotate by 90 degrees counterclockwise and vertically flip. (default)
17155
17156 @item clock
17157 Rotate by 90 degrees clockwise.
17158
17159 @item cclock
17160 Rotate by 90 degrees counterclockwise.
17161
17162 @item clock_flip
17163 Rotate by 90 degrees clockwise and vertically flip.
17164 @end table
17165
17166 @item passthrough
17167 Do not apply the transposition if the input geometry matches the one
17168 specified by the specified value. It accepts the following values:
17169 @table @samp
17170 @item none
17171 Always apply transposition. (default)
17172 @item portrait
17173 Preserve portrait geometry (when @var{height} >= @var{width}).
17174 @item landscape
17175 Preserve landscape geometry (when @var{width} >= @var{height}).
17176 @end table
17177
17178 @end table
17179
17180 @section trim
17181 Trim the input so that the output contains one continuous subpart of the input.
17182
17183 It accepts the following parameters:
17184 @table @option
17185 @item start
17186 Specify the time of the start of the kept section, i.e. the frame with the
17187 timestamp @var{start} will be the first frame in the output.
17188
17189 @item end
17190 Specify the time of the first frame that will be dropped, i.e. the frame
17191 immediately preceding the one with the timestamp @var{end} will be the last
17192 frame in the output.
17193
17194 @item start_pts
17195 This is the same as @var{start}, except this option sets the start timestamp
17196 in timebase units instead of seconds.
17197
17198 @item end_pts
17199 This is the same as @var{end}, except this option sets the end timestamp
17200 in timebase units instead of seconds.
17201
17202 @item duration
17203 The maximum duration of the output in seconds.
17204
17205 @item start_frame
17206 The number of the first frame that should be passed to the output.
17207
17208 @item end_frame
17209 The number of the first frame that should be dropped.
17210 @end table
17211
17212 @option{start}, @option{end}, and @option{duration} are expressed as time
17213 duration specifications; see
17214 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
17215 for the accepted syntax.
17216
17217 Note that the first two sets of the start/end options and the @option{duration}
17218 option look at the frame timestamp, while the _frame variants simply count the
17219 frames that pass through the filter. Also note that this filter does not modify
17220 the timestamps. If you wish for the output timestamps to start at zero, insert a
17221 setpts filter after the trim filter.
17222
17223 If multiple start or end options are set, this filter tries to be greedy and
17224 keep all the frames that match at least one of the specified constraints. To keep
17225 only the part that matches all the constraints at once, chain multiple trim
17226 filters.
17227
17228 The defaults are such that all the input is kept. So it is possible to set e.g.
17229 just the end values to keep everything before the specified time.
17230
17231 Examples:
17232 @itemize
17233 @item
17234 Drop everything except the second minute of input:
17235 @example
17236 ffmpeg -i INPUT -vf trim=60:120
17237 @end example
17238
17239 @item
17240 Keep only the first second:
17241 @example
17242 ffmpeg -i INPUT -vf trim=duration=1
17243 @end example
17244
17245 @end itemize
17246
17247 @section unpremultiply
17248 Apply alpha unpremultiply effect to input video stream using first plane
17249 of second stream as alpha.
17250
17251 Both streams must have same dimensions and same pixel format.
17252
17253 The filter accepts the following option:
17254
17255 @table @option
17256 @item planes
17257 Set which planes will be processed, unprocessed planes will be copied.
17258 By default value 0xf, all planes will be processed.
17259
17260 If the format has 1 or 2 components, then luma is bit 0.
17261 If the format has 3 or 4 components:
17262 for RGB formats bit 0 is green, bit 1 is blue and bit 2 is red;
17263 for YUV formats bit 0 is luma, bit 1 is chroma-U and bit 2 is chroma-V.
17264 If present, the alpha channel is always the last bit.
17265
17266 @item inplace
17267 Do not require 2nd input for processing, instead use alpha plane from input stream.
17268 @end table
17269
17270 @anchor{unsharp}
17271 @section unsharp
17272
17273 Sharpen or blur the input video.
17274
17275 It accepts the following parameters:
17276
17277 @table @option
17278 @item luma_msize_x, lx
17279 Set the luma matrix horizontal size. It must be an odd integer between
17280 3 and 23. The default value is 5.
17281
17282 @item luma_msize_y, ly
17283 Set the luma matrix vertical size. It must be an odd integer between 3
17284 and 23. The default value is 5.
17285
17286 @item luma_amount, la
17287 Set the luma effect strength. It must be a floating point number, reasonable
17288 values lay between -1.5 and 1.5.
17289
17290 Negative values will blur the input video, while positive values will
17291 sharpen it, a value of zero will disable the effect.
17292
17293 Default value is 1.0.
17294
17295 @item chroma_msize_x, cx
17296 Set the chroma matrix horizontal size. It must be an odd integer
17297 between 3 and 23. The default value is 5.
17298
17299 @item chroma_msize_y, cy
17300 Set the chroma matrix vertical size. It must be an odd integer
17301 between 3 and 23. The default value is 5.
17302
17303 @item chroma_amount, ca
17304 Set the chroma effect strength. It must be a floating point number, reasonable
17305 values lay between -1.5 and 1.5.
17306
17307 Negative values will blur the input video, while positive values will
17308 sharpen it, a value of zero will disable the effect.
17309
17310 Default value is 0.0.
17311
17312 @end table
17313
17314 All parameters are optional and default to the equivalent of the
17315 string '5:5:1.0:5:5:0.0'.
17316
17317 @subsection Examples
17318
17319 @itemize
17320 @item
17321 Apply strong luma sharpen effect:
17322 @example
17323 unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
17324 @end example
17325
17326 @item
17327 Apply a strong blur of both luma and chroma parameters:
17328 @example
17329 unsharp=7:7:-2:7:7:-2
17330 @end example
17331 @end itemize
17332
17333 @section uspp
17334
17335 Apply ultra slow/simple postprocessing filter that compresses and decompresses
17336 the image at several (or - in the case of @option{quality} level @code{8} - all)
17337 shifts and average the results.
17338
17339 The way this differs from the behavior of spp is that uspp actually encodes &
17340 decodes each case with libavcodec Snow, whereas spp uses a simplified intra only 8x8
17341 DCT similar to MJPEG.
17342
17343 The filter accepts the following options:
17344
17345 @table @option
17346 @item quality
17347 Set quality. This option defines the number of levels for averaging. It accepts
17348 an integer in the range 0-8. If set to @code{0}, the filter will have no
17349 effect. A value of @code{8} means the higher quality. For each increment of
17350 that value the speed drops by a factor of approximately 2.  Default value is
17351 @code{3}.
17352
17353 @item qp
17354 Force a constant quantization parameter. If not set, the filter will use the QP
17355 from the video stream (if available).
17356 @end table
17357
17358 @section vaguedenoiser
17359
17360 Apply a wavelet based denoiser.
17361
17362 It transforms each frame from the video input into the wavelet domain,
17363 using Cohen-Daubechies-Feauveau 9/7. Then it applies some filtering to
17364 the obtained coefficients. It does an inverse wavelet transform after.
17365 Due to wavelet properties, it should give a nice smoothed result, and
17366 reduced noise, without blurring picture features.
17367
17368 This filter accepts the following options:
17369
17370 @table @option
17371 @item threshold
17372 The filtering strength. The higher, the more filtered the video will be.
17373 Hard thresholding can use a higher threshold than soft thresholding
17374 before the video looks overfiltered. Default value is 2.
17375
17376 @item method
17377 The filtering method the filter will use.
17378
17379 It accepts the following values:
17380 @table @samp
17381 @item hard
17382 All values under the threshold will be zeroed.
17383
17384 @item soft
17385 All values under the threshold will be zeroed. All values above will be
17386 reduced by the threshold.
17387
17388 @item garrote
17389 Scales or nullifies coefficients - intermediary between (more) soft and
17390 (less) hard thresholding.
17391 @end table
17392
17393 Default is garrote.
17394
17395 @item nsteps
17396 Number of times, the wavelet will decompose the picture. Picture can't
17397 be decomposed beyond a particular point (typically, 8 for a 640x480
17398 frame - as 2^9 = 512 > 480). Valid values are integers between 1 and 32. Default value is 6.
17399
17400 @item percent
17401 Partial of full denoising (limited coefficients shrinking), from 0 to 100. Default value is 85.
17402
17403 @item planes
17404 A list of the planes to process. By default all planes are processed.
17405 @end table
17406
17407 @section vectorscope
17408
17409 Display 2 color component values in the two dimensional graph (which is called
17410 a vectorscope).
17411
17412 This filter accepts the following options:
17413
17414 @table @option
17415 @item mode, m
17416 Set vectorscope mode.
17417
17418 It accepts the following values:
17419 @table @samp
17420 @item gray
17421 Gray values are displayed on graph, higher brightness means more pixels have
17422 same component color value on location in graph. This is the default mode.
17423
17424 @item color
17425 Gray values are displayed on graph. Surrounding pixels values which are not
17426 present in video frame are drawn in gradient of 2 color components which are
17427 set by option @code{x} and @code{y}. The 3rd color component is static.
17428
17429 @item color2
17430 Actual color components values present in video frame are displayed on graph.
17431
17432 @item color3
17433 Similar as color2 but higher frequency of same values @code{x} and @code{y}
17434 on graph increases value of another color component, which is luminance by
17435 default values of @code{x} and @code{y}.
17436
17437 @item color4
17438 Actual colors present in video frame are displayed on graph. If two different
17439 colors map to same position on graph then color with higher value of component
17440 not present in graph is picked.
17441
17442 @item color5
17443 Gray values are displayed on graph. Similar to @code{color} but with 3rd color
17444 component picked from radial gradient.
17445 @end table
17446
17447 @item x
17448 Set which color component will be represented on X-axis. Default is @code{1}.
17449
17450 @item y
17451 Set which color component will be represented on Y-axis. Default is @code{2}.
17452
17453 @item intensity, i
17454 Set intensity, used by modes: gray, color, color3 and color5 for increasing brightness
17455 of color component which represents frequency of (X, Y) location in graph.
17456
17457 @item envelope, e
17458 @table @samp
17459 @item none
17460 No envelope, this is default.
17461
17462 @item instant
17463 Instant envelope, even darkest single pixel will be clearly highlighted.
17464
17465 @item peak
17466 Hold maximum and minimum values presented in graph over time. This way you
17467 can still spot out of range values without constantly looking at vectorscope.
17468
17469 @item peak+instant
17470 Peak and instant envelope combined together.
17471 @end table
17472
17473 @item graticule, g
17474 Set what kind of graticule to draw.
17475 @table @samp
17476 @item none
17477 @item green
17478 @item color
17479 @end table
17480
17481 @item opacity, o
17482 Set graticule opacity.
17483
17484 @item flags, f
17485 Set graticule flags.
17486
17487 @table @samp
17488 @item white
17489 Draw graticule for white point.
17490
17491 @item black
17492 Draw graticule for black point.
17493
17494 @item name
17495 Draw color points short names.
17496 @end table
17497
17498 @item bgopacity, b
17499 Set background opacity.
17500
17501 @item lthreshold, l
17502 Set low threshold for color component not represented on X or Y axis.
17503 Values lower than this value will be ignored. Default is 0.
17504 Note this value is multiplied with actual max possible value one pixel component
17505 can have. So for 8-bit input and low threshold value of 0.1 actual threshold
17506 is 0.1 * 255 = 25.
17507
17508 @item hthreshold, h
17509 Set high threshold for color component not represented on X or Y axis.
17510 Values higher than this value will be ignored. Default is 1.
17511 Note this value is multiplied with actual max possible value one pixel component
17512 can have. So for 8-bit input and high threshold value of 0.9 actual threshold
17513 is 0.9 * 255 = 230.
17514
17515 @item colorspace, c
17516 Set what kind of colorspace to use when drawing graticule.
17517 @table @samp
17518 @item auto
17519 @item 601
17520 @item 709
17521 @end table
17522 Default is auto.
17523 @end table
17524
17525 @anchor{vidstabdetect}
17526 @section vidstabdetect
17527
17528 Analyze video stabilization/deshaking. Perform pass 1 of 2, see
17529 @ref{vidstabtransform} for pass 2.
17530
17531 This filter generates a file with relative translation and rotation
17532 transform information about subsequent frames, which is then used by
17533 the @ref{vidstabtransform} filter.
17534
17535 To enable compilation of this filter you need to configure FFmpeg with
17536 @code{--enable-libvidstab}.
17537
17538 This filter accepts the following options:
17539
17540 @table @option
17541 @item result
17542 Set the path to the file used to write the transforms information.
17543 Default value is @file{transforms.trf}.
17544
17545 @item shakiness
17546 Set how shaky the video is and how quick the camera is. It accepts an
17547 integer in the range 1-10, a value of 1 means little shakiness, a
17548 value of 10 means strong shakiness. Default value is 5.
17549
17550 @item accuracy
17551 Set the accuracy of the detection process. It must be a value in the
17552 range 1-15. A value of 1 means low accuracy, a value of 15 means high
17553 accuracy. Default value is 15.
17554
17555 @item stepsize
17556 Set stepsize of the search process. The region around minimum is
17557 scanned with 1 pixel resolution. Default value is 6.
17558
17559 @item mincontrast
17560 Set minimum contrast. Below this value a local measurement field is
17561 discarded. Must be a floating point value in the range 0-1. Default
17562 value is 0.3.
17563
17564 @item tripod
17565 Set reference frame number for tripod mode.
17566
17567 If enabled, the motion of the frames is compared to a reference frame
17568 in the filtered stream, identified by the specified number. The idea
17569 is to compensate all movements in a more-or-less static scene and keep
17570 the camera view absolutely still.
17571
17572 If set to 0, it is disabled. The frames are counted starting from 1.
17573
17574 @item show
17575 Show fields and transforms in the resulting frames. It accepts an
17576 integer in the range 0-2. Default value is 0, which disables any
17577 visualization.
17578 @end table
17579
17580 @subsection Examples
17581
17582 @itemize
17583 @item
17584 Use default values:
17585 @example
17586 vidstabdetect
17587 @end example
17588
17589 @item
17590 Analyze strongly shaky movie and put the results in file
17591 @file{mytransforms.trf}:
17592 @example
17593 vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
17594 @end example
17595
17596 @item
17597 Visualize the result of internal transformations in the resulting
17598 video:
17599 @example
17600 vidstabdetect=show=1
17601 @end example
17602
17603 @item
17604 Analyze a video with medium shakiness using @command{ffmpeg}:
17605 @example
17606 ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
17607 @end example
17608 @end itemize
17609
17610 @anchor{vidstabtransform}
17611 @section vidstabtransform
17612
17613 Video stabilization/deshaking: pass 2 of 2,
17614 see @ref{vidstabdetect} for pass 1.
17615
17616 Read a file with transform information for each frame and
17617 apply/compensate them. Together with the @ref{vidstabdetect}
17618 filter this can be used to deshake videos. See also
17619 @url{http://public.hronopik.de/vid.stab}. It is important to also use
17620 the @ref{unsharp} filter, see below.
17621
17622 To enable compilation of this filter you need to configure FFmpeg with
17623 @code{--enable-libvidstab}.
17624
17625 @subsection Options
17626
17627 @table @option
17628 @item input
17629 Set path to the file used to read the transforms. Default value is
17630 @file{transforms.trf}.
17631
17632 @item smoothing
17633 Set the number of frames (value*2 + 1) used for lowpass filtering the
17634 camera movements. Default value is 10.
17635
17636 For example a number of 10 means that 21 frames are used (10 in the
17637 past and 10 in the future) to smoothen the motion in the video. A
17638 larger value leads to a smoother video, but limits the acceleration of
17639 the camera (pan/tilt movements). 0 is a special case where a static
17640 camera is simulated.
17641
17642 @item optalgo
17643 Set the camera path optimization algorithm.
17644
17645 Accepted values are:
17646 @table @samp
17647 @item gauss
17648 gaussian kernel low-pass filter on camera motion (default)
17649 @item avg
17650 averaging on transformations
17651 @end table
17652
17653 @item maxshift
17654 Set maximal number of pixels to translate frames. Default value is -1,
17655 meaning no limit.
17656
17657 @item maxangle
17658 Set maximal angle in radians (degree*PI/180) to rotate frames. Default
17659 value is -1, meaning no limit.
17660
17661 @item crop
17662 Specify how to deal with borders that may be visible due to movement
17663 compensation.
17664
17665 Available values are:
17666 @table @samp
17667 @item keep
17668 keep image information from previous frame (default)
17669 @item black
17670 fill the border black
17671 @end table
17672
17673 @item invert
17674 Invert transforms if set to 1. Default value is 0.
17675
17676 @item relative
17677 Consider transforms as relative to previous frame if set to 1,
17678 absolute if set to 0. Default value is 0.
17679
17680 @item zoom
17681 Set percentage to zoom. A positive value will result in a zoom-in
17682 effect, a negative value in a zoom-out effect. Default value is 0 (no
17683 zoom).
17684
17685 @item optzoom
17686 Set optimal zooming to avoid borders.
17687
17688 Accepted values are:
17689 @table @samp
17690 @item 0
17691 disabled
17692 @item 1
17693 optimal static zoom value is determined (only very strong movements
17694 will lead to visible borders) (default)
17695 @item 2
17696 optimal adaptive zoom value is determined (no borders will be
17697 visible), see @option{zoomspeed}
17698 @end table
17699
17700 Note that the value given at zoom is added to the one calculated here.
17701
17702 @item zoomspeed
17703 Set percent to zoom maximally each frame (enabled when
17704 @option{optzoom} is set to 2). Range is from 0 to 5, default value is
17705 0.25.
17706
17707 @item interpol
17708 Specify type of interpolation.
17709
17710 Available values are:
17711 @table @samp
17712 @item no
17713 no interpolation
17714 @item linear
17715 linear only horizontal
17716 @item bilinear
17717 linear in both directions (default)
17718 @item bicubic
17719 cubic in both directions (slow)
17720 @end table
17721
17722 @item tripod
17723 Enable virtual tripod mode if set to 1, which is equivalent to
17724 @code{relative=0:smoothing=0}. Default value is 0.
17725
17726 Use also @code{tripod} option of @ref{vidstabdetect}.
17727
17728 @item debug
17729 Increase log verbosity if set to 1. Also the detected global motions
17730 are written to the temporary file @file{global_motions.trf}. Default
17731 value is 0.
17732 @end table
17733
17734 @subsection Examples
17735
17736 @itemize
17737 @item
17738 Use @command{ffmpeg} for a typical stabilization with default values:
17739 @example
17740 ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
17741 @end example
17742
17743 Note the use of the @ref{unsharp} filter which is always recommended.
17744
17745 @item
17746 Zoom in a bit more and load transform data from a given file:
17747 @example
17748 vidstabtransform=zoom=5:input="mytransforms.trf"
17749 @end example
17750
17751 @item
17752 Smoothen the video even more:
17753 @example
17754 vidstabtransform=smoothing=30
17755 @end example
17756 @end itemize
17757
17758 @section vflip
17759
17760 Flip the input video vertically.
17761
17762 For example, to vertically flip a video with @command{ffmpeg}:
17763 @example
17764 ffmpeg -i in.avi -vf "vflip" out.avi
17765 @end example
17766
17767 @section vfrdet
17768
17769 Detect variable frame rate video.
17770
17771 This filter tries to detect if the input is variable or constant frame rate.
17772
17773 At end it will output number of frames detected as having variable delta pts,
17774 and ones with constant delta pts.
17775 If there was frames with variable delta, than it will also show min and max delta
17776 encountered.
17777
17778 @section vibrance
17779
17780 Boost or alter saturation.
17781
17782 The filter accepts the following options:
17783 @table @option
17784 @item intensity
17785 Set strength of boost if positive value or strength of alter if negative value.
17786 Default is 0. Allowed range is from -2 to 2.
17787
17788 @item rbal
17789 Set the red balance. Default is 1. Allowed range is from -10 to 10.
17790
17791 @item gbal
17792 Set the green balance. Default is 1. Allowed range is from -10 to 10.
17793
17794 @item bbal
17795 Set the blue balance. Default is 1. Allowed range is from -10 to 10.
17796
17797 @item rlum
17798 Set the red luma coefficient.
17799
17800 @item glum
17801 Set the green luma coefficient.
17802
17803 @item blum
17804 Set the blue luma coefficient.
17805 @end table
17806
17807 @anchor{vignette}
17808 @section vignette
17809
17810 Make or reverse a natural vignetting effect.
17811
17812 The filter accepts the following options:
17813
17814 @table @option
17815 @item angle, a
17816 Set lens angle expression as a number of radians.
17817
17818 The value is clipped in the @code{[0,PI/2]} range.
17819
17820 Default value: @code{"PI/5"}
17821
17822 @item x0
17823 @item y0
17824 Set center coordinates expressions. Respectively @code{"w/2"} and @code{"h/2"}
17825 by default.
17826
17827 @item mode
17828 Set forward/backward mode.
17829
17830 Available modes are:
17831 @table @samp
17832 @item forward
17833 The larger the distance from the central point, the darker the image becomes.
17834
17835 @item backward
17836 The larger the distance from the central point, the brighter the image becomes.
17837 This can be used to reverse a vignette effect, though there is no automatic
17838 detection to extract the lens @option{angle} and other settings (yet). It can
17839 also be used to create a burning effect.
17840 @end table
17841
17842 Default value is @samp{forward}.
17843
17844 @item eval
17845 Set evaluation mode for the expressions (@option{angle}, @option{x0}, @option{y0}).
17846
17847 It accepts the following values:
17848 @table @samp
17849 @item init
17850 Evaluate expressions only once during the filter initialization.
17851
17852 @item frame
17853 Evaluate expressions for each incoming frame. This is way slower than the
17854 @samp{init} mode since it requires all the scalers to be re-computed, but it
17855 allows advanced dynamic expressions.
17856 @end table
17857
17858 Default value is @samp{init}.
17859
17860 @item dither
17861 Set dithering to reduce the circular banding effects. Default is @code{1}
17862 (enabled).
17863
17864 @item aspect
17865 Set vignette aspect. This setting allows one to adjust the shape of the vignette.
17866 Setting this value to the SAR of the input will make a rectangular vignetting
17867 following the dimensions of the video.
17868
17869 Default is @code{1/1}.
17870 @end table
17871
17872 @subsection Expressions
17873
17874 The @option{alpha}, @option{x0} and @option{y0} expressions can contain the
17875 following parameters.
17876
17877 @table @option
17878 @item w
17879 @item h
17880 input width and height
17881
17882 @item n
17883 the number of input frame, starting from 0
17884
17885 @item pts
17886 the PTS (Presentation TimeStamp) time of the filtered video frame, expressed in
17887 @var{TB} units, NAN if undefined
17888
17889 @item r
17890 frame rate of the input video, NAN if the input frame rate is unknown
17891
17892 @item t
17893 the PTS (Presentation TimeStamp) of the filtered video frame,
17894 expressed in seconds, NAN if undefined
17895
17896 @item tb
17897 time base of the input video
17898 @end table
17899
17900
17901 @subsection Examples
17902
17903 @itemize
17904 @item
17905 Apply simple strong vignetting effect:
17906 @example
17907 vignette=PI/4
17908 @end example
17909
17910 @item
17911 Make a flickering vignetting:
17912 @example
17913 vignette='PI/4+random(1)*PI/50':eval=frame
17914 @end example
17915
17916 @end itemize
17917
17918 @section vmafmotion
17919
17920 Obtain the average vmaf motion score of a video.
17921 It is one of the component filters of VMAF.
17922
17923 The obtained average motion score is printed through the logging system.
17924
17925 In the below example the input file @file{ref.mpg} is being processed and score
17926 is computed.
17927
17928 @example
17929 ffmpeg -i ref.mpg -lavfi vmafmotion -f null -
17930 @end example
17931
17932 @section vstack
17933 Stack input videos vertically.
17934
17935 All streams must be of same pixel format and of same width.
17936
17937 Note that this filter is faster than using @ref{overlay} and @ref{pad} filter
17938 to create same output.
17939
17940 The filter accept the following option:
17941
17942 @table @option
17943 @item inputs
17944 Set number of input streams. Default is 2.
17945
17946 @item shortest
17947 If set to 1, force the output to terminate when the shortest input
17948 terminates. Default value is 0.
17949 @end table
17950
17951 @section w3fdif
17952
17953 Deinterlace the input video ("w3fdif" stands for "Weston 3 Field
17954 Deinterlacing Filter").
17955
17956 Based on the process described by Martin Weston for BBC R&D, and
17957 implemented based on the de-interlace algorithm written by Jim
17958 Easterbrook for BBC R&D, the Weston 3 field deinterlacing filter
17959 uses filter coefficients calculated by BBC R&D.
17960
17961 There are two sets of filter coefficients, so called "simple":
17962 and "complex". Which set of filter coefficients is used can
17963 be set by passing an optional parameter:
17964
17965 @table @option
17966 @item filter
17967 Set the interlacing filter coefficients. Accepts one of the following values:
17968
17969 @table @samp
17970 @item simple
17971 Simple filter coefficient set.
17972 @item complex
17973 More-complex filter coefficient set.
17974 @end table
17975 Default value is @samp{complex}.
17976
17977 @item deint
17978 Specify which frames to deinterlace. Accept one of the following values:
17979
17980 @table @samp
17981 @item all
17982 Deinterlace all frames,
17983 @item interlaced
17984 Only deinterlace frames marked as interlaced.
17985 @end table
17986
17987 Default value is @samp{all}.
17988 @end table
17989
17990 @section waveform
17991 Video waveform monitor.
17992
17993 The waveform monitor plots color component intensity. By default luminance
17994 only. Each column of the waveform corresponds to a column of pixels in the
17995 source video.
17996
17997 It accepts the following options:
17998
17999 @table @option
18000 @item mode, m
18001 Can be either @code{row}, or @code{column}. Default is @code{column}.
18002 In row mode, the graph on the left side represents color component value 0 and
18003 the right side represents value = 255. In column mode, the top side represents
18004 color component value = 0 and bottom side represents value = 255.
18005
18006 @item intensity, i
18007 Set intensity. Smaller values are useful to find out how many values of the same
18008 luminance are distributed across input rows/columns.
18009 Default value is @code{0.04}. Allowed range is [0, 1].
18010
18011 @item mirror, r
18012 Set mirroring mode. @code{0} means unmirrored, @code{1} means mirrored.
18013 In mirrored mode, higher values will be represented on the left
18014 side for @code{row} mode and at the top for @code{column} mode. Default is
18015 @code{1} (mirrored).
18016
18017 @item display, d
18018 Set display mode.
18019 It accepts the following values:
18020 @table @samp
18021 @item overlay
18022 Presents information identical to that in the @code{parade}, except
18023 that the graphs representing color components are superimposed directly
18024 over one another.
18025
18026 This display mode makes it easier to spot relative differences or similarities
18027 in overlapping areas of the color components that are supposed to be identical,
18028 such as neutral whites, grays, or blacks.
18029
18030 @item stack
18031 Display separate graph for the color components side by side in
18032 @code{row} mode or one below the other in @code{column} mode.
18033
18034 @item parade
18035 Display separate graph for the color components side by side in
18036 @code{column} mode or one below the other in @code{row} mode.
18037
18038 Using this display mode makes it easy to spot color casts in the highlights
18039 and shadows of an image, by comparing the contours of the top and the bottom
18040 graphs of each waveform. Since whites, grays, and blacks are characterized
18041 by exactly equal amounts of red, green, and blue, neutral areas of the picture
18042 should display three waveforms of roughly equal width/height. If not, the
18043 correction is easy to perform by making level adjustments the three waveforms.
18044 @end table
18045 Default is @code{stack}.
18046
18047 @item components, c
18048 Set which color components to display. Default is 1, which means only luminance
18049 or red color component if input is in RGB colorspace. If is set for example to
18050 7 it will display all 3 (if) available color components.
18051
18052 @item envelope, e
18053 @table @samp
18054 @item none
18055 No envelope, this is default.
18056
18057 @item instant
18058 Instant envelope, minimum and maximum values presented in graph will be easily
18059 visible even with small @code{step} value.
18060
18061 @item peak
18062 Hold minimum and maximum values presented in graph across time. This way you
18063 can still spot out of range values without constantly looking at waveforms.
18064
18065 @item peak+instant
18066 Peak and instant envelope combined together.
18067 @end table
18068
18069 @item filter, f
18070 @table @samp
18071 @item lowpass
18072 No filtering, this is default.
18073
18074 @item flat
18075 Luma and chroma combined together.
18076
18077 @item aflat
18078 Similar as above, but shows difference between blue and red chroma.
18079
18080 @item xflat
18081 Similar as above, but use different colors.
18082
18083 @item chroma
18084 Displays only chroma.
18085
18086 @item color
18087 Displays actual color value on waveform.
18088
18089 @item acolor
18090 Similar as above, but with luma showing frequency of chroma values.
18091 @end table
18092
18093 @item graticule, g
18094 Set which graticule to display.
18095
18096 @table @samp
18097 @item none
18098 Do not display graticule.
18099
18100 @item green
18101 Display green graticule showing legal broadcast ranges.
18102
18103 @item orange
18104 Display orange graticule showing legal broadcast ranges.
18105 @end table
18106
18107 @item opacity, o
18108 Set graticule opacity.
18109
18110 @item flags, fl
18111 Set graticule flags.
18112
18113 @table @samp
18114 @item numbers
18115 Draw numbers above lines. By default enabled.
18116
18117 @item dots
18118 Draw dots instead of lines.
18119 @end table
18120
18121 @item scale, s
18122 Set scale used for displaying graticule.
18123
18124 @table @samp
18125 @item digital
18126 @item millivolts
18127 @item ire
18128 @end table
18129 Default is digital.
18130
18131 @item bgopacity, b
18132 Set background opacity.
18133 @end table
18134
18135 @section weave, doubleweave
18136
18137 The @code{weave} takes a field-based video input and join
18138 each two sequential fields into single frame, producing a new double
18139 height clip with half the frame rate and half the frame count.
18140
18141 The @code{doubleweave} works same as @code{weave} but without
18142 halving frame rate and frame count.
18143
18144 It accepts the following option:
18145
18146 @table @option
18147 @item first_field
18148 Set first field. Available values are:
18149
18150 @table @samp
18151 @item top, t
18152 Set the frame as top-field-first.
18153
18154 @item bottom, b
18155 Set the frame as bottom-field-first.
18156 @end table
18157 @end table
18158
18159 @subsection Examples
18160
18161 @itemize
18162 @item
18163 Interlace video using @ref{select} and @ref{separatefields} filter:
18164 @example
18165 separatefields,select=eq(mod(n,4),0)+eq(mod(n,4),3),weave
18166 @end example
18167 @end itemize
18168
18169 @section xbr
18170 Apply the xBR high-quality magnification filter which is designed for pixel
18171 art. It follows a set of edge-detection rules, see
18172 @url{https://forums.libretro.com/t/xbr-algorithm-tutorial/123}.
18173
18174 It accepts the following option:
18175
18176 @table @option
18177 @item n
18178 Set the scaling dimension: @code{2} for @code{2xBR}, @code{3} for
18179 @code{3xBR} and @code{4} for @code{4xBR}.
18180 Default is @code{3}.
18181 @end table
18182
18183 @section xstack
18184 Stack video inputs into custom layout.
18185
18186 All streams must be of same pixel format.
18187
18188 The filter accept the following option:
18189
18190 @table @option
18191 @item inputs
18192 Set number of input streams. Default is 2.
18193
18194 @item layout
18195 Specify layout of inputs.
18196 This option requires the desired layout configuration to be explicitly set by the user.
18197 This sets position of each video input in output. Each input
18198 is separated by '|'.
18199 The first number represents the column, and the second number represents the row.
18200 Numbers start at 0 and are separated by '_'. Optionally one can use wX and hX,
18201 where X is video input from which to take width or height.
18202 Multiple values can be used when separated by '+'. In such
18203 case values are summed together.
18204
18205 @item shortest
18206 If set to 1, force the output to terminate when the shortest input
18207 terminates. Default value is 0.
18208 @end table
18209
18210 @subsection Examples
18211
18212 @itemize
18213 @item
18214 Display 4 inputs into 2x2 grid,
18215 note that if inputs are of different sizes unused gaps might appear,
18216 as not all of output video is used.
18217 @example
18218 xstack=inputs=4:layout=0_0|0_h0|w0_0|w0_h0
18219 @end example
18220
18221 @item
18222 Display 4 inputs into 1x4 grid,
18223 note that if inputs are of different sizes unused gaps might appear,
18224 as not all of output video is used.
18225 @example
18226 xstack=inputs=4:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2
18227 @end example
18228
18229 @item
18230 Display 9 inputs into 3x3 grid,
18231 note that if inputs are of different sizes unused gaps might appear,
18232 as not all of output video is used.
18233 @example
18234 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
18235 @end example
18236 @end itemize
18237
18238 @anchor{yadif}
18239 @section yadif
18240
18241 Deinterlace the input video ("yadif" means "yet another deinterlacing
18242 filter").
18243
18244 It accepts the following parameters:
18245
18246
18247 @table @option
18248
18249 @item mode
18250 The interlacing mode to adopt. It accepts one of the following values:
18251
18252 @table @option
18253 @item 0, send_frame
18254 Output one frame for each frame.
18255 @item 1, send_field
18256 Output one frame for each field.
18257 @item 2, send_frame_nospatial
18258 Like @code{send_frame}, but it skips the spatial interlacing check.
18259 @item 3, send_field_nospatial
18260 Like @code{send_field}, but it skips the spatial interlacing check.
18261 @end table
18262
18263 The default value is @code{send_frame}.
18264
18265 @item parity
18266 The picture field parity assumed for the input interlaced video. It accepts one
18267 of the following values:
18268
18269 @table @option
18270 @item 0, tff
18271 Assume the top field is first.
18272 @item 1, bff
18273 Assume the bottom field is first.
18274 @item -1, auto
18275 Enable automatic detection of field parity.
18276 @end table
18277
18278 The default value is @code{auto}.
18279 If the interlacing is unknown or the decoder does not export this information,
18280 top field first will be assumed.
18281
18282 @item deint
18283 Specify which frames to deinterlace. Accept one of the following
18284 values:
18285
18286 @table @option
18287 @item 0, all
18288 Deinterlace all frames.
18289 @item 1, interlaced
18290 Only deinterlace frames marked as interlaced.
18291 @end table
18292
18293 The default value is @code{all}.
18294 @end table
18295
18296 @section yadif_cuda
18297
18298 Deinterlace the input video using the @ref{yadif} algorithm, but implemented
18299 in CUDA so that it can work as part of a GPU accelerated pipeline with nvdec
18300 and/or nvenc.
18301
18302 It accepts the following parameters:
18303
18304
18305 @table @option
18306
18307 @item mode
18308 The interlacing mode to adopt. It accepts one of the following values:
18309
18310 @table @option
18311 @item 0, send_frame
18312 Output one frame for each frame.
18313 @item 1, send_field
18314 Output one frame for each field.
18315 @item 2, send_frame_nospatial
18316 Like @code{send_frame}, but it skips the spatial interlacing check.
18317 @item 3, send_field_nospatial
18318 Like @code{send_field}, but it skips the spatial interlacing check.
18319 @end table
18320
18321 The default value is @code{send_frame}.
18322
18323 @item parity
18324 The picture field parity assumed for the input interlaced video. It accepts one
18325 of the following values:
18326
18327 @table @option
18328 @item 0, tff
18329 Assume the top field is first.
18330 @item 1, bff
18331 Assume the bottom field is first.
18332 @item -1, auto
18333 Enable automatic detection of field parity.
18334 @end table
18335
18336 The default value is @code{auto}.
18337 If the interlacing is unknown or the decoder does not export this information,
18338 top field first will be assumed.
18339
18340 @item deint
18341 Specify which frames to deinterlace. Accept one of the following
18342 values:
18343
18344 @table @option
18345 @item 0, all
18346 Deinterlace all frames.
18347 @item 1, interlaced
18348 Only deinterlace frames marked as interlaced.
18349 @end table
18350
18351 The default value is @code{all}.
18352 @end table
18353
18354 @section zoompan
18355
18356 Apply Zoom & Pan effect.
18357
18358 This filter accepts the following options:
18359
18360 @table @option
18361 @item zoom, z
18362 Set the zoom expression. Default is 1.
18363
18364 @item x
18365 @item y
18366 Set the x and y expression. Default is 0.
18367
18368 @item d
18369 Set the duration expression in number of frames.
18370 This sets for how many number of frames effect will last for
18371 single input image.
18372
18373 @item s
18374 Set the output image size, default is 'hd720'.
18375
18376 @item fps
18377 Set the output frame rate, default is '25'.
18378 @end table
18379
18380 Each expression can contain the following constants:
18381
18382 @table @option
18383 @item in_w, iw
18384 Input width.
18385
18386 @item in_h, ih
18387 Input height.
18388
18389 @item out_w, ow
18390 Output width.
18391
18392 @item out_h, oh
18393 Output height.
18394
18395 @item in
18396 Input frame count.
18397
18398 @item on
18399 Output frame count.
18400
18401 @item x
18402 @item y
18403 Last calculated 'x' and 'y' position from 'x' and 'y' expression
18404 for current input frame.
18405
18406 @item px
18407 @item py
18408 'x' and 'y' of last output frame of previous input frame or 0 when there was
18409 not yet such frame (first input frame).
18410
18411 @item zoom
18412 Last calculated zoom from 'z' expression for current input frame.
18413
18414 @item pzoom
18415 Last calculated zoom of last output frame of previous input frame.
18416
18417 @item duration
18418 Number of output frames for current input frame. Calculated from 'd' expression
18419 for each input frame.
18420
18421 @item pduration
18422 number of output frames created for previous input frame
18423
18424 @item a
18425 Rational number: input width / input height
18426
18427 @item sar
18428 sample aspect ratio
18429
18430 @item dar
18431 display aspect ratio
18432
18433 @end table
18434
18435 @subsection Examples
18436
18437 @itemize
18438 @item
18439 Zoom-in up to 1.5 and pan at same time to some spot near center of picture:
18440 @example
18441 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
18442 @end example
18443
18444 @item
18445 Zoom-in up to 1.5 and pan always at center of picture:
18446 @example
18447 zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
18448 @end example
18449
18450 @item
18451 Same as above but without pausing:
18452 @example
18453 zoompan=z='min(max(zoom,pzoom)+0.0015,1.5)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
18454 @end example
18455 @end itemize
18456
18457 @anchor{zscale}
18458 @section zscale
18459 Scale (resize) the input video, using the z.lib library:
18460 @url{https://github.com/sekrit-twc/zimg}. To enable compilation of this
18461 filter, you need to configure FFmpeg with @code{--enable-libzimg}.
18462
18463 The zscale filter forces the output display aspect ratio to be the same
18464 as the input, by changing the output sample aspect ratio.
18465
18466 If the input image format is different from the format requested by
18467 the next filter, the zscale filter will convert the input to the
18468 requested format.
18469
18470 @subsection Options
18471 The filter accepts the following options.
18472
18473 @table @option
18474 @item width, w
18475 @item height, h
18476 Set the output video dimension expression. Default value is the input
18477 dimension.
18478
18479 If the @var{width} or @var{w} value is 0, the input width is used for
18480 the output. If the @var{height} or @var{h} value is 0, the input height
18481 is used for the output.
18482
18483 If one and only one of the values is -n with n >= 1, the zscale filter
18484 will use a value that maintains the aspect ratio of the input image,
18485 calculated from the other specified dimension. After that it will,
18486 however, make sure that the calculated dimension is divisible by n and
18487 adjust the value if necessary.
18488
18489 If both values are -n with n >= 1, the behavior will be identical to
18490 both values being set to 0 as previously detailed.
18491
18492 See below for the list of accepted constants for use in the dimension
18493 expression.
18494
18495 @item size, s
18496 Set the video size. For the syntax of this option, check the
18497 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
18498
18499 @item dither, d
18500 Set the dither type.
18501
18502 Possible values are:
18503 @table @var
18504 @item none
18505 @item ordered
18506 @item random
18507 @item error_diffusion
18508 @end table
18509
18510 Default is none.
18511
18512 @item filter, f
18513 Set the resize filter type.
18514
18515 Possible values are:
18516 @table @var
18517 @item point
18518 @item bilinear
18519 @item bicubic
18520 @item spline16
18521 @item spline36
18522 @item lanczos
18523 @end table
18524
18525 Default is bilinear.
18526
18527 @item range, r
18528 Set the color range.
18529
18530 Possible values are:
18531 @table @var
18532 @item input
18533 @item limited
18534 @item full
18535 @end table
18536
18537 Default is same as input.
18538
18539 @item primaries, p
18540 Set the color primaries.
18541
18542 Possible values are:
18543 @table @var
18544 @item input
18545 @item 709
18546 @item unspecified
18547 @item 170m
18548 @item 240m
18549 @item 2020
18550 @end table
18551
18552 Default is same as input.
18553
18554 @item transfer, t
18555 Set the transfer characteristics.
18556
18557 Possible values are:
18558 @table @var
18559 @item input
18560 @item 709
18561 @item unspecified
18562 @item 601
18563 @item linear
18564 @item 2020_10
18565 @item 2020_12
18566 @item smpte2084
18567 @item iec61966-2-1
18568 @item arib-std-b67
18569 @end table
18570
18571 Default is same as input.
18572
18573 @item matrix, m
18574 Set the colorspace matrix.
18575
18576 Possible value are:
18577 @table @var
18578 @item input
18579 @item 709
18580 @item unspecified
18581 @item 470bg
18582 @item 170m
18583 @item 2020_ncl
18584 @item 2020_cl
18585 @end table
18586
18587 Default is same as input.
18588
18589 @item rangein, rin
18590 Set the input color range.
18591
18592 Possible values are:
18593 @table @var
18594 @item input
18595 @item limited
18596 @item full
18597 @end table
18598
18599 Default is same as input.
18600
18601 @item primariesin, pin
18602 Set the input color primaries.
18603
18604 Possible values are:
18605 @table @var
18606 @item input
18607 @item 709
18608 @item unspecified
18609 @item 170m
18610 @item 240m
18611 @item 2020
18612 @end table
18613
18614 Default is same as input.
18615
18616 @item transferin, tin
18617 Set the input transfer characteristics.
18618
18619 Possible values are:
18620 @table @var
18621 @item input
18622 @item 709
18623 @item unspecified
18624 @item 601
18625 @item linear
18626 @item 2020_10
18627 @item 2020_12
18628 @end table
18629
18630 Default is same as input.
18631
18632 @item matrixin, min
18633 Set the input colorspace matrix.
18634
18635 Possible value are:
18636 @table @var
18637 @item input
18638 @item 709
18639 @item unspecified
18640 @item 470bg
18641 @item 170m
18642 @item 2020_ncl
18643 @item 2020_cl
18644 @end table
18645
18646 @item chromal, c
18647 Set the output chroma location.
18648
18649 Possible values are:
18650 @table @var
18651 @item input
18652 @item left
18653 @item center
18654 @item topleft
18655 @item top
18656 @item bottomleft
18657 @item bottom
18658 @end table
18659
18660 @item chromalin, cin
18661 Set the input chroma location.
18662
18663 Possible values are:
18664 @table @var
18665 @item input
18666 @item left
18667 @item center
18668 @item topleft
18669 @item top
18670 @item bottomleft
18671 @item bottom
18672 @end table
18673
18674 @item npl
18675 Set the nominal peak luminance.
18676 @end table
18677
18678 The values of the @option{w} and @option{h} options are expressions
18679 containing the following constants:
18680
18681 @table @var
18682 @item in_w
18683 @item in_h
18684 The input width and height
18685
18686 @item iw
18687 @item ih
18688 These are the same as @var{in_w} and @var{in_h}.
18689
18690 @item out_w
18691 @item out_h
18692 The output (scaled) width and height
18693
18694 @item ow
18695 @item oh
18696 These are the same as @var{out_w} and @var{out_h}
18697
18698 @item a
18699 The same as @var{iw} / @var{ih}
18700
18701 @item sar
18702 input sample aspect ratio
18703
18704 @item dar
18705 The input display aspect ratio. Calculated from @code{(iw / ih) * sar}.
18706
18707 @item hsub
18708 @item vsub
18709 horizontal and vertical input chroma subsample values. For example for the
18710 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
18711
18712 @item ohsub
18713 @item ovsub
18714 horizontal and vertical output chroma subsample values. For example for the
18715 pixel format "yuv422p" @var{hsub} is 2 and @var{vsub} is 1.
18716 @end table
18717
18718 @table @option
18719 @end table
18720
18721 @c man end VIDEO FILTERS
18722
18723 @chapter OpenCL Video Filters
18724 @c man begin OPENCL VIDEO FILTERS
18725
18726 Below is a description of the currently available OpenCL video filters.
18727
18728 To enable compilation of these filters you need to configure FFmpeg with
18729 @code{--enable-opencl}.
18730
18731 Running OpenCL filters requires you to initialize a hardware device and to pass that device to all filters in any filter graph.
18732 @table @option
18733
18734 @item -init_hw_device opencl[=@var{name}][:@var{device}[,@var{key=value}...]]
18735 Initialise a new hardware device of type @var{opencl} called @var{name}, using the
18736 given device parameters.
18737
18738 @item -filter_hw_device @var{name}
18739 Pass the hardware device called @var{name} to all filters in any filter graph.
18740
18741 @end table
18742
18743 For more detailed information see @url{https://www.ffmpeg.org/ffmpeg.html#Advanced-Video-options}
18744
18745 @itemize
18746 @item
18747 Example of choosing the first device on the second platform and running avgblur_opencl filter with default parameters on it.
18748 @example
18749 -init_hw_device opencl=gpu:1.0 -filter_hw_device gpu -i INPUT -vf "hwupload, avgblur_opencl, hwdownload" OUTPUT
18750 @end example
18751 @end itemize
18752
18753 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.
18754
18755 @section avgblur_opencl
18756
18757 Apply average blur filter.
18758
18759 The filter accepts the following options:
18760
18761 @table @option
18762 @item sizeX
18763 Set horizontal radius size.
18764 Range is @code{[1, 1024]} and default value is @code{1}.
18765
18766 @item planes
18767 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
18768
18769 @item sizeY
18770 Set vertical radius size. Range is @code{[1, 1024]} and default value is @code{0}. If zero, @code{sizeX} value will be used.
18771 @end table
18772
18773 @subsection Example
18774
18775 @itemize
18776 @item
18777 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.
18778 @example
18779 -i INPUT -vf "hwupload, avgblur_opencl=3, hwdownload" OUTPUT
18780 @end example
18781 @end itemize
18782
18783 @section boxblur_opencl
18784
18785 Apply a boxblur algorithm to the input video.
18786
18787 It accepts the following parameters:
18788
18789 @table @option
18790
18791 @item luma_radius, lr
18792 @item luma_power, lp
18793 @item chroma_radius, cr
18794 @item chroma_power, cp
18795 @item alpha_radius, ar
18796 @item alpha_power, ap
18797
18798 @end table
18799
18800 A description of the accepted options follows.
18801
18802 @table @option
18803 @item luma_radius, lr
18804 @item chroma_radius, cr
18805 @item alpha_radius, ar
18806 Set an expression for the box radius in pixels used for blurring the
18807 corresponding input plane.
18808
18809 The radius value must be a non-negative number, and must not be
18810 greater than the value of the expression @code{min(w,h)/2} for the
18811 luma and alpha planes, and of @code{min(cw,ch)/2} for the chroma
18812 planes.
18813
18814 Default value for @option{luma_radius} is "2". If not specified,
18815 @option{chroma_radius} and @option{alpha_radius} default to the
18816 corresponding value set for @option{luma_radius}.
18817
18818 The expressions can contain the following constants:
18819 @table @option
18820 @item w
18821 @item h
18822 The input width and height in pixels.
18823
18824 @item cw
18825 @item ch
18826 The input chroma image width and height in pixels.
18827
18828 @item hsub
18829 @item vsub
18830 The horizontal and vertical chroma subsample values. For example, for the
18831 pixel format "yuv422p", @var{hsub} is 2 and @var{vsub} is 1.
18832 @end table
18833
18834 @item luma_power, lp
18835 @item chroma_power, cp
18836 @item alpha_power, ap
18837 Specify how many times the boxblur filter is applied to the
18838 corresponding plane.
18839
18840 Default value for @option{luma_power} is 2. If not specified,
18841 @option{chroma_power} and @option{alpha_power} default to the
18842 corresponding value set for @option{luma_power}.
18843
18844 A value of 0 will disable the effect.
18845 @end table
18846
18847 @subsection Examples
18848
18849 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.
18850
18851 @itemize
18852 @item
18853 Apply a boxblur filter with the luma, chroma, and alpha radius
18854 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.
18855 @example
18856 -i INPUT -vf "hwupload, boxblur_opencl=luma_radius=2:luma_power=3, hwdownload" OUTPUT
18857 -i INPUT -vf "hwupload, boxblur_opencl=2:3, hwdownload" OUTPUT
18858 @end example
18859
18860 @item
18861 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.
18862
18863 For the luma plane, a 2x2 box radius will be run once.
18864
18865 For the chroma plane, a 4x4 box radius will be run 5 times.
18866
18867 For the alpha plane, a 3x3 box radius will be run 7 times.
18868 @example
18869 -i INPUT -vf "hwupload, boxblur_opencl=2:1:4:5:3:7, hwdownload" OUTPUT
18870 @end example
18871 @end itemize
18872
18873 @section convolution_opencl
18874
18875 Apply convolution of 3x3, 5x5, 7x7 matrix.
18876
18877 The filter accepts the following options:
18878
18879 @table @option
18880 @item 0m
18881 @item 1m
18882 @item 2m
18883 @item 3m
18884 Set matrix for each plane.
18885 Matrix is sequence of 9, 25 or 49 signed numbers.
18886 Default value for each plane is @code{0 0 0 0 1 0 0 0 0}.
18887
18888 @item 0rdiv
18889 @item 1rdiv
18890 @item 2rdiv
18891 @item 3rdiv
18892 Set multiplier for calculated value for each plane.
18893 If unset or 0, it will be sum of all matrix elements.
18894 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{1.0}.
18895
18896 @item 0bias
18897 @item 1bias
18898 @item 2bias
18899 @item 3bias
18900 Set bias for each plane. This value is added to the result of the multiplication.
18901 Useful for making the overall image brighter or darker.
18902 The option value must be a float number greater or equal to @code{0.0}. Default value is @code{0.0}.
18903
18904 @end table
18905
18906 @subsection Examples
18907
18908 @itemize
18909 @item
18910 Apply sharpen:
18911 @example
18912 -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
18913 @end example
18914
18915 @item
18916 Apply blur:
18917 @example
18918 -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
18919 @end example
18920
18921 @item
18922 Apply edge enhance:
18923 @example
18924 -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
18925 @end example
18926
18927 @item
18928 Apply edge detect:
18929 @example
18930 -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
18931 @end example
18932
18933 @item
18934 Apply laplacian edge detector which includes diagonals:
18935 @example
18936 -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
18937 @end example
18938
18939 @item
18940 Apply emboss:
18941 @example
18942 -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
18943 @end example
18944 @end itemize
18945
18946 @section dilation_opencl
18947
18948 Apply dilation effect to the video.
18949
18950 This filter replaces the pixel by the local(3x3) maximum.
18951
18952 It accepts the following options:
18953
18954 @table @option
18955 @item threshold0
18956 @item threshold1
18957 @item threshold2
18958 @item threshold3
18959 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
18960 If @code{0}, plane will remain unchanged.
18961
18962 @item coordinates
18963 Flag which specifies the pixel to refer to.
18964 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
18965
18966 Flags to local 3x3 coordinates region centered on @code{x}:
18967
18968     1 2 3
18969
18970     4 x 5
18971
18972     6 7 8
18973 @end table
18974
18975 @subsection Example
18976
18977 @itemize
18978 @item
18979 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.
18980 @example
18981 -i INPUT -vf "hwupload, dilation_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
18982 @end example
18983 @end itemize
18984
18985 @section erosion_opencl
18986
18987 Apply erosion effect to the video.
18988
18989 This filter replaces the pixel by the local(3x3) minimum.
18990
18991 It accepts the following options:
18992
18993 @table @option
18994 @item threshold0
18995 @item threshold1
18996 @item threshold2
18997 @item threshold3
18998 Limit the maximum change for each plane. Range is @code{[0, 65535]} and default value is @code{65535}.
18999 If @code{0}, plane will remain unchanged.
19000
19001 @item coordinates
19002 Flag which specifies the pixel to refer to.
19003 Range is @code{[0, 255]} and default value is @code{255}, i.e. all eight pixels are used.
19004
19005 Flags to local 3x3 coordinates region centered on @code{x}:
19006
19007     1 2 3
19008
19009     4 x 5
19010
19011     6 7 8
19012 @end table
19013
19014 @subsection Example
19015
19016 @itemize
19017 @item
19018 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.
19019 @example
19020 -i INPUT -vf "hwupload, erosion_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
19021 @end example
19022 @end itemize
19023
19024 @section overlay_opencl
19025
19026 Overlay one video on top of another.
19027
19028 It takes two inputs and has one output. The first input is the "main" video on which the second input is overlaid.
19029 This filter requires same memory layout for all the inputs. So, format conversion may be needed.
19030
19031 The filter accepts the following options:
19032
19033 @table @option
19034
19035 @item x
19036 Set the x coordinate of the overlaid video on the main video.
19037 Default value is @code{0}.
19038
19039 @item y
19040 Set the x coordinate of the overlaid video on the main video.
19041 Default value is @code{0}.
19042
19043 @end table
19044
19045 @subsection Examples
19046
19047 @itemize
19048 @item
19049 Overlay an image LOGO at the top-left corner of the INPUT video. Both inputs are yuv420p format.
19050 @example
19051 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuv420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
19052 @end example
19053 @item
19054 The inputs have same memory layout for color channels , the overlay has additional alpha plane, like INPUT is yuv420p, and the LOGO is yuva420p.
19055 @example
19056 -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuva420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
19057 @end example
19058
19059 @end itemize
19060
19061 @section prewitt_opencl
19062
19063 Apply the Prewitt operator (@url{https://en.wikipedia.org/wiki/Prewitt_operator}) to input video stream.
19064
19065 The filter accepts the following option:
19066
19067 @table @option
19068 @item planes
19069 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
19070
19071 @item scale
19072 Set value which will be multiplied with filtered result.
19073 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
19074
19075 @item delta
19076 Set value which will be added to filtered result.
19077 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
19078 @end table
19079
19080 @subsection Example
19081
19082 @itemize
19083 @item
19084 Apply the Prewitt operator with scale set to 2 and delta set to 10.
19085 @example
19086 -i INPUT -vf "hwupload, prewitt_opencl=scale=2:delta=10, hwdownload" OUTPUT
19087 @end example
19088 @end itemize
19089
19090 @section roberts_opencl
19091 Apply the Roberts cross operator (@url{https://en.wikipedia.org/wiki/Roberts_cross}) to input video stream.
19092
19093 The filter accepts the following option:
19094
19095 @table @option
19096 @item planes
19097 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
19098
19099 @item scale
19100 Set value which will be multiplied with filtered result.
19101 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
19102
19103 @item delta
19104 Set value which will be added to filtered result.
19105 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
19106 @end table
19107
19108 @subsection Example
19109
19110 @itemize
19111 @item
19112 Apply the Roberts cross operator with scale set to 2 and delta set to 10
19113 @example
19114 -i INPUT -vf "hwupload, roberts_opencl=scale=2:delta=10, hwdownload" OUTPUT
19115 @end example
19116 @end itemize
19117
19118 @section sobel_opencl
19119
19120 Apply the Sobel operator (@url{https://en.wikipedia.org/wiki/Sobel_operator}) to input video stream.
19121
19122 The filter accepts the following option:
19123
19124 @table @option
19125 @item planes
19126 Set which planes to filter. Default value is @code{0xf}, by which all planes are processed.
19127
19128 @item scale
19129 Set value which will be multiplied with filtered result.
19130 Range is @code{[0.0, 65535]} and default value is @code{1.0}.
19131
19132 @item delta
19133 Set value which will be added to filtered result.
19134 Range is @code{[-65535, 65535]} and default value is @code{0.0}.
19135 @end table
19136
19137 @subsection Example
19138
19139 @itemize
19140 @item
19141 Apply sobel operator with scale set to 2 and delta set to 10
19142 @example
19143 -i INPUT -vf "hwupload, sobel_opencl=scale=2:delta=10, hwdownload" OUTPUT
19144 @end example
19145 @end itemize
19146
19147 @section tonemap_opencl
19148
19149 Perform HDR(PQ/HLG) to SDR conversion with tone-mapping.
19150
19151 It accepts the following parameters:
19152
19153 @table @option
19154 @item tonemap
19155 Specify the tone-mapping operator to be used. Same as tonemap option in @ref{tonemap}.
19156
19157 @item param
19158 Tune the tone mapping algorithm. same as param option in @ref{tonemap}.
19159
19160 @item desat
19161 Apply desaturation for highlights that exceed this level of brightness. The
19162 higher the parameter, the more color information will be preserved. This
19163 setting helps prevent unnaturally blown-out colors for super-highlights, by
19164 (smoothly) turning into white instead. This makes images feel more natural,
19165 at the cost of reducing information about out-of-range colors.
19166
19167 The default value is 0.5, and the algorithm here is a little different from
19168 the cpu version tonemap currently. A setting of 0.0 disables this option.
19169
19170 @item threshold
19171 The tonemapping algorithm parameters is fine-tuned per each scene. And a threshold
19172 is used to detect whether the scene has changed or not. If the distance between
19173 the current frame average brightness and the current running average exceeds
19174 a threshold value, we would re-calculate scene average and peak brightness.
19175 The default value is 0.2.
19176
19177 @item format
19178 Specify the output pixel format.
19179
19180 Currently supported formats are:
19181 @table @var
19182 @item p010
19183 @item nv12
19184 @end table
19185
19186 @item range, r
19187 Set the output color range.
19188
19189 Possible values are:
19190 @table @var
19191 @item tv/mpeg
19192 @item pc/jpeg
19193 @end table
19194
19195 Default is same as input.
19196
19197 @item primaries, p
19198 Set the output color primaries.
19199
19200 Possible values are:
19201 @table @var
19202 @item bt709
19203 @item bt2020
19204 @end table
19205
19206 Default is same as input.
19207
19208 @item transfer, t
19209 Set the output transfer characteristics.
19210
19211 Possible values are:
19212 @table @var
19213 @item bt709
19214 @item bt2020
19215 @end table
19216
19217 Default is bt709.
19218
19219 @item matrix, m
19220 Set the output colorspace matrix.
19221
19222 Possible value are:
19223 @table @var
19224 @item bt709
19225 @item bt2020
19226 @end table
19227
19228 Default is same as input.
19229
19230 @end table
19231
19232 @subsection Example
19233
19234 @itemize
19235 @item
19236 Convert HDR(PQ/HLG) video to bt2020-transfer-characteristic p010 format using linear operator.
19237 @example
19238 -i INPUT -vf "format=p010,hwupload,tonemap_opencl=t=bt2020:tonemap=linear:format=p010,hwdownload,format=p010" OUTPUT
19239 @end example
19240 @end itemize
19241
19242 @section unsharp_opencl
19243
19244 Sharpen or blur the input video.
19245
19246 It accepts the following parameters:
19247
19248 @table @option
19249 @item luma_msize_x, lx
19250 Set the luma matrix horizontal size.
19251 Range is @code{[1, 23]} and default value is @code{5}.
19252
19253 @item luma_msize_y, ly
19254 Set the luma matrix vertical size.
19255 Range is @code{[1, 23]} and default value is @code{5}.
19256
19257 @item luma_amount, la
19258 Set the luma effect strength.
19259 Range is @code{[-10, 10]} and default value is @code{1.0}.
19260
19261 Negative values will blur the input video, while positive values will
19262 sharpen it, a value of zero will disable the effect.
19263
19264 @item chroma_msize_x, cx
19265 Set the chroma matrix horizontal size.
19266 Range is @code{[1, 23]} and default value is @code{5}.
19267
19268 @item chroma_msize_y, cy
19269 Set the chroma matrix vertical size.
19270 Range is @code{[1, 23]} and default value is @code{5}.
19271
19272 @item chroma_amount, ca
19273 Set the chroma effect strength.
19274 Range is @code{[-10, 10]} and default value is @code{0.0}.
19275
19276 Negative values will blur the input video, while positive values will
19277 sharpen it, a value of zero will disable the effect.
19278
19279 @end table
19280
19281 All parameters are optional and default to the equivalent of the
19282 string '5:5:1.0:5:5:0.0'.
19283
19284 @subsection Examples
19285
19286 @itemize
19287 @item
19288 Apply strong luma sharpen effect:
19289 @example
19290 -i INPUT -vf "hwupload, unsharp_opencl=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5, hwdownload" OUTPUT
19291 @end example
19292
19293 @item
19294 Apply a strong blur of both luma and chroma parameters:
19295 @example
19296 -i INPUT -vf "hwupload, unsharp_opencl=7:7:-2:7:7:-2, hwdownload" OUTPUT
19297 @end example
19298 @end itemize
19299
19300 @c man end OPENCL VIDEO FILTERS
19301
19302 @chapter Video Sources
19303 @c man begin VIDEO SOURCES
19304
19305 Below is a description of the currently available video sources.
19306
19307 @section buffer
19308
19309 Buffer video frames, and make them available to the filter chain.
19310
19311 This source is mainly intended for a programmatic use, in particular
19312 through the interface defined in @file{libavfilter/vsrc_buffer.h}.
19313
19314 It accepts the following parameters:
19315
19316 @table @option
19317
19318 @item video_size
19319 Specify the size (width and height) of the buffered video frames. For the
19320 syntax of this option, check the
19321 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19322
19323 @item width
19324 The input video width.
19325
19326 @item height
19327 The input video height.
19328
19329 @item pix_fmt
19330 A string representing the pixel format of the buffered video frames.
19331 It may be a number corresponding to a pixel format, or a pixel format
19332 name.
19333
19334 @item time_base
19335 Specify the timebase assumed by the timestamps of the buffered frames.
19336
19337 @item frame_rate
19338 Specify the frame rate expected for the video stream.
19339
19340 @item pixel_aspect, sar
19341 The sample (pixel) aspect ratio of the input video.
19342
19343 @item sws_param
19344 Specify the optional parameters to be used for the scale filter which
19345 is automatically inserted when an input change is detected in the
19346 input size or format.
19347
19348 @item hw_frames_ctx
19349 When using a hardware pixel format, this should be a reference to an
19350 AVHWFramesContext describing input frames.
19351 @end table
19352
19353 For example:
19354 @example
19355 buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
19356 @end example
19357
19358 will instruct the source to accept video frames with size 320x240 and
19359 with format "yuv410p", assuming 1/24 as the timestamps timebase and
19360 square pixels (1:1 sample aspect ratio).
19361 Since the pixel format with name "yuv410p" corresponds to the number 6
19362 (check the enum AVPixelFormat definition in @file{libavutil/pixfmt.h}),
19363 this example corresponds to:
19364 @example
19365 buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
19366 @end example
19367
19368 Alternatively, the options can be specified as a flat string, but this
19369 syntax is deprecated:
19370
19371 @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}]
19372
19373 @section cellauto
19374
19375 Create a pattern generated by an elementary cellular automaton.
19376
19377 The initial state of the cellular automaton can be defined through the
19378 @option{filename} and @option{pattern} options. If such options are
19379 not specified an initial state is created randomly.
19380
19381 At each new frame a new row in the video is filled with the result of
19382 the cellular automaton next generation. The behavior when the whole
19383 frame is filled is defined by the @option{scroll} option.
19384
19385 This source accepts the following options:
19386
19387 @table @option
19388 @item filename, f
19389 Read the initial cellular automaton state, i.e. the starting row, from
19390 the specified file.
19391 In the file, each non-whitespace character is considered an alive
19392 cell, a newline will terminate the row, and further characters in the
19393 file will be ignored.
19394
19395 @item pattern, p
19396 Read the initial cellular automaton state, i.e. the starting row, from
19397 the specified string.
19398
19399 Each non-whitespace character in the string is considered an alive
19400 cell, a newline will terminate the row, and further characters in the
19401 string will be ignored.
19402
19403 @item rate, r
19404 Set the video rate, that is the number of frames generated per second.
19405 Default is 25.
19406
19407 @item random_fill_ratio, ratio
19408 Set the random fill ratio for the initial cellular automaton row. It
19409 is a floating point number value ranging from 0 to 1, defaults to
19410 1/PHI.
19411
19412 This option is ignored when a file or a pattern is specified.
19413
19414 @item random_seed, seed
19415 Set the seed for filling randomly the initial row, must be an integer
19416 included between 0 and UINT32_MAX. If not specified, or if explicitly
19417 set to -1, the filter will try to use a good random seed on a best
19418 effort basis.
19419
19420 @item rule
19421 Set the cellular automaton rule, it is a number ranging from 0 to 255.
19422 Default value is 110.
19423
19424 @item size, s
19425 Set the size of the output video. For the syntax of this option, check the
19426 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19427
19428 If @option{filename} or @option{pattern} is specified, the size is set
19429 by default to the width of the specified initial state row, and the
19430 height is set to @var{width} * PHI.
19431
19432 If @option{size} is set, it must contain the width of the specified
19433 pattern string, and the specified pattern will be centered in the
19434 larger row.
19435
19436 If a filename or a pattern string is not specified, the size value
19437 defaults to "320x518" (used for a randomly generated initial state).
19438
19439 @item scroll
19440 If set to 1, scroll the output upward when all the rows in the output
19441 have been already filled. If set to 0, the new generated row will be
19442 written over the top row just after the bottom row is filled.
19443 Defaults to 1.
19444
19445 @item start_full, full
19446 If set to 1, completely fill the output with generated rows before
19447 outputting the first frame.
19448 This is the default behavior, for disabling set the value to 0.
19449
19450 @item stitch
19451 If set to 1, stitch the left and right row edges together.
19452 This is the default behavior, for disabling set the value to 0.
19453 @end table
19454
19455 @subsection Examples
19456
19457 @itemize
19458 @item
19459 Read the initial state from @file{pattern}, and specify an output of
19460 size 200x400.
19461 @example
19462 cellauto=f=pattern:s=200x400
19463 @end example
19464
19465 @item
19466 Generate a random initial row with a width of 200 cells, with a fill
19467 ratio of 2/3:
19468 @example
19469 cellauto=ratio=2/3:s=200x200
19470 @end example
19471
19472 @item
19473 Create a pattern generated by rule 18 starting by a single alive cell
19474 centered on an initial row with width 100:
19475 @example
19476 cellauto=p=@@:s=100x400:full=0:rule=18
19477 @end example
19478
19479 @item
19480 Specify a more elaborated initial pattern:
19481 @example
19482 cellauto=p='@@@@ @@ @@@@':s=100x400:full=0:rule=18
19483 @end example
19484
19485 @end itemize
19486
19487 @anchor{coreimagesrc}
19488 @section coreimagesrc
19489 Video source generated on GPU using Apple's CoreImage API on OSX.
19490
19491 This video source is a specialized version of the @ref{coreimage} video filter.
19492 Use a core image generator at the beginning of the applied filterchain to
19493 generate the content.
19494
19495 The coreimagesrc video source accepts the following options:
19496 @table @option
19497 @item list_generators
19498 List all available generators along with all their respective options as well as
19499 possible minimum and maximum values along with the default values.
19500 @example
19501 list_generators=true
19502 @end example
19503
19504 @item size, s
19505 Specify the size of the sourced video. For the syntax of this option, check the
19506 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19507 The default value is @code{320x240}.
19508
19509 @item rate, r
19510 Specify the frame rate of the sourced video, as the number of frames
19511 generated per second. It has to be a string in the format
19512 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
19513 number or a valid video frame rate abbreviation. The default value is
19514 "25".
19515
19516 @item sar
19517 Set the sample aspect ratio of the sourced video.
19518
19519 @item duration, d
19520 Set the duration of the sourced video. See
19521 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
19522 for the accepted syntax.
19523
19524 If not specified, or the expressed duration is negative, the video is
19525 supposed to be generated forever.
19526 @end table
19527
19528 Additionally, all options of the @ref{coreimage} video filter are accepted.
19529 A complete filterchain can be used for further processing of the
19530 generated input without CPU-HOST transfer. See @ref{coreimage} documentation
19531 and examples for details.
19532
19533 @subsection Examples
19534
19535 @itemize
19536
19537 @item
19538 Use CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
19539 given as complete and escaped command-line for Apple's standard bash shell:
19540 @example
19541 ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@@inputMessage=https\\\\\://FFmpeg.org/@@inputCorrectionLevel=H -frames:v 1 QRCode.png
19542 @end example
19543 This example is equivalent to the QRCode example of @ref{coreimage} without the
19544 need for a nullsrc video source.
19545 @end itemize
19546
19547
19548 @section mandelbrot
19549
19550 Generate a Mandelbrot set fractal, and progressively zoom towards the
19551 point specified with @var{start_x} and @var{start_y}.
19552
19553 This source accepts the following options:
19554
19555 @table @option
19556
19557 @item end_pts
19558 Set the terminal pts value. Default value is 400.
19559
19560 @item end_scale
19561 Set the terminal scale value.
19562 Must be a floating point value. Default value is 0.3.
19563
19564 @item inner
19565 Set the inner coloring mode, that is the algorithm used to draw the
19566 Mandelbrot fractal internal region.
19567
19568 It shall assume one of the following values:
19569 @table @option
19570 @item black
19571 Set black mode.
19572 @item convergence
19573 Show time until convergence.
19574 @item mincol
19575 Set color based on point closest to the origin of the iterations.
19576 @item period
19577 Set period mode.
19578 @end table
19579
19580 Default value is @var{mincol}.
19581
19582 @item bailout
19583 Set the bailout value. Default value is 10.0.
19584
19585 @item maxiter
19586 Set the maximum of iterations performed by the rendering
19587 algorithm. Default value is 7189.
19588
19589 @item outer
19590 Set outer coloring mode.
19591 It shall assume one of following values:
19592 @table @option
19593 @item iteration_count
19594 Set iteration count mode.
19595 @item normalized_iteration_count
19596 set normalized iteration count mode.
19597 @end table
19598 Default value is @var{normalized_iteration_count}.
19599
19600 @item rate, r
19601 Set frame rate, expressed as number of frames per second. Default
19602 value is "25".
19603
19604 @item size, s
19605 Set frame size. For the syntax of this option, check the @ref{video size syntax,,"Video
19606 size" section in the ffmpeg-utils manual,ffmpeg-utils}. Default value is "640x480".
19607
19608 @item start_scale
19609 Set the initial scale value. Default value is 3.0.
19610
19611 @item start_x
19612 Set the initial x position. Must be a floating point value between
19613 -100 and 100. Default value is -0.743643887037158704752191506114774.
19614
19615 @item start_y
19616 Set the initial y position. Must be a floating point value between
19617 -100 and 100. Default value is -0.131825904205311970493132056385139.
19618 @end table
19619
19620 @section mptestsrc
19621
19622 Generate various test patterns, as generated by the MPlayer test filter.
19623
19624 The size of the generated video is fixed, and is 256x256.
19625 This source is useful in particular for testing encoding features.
19626
19627 This source accepts the following options:
19628
19629 @table @option
19630
19631 @item rate, r
19632 Specify the frame rate of the sourced video, as the number of frames
19633 generated per second. It has to be a string in the format
19634 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
19635 number or a valid video frame rate abbreviation. The default value is
19636 "25".
19637
19638 @item duration, d
19639 Set the duration of the sourced video. See
19640 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
19641 for the accepted syntax.
19642
19643 If not specified, or the expressed duration is negative, the video is
19644 supposed to be generated forever.
19645
19646 @item test, t
19647
19648 Set the number or the name of the test to perform. Supported tests are:
19649 @table @option
19650 @item dc_luma
19651 @item dc_chroma
19652 @item freq_luma
19653 @item freq_chroma
19654 @item amp_luma
19655 @item amp_chroma
19656 @item cbp
19657 @item mv
19658 @item ring1
19659 @item ring2
19660 @item all
19661
19662 @end table
19663
19664 Default value is "all", which will cycle through the list of all tests.
19665 @end table
19666
19667 Some examples:
19668 @example
19669 mptestsrc=t=dc_luma
19670 @end example
19671
19672 will generate a "dc_luma" test pattern.
19673
19674 @section frei0r_src
19675
19676 Provide a frei0r source.
19677
19678 To enable compilation of this filter you need to install the frei0r
19679 header and configure FFmpeg with @code{--enable-frei0r}.
19680
19681 This source accepts the following parameters:
19682
19683 @table @option
19684
19685 @item size
19686 The size of the video to generate. For the syntax of this option, check the
19687 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19688
19689 @item framerate
19690 The framerate of the generated video. It may be a string of the form
19691 @var{num}/@var{den} or a frame rate abbreviation.
19692
19693 @item filter_name
19694 The name to the frei0r source to load. For more information regarding frei0r and
19695 how to set the parameters, read the @ref{frei0r} section in the video filters
19696 documentation.
19697
19698 @item filter_params
19699 A '|'-separated list of parameters to pass to the frei0r source.
19700
19701 @end table
19702
19703 For example, to generate a frei0r partik0l source with size 200x200
19704 and frame rate 10 which is overlaid on the overlay filter main input:
19705 @example
19706 frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
19707 @end example
19708
19709 @section life
19710
19711 Generate a life pattern.
19712
19713 This source is based on a generalization of John Conway's life game.
19714
19715 The sourced input represents a life grid, each pixel represents a cell
19716 which can be in one of two possible states, alive or dead. Every cell
19717 interacts with its eight neighbours, which are the cells that are
19718 horizontally, vertically, or diagonally adjacent.
19719
19720 At each interaction the grid evolves according to the adopted rule,
19721 which specifies the number of neighbor alive cells which will make a
19722 cell stay alive or born. The @option{rule} option allows one to specify
19723 the rule to adopt.
19724
19725 This source accepts the following options:
19726
19727 @table @option
19728 @item filename, f
19729 Set the file from which to read the initial grid state. In the file,
19730 each non-whitespace character is considered an alive cell, and newline
19731 is used to delimit the end of each row.
19732
19733 If this option is not specified, the initial grid is generated
19734 randomly.
19735
19736 @item rate, r
19737 Set the video rate, that is the number of frames generated per second.
19738 Default is 25.
19739
19740 @item random_fill_ratio, ratio
19741 Set the random fill ratio for the initial random grid. It is a
19742 floating point number value ranging from 0 to 1, defaults to 1/PHI.
19743 It is ignored when a file is specified.
19744
19745 @item random_seed, seed
19746 Set the seed for filling the initial random grid, must be an integer
19747 included between 0 and UINT32_MAX. If not specified, or if explicitly
19748 set to -1, the filter will try to use a good random seed on a best
19749 effort basis.
19750
19751 @item rule
19752 Set the life rule.
19753
19754 A rule can be specified with a code of the kind "S@var{NS}/B@var{NB}",
19755 where @var{NS} and @var{NB} are sequences of numbers in the range 0-8,
19756 @var{NS} specifies the number of alive neighbor cells which make a
19757 live cell stay alive, and @var{NB} the number of alive neighbor cells
19758 which make a dead cell to become alive (i.e. to "born").
19759 "s" and "b" can be used in place of "S" and "B", respectively.
19760
19761 Alternatively a rule can be specified by an 18-bits integer. The 9
19762 high order bits are used to encode the next cell state if it is alive
19763 for each number of neighbor alive cells, the low order bits specify
19764 the rule for "borning" new cells. Higher order bits encode for an
19765 higher number of neighbor cells.
19766 For example the number 6153 = @code{(12<<9)+9} specifies a stay alive
19767 rule of 12 and a born rule of 9, which corresponds to "S23/B03".
19768
19769 Default value is "S23/B3", which is the original Conway's game of life
19770 rule, and will keep a cell alive if it has 2 or 3 neighbor alive
19771 cells, and will born a new cell if there are three alive cells around
19772 a dead cell.
19773
19774 @item size, s
19775 Set the size of the output video. For the syntax of this option, check the
19776 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19777
19778 If @option{filename} is specified, the size is set by default to the
19779 same size of the input file. If @option{size} is set, it must contain
19780 the size specified in the input file, and the initial grid defined in
19781 that file is centered in the larger resulting area.
19782
19783 If a filename is not specified, the size value defaults to "320x240"
19784 (used for a randomly generated initial grid).
19785
19786 @item stitch
19787 If set to 1, stitch the left and right grid edges together, and the
19788 top and bottom edges also. Defaults to 1.
19789
19790 @item mold
19791 Set cell mold speed. If set, a dead cell will go from @option{death_color} to
19792 @option{mold_color} with a step of @option{mold}. @option{mold} can have a
19793 value from 0 to 255.
19794
19795 @item life_color
19796 Set the color of living (or new born) cells.
19797
19798 @item death_color
19799 Set the color of dead cells. If @option{mold} is set, this is the first color
19800 used to represent a dead cell.
19801
19802 @item mold_color
19803 Set mold color, for definitely dead and moldy cells.
19804
19805 For the syntax of these 3 color options, check the @ref{color syntax,,"Color" section in the
19806 ffmpeg-utils manual,ffmpeg-utils}.
19807 @end table
19808
19809 @subsection Examples
19810
19811 @itemize
19812 @item
19813 Read a grid from @file{pattern}, and center it on a grid of size
19814 300x300 pixels:
19815 @example
19816 life=f=pattern:s=300x300
19817 @end example
19818
19819 @item
19820 Generate a random grid of size 200x200, with a fill ratio of 2/3:
19821 @example
19822 life=ratio=2/3:s=200x200
19823 @end example
19824
19825 @item
19826 Specify a custom rule for evolving a randomly generated grid:
19827 @example
19828 life=rule=S14/B34
19829 @end example
19830
19831 @item
19832 Full example with slow death effect (mold) using @command{ffplay}:
19833 @example
19834 ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
19835 @end example
19836 @end itemize
19837
19838 @anchor{allrgb}
19839 @anchor{allyuv}
19840 @anchor{color}
19841 @anchor{haldclutsrc}
19842 @anchor{nullsrc}
19843 @anchor{pal75bars}
19844 @anchor{pal100bars}
19845 @anchor{rgbtestsrc}
19846 @anchor{smptebars}
19847 @anchor{smptehdbars}
19848 @anchor{testsrc}
19849 @anchor{testsrc2}
19850 @anchor{yuvtestsrc}
19851 @section allrgb, allyuv, color, haldclutsrc, nullsrc, pal75bars, pal100bars, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc
19852
19853 The @code{allrgb} source returns frames of size 4096x4096 of all rgb colors.
19854
19855 The @code{allyuv} source returns frames of size 4096x4096 of all yuv colors.
19856
19857 The @code{color} source provides an uniformly colored input.
19858
19859 The @code{haldclutsrc} source provides an identity Hald CLUT. See also
19860 @ref{haldclut} filter.
19861
19862 The @code{nullsrc} source returns unprocessed video frames. It is
19863 mainly useful to be employed in analysis / debugging tools, or as the
19864 source for filters which ignore the input data.
19865
19866 The @code{pal75bars} source generates a color bars pattern, based on
19867 EBU PAL recommendations with 75% color levels.
19868
19869 The @code{pal100bars} source generates a color bars pattern, based on
19870 EBU PAL recommendations with 100% color levels.
19871
19872 The @code{rgbtestsrc} source generates an RGB test pattern useful for
19873 detecting RGB vs BGR issues. You should see a red, green and blue
19874 stripe from top to bottom.
19875
19876 The @code{smptebars} source generates a color bars pattern, based on
19877 the SMPTE Engineering Guideline EG 1-1990.
19878
19879 The @code{smptehdbars} source generates a color bars pattern, based on
19880 the SMPTE RP 219-2002.
19881
19882 The @code{testsrc} source generates a test video pattern, showing a
19883 color pattern, a scrolling gradient and a timestamp. This is mainly
19884 intended for testing purposes.
19885
19886 The @code{testsrc2} source is similar to testsrc, but supports more
19887 pixel formats instead of just @code{rgb24}. This allows using it as an
19888 input for other tests without requiring a format conversion.
19889
19890 The @code{yuvtestsrc} source generates an YUV test pattern. You should
19891 see a y, cb and cr stripe from top to bottom.
19892
19893 The sources accept the following parameters:
19894
19895 @table @option
19896
19897 @item level
19898 Specify the level of the Hald CLUT, only available in the @code{haldclutsrc}
19899 source. A level of @code{N} generates a picture of @code{N*N*N} by @code{N*N*N}
19900 pixels to be used as identity matrix for 3D lookup tables. Each component is
19901 coded on a @code{1/(N*N)} scale.
19902
19903 @item color, c
19904 Specify the color of the source, only available in the @code{color}
19905 source. For the syntax of this option, check the
19906 @ref{color syntax,,"Color" section in the ffmpeg-utils manual,ffmpeg-utils}.
19907
19908 @item size, s
19909 Specify the size of the sourced video. For the syntax of this option, check the
19910 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
19911 The default value is @code{320x240}.
19912
19913 This option is not available with the @code{allrgb}, @code{allyuv}, and
19914 @code{haldclutsrc} filters.
19915
19916 @item rate, r
19917 Specify the frame rate of the sourced video, as the number of frames
19918 generated per second. It has to be a string in the format
19919 @var{frame_rate_num}/@var{frame_rate_den}, an integer number, a floating point
19920 number or a valid video frame rate abbreviation. The default value is
19921 "25".
19922
19923 @item duration, d
19924 Set the duration of the sourced video. See
19925 @ref{time duration syntax,,the Time duration section in the ffmpeg-utils(1) manual,ffmpeg-utils}
19926 for the accepted syntax.
19927
19928 If not specified, or the expressed duration is negative, the video is
19929 supposed to be generated forever.
19930
19931 @item sar
19932 Set the sample aspect ratio of the sourced video.
19933
19934 @item alpha
19935 Specify the alpha (opacity) of the background, only available in the
19936 @code{testsrc2} source. The value must be between 0 (fully transparent) and
19937 255 (fully opaque, the default).
19938
19939 @item decimals, n
19940 Set the number of decimals to show in the timestamp, only available in the
19941 @code{testsrc} source.
19942
19943 The displayed timestamp value will correspond to the original
19944 timestamp value multiplied by the power of 10 of the specified
19945 value. Default value is 0.
19946 @end table
19947
19948 @subsection Examples
19949
19950 @itemize
19951 @item
19952 Generate a video with a duration of 5.3 seconds, with size
19953 176x144 and a frame rate of 10 frames per second:
19954 @example
19955 testsrc=duration=5.3:size=qcif:rate=10
19956 @end example
19957
19958 @item
19959 The following graph description will generate a red source
19960 with an opacity of 0.2, with size "qcif" and a frame rate of 10
19961 frames per second:
19962 @example
19963 color=c=red@@0.2:s=qcif:r=10
19964 @end example
19965
19966 @item
19967 If the input content is to be ignored, @code{nullsrc} can be used. The
19968 following command generates noise in the luminance plane by employing
19969 the @code{geq} filter:
19970 @example
19971 nullsrc=s=256x256, geq=random(1)*255:128:128
19972 @end example
19973 @end itemize
19974
19975 @subsection Commands
19976
19977 The @code{color} source supports the following commands:
19978
19979 @table @option
19980 @item c, color
19981 Set the color of the created image. Accepts the same syntax of the
19982 corresponding @option{color} option.
19983 @end table
19984
19985 @section openclsrc
19986
19987 Generate video using an OpenCL program.
19988
19989 @table @option
19990
19991 @item source
19992 OpenCL program source file.
19993
19994 @item kernel
19995 Kernel name in program.
19996
19997 @item size, s
19998 Size of frames to generate.  This must be set.
19999
20000 @item format
20001 Pixel format to use for the generated frames.  This must be set.
20002
20003 @item rate, r
20004 Number of frames generated every second.  Default value is '25'.
20005
20006 @end table
20007
20008 For details of how the program loading works, see the @ref{program_opencl}
20009 filter.
20010
20011 Example programs:
20012
20013 @itemize
20014 @item
20015 Generate a colour ramp by setting pixel values from the position of the pixel
20016 in the output image.  (Note that this will work with all pixel formats, but
20017 the generated output will not be the same.)
20018 @verbatim
20019 __kernel void ramp(__write_only image2d_t dst,
20020                    unsigned int index)
20021 {
20022     int2 loc = (int2)(get_global_id(0), get_global_id(1));
20023
20024     float4 val;
20025     val.xy = val.zw = convert_float2(loc) / convert_float2(get_image_dim(dst));
20026
20027     write_imagef(dst, loc, val);
20028 }
20029 @end verbatim
20030
20031 @item
20032 Generate a Sierpinski carpet pattern, panning by a single pixel each frame.
20033 @verbatim
20034 __kernel void sierpinski_carpet(__write_only image2d_t dst,
20035                                 unsigned int index)
20036 {
20037     int2 loc = (int2)(get_global_id(0), get_global_id(1));
20038
20039     float4 value = 0.0f;
20040     int x = loc.x + index;
20041     int y = loc.y + index;
20042     while (x > 0 || y > 0) {
20043         if (x % 3 == 1 && y % 3 == 1) {
20044             value = 1.0f;
20045             break;
20046         }
20047         x /= 3;
20048         y /= 3;
20049     }
20050
20051     write_imagef(dst, loc, value);
20052 }
20053 @end verbatim
20054
20055 @end itemize
20056
20057 @c man end VIDEO SOURCES
20058
20059 @chapter Video Sinks
20060 @c man begin VIDEO SINKS
20061
20062 Below is a description of the currently available video sinks.
20063
20064 @section buffersink
20065
20066 Buffer video frames, and make them available to the end of the filter
20067 graph.
20068
20069 This sink is mainly intended for programmatic use, in particular
20070 through the interface defined in @file{libavfilter/buffersink.h}
20071 or the options system.
20072
20073 It accepts a pointer to an AVBufferSinkContext structure, which
20074 defines the incoming buffers' formats, to be passed as the opaque
20075 parameter to @code{avfilter_init_filter} for initialization.
20076
20077 @section nullsink
20078
20079 Null video sink: do absolutely nothing with the input video. It is
20080 mainly useful as a template and for use in analysis / debugging
20081 tools.
20082
20083 @c man end VIDEO SINKS
20084
20085 @chapter Multimedia Filters
20086 @c man begin MULTIMEDIA FILTERS
20087
20088 Below is a description of the currently available multimedia filters.
20089
20090 @section abitscope
20091
20092 Convert input audio to a video output, displaying the audio bit scope.
20093
20094 The filter accepts the following options:
20095
20096 @table @option
20097 @item rate, r
20098 Set frame rate, expressed as number of frames per second. Default
20099 value is "25".
20100
20101 @item size, s
20102 Specify the video size for the output. For the syntax of this option, check the
20103 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20104 Default value is @code{1024x256}.
20105
20106 @item colors
20107 Specify list of colors separated by space or by '|' which will be used to
20108 draw channels. Unrecognized or missing colors will be replaced
20109 by white color.
20110 @end table
20111
20112 @section ahistogram
20113
20114 Convert input audio to a video output, displaying the volume histogram.
20115
20116 The filter accepts the following options:
20117
20118 @table @option
20119 @item dmode
20120 Specify how histogram is calculated.
20121
20122 It accepts the following values:
20123 @table @samp
20124 @item single
20125 Use single histogram for all channels.
20126 @item separate
20127 Use separate histogram for each channel.
20128 @end table
20129 Default is @code{single}.
20130
20131 @item rate, r
20132 Set frame rate, expressed as number of frames per second. Default
20133 value is "25".
20134
20135 @item size, s
20136 Specify the video size for the output. For the syntax of this option, check the
20137 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20138 Default value is @code{hd720}.
20139
20140 @item scale
20141 Set display scale.
20142
20143 It accepts the following values:
20144 @table @samp
20145 @item log
20146 logarithmic
20147 @item sqrt
20148 square root
20149 @item cbrt
20150 cubic root
20151 @item lin
20152 linear
20153 @item rlog
20154 reverse logarithmic
20155 @end table
20156 Default is @code{log}.
20157
20158 @item ascale
20159 Set amplitude scale.
20160
20161 It accepts the following values:
20162 @table @samp
20163 @item log
20164 logarithmic
20165 @item lin
20166 linear
20167 @end table
20168 Default is @code{log}.
20169
20170 @item acount
20171 Set how much frames to accumulate in histogram.
20172 Default is 1. Setting this to -1 accumulates all frames.
20173
20174 @item rheight
20175 Set histogram ratio of window height.
20176
20177 @item slide
20178 Set sonogram sliding.
20179
20180 It accepts the following values:
20181 @table @samp
20182 @item replace
20183 replace old rows with new ones.
20184 @item scroll
20185 scroll from top to bottom.
20186 @end table
20187 Default is @code{replace}.
20188 @end table
20189
20190 @section aphasemeter
20191
20192 Measures phase of input audio, which is exported as metadata @code{lavfi.aphasemeter.phase},
20193 representing mean phase of current audio frame. A video output can also be produced and is
20194 enabled by default. The audio is passed through as first output.
20195
20196 Audio will be rematrixed to stereo if it has a different channel layout. Phase value is in
20197 range @code{[-1, 1]} where @code{-1} means left and right channels are completely out of phase
20198 and @code{1} means channels are in phase.
20199
20200 The filter accepts the following options, all related to its video output:
20201
20202 @table @option
20203 @item rate, r
20204 Set the output frame rate. Default value is @code{25}.
20205
20206 @item size, s
20207 Set the video size for the output. For the syntax of this option, check the
20208 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20209 Default value is @code{800x400}.
20210
20211 @item rc
20212 @item gc
20213 @item bc
20214 Specify the red, green, blue contrast. Default values are @code{2},
20215 @code{7} and @code{1}.
20216 Allowed range is @code{[0, 255]}.
20217
20218 @item mpc
20219 Set color which will be used for drawing median phase. If color is
20220 @code{none} which is default, no median phase value will be drawn.
20221
20222 @item video
20223 Enable video output. Default is enabled.
20224 @end table
20225
20226 @section avectorscope
20227
20228 Convert input audio to a video output, representing the audio vector
20229 scope.
20230
20231 The filter is used to measure the difference between channels of stereo
20232 audio stream. A monoaural signal, consisting of identical left and right
20233 signal, results in straight vertical line. Any stereo separation is visible
20234 as a deviation from this line, creating a Lissajous figure.
20235 If the straight (or deviation from it) but horizontal line appears this
20236 indicates that the left and right channels are out of phase.
20237
20238 The filter accepts the following options:
20239
20240 @table @option
20241 @item mode, m
20242 Set the vectorscope mode.
20243
20244 Available values are:
20245 @table @samp
20246 @item lissajous
20247 Lissajous rotated by 45 degrees.
20248
20249 @item lissajous_xy
20250 Same as above but not rotated.
20251
20252 @item polar
20253 Shape resembling half of circle.
20254 @end table
20255
20256 Default value is @samp{lissajous}.
20257
20258 @item size, s
20259 Set the video size for the output. For the syntax of this option, check the
20260 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20261 Default value is @code{400x400}.
20262
20263 @item rate, r
20264 Set the output frame rate. Default value is @code{25}.
20265
20266 @item rc
20267 @item gc
20268 @item bc
20269 @item ac
20270 Specify the red, green, blue and alpha contrast. Default values are @code{40},
20271 @code{160}, @code{80} and @code{255}.
20272 Allowed range is @code{[0, 255]}.
20273
20274 @item rf
20275 @item gf
20276 @item bf
20277 @item af
20278 Specify the red, green, blue and alpha fade. Default values are @code{15},
20279 @code{10}, @code{5} and @code{5}.
20280 Allowed range is @code{[0, 255]}.
20281
20282 @item zoom
20283 Set the zoom factor. Default value is @code{1}. Allowed range is @code{[0, 10]}.
20284 Values lower than @var{1} will auto adjust zoom factor to maximal possible value.
20285
20286 @item draw
20287 Set the vectorscope drawing mode.
20288
20289 Available values are:
20290 @table @samp
20291 @item dot
20292 Draw dot for each sample.
20293
20294 @item line
20295 Draw line between previous and current sample.
20296 @end table
20297
20298 Default value is @samp{dot}.
20299
20300 @item scale
20301 Specify amplitude scale of audio samples.
20302
20303 Available values are:
20304 @table @samp
20305 @item lin
20306 Linear.
20307
20308 @item sqrt
20309 Square root.
20310
20311 @item cbrt
20312 Cubic root.
20313
20314 @item log
20315 Logarithmic.
20316 @end table
20317
20318 @item swap
20319 Swap left channel axis with right channel axis.
20320
20321 @item mirror
20322 Mirror axis.
20323
20324 @table @samp
20325 @item none
20326 No mirror.
20327
20328 @item x
20329 Mirror only x axis.
20330
20331 @item y
20332 Mirror only y axis.
20333
20334 @item xy
20335 Mirror both axis.
20336 @end table
20337
20338 @end table
20339
20340 @subsection Examples
20341
20342 @itemize
20343 @item
20344 Complete example using @command{ffplay}:
20345 @example
20346 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
20347              [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
20348 @end example
20349 @end itemize
20350
20351 @section bench, abench
20352
20353 Benchmark part of a filtergraph.
20354
20355 The filter accepts the following options:
20356
20357 @table @option
20358 @item action
20359 Start or stop a timer.
20360
20361 Available values are:
20362 @table @samp
20363 @item start
20364 Get the current time, set it as frame metadata (using the key
20365 @code{lavfi.bench.start_time}), and forward the frame to the next filter.
20366
20367 @item stop
20368 Get the current time and fetch the @code{lavfi.bench.start_time} metadata from
20369 the input frame metadata to get the time difference. Time difference, average,
20370 maximum and minimum time (respectively @code{t}, @code{avg}, @code{max} and
20371 @code{min}) are then printed. The timestamps are expressed in seconds.
20372 @end table
20373 @end table
20374
20375 @subsection Examples
20376
20377 @itemize
20378 @item
20379 Benchmark @ref{selectivecolor} filter:
20380 @example
20381 bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
20382 @end example
20383 @end itemize
20384
20385 @section concat
20386
20387 Concatenate audio and video streams, joining them together one after the
20388 other.
20389
20390 The filter works on segments of synchronized video and audio streams. All
20391 segments must have the same number of streams of each type, and that will
20392 also be the number of streams at output.
20393
20394 The filter accepts the following options:
20395
20396 @table @option
20397
20398 @item n
20399 Set the number of segments. Default is 2.
20400
20401 @item v
20402 Set the number of output video streams, that is also the number of video
20403 streams in each segment. Default is 1.
20404
20405 @item a
20406 Set the number of output audio streams, that is also the number of audio
20407 streams in each segment. Default is 0.
20408
20409 @item unsafe
20410 Activate unsafe mode: do not fail if segments have a different format.
20411
20412 @end table
20413
20414 The filter has @var{v}+@var{a} outputs: first @var{v} video outputs, then
20415 @var{a} audio outputs.
20416
20417 There are @var{n}x(@var{v}+@var{a}) inputs: first the inputs for the first
20418 segment, in the same order as the outputs, then the inputs for the second
20419 segment, etc.
20420
20421 Related streams do not always have exactly the same duration, for various
20422 reasons including codec frame size or sloppy authoring. For that reason,
20423 related synchronized streams (e.g. a video and its audio track) should be
20424 concatenated at once. The concat filter will use the duration of the longest
20425 stream in each segment (except the last one), and if necessary pad shorter
20426 audio streams with silence.
20427
20428 For this filter to work correctly, all segments must start at timestamp 0.
20429
20430 All corresponding streams must have the same parameters in all segments; the
20431 filtering system will automatically select a common pixel format for video
20432 streams, and a common sample format, sample rate and channel layout for
20433 audio streams, but other settings, such as resolution, must be converted
20434 explicitly by the user.
20435
20436 Different frame rates are acceptable but will result in variable frame rate
20437 at output; be sure to configure the output file to handle it.
20438
20439 @subsection Examples
20440
20441 @itemize
20442 @item
20443 Concatenate an opening, an episode and an ending, all in bilingual version
20444 (video in stream 0, audio in streams 1 and 2):
20445 @example
20446 ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
20447   '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
20448    concat=n=3:v=1:a=2 [v] [a1] [a2]' \
20449   -map '[v]' -map '[a1]' -map '[a2]' output.mkv
20450 @end example
20451
20452 @item
20453 Concatenate two parts, handling audio and video separately, using the
20454 (a)movie sources, and adjusting the resolution:
20455 @example
20456 movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
20457 movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
20458 [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
20459 @end example
20460 Note that a desync will happen at the stitch if the audio and video streams
20461 do not have exactly the same duration in the first file.
20462
20463 @end itemize
20464
20465 @subsection Commands
20466
20467 This filter supports the following commands:
20468 @table @option
20469 @item next
20470 Close the current segment and step to the next one
20471 @end table
20472
20473 @section drawgraph, adrawgraph
20474
20475 Draw a graph using input video or audio metadata.
20476
20477 It accepts the following parameters:
20478
20479 @table @option
20480 @item m1
20481 Set 1st frame metadata key from which metadata values will be used to draw a graph.
20482
20483 @item fg1
20484 Set 1st foreground color expression.
20485
20486 @item m2
20487 Set 2nd frame metadata key from which metadata values will be used to draw a graph.
20488
20489 @item fg2
20490 Set 2nd foreground color expression.
20491
20492 @item m3
20493 Set 3rd frame metadata key from which metadata values will be used to draw a graph.
20494
20495 @item fg3
20496 Set 3rd foreground color expression.
20497
20498 @item m4
20499 Set 4th frame metadata key from which metadata values will be used to draw a graph.
20500
20501 @item fg4
20502 Set 4th foreground color expression.
20503
20504 @item min
20505 Set minimal value of metadata value.
20506
20507 @item max
20508 Set maximal value of metadata value.
20509
20510 @item bg
20511 Set graph background color. Default is white.
20512
20513 @item mode
20514 Set graph mode.
20515
20516 Available values for mode is:
20517 @table @samp
20518 @item bar
20519 @item dot
20520 @item line
20521 @end table
20522
20523 Default is @code{line}.
20524
20525 @item slide
20526 Set slide mode.
20527
20528 Available values for slide is:
20529 @table @samp
20530 @item frame
20531 Draw new frame when right border is reached.
20532
20533 @item replace
20534 Replace old columns with new ones.
20535
20536 @item scroll
20537 Scroll from right to left.
20538
20539 @item rscroll
20540 Scroll from left to right.
20541
20542 @item picture
20543 Draw single picture.
20544 @end table
20545
20546 Default is @code{frame}.
20547
20548 @item size
20549 Set size of graph video. For the syntax of this option, check the
20550 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20551 The default value is @code{900x256}.
20552
20553 The foreground color expressions can use the following variables:
20554 @table @option
20555 @item MIN
20556 Minimal value of metadata value.
20557
20558 @item MAX
20559 Maximal value of metadata value.
20560
20561 @item VAL
20562 Current metadata key value.
20563 @end table
20564
20565 The color is defined as 0xAABBGGRR.
20566 @end table
20567
20568 Example using metadata from @ref{signalstats} filter:
20569 @example
20570 signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255
20571 @end example
20572
20573 Example using metadata from @ref{ebur128} filter:
20574 @example
20575 ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-120:max=5
20576 @end example
20577
20578 @anchor{ebur128}
20579 @section ebur128
20580
20581 EBU R128 scanner filter. This filter takes an audio stream as input and outputs
20582 it unchanged. By default, it logs a message at a frequency of 10Hz with the
20583 Momentary loudness (identified by @code{M}), Short-term loudness (@code{S}),
20584 Integrated loudness (@code{I}) and Loudness Range (@code{LRA}).
20585
20586 The filter also has a video output (see the @var{video} option) with a real
20587 time graph to observe the loudness evolution. The graphic contains the logged
20588 message mentioned above, so it is not printed anymore when this option is set,
20589 unless the verbose logging is set. The main graphing area contains the
20590 short-term loudness (3 seconds of analysis), and the gauge on the right is for
20591 the momentary loudness (400 milliseconds), but can optionally be configured
20592 to instead display short-term loudness (see @var{gauge}).
20593
20594 The green area marks a  +/- 1LU target range around the target loudness
20595 (-23LUFS by default, unless modified through @var{target}).
20596
20597 More information about the Loudness Recommendation EBU R128 on
20598 @url{http://tech.ebu.ch/loudness}.
20599
20600 The filter accepts the following options:
20601
20602 @table @option
20603
20604 @item video
20605 Activate the video output. The audio stream is passed unchanged whether this
20606 option is set or no. The video stream will be the first output stream if
20607 activated. Default is @code{0}.
20608
20609 @item size
20610 Set the video size. This option is for video only. For the syntax of this
20611 option, check the
20612 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
20613 Default and minimum resolution is @code{640x480}.
20614
20615 @item meter
20616 Set the EBU scale meter. Default is @code{9}. Common values are @code{9} and
20617 @code{18}, respectively for EBU scale meter +9 and EBU scale meter +18. Any
20618 other integer value between this range is allowed.
20619
20620 @item metadata
20621 Set metadata injection. If set to @code{1}, the audio input will be segmented
20622 into 100ms output frames, each of them containing various loudness information
20623 in metadata.  All the metadata keys are prefixed with @code{lavfi.r128.}.
20624
20625 Default is @code{0}.
20626
20627 @item framelog
20628 Force the frame logging level.
20629
20630 Available values are:
20631 @table @samp
20632 @item info
20633 information logging level
20634 @item verbose
20635 verbose logging level
20636 @end table
20637
20638 By default, the logging level is set to @var{info}. If the @option{video} or
20639 the @option{metadata} options are set, it switches to @var{verbose}.
20640
20641 @item peak
20642 Set peak mode(s).
20643
20644 Available modes can be cumulated (the option is a @code{flag} type). Possible
20645 values are:
20646 @table @samp
20647 @item none
20648 Disable any peak mode (default).
20649 @item sample
20650 Enable sample-peak mode.
20651
20652 Simple peak mode looking for the higher sample value. It logs a message
20653 for sample-peak (identified by @code{SPK}).
20654 @item true
20655 Enable true-peak mode.
20656
20657 If enabled, the peak lookup is done on an over-sampled version of the input
20658 stream for better peak accuracy. It logs a message for true-peak.
20659 (identified by @code{TPK}) and true-peak per frame (identified by @code{FTPK}).
20660 This mode requires a build with @code{libswresample}.
20661 @end table
20662
20663 @item dualmono
20664 Treat mono input files as "dual mono". If a mono file is intended for playback
20665 on a stereo system, its EBU R128 measurement will be perceptually incorrect.
20666 If set to @code{true}, this option will compensate for this effect.
20667 Multi-channel input files are not affected by this option.
20668
20669 @item panlaw
20670 Set a specific pan law to be used for the measurement of dual mono files.
20671 This parameter is optional, and has a default value of -3.01dB.
20672
20673 @item target
20674 Set a specific target level (in LUFS) used as relative zero in the visualization.
20675 This parameter is optional and has a default value of -23LUFS as specified
20676 by EBU R128. However, material published online may prefer a level of -16LUFS
20677 (e.g. for use with podcasts or video platforms).
20678
20679 @item gauge
20680 Set the value displayed by the gauge. Valid values are @code{momentary} and s
20681 @code{shortterm}. By default the momentary value will be used, but in certain
20682 scenarios it may be more useful to observe the short term value instead (e.g.
20683 live mixing).
20684
20685 @item scale
20686 Sets the display scale for the loudness. Valid parameters are @code{absolute}
20687 (in LUFS) or @code{relative} (LU) relative to the target. This only affects the
20688 video output, not the summary or continuous log output.
20689 @end table
20690
20691 @subsection Examples
20692
20693 @itemize
20694 @item
20695 Real-time graph using @command{ffplay}, with a EBU scale meter +18:
20696 @example
20697 ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
20698 @end example
20699
20700 @item
20701 Run an analysis with @command{ffmpeg}:
20702 @example
20703 ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
20704 @end example
20705 @end itemize
20706
20707 @section interleave, ainterleave
20708
20709 Temporally interleave frames from several inputs.
20710
20711 @code{interleave} works with video inputs, @code{ainterleave} with audio.
20712
20713 These filters read frames from several inputs and send the oldest
20714 queued frame to the output.
20715
20716 Input streams must have well defined, monotonically increasing frame
20717 timestamp values.
20718
20719 In order to submit one frame to output, these filters need to enqueue
20720 at least one frame for each input, so they cannot work in case one
20721 input is not yet terminated and will not receive incoming frames.
20722
20723 For example consider the case when one input is a @code{select} filter
20724 which always drops input frames. The @code{interleave} filter will keep
20725 reading from that input, but it will never be able to send new frames
20726 to output until the input sends an end-of-stream signal.
20727
20728 Also, depending on inputs synchronization, the filters will drop
20729 frames in case one input receives more frames than the other ones, and
20730 the queue is already filled.
20731
20732 These filters accept the following options:
20733
20734 @table @option
20735 @item nb_inputs, n
20736 Set the number of different inputs, it is 2 by default.
20737 @end table
20738
20739 @subsection Examples
20740
20741 @itemize
20742 @item
20743 Interleave frames belonging to different streams using @command{ffmpeg}:
20744 @example
20745 ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
20746 @end example
20747
20748 @item
20749 Add flickering blur effect:
20750 @example
20751 select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
20752 @end example
20753 @end itemize
20754
20755 @section metadata, ametadata
20756
20757 Manipulate frame metadata.
20758
20759 This filter accepts the following options:
20760
20761 @table @option
20762 @item mode
20763 Set mode of operation of the filter.
20764
20765 Can be one of the following:
20766
20767 @table @samp
20768 @item select
20769 If both @code{value} and @code{key} is set, select frames
20770 which have such metadata. If only @code{key} is set, select
20771 every frame that has such key in metadata.
20772
20773 @item add
20774 Add new metadata @code{key} and @code{value}. If key is already available
20775 do nothing.
20776
20777 @item modify
20778 Modify value of already present key.
20779
20780 @item delete
20781 If @code{value} is set, delete only keys that have such value.
20782 Otherwise, delete key. If @code{key} is not set, delete all metadata values in
20783 the frame.
20784
20785 @item print
20786 Print key and its value if metadata was found. If @code{key} is not set print all
20787 metadata values available in frame.
20788 @end table
20789
20790 @item key
20791 Set key used with all modes. Must be set for all modes except @code{print} and @code{delete}.
20792
20793 @item value
20794 Set metadata value which will be used. This option is mandatory for
20795 @code{modify} and @code{add} mode.
20796
20797 @item function
20798 Which function to use when comparing metadata value and @code{value}.
20799
20800 Can be one of following:
20801
20802 @table @samp
20803 @item same_str
20804 Values are interpreted as strings, returns true if metadata value is same as @code{value}.
20805
20806 @item starts_with
20807 Values are interpreted as strings, returns true if metadata value starts with
20808 the @code{value} option string.
20809
20810 @item less
20811 Values are interpreted as floats, returns true if metadata value is less than @code{value}.
20812
20813 @item equal
20814 Values are interpreted as floats, returns true if @code{value} is equal with metadata value.
20815
20816 @item greater
20817 Values are interpreted as floats, returns true if metadata value is greater than @code{value}.
20818
20819 @item expr
20820 Values are interpreted as floats, returns true if expression from option @code{expr}
20821 evaluates to true.
20822 @end table
20823
20824 @item expr
20825 Set expression which is used when @code{function} is set to @code{expr}.
20826 The expression is evaluated through the eval API and can contain the following
20827 constants:
20828
20829 @table @option
20830 @item VALUE1
20831 Float representation of @code{value} from metadata key.
20832
20833 @item VALUE2
20834 Float representation of @code{value} as supplied by user in @code{value} option.
20835 @end table
20836
20837 @item file
20838 If specified in @code{print} mode, output is written to the named file. Instead of
20839 plain filename any writable url can be specified. Filename ``-'' is a shorthand
20840 for standard output. If @code{file} option is not set, output is written to the log
20841 with AV_LOG_INFO loglevel.
20842
20843 @end table
20844
20845 @subsection Examples
20846
20847 @itemize
20848 @item
20849 Print all metadata values for frames with key @code{lavfi.signalstats.YDIF} with values
20850 between 0 and 1.
20851 @example
20852 signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
20853 @end example
20854 @item
20855 Print silencedetect output to file @file{metadata.txt}.
20856 @example
20857 silencedetect,ametadata=mode=print:file=metadata.txt
20858 @end example
20859 @item
20860 Direct all metadata to a pipe with file descriptor 4.
20861 @example
20862 metadata=mode=print:file='pipe\:4'
20863 @end example
20864 @end itemize
20865
20866 @section perms, aperms
20867
20868 Set read/write permissions for the output frames.
20869
20870 These filters are mainly aimed at developers to test direct path in the
20871 following filter in the filtergraph.
20872
20873 The filters accept the following options:
20874
20875 @table @option
20876 @item mode
20877 Select the permissions mode.
20878
20879 It accepts the following values:
20880 @table @samp
20881 @item none
20882 Do nothing. This is the default.
20883 @item ro
20884 Set all the output frames read-only.
20885 @item rw
20886 Set all the output frames directly writable.
20887 @item toggle
20888 Make the frame read-only if writable, and writable if read-only.
20889 @item random
20890 Set each output frame read-only or writable randomly.
20891 @end table
20892
20893 @item seed
20894 Set the seed for the @var{random} mode, must be an integer included between
20895 @code{0} and @code{UINT32_MAX}. If not specified, or if explicitly set to
20896 @code{-1}, the filter will try to use a good random seed on a best effort
20897 basis.
20898 @end table
20899
20900 Note: in case of auto-inserted filter between the permission filter and the
20901 following one, the permission might not be received as expected in that
20902 following filter. Inserting a @ref{format} or @ref{aformat} filter before the
20903 perms/aperms filter can avoid this problem.
20904
20905 @section realtime, arealtime
20906
20907 Slow down filtering to match real time approximately.
20908
20909 These filters will pause the filtering for a variable amount of time to
20910 match the output rate with the input timestamps.
20911 They are similar to the @option{re} option to @code{ffmpeg}.
20912
20913 They accept the following options:
20914
20915 @table @option
20916 @item limit
20917 Time limit for the pauses. Any pause longer than that will be considered
20918 a timestamp discontinuity and reset the timer. Default is 2 seconds.
20919 @end table
20920
20921 @anchor{select}
20922 @section select, aselect
20923
20924 Select frames to pass in output.
20925
20926 This filter accepts the following options:
20927
20928 @table @option
20929
20930 @item expr, e
20931 Set expression, which is evaluated for each input frame.
20932
20933 If the expression is evaluated to zero, the frame is discarded.
20934
20935 If the evaluation result is negative or NaN, the frame is sent to the
20936 first output; otherwise it is sent to the output with index
20937 @code{ceil(val)-1}, assuming that the input index starts from 0.
20938
20939 For example a value of @code{1.2} corresponds to the output with index
20940 @code{ceil(1.2)-1 = 2-1 = 1}, that is the second output.
20941
20942 @item outputs, n
20943 Set the number of outputs. The output to which to send the selected
20944 frame is based on the result of the evaluation. Default value is 1.
20945 @end table
20946
20947 The expression can contain the following constants:
20948
20949 @table @option
20950 @item n
20951 The (sequential) number of the filtered frame, starting from 0.
20952
20953 @item selected_n
20954 The (sequential) number of the selected frame, starting from 0.
20955
20956 @item prev_selected_n
20957 The sequential number of the last selected frame. It's NAN if undefined.
20958
20959 @item TB
20960 The timebase of the input timestamps.
20961
20962 @item pts
20963 The PTS (Presentation TimeStamp) of the filtered video frame,
20964 expressed in @var{TB} units. It's NAN if undefined.
20965
20966 @item t
20967 The PTS of the filtered video frame,
20968 expressed in seconds. It's NAN if undefined.
20969
20970 @item prev_pts
20971 The PTS of the previously filtered video frame. It's NAN if undefined.
20972
20973 @item prev_selected_pts
20974 The PTS of the last previously filtered video frame. It's NAN if undefined.
20975
20976 @item prev_selected_t
20977 The PTS of the last previously selected video frame, expressed in seconds. It's NAN if undefined.
20978
20979 @item start_pts
20980 The PTS of the first video frame in the video. It's NAN if undefined.
20981
20982 @item start_t
20983 The time of the first video frame in the video. It's NAN if undefined.
20984
20985 @item pict_type @emph{(video only)}
20986 The type of the filtered frame. It can assume one of the following
20987 values:
20988 @table @option
20989 @item I
20990 @item P
20991 @item B
20992 @item S
20993 @item SI
20994 @item SP
20995 @item BI
20996 @end table
20997
20998 @item interlace_type @emph{(video only)}
20999 The frame interlace type. It can assume one of the following values:
21000 @table @option
21001 @item PROGRESSIVE
21002 The frame is progressive (not interlaced).
21003 @item TOPFIRST
21004 The frame is top-field-first.
21005 @item BOTTOMFIRST
21006 The frame is bottom-field-first.
21007 @end table
21008
21009 @item consumed_sample_n @emph{(audio only)}
21010 the number of selected samples before the current frame
21011
21012 @item samples_n @emph{(audio only)}
21013 the number of samples in the current frame
21014
21015 @item sample_rate @emph{(audio only)}
21016 the input sample rate
21017
21018 @item key
21019 This is 1 if the filtered frame is a key-frame, 0 otherwise.
21020
21021 @item pos
21022 the position in the file of the filtered frame, -1 if the information
21023 is not available (e.g. for synthetic video)
21024
21025 @item scene @emph{(video only)}
21026 value between 0 and 1 to indicate a new scene; a low value reflects a low
21027 probability for the current frame to introduce a new scene, while a higher
21028 value means the current frame is more likely to be one (see the example below)
21029
21030 @item concatdec_select
21031 The concat demuxer can select only part of a concat input file by setting an
21032 inpoint and an outpoint, but the output packets may not be entirely contained
21033 in the selected interval. By using this variable, it is possible to skip frames
21034 generated by the concat demuxer which are not exactly contained in the selected
21035 interval.
21036
21037 This works by comparing the frame pts against the @var{lavf.concat.start_time}
21038 and the @var{lavf.concat.duration} packet metadata values which are also
21039 present in the decoded frames.
21040
21041 The @var{concatdec_select} variable is -1 if the frame pts is at least
21042 start_time and either the duration metadata is missing or the frame pts is less
21043 than start_time + duration, 0 otherwise, and NaN if the start_time metadata is
21044 missing.
21045
21046 That basically means that an input frame is selected if its pts is within the
21047 interval set by the concat demuxer.
21048
21049 @end table
21050
21051 The default value of the select expression is "1".
21052
21053 @subsection Examples
21054
21055 @itemize
21056 @item
21057 Select all frames in input:
21058 @example
21059 select
21060 @end example
21061
21062 The example above is the same as:
21063 @example
21064 select=1
21065 @end example
21066
21067 @item
21068 Skip all frames:
21069 @example
21070 select=0
21071 @end example
21072
21073 @item
21074 Select only I-frames:
21075 @example
21076 select='eq(pict_type\,I)'
21077 @end example
21078
21079 @item
21080 Select one frame every 100:
21081 @example
21082 select='not(mod(n\,100))'
21083 @end example
21084
21085 @item
21086 Select only frames contained in the 10-20 time interval:
21087 @example
21088 select=between(t\,10\,20)
21089 @end example
21090
21091 @item
21092 Select only I-frames contained in the 10-20 time interval:
21093 @example
21094 select=between(t\,10\,20)*eq(pict_type\,I)
21095 @end example
21096
21097 @item
21098 Select frames with a minimum distance of 10 seconds:
21099 @example
21100 select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
21101 @end example
21102
21103 @item
21104 Use aselect to select only audio frames with samples number > 100:
21105 @example
21106 aselect='gt(samples_n\,100)'
21107 @end example
21108
21109 @item
21110 Create a mosaic of the first scenes:
21111 @example
21112 ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
21113 @end example
21114
21115 Comparing @var{scene} against a value between 0.3 and 0.5 is generally a sane
21116 choice.
21117
21118 @item
21119 Send even and odd frames to separate outputs, and compose them:
21120 @example
21121 select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
21122 @end example
21123
21124 @item
21125 Select useful frames from an ffconcat file which is using inpoints and
21126 outpoints but where the source files are not intra frame only.
21127 @example
21128 ffmpeg -copyts -vsync 0 -segment_time_metadata 1 -i input.ffconcat -vf select=concatdec_select -af aselect=concatdec_select output.avi
21129 @end example
21130 @end itemize
21131
21132 @section sendcmd, asendcmd
21133
21134 Send commands to filters in the filtergraph.
21135
21136 These filters read commands to be sent to other filters in the
21137 filtergraph.
21138
21139 @code{sendcmd} must be inserted between two video filters,
21140 @code{asendcmd} must be inserted between two audio filters, but apart
21141 from that they act the same way.
21142
21143 The specification of commands can be provided in the filter arguments
21144 with the @var{commands} option, or in a file specified by the
21145 @var{filename} option.
21146
21147 These filters accept the following options:
21148 @table @option
21149 @item commands, c
21150 Set the commands to be read and sent to the other filters.
21151 @item filename, f
21152 Set the filename of the commands to be read and sent to the other
21153 filters.
21154 @end table
21155
21156 @subsection Commands syntax
21157
21158 A commands description consists of a sequence of interval
21159 specifications, comprising a list of commands to be executed when a
21160 particular event related to that interval occurs. The occurring event
21161 is typically the current frame time entering or leaving a given time
21162 interval.
21163
21164 An interval is specified by the following syntax:
21165 @example
21166 @var{START}[-@var{END}] @var{COMMANDS};
21167 @end example
21168
21169 The time interval is specified by the @var{START} and @var{END} times.
21170 @var{END} is optional and defaults to the maximum time.
21171
21172 The current frame time is considered within the specified interval if
21173 it is included in the interval [@var{START}, @var{END}), that is when
21174 the time is greater or equal to @var{START} and is lesser than
21175 @var{END}.
21176
21177 @var{COMMANDS} consists of a sequence of one or more command
21178 specifications, separated by ",", relating to that interval.  The
21179 syntax of a command specification is given by:
21180 @example
21181 [@var{FLAGS}] @var{TARGET} @var{COMMAND} @var{ARG}
21182 @end example
21183
21184 @var{FLAGS} is optional and specifies the type of events relating to
21185 the time interval which enable sending the specified command, and must
21186 be a non-null sequence of identifier flags separated by "+" or "|" and
21187 enclosed between "[" and "]".
21188
21189 The following flags are recognized:
21190 @table @option
21191 @item enter
21192 The command is sent when the current frame timestamp enters the
21193 specified interval. In other words, the command is sent when the
21194 previous frame timestamp was not in the given interval, and the
21195 current is.
21196
21197 @item leave
21198 The command is sent when the current frame timestamp leaves the
21199 specified interval. In other words, the command is sent when the
21200 previous frame timestamp was in the given interval, and the
21201 current is not.
21202 @end table
21203
21204 If @var{FLAGS} is not specified, a default value of @code{[enter]} is
21205 assumed.
21206
21207 @var{TARGET} specifies the target of the command, usually the name of
21208 the filter class or a specific filter instance name.
21209
21210 @var{COMMAND} specifies the name of the command for the target filter.
21211
21212 @var{ARG} is optional and specifies the optional list of argument for
21213 the given @var{COMMAND}.
21214
21215 Between one interval specification and another, whitespaces, or
21216 sequences of characters starting with @code{#} until the end of line,
21217 are ignored and can be used to annotate comments.
21218
21219 A simplified BNF description of the commands specification syntax
21220 follows:
21221 @example
21222 @var{COMMAND_FLAG}  ::= "enter" | "leave"
21223 @var{COMMAND_FLAGS} ::= @var{COMMAND_FLAG} [(+|"|")@var{COMMAND_FLAG}]
21224 @var{COMMAND}       ::= ["[" @var{COMMAND_FLAGS} "]"] @var{TARGET} @var{COMMAND} [@var{ARG}]
21225 @var{COMMANDS}      ::= @var{COMMAND} [,@var{COMMANDS}]
21226 @var{INTERVAL}      ::= @var{START}[-@var{END}] @var{COMMANDS}
21227 @var{INTERVALS}     ::= @var{INTERVAL}[;@var{INTERVALS}]
21228 @end example
21229
21230 @subsection Examples
21231
21232 @itemize
21233 @item
21234 Specify audio tempo change at second 4:
21235 @example
21236 asendcmd=c='4.0 atempo tempo 1.5',atempo
21237 @end example
21238
21239 @item
21240 Target a specific filter instance:
21241 @example
21242 asendcmd=c='4.0 atempo@@my tempo 1.5',atempo@@my
21243 @end example
21244
21245 @item
21246 Specify a list of drawtext and hue commands in a file.
21247 @example
21248 # show text in the interval 5-10
21249 5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
21250          [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
21251
21252 # desaturate the image in the interval 15-20
21253 15.0-20.0 [enter] hue s 0,
21254           [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
21255           [leave] hue s 1,
21256           [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
21257
21258 # apply an exponential saturation fade-out effect, starting from time 25
21259 25 [enter] hue s exp(25-t)
21260 @end example
21261
21262 A filtergraph allowing to read and process the above command list
21263 stored in a file @file{test.cmd}, can be specified with:
21264 @example
21265 sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
21266 @end example
21267 @end itemize
21268
21269 @anchor{setpts}
21270 @section setpts, asetpts
21271
21272 Change the PTS (presentation timestamp) of the input frames.
21273
21274 @code{setpts} works on video frames, @code{asetpts} on audio frames.
21275
21276 This filter accepts the following options:
21277
21278 @table @option
21279
21280 @item expr
21281 The expression which is evaluated for each frame to construct its timestamp.
21282
21283 @end table
21284
21285 The expression is evaluated through the eval API and can contain the following
21286 constants:
21287
21288 @table @option
21289 @item FRAME_RATE, FR
21290 frame rate, only defined for constant frame-rate video
21291
21292 @item PTS
21293 The presentation timestamp in input
21294
21295 @item N
21296 The count of the input frame for video or the number of consumed samples,
21297 not including the current frame for audio, starting from 0.
21298
21299 @item NB_CONSUMED_SAMPLES
21300 The number of consumed samples, not including the current frame (only
21301 audio)
21302
21303 @item NB_SAMPLES, S
21304 The number of samples in the current frame (only audio)
21305
21306 @item SAMPLE_RATE, SR
21307 The audio sample rate.
21308
21309 @item STARTPTS
21310 The PTS of the first frame.
21311
21312 @item STARTT
21313 the time in seconds of the first frame
21314
21315 @item INTERLACED
21316 State whether the current frame is interlaced.
21317
21318 @item T
21319 the time in seconds of the current frame
21320
21321 @item POS
21322 original position in the file of the frame, or undefined if undefined
21323 for the current frame
21324
21325 @item PREV_INPTS
21326 The previous input PTS.
21327
21328 @item PREV_INT
21329 previous input time in seconds
21330
21331 @item PREV_OUTPTS
21332 The previous output PTS.
21333
21334 @item PREV_OUTT
21335 previous output time in seconds
21336
21337 @item RTCTIME
21338 The wallclock (RTC) time in microseconds. This is deprecated, use time(0)
21339 instead.
21340
21341 @item RTCSTART
21342 The wallclock (RTC) time at the start of the movie in microseconds.
21343
21344 @item TB
21345 The timebase of the input timestamps.
21346
21347 @end table
21348
21349 @subsection Examples
21350
21351 @itemize
21352 @item
21353 Start counting PTS from zero
21354 @example
21355 setpts=PTS-STARTPTS
21356 @end example
21357
21358 @item
21359 Apply fast motion effect:
21360 @example
21361 setpts=0.5*PTS
21362 @end example
21363
21364 @item
21365 Apply slow motion effect:
21366 @example
21367 setpts=2.0*PTS
21368 @end example
21369
21370 @item
21371 Set fixed rate of 25 frames per second:
21372 @example
21373 setpts=N/(25*TB)
21374 @end example
21375
21376 @item
21377 Set fixed rate 25 fps with some jitter:
21378 @example
21379 setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
21380 @end example
21381
21382 @item
21383 Apply an offset of 10 seconds to the input PTS:
21384 @example
21385 setpts=PTS+10/TB
21386 @end example
21387
21388 @item
21389 Generate timestamps from a "live source" and rebase onto the current timebase:
21390 @example
21391 setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
21392 @end example
21393
21394 @item
21395 Generate timestamps by counting samples:
21396 @example
21397 asetpts=N/SR/TB
21398 @end example
21399
21400 @end itemize
21401
21402 @section setrange
21403
21404 Force color range for the output video frame.
21405
21406 The @code{setrange} filter marks the color range property for the
21407 output frames. It does not change the input frame, but only sets the
21408 corresponding property, which affects how the frame is treated by
21409 following filters.
21410
21411 The filter accepts the following options:
21412
21413 @table @option
21414
21415 @item range
21416 Available values are:
21417
21418 @table @samp
21419 @item auto
21420 Keep the same color range property.
21421
21422 @item unspecified, unknown
21423 Set the color range as unspecified.
21424
21425 @item limited, tv, mpeg
21426 Set the color range as limited.
21427
21428 @item full, pc, jpeg
21429 Set the color range as full.
21430 @end table
21431 @end table
21432
21433 @section settb, asettb
21434
21435 Set the timebase to use for the output frames timestamps.
21436 It is mainly useful for testing timebase configuration.
21437
21438 It accepts the following parameters:
21439
21440 @table @option
21441
21442 @item expr, tb
21443 The expression which is evaluated into the output timebase.
21444
21445 @end table
21446
21447 The value for @option{tb} is an arithmetic expression representing a
21448 rational. The expression can contain the constants "AVTB" (the default
21449 timebase), "intb" (the input timebase) and "sr" (the sample rate,
21450 audio only). Default value is "intb".
21451
21452 @subsection Examples
21453
21454 @itemize
21455 @item
21456 Set the timebase to 1/25:
21457 @example
21458 settb=expr=1/25
21459 @end example
21460
21461 @item
21462 Set the timebase to 1/10:
21463 @example
21464 settb=expr=0.1
21465 @end example
21466
21467 @item
21468 Set the timebase to 1001/1000:
21469 @example
21470 settb=1+0.001
21471 @end example
21472
21473 @item
21474 Set the timebase to 2*intb:
21475 @example
21476 settb=2*intb
21477 @end example
21478
21479 @item
21480 Set the default timebase value:
21481 @example
21482 settb=AVTB
21483 @end example
21484 @end itemize
21485
21486 @section showcqt
21487 Convert input audio to a video output representing frequency spectrum
21488 logarithmically using Brown-Puckette constant Q transform algorithm with
21489 direct frequency domain coefficient calculation (but the transform itself
21490 is not really constant Q, instead the Q factor is actually variable/clamped),
21491 with musical tone scale, from E0 to D#10.
21492
21493 The filter accepts the following options:
21494
21495 @table @option
21496 @item size, s
21497 Specify the video size for the output. It must be even. For the syntax of this option,
21498 check the @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21499 Default value is @code{1920x1080}.
21500
21501 @item fps, rate, r
21502 Set the output frame rate. Default value is @code{25}.
21503
21504 @item bar_h
21505 Set the bargraph height. It must be even. Default value is @code{-1} which
21506 computes the bargraph height automatically.
21507
21508 @item axis_h
21509 Set the axis height. It must be even. Default value is @code{-1} which computes
21510 the axis height automatically.
21511
21512 @item sono_h
21513 Set the sonogram height. It must be even. Default value is @code{-1} which
21514 computes the sonogram height automatically.
21515
21516 @item fullhd
21517 Set the fullhd resolution. This option is deprecated, use @var{size}, @var{s}
21518 instead. Default value is @code{1}.
21519
21520 @item sono_v, volume
21521 Specify the sonogram volume expression. It can contain variables:
21522 @table @option
21523 @item bar_v
21524 the @var{bar_v} evaluated expression
21525 @item frequency, freq, f
21526 the frequency where it is evaluated
21527 @item timeclamp, tc
21528 the value of @var{timeclamp} option
21529 @end table
21530 and functions:
21531 @table @option
21532 @item a_weighting(f)
21533 A-weighting of equal loudness
21534 @item b_weighting(f)
21535 B-weighting of equal loudness
21536 @item c_weighting(f)
21537 C-weighting of equal loudness.
21538 @end table
21539 Default value is @code{16}.
21540
21541 @item bar_v, volume2
21542 Specify the bargraph volume expression. It can contain variables:
21543 @table @option
21544 @item sono_v
21545 the @var{sono_v} evaluated expression
21546 @item frequency, freq, f
21547 the frequency where it is evaluated
21548 @item timeclamp, tc
21549 the value of @var{timeclamp} option
21550 @end table
21551 and functions:
21552 @table @option
21553 @item a_weighting(f)
21554 A-weighting of equal loudness
21555 @item b_weighting(f)
21556 B-weighting of equal loudness
21557 @item c_weighting(f)
21558 C-weighting of equal loudness.
21559 @end table
21560 Default value is @code{sono_v}.
21561
21562 @item sono_g, gamma
21563 Specify the sonogram gamma. Lower gamma makes the spectrum more contrast,
21564 higher gamma makes the spectrum having more range. Default value is @code{3}.
21565 Acceptable range is @code{[1, 7]}.
21566
21567 @item bar_g, gamma2
21568 Specify the bargraph gamma. Default value is @code{1}. Acceptable range is
21569 @code{[1, 7]}.
21570
21571 @item bar_t
21572 Specify the bargraph transparency level. Lower value makes the bargraph sharper.
21573 Default value is @code{1}. Acceptable range is @code{[0, 1]}.
21574
21575 @item timeclamp, tc
21576 Specify the transform timeclamp. At low frequency, there is trade-off between
21577 accuracy in time domain and frequency domain. If timeclamp is lower,
21578 event in time domain is represented more accurately (such as fast bass drum),
21579 otherwise event in frequency domain is represented more accurately
21580 (such as bass guitar). Acceptable range is @code{[0.002, 1]}. Default value is @code{0.17}.
21581
21582 @item attack
21583 Set attack time in seconds. The default is @code{0} (disabled). Otherwise, it
21584 limits future samples by applying asymmetric windowing in time domain, useful
21585 when low latency is required. Accepted range is @code{[0, 1]}.
21586
21587 @item basefreq
21588 Specify the transform base frequency. Default value is @code{20.01523126408007475},
21589 which is frequency 50 cents below E0. Acceptable range is @code{[10, 100000]}.
21590
21591 @item endfreq
21592 Specify the transform end frequency. Default value is @code{20495.59681441799654},
21593 which is frequency 50 cents above D#10. Acceptable range is @code{[10, 100000]}.
21594
21595 @item coeffclamp
21596 This option is deprecated and ignored.
21597
21598 @item tlength
21599 Specify the transform length in time domain. Use this option to control accuracy
21600 trade-off between time domain and frequency domain at every frequency sample.
21601 It can contain variables:
21602 @table @option
21603 @item frequency, freq, f
21604 the frequency where it is evaluated
21605 @item timeclamp, tc
21606 the value of @var{timeclamp} option.
21607 @end table
21608 Default value is @code{384*tc/(384+tc*f)}.
21609
21610 @item count
21611 Specify the transform count for every video frame. Default value is @code{6}.
21612 Acceptable range is @code{[1, 30]}.
21613
21614 @item fcount
21615 Specify the transform count for every single pixel. Default value is @code{0},
21616 which makes it computed automatically. Acceptable range is @code{[0, 10]}.
21617
21618 @item fontfile
21619 Specify font file for use with freetype to draw the axis. If not specified,
21620 use embedded font. Note that drawing with font file or embedded font is not
21621 implemented with custom @var{basefreq} and @var{endfreq}, use @var{axisfile}
21622 option instead.
21623
21624 @item font
21625 Specify fontconfig pattern. This has lower priority than @var{fontfile}.
21626 The : in the pattern may be replaced by | to avoid unnecessary escaping.
21627
21628 @item fontcolor
21629 Specify font color expression. This is arithmetic expression that should return
21630 integer value 0xRRGGBB. It can contain variables:
21631 @table @option
21632 @item frequency, freq, f
21633 the frequency where it is evaluated
21634 @item timeclamp, tc
21635 the value of @var{timeclamp} option
21636 @end table
21637 and functions:
21638 @table @option
21639 @item midi(f)
21640 midi number of frequency f, some midi numbers: E0(16), C1(24), C2(36), A4(69)
21641 @item r(x), g(x), b(x)
21642 red, green, and blue value of intensity x.
21643 @end table
21644 Default value is @code{st(0, (midi(f)-59.5)/12);
21645 st(1, if(between(ld(0),0,1), 0.5-0.5*cos(2*PI*ld(0)), 0));
21646 r(1-ld(1)) + b(ld(1))}.
21647
21648 @item axisfile
21649 Specify image file to draw the axis. This option override @var{fontfile} and
21650 @var{fontcolor} option.
21651
21652 @item axis, text
21653 Enable/disable drawing text to the axis. If it is set to @code{0}, drawing to
21654 the axis is disabled, ignoring @var{fontfile} and @var{axisfile} option.
21655 Default value is @code{1}.
21656
21657 @item csp
21658 Set colorspace. The accepted values are:
21659 @table @samp
21660 @item unspecified
21661 Unspecified (default)
21662
21663 @item bt709
21664 BT.709
21665
21666 @item fcc
21667 FCC
21668
21669 @item bt470bg
21670 BT.470BG or BT.601-6 625
21671
21672 @item smpte170m
21673 SMPTE-170M or BT.601-6 525
21674
21675 @item smpte240m
21676 SMPTE-240M
21677
21678 @item bt2020ncl
21679 BT.2020 with non-constant luminance
21680
21681 @end table
21682
21683 @item cscheme
21684 Set spectrogram color scheme. This is list of floating point values with format
21685 @code{left_r|left_g|left_b|right_r|right_g|right_b}.
21686 The default is @code{1|0.5|0|0|0.5|1}.
21687
21688 @end table
21689
21690 @subsection Examples
21691
21692 @itemize
21693 @item
21694 Playing audio while showing the spectrum:
21695 @example
21696 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
21697 @end example
21698
21699 @item
21700 Same as above, but with frame rate 30 fps:
21701 @example
21702 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
21703 @end example
21704
21705 @item
21706 Playing at 1280x720:
21707 @example
21708 ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
21709 @end example
21710
21711 @item
21712 Disable sonogram display:
21713 @example
21714 sono_h=0
21715 @end example
21716
21717 @item
21718 A1 and its harmonics: A1, A2, (near)E3, A3:
21719 @example
21720 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),
21721                  asplit[a][out1]; [a] showcqt [out0]'
21722 @end example
21723
21724 @item
21725 Same as above, but with more accuracy in frequency domain:
21726 @example
21727 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),
21728                  asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]'
21729 @end example
21730
21731 @item
21732 Custom volume:
21733 @example
21734 bar_v=10:sono_v=bar_v*a_weighting(f)
21735 @end example
21736
21737 @item
21738 Custom gamma, now spectrum is linear to the amplitude.
21739 @example
21740 bar_g=2:sono_g=2
21741 @end example
21742
21743 @item
21744 Custom tlength equation:
21745 @example
21746 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)))'
21747 @end example
21748
21749 @item
21750 Custom fontcolor and fontfile, C-note is colored green, others are colored blue:
21751 @example
21752 fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
21753 @end example
21754
21755 @item
21756 Custom font using fontconfig:
21757 @example
21758 font='Courier New,Monospace,mono|bold'
21759 @end example
21760
21761 @item
21762 Custom frequency range with custom axis using image file:
21763 @example
21764 axisfile=myaxis.png:basefreq=40:endfreq=10000
21765 @end example
21766 @end itemize
21767
21768 @section showfreqs
21769
21770 Convert input audio to video output representing the audio power spectrum.
21771 Audio amplitude is on Y-axis while frequency is on X-axis.
21772
21773 The filter accepts the following options:
21774
21775 @table @option
21776 @item size, s
21777 Specify size of video. For the syntax of this option, check the
21778 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21779 Default is @code{1024x512}.
21780
21781 @item mode
21782 Set display mode.
21783 This set how each frequency bin will be represented.
21784
21785 It accepts the following values:
21786 @table @samp
21787 @item line
21788 @item bar
21789 @item dot
21790 @end table
21791 Default is @code{bar}.
21792
21793 @item ascale
21794 Set amplitude scale.
21795
21796 It accepts the following values:
21797 @table @samp
21798 @item lin
21799 Linear scale.
21800
21801 @item sqrt
21802 Square root scale.
21803
21804 @item cbrt
21805 Cubic root scale.
21806
21807 @item log
21808 Logarithmic scale.
21809 @end table
21810 Default is @code{log}.
21811
21812 @item fscale
21813 Set frequency scale.
21814
21815 It accepts the following values:
21816 @table @samp
21817 @item lin
21818 Linear scale.
21819
21820 @item log
21821 Logarithmic scale.
21822
21823 @item rlog
21824 Reverse logarithmic scale.
21825 @end table
21826 Default is @code{lin}.
21827
21828 @item win_size
21829 Set window size.
21830
21831 It accepts the following values:
21832 @table @samp
21833 @item w16
21834 @item w32
21835 @item w64
21836 @item w128
21837 @item w256
21838 @item w512
21839 @item w1024
21840 @item w2048
21841 @item w4096
21842 @item w8192
21843 @item w16384
21844 @item w32768
21845 @item w65536
21846 @end table
21847 Default is @code{w2048}
21848
21849 @item win_func
21850 Set windowing function.
21851
21852 It accepts the following values:
21853 @table @samp
21854 @item rect
21855 @item bartlett
21856 @item hanning
21857 @item hamming
21858 @item blackman
21859 @item welch
21860 @item flattop
21861 @item bharris
21862 @item bnuttall
21863 @item bhann
21864 @item sine
21865 @item nuttall
21866 @item lanczos
21867 @item gauss
21868 @item tukey
21869 @item dolph
21870 @item cauchy
21871 @item parzen
21872 @item poisson
21873 @item bohman
21874 @end table
21875 Default is @code{hanning}.
21876
21877 @item overlap
21878 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
21879 which means optimal overlap for selected window function will be picked.
21880
21881 @item averaging
21882 Set time averaging. Setting this to 0 will display current maximal peaks.
21883 Default is @code{1}, which means time averaging is disabled.
21884
21885 @item colors
21886 Specify list of colors separated by space or by '|' which will be used to
21887 draw channel frequencies. Unrecognized or missing colors will be replaced
21888 by white color.
21889
21890 @item cmode
21891 Set channel display mode.
21892
21893 It accepts the following values:
21894 @table @samp
21895 @item combined
21896 @item separate
21897 @end table
21898 Default is @code{combined}.
21899
21900 @item minamp
21901 Set minimum amplitude used in @code{log} amplitude scaler.
21902
21903 @end table
21904
21905 @anchor{showspectrum}
21906 @section showspectrum
21907
21908 Convert input audio to a video output, representing the audio frequency
21909 spectrum.
21910
21911 The filter accepts the following options:
21912
21913 @table @option
21914 @item size, s
21915 Specify the video size for the output. For the syntax of this option, check the
21916 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
21917 Default value is @code{640x512}.
21918
21919 @item slide
21920 Specify how the spectrum should slide along the window.
21921
21922 It accepts the following values:
21923 @table @samp
21924 @item replace
21925 the samples start again on the left when they reach the right
21926 @item scroll
21927 the samples scroll from right to left
21928 @item fullframe
21929 frames are only produced when the samples reach the right
21930 @item rscroll
21931 the samples scroll from left to right
21932 @end table
21933
21934 Default value is @code{replace}.
21935
21936 @item mode
21937 Specify display mode.
21938
21939 It accepts the following values:
21940 @table @samp
21941 @item combined
21942 all channels are displayed in the same row
21943 @item separate
21944 all channels are displayed in separate rows
21945 @end table
21946
21947 Default value is @samp{combined}.
21948
21949 @item color
21950 Specify display color mode.
21951
21952 It accepts the following values:
21953 @table @samp
21954 @item channel
21955 each channel is displayed in a separate color
21956 @item intensity
21957 each channel is displayed using the same color scheme
21958 @item rainbow
21959 each channel is displayed using the rainbow color scheme
21960 @item moreland
21961 each channel is displayed using the moreland color scheme
21962 @item nebulae
21963 each channel is displayed using the nebulae color scheme
21964 @item fire
21965 each channel is displayed using the fire color scheme
21966 @item fiery
21967 each channel is displayed using the fiery color scheme
21968 @item fruit
21969 each channel is displayed using the fruit color scheme
21970 @item cool
21971 each channel is displayed using the cool color scheme
21972 @item magma
21973 each channel is displayed using the magma color scheme
21974 @item green
21975 each channel is displayed using the green color scheme
21976 @item viridis
21977 each channel is displayed using the viridis color scheme
21978 @item plasma
21979 each channel is displayed using the plasma color scheme
21980 @item cividis
21981 each channel is displayed using the cividis color scheme
21982 @item terrain
21983 each channel is displayed using the terrain color scheme
21984 @end table
21985
21986 Default value is @samp{channel}.
21987
21988 @item scale
21989 Specify scale used for calculating intensity color values.
21990
21991 It accepts the following values:
21992 @table @samp
21993 @item lin
21994 linear
21995 @item sqrt
21996 square root, default
21997 @item cbrt
21998 cubic root
21999 @item log
22000 logarithmic
22001 @item 4thrt
22002 4th root
22003 @item 5thrt
22004 5th root
22005 @end table
22006
22007 Default value is @samp{sqrt}.
22008
22009 @item saturation
22010 Set saturation modifier for displayed colors. Negative values provide
22011 alternative color scheme. @code{0} is no saturation at all.
22012 Saturation must be in [-10.0, 10.0] range.
22013 Default value is @code{1}.
22014
22015 @item win_func
22016 Set window function.
22017
22018 It accepts the following values:
22019 @table @samp
22020 @item rect
22021 @item bartlett
22022 @item hann
22023 @item hanning
22024 @item hamming
22025 @item blackman
22026 @item welch
22027 @item flattop
22028 @item bharris
22029 @item bnuttall
22030 @item bhann
22031 @item sine
22032 @item nuttall
22033 @item lanczos
22034 @item gauss
22035 @item tukey
22036 @item dolph
22037 @item cauchy
22038 @item parzen
22039 @item poisson
22040 @item bohman
22041 @end table
22042
22043 Default value is @code{hann}.
22044
22045 @item orientation
22046 Set orientation of time vs frequency axis. Can be @code{vertical} or
22047 @code{horizontal}. Default is @code{vertical}.
22048
22049 @item overlap
22050 Set ratio of overlap window. Default value is @code{0}.
22051 When value is @code{1} overlap is set to recommended size for specific
22052 window function currently used.
22053
22054 @item gain
22055 Set scale gain for calculating intensity color values.
22056 Default value is @code{1}.
22057
22058 @item data
22059 Set which data to display. Can be @code{magnitude}, default or @code{phase}.
22060
22061 @item rotation
22062 Set color rotation, must be in [-1.0, 1.0] range.
22063 Default value is @code{0}.
22064
22065 @item start
22066 Set start frequency from which to display spectrogram. Default is @code{0}.
22067
22068 @item stop
22069 Set stop frequency to which to display spectrogram. Default is @code{0}.
22070
22071 @item fps
22072 Set upper frame rate limit. Default is @code{auto}, unlimited.
22073
22074 @item legend
22075 Draw time and frequency axes and legends. Default is disabled.
22076 @end table
22077
22078 The usage is very similar to the showwaves filter; see the examples in that
22079 section.
22080
22081 @subsection Examples
22082
22083 @itemize
22084 @item
22085 Large window with logarithmic color scaling:
22086 @example
22087 showspectrum=s=1280x480:scale=log
22088 @end example
22089
22090 @item
22091 Complete example for a colored and sliding spectrum per channel using @command{ffplay}:
22092 @example
22093 ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
22094              [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
22095 @end example
22096 @end itemize
22097
22098 @section showspectrumpic
22099
22100 Convert input audio to a single video frame, representing the audio frequency
22101 spectrum.
22102
22103 The filter accepts the following options:
22104
22105 @table @option
22106 @item size, s
22107 Specify the video size for the output. For the syntax of this option, check the
22108 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22109 Default value is @code{4096x2048}.
22110
22111 @item mode
22112 Specify display mode.
22113
22114 It accepts the following values:
22115 @table @samp
22116 @item combined
22117 all channels are displayed in the same row
22118 @item separate
22119 all channels are displayed in separate rows
22120 @end table
22121 Default value is @samp{combined}.
22122
22123 @item color
22124 Specify display color mode.
22125
22126 It accepts the following values:
22127 @table @samp
22128 @item channel
22129 each channel is displayed in a separate color
22130 @item intensity
22131 each channel is displayed using the same color scheme
22132 @item rainbow
22133 each channel is displayed using the rainbow color scheme
22134 @item moreland
22135 each channel is displayed using the moreland color scheme
22136 @item nebulae
22137 each channel is displayed using the nebulae color scheme
22138 @item fire
22139 each channel is displayed using the fire color scheme
22140 @item fiery
22141 each channel is displayed using the fiery color scheme
22142 @item fruit
22143 each channel is displayed using the fruit color scheme
22144 @item cool
22145 each channel is displayed using the cool color scheme
22146 @item magma
22147 each channel is displayed using the magma color scheme
22148 @item green
22149 each channel is displayed using the green color scheme
22150 @item viridis
22151 each channel is displayed using the viridis color scheme
22152 @item plasma
22153 each channel is displayed using the plasma color scheme
22154 @item cividis
22155 each channel is displayed using the cividis color scheme
22156 @item terrain
22157 each channel is displayed using the terrain color scheme
22158 @end table
22159 Default value is @samp{intensity}.
22160
22161 @item scale
22162 Specify scale used for calculating intensity color values.
22163
22164 It accepts the following values:
22165 @table @samp
22166 @item lin
22167 linear
22168 @item sqrt
22169 square root, default
22170 @item cbrt
22171 cubic root
22172 @item log
22173 logarithmic
22174 @item 4thrt
22175 4th root
22176 @item 5thrt
22177 5th root
22178 @end table
22179 Default value is @samp{log}.
22180
22181 @item saturation
22182 Set saturation modifier for displayed colors. Negative values provide
22183 alternative color scheme. @code{0} is no saturation at all.
22184 Saturation must be in [-10.0, 10.0] range.
22185 Default value is @code{1}.
22186
22187 @item win_func
22188 Set window function.
22189
22190 It accepts the following values:
22191 @table @samp
22192 @item rect
22193 @item bartlett
22194 @item hann
22195 @item hanning
22196 @item hamming
22197 @item blackman
22198 @item welch
22199 @item flattop
22200 @item bharris
22201 @item bnuttall
22202 @item bhann
22203 @item sine
22204 @item nuttall
22205 @item lanczos
22206 @item gauss
22207 @item tukey
22208 @item dolph
22209 @item cauchy
22210 @item parzen
22211 @item poisson
22212 @item bohman
22213 @end table
22214 Default value is @code{hann}.
22215
22216 @item orientation
22217 Set orientation of time vs frequency axis. Can be @code{vertical} or
22218 @code{horizontal}. Default is @code{vertical}.
22219
22220 @item gain
22221 Set scale gain for calculating intensity color values.
22222 Default value is @code{1}.
22223
22224 @item legend
22225 Draw time and frequency axes and legends. Default is enabled.
22226
22227 @item rotation
22228 Set color rotation, must be in [-1.0, 1.0] range.
22229 Default value is @code{0}.
22230
22231 @item start
22232 Set start frequency from which to display spectrogram. Default is @code{0}.
22233
22234 @item stop
22235 Set stop frequency to which to display spectrogram. Default is @code{0}.
22236 @end table
22237
22238 @subsection Examples
22239
22240 @itemize
22241 @item
22242 Extract an audio spectrogram of a whole audio track
22243 in a 1024x1024 picture using @command{ffmpeg}:
22244 @example
22245 ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
22246 @end example
22247 @end itemize
22248
22249 @section showvolume
22250
22251 Convert input audio volume to a video output.
22252
22253 The filter accepts the following options:
22254
22255 @table @option
22256 @item rate, r
22257 Set video rate.
22258
22259 @item b
22260 Set border width, allowed range is [0, 5]. Default is 1.
22261
22262 @item w
22263 Set channel width, allowed range is [80, 8192]. Default is 400.
22264
22265 @item h
22266 Set channel height, allowed range is [1, 900]. Default is 20.
22267
22268 @item f
22269 Set fade, allowed range is [0, 1]. Default is 0.95.
22270
22271 @item c
22272 Set volume color expression.
22273
22274 The expression can use the following variables:
22275
22276 @table @option
22277 @item VOLUME
22278 Current max volume of channel in dB.
22279
22280 @item PEAK
22281 Current peak.
22282
22283 @item CHANNEL
22284 Current channel number, starting from 0.
22285 @end table
22286
22287 @item t
22288 If set, displays channel names. Default is enabled.
22289
22290 @item v
22291 If set, displays volume values. Default is enabled.
22292
22293 @item o
22294 Set orientation, can be horizontal: @code{h} or vertical: @code{v},
22295 default is @code{h}.
22296
22297 @item s
22298 Set step size, allowed range is [0, 5]. Default is 0, which means
22299 step is disabled.
22300
22301 @item p
22302 Set background opacity, allowed range is [0, 1]. Default is 0.
22303
22304 @item m
22305 Set metering mode, can be peak: @code{p} or rms: @code{r},
22306 default is @code{p}.
22307
22308 @item ds
22309 Set display scale, can be linear: @code{lin} or log: @code{log},
22310 default is @code{lin}.
22311
22312 @item dm
22313 In second.
22314 If set to > 0., display a line for the max level
22315 in the previous seconds.
22316 default is disabled: @code{0.}
22317
22318 @item dmc
22319 The color of the max line. Use when @code{dm} option is set to > 0.
22320 default is: @code{orange}
22321 @end table
22322
22323 @section showwaves
22324
22325 Convert input audio to a video output, representing the samples waves.
22326
22327 The filter accepts the following options:
22328
22329 @table @option
22330 @item size, s
22331 Specify the video size for the output. For the syntax of this option, check the
22332 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22333 Default value is @code{600x240}.
22334
22335 @item mode
22336 Set display mode.
22337
22338 Available values are:
22339 @table @samp
22340 @item point
22341 Draw a point for each sample.
22342
22343 @item line
22344 Draw a vertical line for each sample.
22345
22346 @item p2p
22347 Draw a point for each sample and a line between them.
22348
22349 @item cline
22350 Draw a centered vertical line for each sample.
22351 @end table
22352
22353 Default value is @code{point}.
22354
22355 @item n
22356 Set the number of samples which are printed on the same column. A
22357 larger value will decrease the frame rate. Must be a positive
22358 integer. This option can be set only if the value for @var{rate}
22359 is not explicitly specified.
22360
22361 @item rate, r
22362 Set the (approximate) output frame rate. This is done by setting the
22363 option @var{n}. Default value is "25".
22364
22365 @item split_channels
22366 Set if channels should be drawn separately or overlap. Default value is 0.
22367
22368 @item colors
22369 Set colors separated by '|' which are going to be used for drawing of each channel.
22370
22371 @item scale
22372 Set amplitude scale.
22373
22374 Available values are:
22375 @table @samp
22376 @item lin
22377 Linear.
22378
22379 @item log
22380 Logarithmic.
22381
22382 @item sqrt
22383 Square root.
22384
22385 @item cbrt
22386 Cubic root.
22387 @end table
22388
22389 Default is linear.
22390
22391 @item draw
22392 Set the draw mode. This is mostly useful to set for high @var{n}.
22393
22394 Available values are:
22395 @table @samp
22396 @item scale
22397 Scale pixel values for each drawn sample.
22398
22399 @item full
22400 Draw every sample directly.
22401 @end table
22402
22403 Default value is @code{scale}.
22404 @end table
22405
22406 @subsection Examples
22407
22408 @itemize
22409 @item
22410 Output the input file audio and the corresponding video representation
22411 at the same time:
22412 @example
22413 amovie=a.mp3,asplit[out0],showwaves[out1]
22414 @end example
22415
22416 @item
22417 Create a synthetic signal and show it with showwaves, forcing a
22418 frame rate of 30 frames per second:
22419 @example
22420 aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
22421 @end example
22422 @end itemize
22423
22424 @section showwavespic
22425
22426 Convert input audio to a single video frame, representing the samples waves.
22427
22428 The filter accepts the following options:
22429
22430 @table @option
22431 @item size, s
22432 Specify the video size for the output. For the syntax of this option, check the
22433 @ref{video size syntax,,"Video size" section in the ffmpeg-utils manual,ffmpeg-utils}.
22434 Default value is @code{600x240}.
22435
22436 @item split_channels
22437 Set if channels should be drawn separately or overlap. Default value is 0.
22438
22439 @item colors
22440 Set colors separated by '|' which are going to be used for drawing of each channel.
22441
22442 @item scale
22443 Set amplitude scale.
22444
22445 Available values are:
22446 @table @samp
22447 @item lin
22448 Linear.
22449
22450 @item log
22451 Logarithmic.
22452
22453 @item sqrt
22454 Square root.
22455
22456 @item cbrt
22457 Cubic root.
22458 @end table
22459
22460 Default is linear.
22461 @end table
22462
22463 @subsection Examples
22464
22465 @itemize
22466 @item
22467 Extract a channel split representation of the wave form of a whole audio track
22468 in a 1024x800 picture using @command{ffmpeg}:
22469 @example
22470 ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
22471 @end example
22472 @end itemize
22473
22474 @section sidedata, asidedata
22475
22476 Delete frame side data, or select frames based on it.
22477
22478 This filter accepts the following options:
22479
22480 @table @option
22481 @item mode
22482 Set mode of operation of the filter.
22483
22484 Can be one of the following:
22485
22486 @table @samp
22487 @item select
22488 Select every frame with side data of @code{type}.
22489
22490 @item delete
22491 Delete side data of @code{type}. If @code{type} is not set, delete all side
22492 data in the frame.
22493
22494 @end table
22495
22496 @item type
22497 Set side data type used with all modes. Must be set for @code{select} mode. For
22498 the list of frame side data types, refer to the @code{AVFrameSideDataType} enum
22499 in @file{libavutil/frame.h}. For example, to choose
22500 @code{AV_FRAME_DATA_PANSCAN} side data, you must specify @code{PANSCAN}.
22501
22502 @end table
22503
22504 @section spectrumsynth
22505
22506 Sythesize audio from 2 input video spectrums, first input stream represents
22507 magnitude across time and second represents phase across time.
22508 The filter will transform from frequency domain as displayed in videos back
22509 to time domain as presented in audio output.
22510
22511 This filter is primarily created for reversing processed @ref{showspectrum}
22512 filter outputs, but can synthesize sound from other spectrograms too.
22513 But in such case results are going to be poor if the phase data is not
22514 available, because in such cases phase data need to be recreated, usually
22515 it's just recreated from random noise.
22516 For best results use gray only output (@code{channel} color mode in
22517 @ref{showspectrum} filter) and @code{log} scale for magnitude video and
22518 @code{lin} scale for phase video. To produce phase, for 2nd video, use
22519 @code{data} option. Inputs videos should generally use @code{fullframe}
22520 slide mode as that saves resources needed for decoding video.
22521
22522 The filter accepts the following options:
22523
22524 @table @option
22525 @item sample_rate
22526 Specify sample rate of output audio, the sample rate of audio from which
22527 spectrum was generated may differ.
22528
22529 @item channels
22530 Set number of channels represented in input video spectrums.
22531
22532 @item scale
22533 Set scale which was used when generating magnitude input spectrum.
22534 Can be @code{lin} or @code{log}. Default is @code{log}.
22535
22536 @item slide
22537 Set slide which was used when generating inputs spectrums.
22538 Can be @code{replace}, @code{scroll}, @code{fullframe} or @code{rscroll}.
22539 Default is @code{fullframe}.
22540
22541 @item win_func
22542 Set window function used for resynthesis.
22543
22544 @item overlap
22545 Set window overlap. In range @code{[0, 1]}. Default is @code{1},
22546 which means optimal overlap for selected window function will be picked.
22547
22548 @item orientation
22549 Set orientation of input videos. Can be @code{vertical} or @code{horizontal}.
22550 Default is @code{vertical}.
22551 @end table
22552
22553 @subsection Examples
22554
22555 @itemize
22556 @item
22557 First create magnitude and phase videos from audio, assuming audio is stereo with 44100 sample rate,
22558 then resynthesize videos back to audio with spectrumsynth:
22559 @example
22560 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
22561 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
22562 ffmpeg -i magnitude.nut -i phase.nut -lavfi spectrumsynth=channels=2:sample_rate=44100:win_func=hann:overlap=0.875:slide=fullframe output.flac
22563 @end example
22564 @end itemize
22565
22566 @section split, asplit
22567
22568 Split input into several identical outputs.
22569
22570 @code{asplit} works with audio input, @code{split} with video.
22571
22572 The filter accepts a single parameter which specifies the number of outputs. If
22573 unspecified, it defaults to 2.
22574
22575 @subsection Examples
22576
22577 @itemize
22578 @item
22579 Create two separate outputs from the same input:
22580 @example
22581 [in] split [out0][out1]
22582 @end example
22583
22584 @item
22585 To create 3 or more outputs, you need to specify the number of
22586 outputs, like in:
22587 @example
22588 [in] asplit=3 [out0][out1][out2]
22589 @end example
22590
22591 @item
22592 Create two separate outputs from the same input, one cropped and
22593 one padded:
22594 @example
22595 [in] split [splitout1][splitout2];
22596 [splitout1] crop=100:100:0:0    [cropout];
22597 [splitout2] pad=200:200:100:100 [padout];
22598 @end example
22599
22600 @item
22601 Create 5 copies of the input audio with @command{ffmpeg}:
22602 @example
22603 ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
22604 @end example
22605 @end itemize
22606
22607 @section zmq, azmq
22608
22609 Receive commands sent through a libzmq client, and forward them to
22610 filters in the filtergraph.
22611
22612 @code{zmq} and @code{azmq} work as a pass-through filters. @code{zmq}
22613 must be inserted between two video filters, @code{azmq} between two
22614 audio filters. Both are capable to send messages to any filter type.
22615
22616 To enable these filters you need to install the libzmq library and
22617 headers and configure FFmpeg with @code{--enable-libzmq}.
22618
22619 For more information about libzmq see:
22620 @url{http://www.zeromq.org/}
22621
22622 The @code{zmq} and @code{azmq} filters work as a libzmq server, which
22623 receives messages sent through a network interface defined by the
22624 @option{bind_address} (or the abbreviation "@option{b}") option.
22625 Default value of this option is @file{tcp://localhost:5555}. You may
22626 want to alter this value to your needs, but do not forget to escape any
22627 ':' signs (see @ref{filtergraph escaping}).
22628
22629 The received message must be in the form:
22630 @example
22631 @var{TARGET} @var{COMMAND} [@var{ARG}]
22632 @end example
22633
22634 @var{TARGET} specifies the target of the command, usually the name of
22635 the filter class or a specific filter instance name. The default
22636 filter instance name uses the pattern @samp{Parsed_<filter_name>_<index>},
22637 but you can override this by using the @samp{filter_name@@id} syntax
22638 (see @ref{Filtergraph syntax}).
22639
22640 @var{COMMAND} specifies the name of the command for the target filter.
22641
22642 @var{ARG} is optional and specifies the optional argument list for the
22643 given @var{COMMAND}.
22644
22645 Upon reception, the message is processed and the corresponding command
22646 is injected into the filtergraph. Depending on the result, the filter
22647 will send a reply to the client, adopting the format:
22648 @example
22649 @var{ERROR_CODE} @var{ERROR_REASON}
22650 @var{MESSAGE}
22651 @end example
22652
22653 @var{MESSAGE} is optional.
22654
22655 @subsection Examples
22656
22657 Look at @file{tools/zmqsend} for an example of a zmq client which can
22658 be used to send commands processed by these filters.
22659
22660 Consider the following filtergraph generated by @command{ffplay}.
22661 In this example the last overlay filter has an instance name. All other
22662 filters will have default instance names.
22663
22664 @example
22665 ffplay -dumpgraph 1 -f lavfi "
22666 color=s=100x100:c=red  [l];
22667 color=s=100x100:c=blue [r];
22668 nullsrc=s=200x100, zmq [bg];
22669 [bg][l]   overlay     [bg+l];
22670 [bg+l][r] overlay@@my=x=100 "
22671 @end example
22672
22673 To change the color of the left side of the video, the following
22674 command can be used:
22675 @example
22676 echo Parsed_color_0 c yellow | tools/zmqsend
22677 @end example
22678
22679 To change the right side:
22680 @example
22681 echo Parsed_color_1 c pink | tools/zmqsend
22682 @end example
22683
22684 To change the position of the right side:
22685 @example
22686 echo overlay@@my x 150 | tools/zmqsend
22687 @end example
22688
22689
22690 @c man end MULTIMEDIA FILTERS
22691
22692 @chapter Multimedia Sources
22693 @c man begin MULTIMEDIA SOURCES
22694
22695 Below is a description of the currently available multimedia sources.
22696
22697 @section amovie
22698
22699 This is the same as @ref{movie} source, except it selects an audio
22700 stream by default.
22701
22702 @anchor{movie}
22703 @section movie
22704
22705 Read audio and/or video stream(s) from a movie container.
22706
22707 It accepts the following parameters:
22708
22709 @table @option
22710 @item filename
22711 The name of the resource to read (not necessarily a file; it can also be a
22712 device or a stream accessed through some protocol).
22713
22714 @item format_name, f
22715 Specifies the format assumed for the movie to read, and can be either
22716 the name of a container or an input device. If not specified, the
22717 format is guessed from @var{movie_name} or by probing.
22718
22719 @item seek_point, sp
22720 Specifies the seek point in seconds. The frames will be output
22721 starting from this seek point. The parameter is evaluated with
22722 @code{av_strtod}, so the numerical value may be suffixed by an IS
22723 postfix. The default value is "0".
22724
22725 @item streams, s
22726 Specifies the streams to read. Several streams can be specified,
22727 separated by "+". The source will then have as many outputs, in the
22728 same order. The syntax is explained in the @ref{Stream specifiers,,"Stream specifiers"
22729 section in the ffmpeg manual,ffmpeg}. Two special names, "dv" and "da" specify
22730 respectively the default (best suited) video and audio stream. Default
22731 is "dv", or "da" if the filter is called as "amovie".
22732
22733 @item stream_index, si
22734 Specifies the index of the video stream to read. If the value is -1,
22735 the most suitable video stream will be automatically selected. The default
22736 value is "-1". Deprecated. If the filter is called "amovie", it will select
22737 audio instead of video.
22738
22739 @item loop
22740 Specifies how many times to read the stream in sequence.
22741 If the value is 0, the stream will be looped infinitely.
22742 Default value is "1".
22743
22744 Note that when the movie is looped the source timestamps are not
22745 changed, so it will generate non monotonically increasing timestamps.
22746
22747 @item discontinuity
22748 Specifies the time difference between frames above which the point is
22749 considered a timestamp discontinuity which is removed by adjusting the later
22750 timestamps.
22751 @end table
22752
22753 It allows overlaying a second video on top of the main input of
22754 a filtergraph, as shown in this graph:
22755 @example
22756 input -----------> deltapts0 --> overlay --> output
22757                                     ^
22758                                     |
22759 movie --> scale--> deltapts1 -------+
22760 @end example
22761 @subsection Examples
22762
22763 @itemize
22764 @item
22765 Skip 3.2 seconds from the start of the AVI file in.avi, and overlay it
22766 on top of the input labelled "in":
22767 @example
22768 movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
22769 [in] setpts=PTS-STARTPTS [main];
22770 [main][over] overlay=16:16 [out]
22771 @end example
22772
22773 @item
22774 Read from a video4linux2 device, and overlay it on top of the input
22775 labelled "in":
22776 @example
22777 movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
22778 [in] setpts=PTS-STARTPTS [main];
22779 [main][over] overlay=16:16 [out]
22780 @end example
22781
22782 @item
22783 Read the first video stream and the audio stream with id 0x81 from
22784 dvd.vob; the video is connected to the pad named "video" and the audio is
22785 connected to the pad named "audio":
22786 @example
22787 movie=dvd.vob:s=v:0+#0x81 [video] [audio]
22788 @end example
22789 @end itemize
22790
22791 @subsection Commands
22792
22793 Both movie and amovie support the following commands:
22794 @table @option
22795 @item seek
22796 Perform seek using "av_seek_frame".
22797 The syntax is: seek @var{stream_index}|@var{timestamp}|@var{flags}
22798 @itemize
22799 @item
22800 @var{stream_index}: If stream_index is -1, a default
22801 stream is selected, and @var{timestamp} is automatically converted
22802 from AV_TIME_BASE units to the stream specific time_base.
22803 @item
22804 @var{timestamp}: Timestamp in AVStream.time_base units
22805 or, if no stream is specified, in AV_TIME_BASE units.
22806 @item
22807 @var{flags}: Flags which select direction and seeking mode.
22808 @end itemize
22809
22810 @item get_duration
22811 Get movie duration in AV_TIME_BASE units.
22812
22813 @end table
22814
22815 @c man end MULTIMEDIA SOURCES